Chào mọi người,
Em là lính mới, thi xong vừa chuẩn bị vào học, em mới tìm hiểu về điện tử và vxl 89s52 để làm mạch led ma trận 8*32 nhưng em gặp phải một số vấn đề sau:
Cảng P3 của ic 89s52 em dùng để quét hàng (8 hàng) và xuất mức 0, em dùng 4 ic mở rộng 74hc595 để quét cột (32 cột) xuất mức 1;
Tại cảng P3 em lắp 8 tran c1815 do sợ thiếu công suất cho bảng led.
Tuy nhiên nạp code ok, nhưng lại không chạy
Cảng P3 đáng ra phải xuất mức 0 nhưng em đo thử bằng VOM thì nó lại xuất mức 1, và cứ cố định khoảng 4.5V dù đã thử code tắt luân phiên bóng led trên cảng này mỗi 1s.
Em cho vào đế nạp test thử, thì các chân của cảng P3 xuất đúng mức 0, và có một bóng led lần lượt tắt từ p3_0 -> p3_7;
Em nghĩ vấn đề do mạch led của em. Em đã thử thay tụ khác, thay thạch anh khác, tháo bỏ tran, nhưng vẫn không được.
Đây là sơ đồ nguyên lí trên proteus của em ạ
Bảng led em hàn 4 bảng nối các hàng với nhau theo đúng sơ đồ này.
Mạch thật của em trông như thế này ạ.
Code em dùng code này ạ:
Mong mọi người giúp đỡ, em xin cảm ơn ạ.
Em là lính mới, thi xong vừa chuẩn bị vào học, em mới tìm hiểu về điện tử và vxl 89s52 để làm mạch led ma trận 8*32 nhưng em gặp phải một số vấn đề sau:
Cảng P3 của ic 89s52 em dùng để quét hàng (8 hàng) và xuất mức 0, em dùng 4 ic mở rộng 74hc595 để quét cột (32 cột) xuất mức 1;
Tại cảng P3 em lắp 8 tran c1815 do sợ thiếu công suất cho bảng led.
Tuy nhiên nạp code ok, nhưng lại không chạy
Cảng P3 đáng ra phải xuất mức 0 nhưng em đo thử bằng VOM thì nó lại xuất mức 1, và cứ cố định khoảng 4.5V dù đã thử code tắt luân phiên bóng led trên cảng này mỗi 1s.
Em cho vào đế nạp test thử, thì các chân của cảng P3 xuất đúng mức 0, và có một bóng led lần lượt tắt từ p3_0 -> p3_7;
Em nghĩ vấn đề do mạch led của em. Em đã thử thay tụ khác, thay thạch anh khác, tháo bỏ tran, nhưng vẫn không được.
Đây là sơ đồ nguyên lí trên proteus của em ạ
Bảng led em hàn 4 bảng nối các hàng với nhau theo đúng sơ đồ này.
Mạch thật của em trông như thế này ạ.
Code em dùng code này ạ:
Code:
#include<reg52.h> //Thu vien //khai bao chan cho 74hc595 sbit SH74 = P2^0; //SCK sbit ST74 = P2^1; //STR sbit DS74 = P2^2; //SDA // delay void delay(int t) { int i,j; for (i=0;i<t;i++) { for (j=0;j<200;j++) } } //Khai bao ki tu code char row[]= {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}, //quet lan luot 8 hang col[]={ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x83,0x7D,0x7D,0x7D,0xFF,0x01,0xFB,0xF7,0xEF,0x01,0xFF,0xFD,0xFD,0x01,0xFD,0xFD,0xFF,0xFD,0xFD,0x01,0xFD,0xFD,0xFF,0xFF, //CNTT 0xEF,0x01,0x6D,0x7D,0x83,0xFF,0x01,0xE7,0xDB,0xBD,0x7F,0xFF,0xFF,0x81,0x7E,0x7E,0x81,0xFF,0xE7,0xEB,0xED,0x00,0xEF ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff }; void switch74(unsigned char x) { unsigned char temp,i; for (i=1;i<=8;i++){ temp=x&0x80; if (temp==0x80) DS74=1; else DS74=0; x=x*2; SH74= 0; SH74=1; } } void chuchay(char l) { int i,j,k; while (l--){ for (i=0;i<85;i++) //107 cot de in ra { for (k=1;k<3;k++) //delay de in hang` for (j=0;j<8;j++) { switch74(col[i+j+24]); //bang led 4 switch74(col[i+j+16]); //bang led 3 switch74(col[i+j+8]); //bang led 2 switch74(col[i+j]); //bang led 1 ST74=0; ST74=1; P3=row[j]; //hien thi hang` delay(3); P3=0x00; //tat led } } } } void main() { while (1) { chuchay(1); // test(2); } }
Mong mọi người giúp đỡ, em xin cảm ơn ạ.
Comment