|
問題求助:使用紅色時能完整發送字,但是總有兩列殘影發亮的問題,使用綠色時下半部分直接亂碼,也還是有兩列殘影發亮。制作分享:工程分為單片機驅動板和16X16點陣板,單片機驅動板上1個STC單片機(我用的是STC12C5A60S2)、2個74LS138進行掃描、4個74HC595發送數據和24C02擴展內存,除了可以驅動點陣也可以驅動數碼管,燈之類的,因為我閑置的直插件較多所以都用了直插件,板子排得比較密,密集恐懼癥慎入哈哈!點陣板我用的是雙色點陣,如果改成純紅色點陣的可以弄成16X32(因為綠色不用可以給紅色用),另外文件里的PCB工程為了給大家方便瀏覽檢查沒有敷銅,如果大家直接打樣PCB的話記得頂層和底層要接地敷銅,避免板上的芯片高速運行受到外界干擾,本人單片機小白一個,不喜勿噴,歡迎多提寶貴意見,共同交流!- //74HC138引腳:P22,P23,P24,P25,P26,P27
- //24C02引腳:P20-SDA,P21-SCL
- //red595:11腳-P10,12腳-P11,14腳-P12,13腳控制腳-P16
- //green595:11腳-P13,12腳-P14,14腳-P15,13腳控制腳-P17
- //74HC595:11腳SH_CP是數據輸入時鐘線,12腳ST_CP是輸出存儲器鎖存時鐘線,13腳OE是輸出有效(低電平有效),14腳DS是串行數據輸入
- #include <intrins.h>
- #include <REGX52.H>
- #define uint unsigned int
- #define uchar unsigned char
- sbit saomiao1=P2^2;
- sbit saomiao2=P2^3;
- sbit saomiao3=P2^4;
- sbit saomiao4=P2^5;
- sbit saomiao5=P2^6;
- sbit saomiao6=P2^7;
- sbit redSH_CP=P1^0;
- sbit redST_CP=P1^1;
- sbit redOE=P1^6;
- sbit redDS=P1^2;
- sbit greenSH_CP=P1^3;
- sbit greenST_CP=P1^4;
- sbit greenOE=P1^7;
- sbit greenDS=P1^5;
- uchar a;
- uchar code display[]=
- {
- 0xF7,0xF6,0x31,0x47,0xF7,0xFF,0xFD,0x85,0xB5,0xB5,0xB5,0xB5,0xB5,0x85,0xFD,0xFF,
- 0xFD,0xFE,0x00,0xFF,0xFC,0xFF,0x00,0xB6,0xB6,0xB6,0x80,0xB6,0xB6,0xB6,0x00,0xFF
- }; //福
- void delay(uint b)//延時
- {
- while(b--);
- }
- void shuaxin(uchar a)//138譯碼器刷新列
- {
- switch(a)
- {
- case(1):
- saomiao4=1;saomiao5=1;saomiao6=1; break;
- case(2):
- saomiao4=0;saomiao5=1;saomiao6=1; break;
- case(3):
- saomiao4=1;saomiao5=0;saomiao6=1; break;
- case(4):
- saomiao4=0;saomiao5=0;saomiao6=1; break;
- case(5):
- saomiao4=1;saomiao5=1;saomiao6=0; break;
- case(6):
- saomiao4=0;saomiao5=1;saomiao6=0; break;
- case(7):
- saomiao4=1;saomiao5=0;saomiao6=0; break;
- case(8):
- saomiao4=0;saomiao5=0;saomiao6=0; break;
- case(9):
- saomiao1=1;saomiao2=1;saomiao3=1; break;
- case(10):
- saomiao1=0;saomiao2=1;saomiao3=1; break;
- case(11):
- saomiao1=1;saomiao2=0;saomiao3=1; break;
- case(12):
- saomiao1=0;saomiao2=0;saomiao3=1; break;
- case(13):
- saomiao1=1;saomiao2=1;saomiao3=0; break;
- case(14):
- saomiao1=0;saomiao2=1;saomiao3=0; break;
- case(15):
- saomiao1=1;saomiao2=0;saomiao3=0; break;
- case(16):
- saomiao1=0;saomiao2=0;saomiao3=0; break;
- default :break;
- }
- }
- void Init_red595(uchar valueL,uchar valueH)//紅色595發送函數初始化
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- redDS=valueL>>7;//把valueL最高位的值賦給redDS
- valueL<<=1;//把valueL原來的值左移一位,再賦值給valueL,(有賦值操作,所以會改變原先的值)多出來的最低位自動用0來填充,valueL的最高位發送出去
- redSH_CP=0;
- _nop_();
- _nop_();
- redSH_CP=1;
- }
- for(i=0;i<8;i++)
- {
- redDS=valueH>>7;
- valueH<<=1;
- redSH_CP=0;
- _nop_();
- _nop_();
- redSH_CP=1;
- }
- redST_CP=0;
- _nop_();
- _nop_();
- redST_CP=1;
- }
- void red_send()//發送紅色點陣數據
- {
- uint index;
- greenOE=1;//綠色595輸出不使能
- for(index=1;index<17;index++)
- {
- redOE=1;//紅色595輸出不使能
- shuaxin(index);//138譯碼器刷新
- Init_red595(display[index+16],display[index]);//帶入紅色點陣要發送的數據
- redOE=0;//紅色595輸出使能
- delay(500);
- }
- }
- void Init_green595(uchar valueL,uchar valueH)//綠色595發送函數初始化
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- greenDS=valueL>>7;
- valueL<<=1;
- greenSH_CP=0;
- _nop_();
- _nop_();
- greenSH_CP=1;
- }
- for(i=0;i<8;i++)
- {
- greenDS=valueH>>7;
- valueH<<=1;
- greenSH_CP=0;
- _nop_();
- _nop_();
- greenSH_CP=1;
- }
- greenST_CP=0;
- _nop_();
- _nop_();
- greenST_CP=1;
- }
- void green_send()//發送綠色點陣數據
- {
- uint index;
- redOE=1;//紅色595輸出不使能
- for(index=1;index<17;index++)
- {
- greenOE=1;//綠色595輸出不使能
- shuaxin(index);//138譯碼器刷新
- Init_green595(display[index+16],display[index]);//帶入綠色點陣要發送的數據
- greenOE=0;//綠色595輸出使能
- delay(500);
- }
- }
- void main()
- {
- while(1)
- {
- red_send();//紅色顯示
- //green_send();//綠色顯示
- }
- }
復制代碼
|
-
原理圖.png
(150.92 KB, 下載次數: 53)
下載附件
2020-2-11 17:58 上傳
16X16點陣原理圖
-
PCB.png
(281.44 KB, 下載次數: 58)
下載附件
2020-2-11 17:58 上傳
16X16點陣PCB
-
2.jpg
(244.86 KB, 下載次數: 63)
下載附件
2020-2-11 17:58 上傳
單片機驅動板實物
-
1.jpg
(340.55 KB, 下載次數: 52)
下載附件
2020-2-11 17:59 上傳
組裝好點陣
-
取模.png
(18 KB, 下載次數: 56)
下載附件
2020-2-11 17:59 上傳
取字模設置
-
紅色顯示.jpg
(1.83 MB, 下載次數: 54)
下載附件
2020-2-11 18:00 上傳
紅色顯示
-
綠色顯示.jpg
(1.55 MB, 下載次數: 54)
下載附件
2020-2-11 18:00 上傳
綠色顯示
-
-
16X16點陣.rar
2020-2-11 18:00 上傳
點擊文件名下載附件
2.64 MB, 下載次數: 6
|