這是一塊64*16的點陣LED屏,STC11系列驅(qū)動74HC245
245的五個輸出控制2顆hc138d來驅(qū)動上-》下2行8*8點陣模塊的行顯示,高電平點亮。
245的三個輸出控制8顆hc595d來驅(qū)動左-》右8列模塊的列顯示。
我程序直接行顯示固定死的情況下,列顯示給值0x55,對應屏幕模塊應該顯示:亮滅亮滅 亮滅亮滅的,但是為什么是圖中的樣子,只有第一個亮滅實現(xiàn)了,后邊全是滅的。求指教-------------
制作出來的實物圖如下:
51hei圖片_20211011112052.jpg (217.16 KB, 下載次數(shù): 32)
下載附件
2021-10-11 11:21 上傳
51hei圖片_20211011092804.jpg (97.31 KB, 下載次數(shù): 38)
下載附件
2021-10-11 11:18 上傳
單片機源程序如下:- #include<reg52.h> //EN=HC138D的E1,E2必須置于低電平。D=HC138D的E3置于低電平上八行工作,置于高電平下八行工作。
- #include<intrins.h>
- typedef unsigned char u8;
- sbit A=P2^4;
- sbit Bb=P2^5;
- sbit C=P2^6;
- sbit D=P2^7;
- sbit EN=P0^7;
- sbit ST=P0^6;
- sbit CK=P1^7;
- sbit DATA=P1^6;
- void sendlie(dat) //發(fā)送列數(shù)據(jù)函數(shù)
- {
- u8 a;
- for(a=0;a<8;a++) //發(fā)送8位數(shù)
- {
-
- DATA = dat >> 7; //從最高位開始發(fā)送
- dat <<= 1;
- CK = 0;
- _nop_();
- _nop_();
- CK = 1; //發(fā)送時序
- _nop_();
- _nop_();
- CK = 0;
- }
-
- }
- void lieout()
- {
- ST = 0;
- _nop_();
- _nop_();
- ST = 1;
- _nop_();
- _nop_();
- ST = 0;
- }
- /*******************************************************************************
- * 函 數(shù) 名 : main
- * 函數(shù)功能 : 主函數(shù)
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void main()
- {
-
- EN = 0; //使HC138d的E1,E2置低位
- D = 0; //HC138D的E3置高位下八行工作,置低位上八行工作。
- A = 0; //ABC發(fā)送行數(shù)據(jù)
- Bb = 0;
- C = 1;
- while(1)
- {
-
-
- sendlie(0xff);
- sendlie(0xff);
- sendlie(0x55);
- sendlie(0xff);
- sendlie(0xff);
- sendlie(0x55);
- sendlie(0xff);
- sendlie(0xff);
- lieout();
-
-
- }
- }
復制代碼
|