【51单片机】七段数码管显示实验+详细讲解
【51單片機】七段數碼管顯示實驗
- 前言
- 一、兵馬未動,糧草先行——認識七段數碼管
- 1、關于顯示器
- 2、七段數碼管
- 3、七段數碼管的結構
- 4、數碼管顯示方法
- 二、數碼管顯示程序
- 1、靜態顯示
- 效果
- 2.動態顯示
- 效果
- 總結
前言
繼上次仿真實驗——【51單片機】矩陣鍵盤線反轉法實驗仿真之后,盡管也對點陣LED進行了學習,但是,點陣LED的顯示效果不佳(仿真時的色彩、明亮程度等),加上大多數時候我們在計算器上看到的是七段數碼管,所以在學習了學校課程之后,我也進行了嘗試。這次主要是記錄七段數碼管的使用方法,在此之后,我考慮把鍵盤掃描(線反轉法)、七段數碼管、80C51結合起來,把整個計算器的功能完善,也算是完成一個小項目。
因為我認為光學理論只是很容易忘記,且容易磨滅興趣,所以在學習過程中以做一個計算器為目標,循序漸進地學習,缺什么知識就補充什么知識,就像前幾次所作的一樣:
【51單片機】矩陣鍵盤線反轉法實驗仿真
【51單片機】點陣LED的顯示實驗
【51單片機】矩陣鍵盤逐行掃描法仿真實驗+超詳細Proteus仿真和Keil操作步驟
下面是這次七段數碼管的學習記錄。
一、兵馬未動,糧草先行——認識七段數碼管
1、關于顯示器
我們常見的顯示器一般分為LED、LCD和CRT,當然除此之外還有其他種類的顯示器。其中:
- LED是發光二極管,核心原理是半導體的電光轉化,在電光轉化過程中發熱很少,相對白熾燈更節能,目前常用作照明工具;
- LCD是液晶顯示器,核心原理是液晶(介于液體和晶體的一種物質)的各向異性使特定區域透光、部分區域不透光來呈現畫面;
- CRT是陰極射線管,常用在示波器和老式電視機上,核心原理是控制電子束的偏轉角來控制電子打在熒光屏上的不同位置,使之出現我們想要的圖案。
2、七段數碼管
今天要說的就是LED中的一員——七段數碼管。七段數碼管也叫七段LED顯示器,是由數個LED組成的陣列,并封裝在一個標準的外殼內。
如圖,七段數碼管通常有七段,但現在為了表示小數,加入了小數點,所以其實變成了名字叫七段數碼管的八段數碼管。圖上a、b、c、d、e、f、g、dp則是每段的名字。cs管腳類似于片選信號。
我們只需要點亮特定的管腳就能形成一個數字或者字母。
3、七段數碼管的結構
如圖是七段數碼管的內部結構,將圖中的二極管按特定陣列排布就得到了常見的數碼管。
- 共陰極:顧名思義,這是將二極管的陰極連接到同一條導線上,只要某路地陽極變為高電平,該路LED就會被點亮。
- 共陽極:二極管地陽極連接到一條到線上并連接電源。當某路陰極變為低電平,該路地LED就會亮起。
4、數碼管顯示方法
七段數碼管顯示也有兩種方式,分別是靜態顯示和動態顯示。
- 靜態顯示:在靜態顯示系統中,每一位顯示器都應該有各自地鎖存器、譯碼器和驅動器鎖存器,如果軟件譯碼,譯碼器也可以省略。鎖存器用來所存待顯示數字的BCD碼,所以每次顯示輸出后都能保持不變。但是占用的位數很多,每一位需要8根數據線。
- 動態顯示:在動態顯示系統中,微處理器要定時地向各個顯示器進行掃描,只要掃描速率足夠快,由于視覺暫留現象就會給人以恒定顯示的表現。動態顯示可以減少硬件的使用,但是需要微處理器一直為它工作。
二、數碼管顯示程序
1、靜態顯示
靜態顯示用到的元件有:74LS273(鎖存器)×4、80C51、7SEG-MPX1-CA(七段數碼管)×4、RESPACK-8(電阻)、GROUND、POWER和BUTTON。
連接線路如圖:
靜態顯示的代碼如下:
#include <reg51.h>unsigned int d[4]={0xA4,0xC0,0xA4,0xf9};//共陽極的數碼管顯示的數字,一次是2、0、2、1 unsigned int cs[4]={0x0E,0x0D,0x0B,0x07};//片選,低電平時,鎖存器打開,可以寫入數據。高電平時鎖存 void main(void){ int i;EA=1;//開中斷EX0=1;//開外部中斷0INT0=1;//下降沿觸發INT0中斷for(i=0;i<4;i++){P2=cs[i];//打開一個鎖存器P0=d[i];//向該鎖存器寫入數據}P2=0xff;//所有鎖存器鎖存CLK置高電平}void int0() interrupt 0{//終端服務程序P2=cs[0];P0=0x8E; }效果
2.動態顯示
動態顯示用到的元件有:8051、7SEG-MPX4-CA(4位七段數碼管)、RESPACK-8(電阻)、GROUND、POWER和BUTTON。
接線如圖:
動態顯示的代碼如下:
#include <reg51.h>unsigned int d[4]={0x5B,0x3f,0x5B,0x06};//共陰極的數碼管,輸出為靜態時的反碼,由與所用的七段數碼管內部不同所致。 unsigned int cs[4]={0x0E,0x0D,0x0B,0x07};//與靜態不同,4位7段數碼管的片選信號不由鎖存器決定,自帶的片選管腳功能為高電平選中 void delay(int n){//延時程序int i;int j;for(i=0;i<n;i++)for(j=0;j<120;j++); } void main(void){ int i;EA=1;EX0=1;INT0=1;while(1){//因為是動態掃描,所以必須不停地掃描for(i=0;i<4;i++){P2=cs[i];P0=d[i];delay(10);}}}void int0() interrupt 0{P2=cs[0];P0=0x71; }效果
總結
以上就是兩種類型的七段數碼管(共陰極和共陽極)的兩種不同的顯示方式(靜態和動態)。這里對七段數碼管的學習,我會用到計算器的制作中,加以鞏固。也希望和小伙伴們一起學習,有時間我也會多多分享學習的知識,記錄學習過程。
總結
以上是生活随笔為你收集整理的【51单片机】七段数码管显示实验+详细讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css常见属性记录(未完待续)
- 下一篇: 如何选择一款最好的硬盘对拷工具