Xin chào các bạn hôm nay mình sẽ hướng dẫn cho các bạn về lập trình với 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
#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; } } } } |