![]() |
發布時間: 2021-3-16 16:41
正文摘要:文件見附件這是我的代碼 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int uchar co ... |
這個你可以試著先用一個16*16的點陣試驗一下,縮小你要檢查的范圍,之前做過一個,現在忘得差不多了,我把源碼發出來,你參考下 #include<reg51.h> #include<intrins.h> sbit DS=P1^0; sbit ST_CP=P1^1; sbit SH_CP=P1^2; sbit A=P1^3; sbit E=P1^4; sbit C=P1^5; sbit D=P1^6; int u,n; unsigned char display_1[]={ 0xbf,0x7f,0xb7,0x9f,0xb7,0xe0,0xb7,0xdf, 0x00,0x80,0xb7,0xbb,0xb7,0xbb,0xff,0xff, 0x3b,0xb0,0xbb,0xaf,0xbb,0xaf,0xbb,0xaf, 0x03,0xaf,0xff,0xa3,0xff,0xbf,0xff, 0xff, }; void delay() { for(u=0;u<100;u++) for(n=0;n<1;n++); } void hc595_senddat(unsigned char dat) { unsigned char k; for(k=0;k<8;k++) { DS=dat&0x80; SH_CP=0; SH_CP=1; dat<<=1; } } main() { unsigned char i; SH_CP=0; ST_CP=0; while(1) { for(i=0;i<16;i++) { { hc595_senddat(display_1[2*i+1]); hc595_senddat(display_1[2*i]); } switch(i) { case 0:A=0;E=0;C=0;D=0; break; //負0000 case 1:A=1;E=0;C=0;D=0; break; //1000 case 2:A=0;E=1;C=0;D=0; break; //0100 case 3:A=1;E=1;C=0;D=0; break; //1100 case 4:A=0;E=0;C=1;D=0; break; //0010 case 5:A=1;E=0;C=1;D=0; break; //1010 case 6:A=0;E=1;C=1;D=0; break; //0110 case 7:A=1;E=1;C=1;D=0; break; //1110 case 8:A=0;E=0;C=0;D=1; break; //0001 case 9:A=1;E=0;C=0;D=1; break; //1001 case 10:A=0;E=1;C=0;D=1; break; //0101 case 11:A=1;E=1;C=0;D=1; break; //1101 case 12:A=0;E=0;C=1;D=1; break; //0011 case 13:A=1;E=0;C=1;D=1; break; //1011 case 14:A=0;E=1;C=1;D=1; break; //0111 case 15:A=1;E=1;C=1;D=1; break; //1111 } ST_CP=1; ST_CP=0; delay(); } } } |
LED16x16點陣 89單片機+四個74HC595的 程序源碼原理圖 http://www.zg4o1577.cn/bbs/dpj-200961-1.html |