Hướng dẫn 8051 lập trình với led matrix.
I.Cấu tạo về led matrix
Cấu tạo LED Martrix có dạng như hình dưới đây. Về cấu tạo rất giống với một hệ nhiều LED 7 thanh, ví dụ gồm 8 LED 7 thanh ghép với nhau
Để chuẩn bị cho bài toán về LED matrix các bạn chuẩn bị một mạch điện mô phỏng đơn giản theo hình sau. Đánh vào từ khóa “Matrix”, kéo xuống chọn loại 8×8 (màu xanh, đỏ tùy các em).
Ở đây PORT2 dùng để điều khiển 8 cột LED, PORT3 dùng để điều khiển 8 hàng LED. LED sẽ sáng nếu thỏa mãn 2 điều kiện là Port3 xuất ra 0 và Port2 xuất ra 1. Port 3 cấp giá trị theo chân, PORT2 được dùng để xuất dữ liệu ra LED. Để đèn sáng thì chân tương ứng ở PORT2 phải có giá trị bằng 0. Chi tiết xem hình dưới.
Đây là code để các bạn tham khảo:
Hiển thị một chữ cái là :B
#include<REGX52.H> unsigned char code chuB[]={ 0XFF,0X00,0X00,0X66,0X66,0X66,0X81,0XFF }; /* Ham Delay */ void Fn_DELAY (unsigned int _vrui_Time) { while(_vrui_Time--); } void main() { unsigned char i,j; while(1) { for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuB[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } } }
Hiển thị lần lượt các chữ cái:
#include<REGX52.H> unsigned char code chuB[]={0XFF,0X00,0X00,0X66,0X66,0X66,0X81,0XFF }; unsigned char code chuT[]={0XFF,0XFC,0XFC,0X00,0X00,0XFC,0XFC,0XFF }; unsigned char code chuR[]={0XFF,0X00,0X00,0XEC,0XEC,0X00,0X01,0XFF }; unsigned char code chuI[]={0XFF,0X3C,0X3C,0X00,0X00,0X3C,0X3C,0XFF }; unsigned char code chuN[]={0XFF,0X01,0X00,0XFC,0XFC,0X00,0X01,0XFF }; unsigned char code chuH[]={0XFF,0X00,0X00,0XE7,0XE7,0X00,0X00,0XFF }; unsigned char code chuV[]={0XFF,0XC0,0X80,0X3F,0X3F,0X80,0XC0,0XFF }; unsigned char code chuA[]={0XFF,0X03,0XED,0XEE,0XEE,0XED,0X03,0XFF }; /* Ham Delay */ void Fn_DELAY (unsigned int _vrui_Time) { while(_vrui_Time--);} void main() { unsigned char i,j; while(1) { for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuT[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuR[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuI[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuN[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuH[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuV[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuA[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuN[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuB[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuA[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuT[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } for(j=0;j<200;j++) { for(i=0;i<8;i++) { P3 = chuV[i]; P2 = 0x01<<i; Fn_DELAY(50); P2 = 0x00; } } } }