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