很多人認為單片機的最佳搭配顯示器是液晶1602顯示器,理由是價格便宜,使用方便。但是,液晶1602顯示器也有很多缺點,最大的是端口占用太多,有8根數據線,3根控制線,電源及背光電源4根,還要再加一根對比度線,總共要16根線。很多同學是用最小單片機系統,主板與顯示器是用杜邦線相連,連接不怎么牢靠,不是電源松,就是背光掉線,要不就是數據沒接牢,如果不是主板帶顯示接口,并不太好讓1602顯示出內容,而且1602顯示16個字符就出了顯示范圍,還要記得換行,使用并不是很輕松。如果換個思路,用LED8X8發光矩陣當顯示器,其實效果也不錯。首先是有些LED8X8發光矩陣是集成譯碼和移位芯片的,接口只有6根數據線和2根電源線,比1602少得多,很適合小系統板用杜邦線連接使用。其次顯示不用調對比度,而且尺寸較大,觀看不吃力。第三是有完全的顯示能力,1602能顯示的字符,它都能顯示,不象數碼管,只能顯示十多個符號,它其實是個單個字符的顯示器,如果利用滾動顯示,以人眼閱讀的速度相近的速度滾動顯示,效果還是可以接受,價格也比1602便宜,對于顯示內容不多的程序調試等新手學習單片機場合,是非常理想的顯示器。本人以集成譯碼器和移位寄存器的6線發光矩陣為條件,編了一個把8X8發光矩陣作為顯示器的樣例程序,供想以發光矩陣作為單片機顯示器的同學參考。下面是單片機程序
- #include<reg51.h>
- #include "char.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit ser=P0^3;//ser 14
- sbit sck=P0^4;//sck 11
- sbit rck=P0^5;//rck 12
- //============================
- void delay(uint ii){uint i;for(i=0;i<ii;i++);}
- //============================
- void SendByte(uchar cc)
- {uchar c=cc;int i;
- for(i=0;i<8;i++){if(c&0x01)ser=1;else ser=0;c>>=1;sck=0;sck=1;}
- rck=0;rck=1;
- }
- //============================
- void PutChar(char ci)
- {int i,j;
- for(i=0;i<200;i++)for(j=0;j<6;j++){P0=j;SendByte(vc[ci-0x20][j]);delay(25);SendByte(0);}
- }
- //============================
- void PutStr(char *str)
- {int i=0;
- while(str[i]!=0){PutChar(str[i]);i++;}
- }
- //============================
- void main()
- {int i,j,k=0;
- while(1){PutStr("N=123");}
- }
復制代碼
為便于直觀觀察效果,本人制作仿真模型,全套程序及仿真在附件中。
下面是仿真截圖。
p8.JPG (171.12 KB, 下載次數: 48)
下載附件
2019-4-3 23:15 上傳
仿真效果不好,實際顯示效果還好一點。
0.png (11.59 KB, 下載次數: 26)
下載附件
2019-4-4 03:37 上傳
全部資料51hei下載地址:
LED8X8.zip
(49.6 KB, 下載次數: 17)
2019-4-3 23:20 上傳
點擊文件名下載附件
仿真和程序 下載積分: 黑幣 -5
|