專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

第6課 數(shù)碼管靜態(tài)顯示

作者:huqin   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年12月30日   【字體:

 

1、數(shù)碼管顯示原理
數(shù)碼管是單片機(jī)應(yīng)用系統(tǒng)中常用的一種顯示器件,由于其價(jià)格低廉、操作簡(jiǎn)單,而被廣泛的應(yīng)用于各種數(shù)字顯示系統(tǒng)中,常見(jiàn)的數(shù)碼管如圖1所示。
 
根據(jù)外觀的不同,數(shù)碼管又為分1位數(shù)碼管、2位數(shù)碼管、3位數(shù)碼管、四位數(shù)碼管等種類,如圖2所示。
但不論是幾位一體的數(shù)碼管,其顯示原理都是一樣的,都是靠?jī)?nèi)部發(fā)光二極管發(fā)光來(lái)進(jìn)行顯示的。下面我們以1位數(shù)碼管為例介紹其顯示原理。
    1、數(shù)碼管顯示的原理
數(shù)碼管內(nèi)部的電路如圖3所示,
圖3 數(shù)碼管內(nèi)部電路
圖3中,顯示一個(gè)完整的8字,需要7個(gè)小段,外加一個(gè)小數(shù)點(diǎn),共8段,分別稱為a段、b段、c段、d段、e段、f段、g段、dp段,每段內(nèi)部都集成了一個(gè)發(fā)光二極管,此時(shí)要想讓數(shù)碼管顯示數(shù)字,我們只需要讓相對(duì)應(yīng)的發(fā)光二極管發(fā)光就可以,例如要想讓此數(shù)碼管顯示數(shù)字是1,只需要讓b、c段的數(shù)碼管發(fā)光,而其它段的數(shù)碼管熄滅就可以了。
上圖中,每個(gè)發(fā)光二極管的陽(yáng)極全部引出,分別為a、b、c、d、e、f、g、dp,共8個(gè)引腳,而把所有發(fā)光二極管的陰極全部接到一起引出一個(gè)引腳w,此時(shí)我們把a(bǔ)、b、c、d、e、f、g、dp引腳稱為數(shù)碼管的段選引腳,簡(jiǎn)稱段選;而把w稱為位選引腳,簡(jiǎn)稱位選。通過(guò)單片機(jī)讓數(shù)碼管顯示數(shù)字,就是通過(guò)編寫(xiě)程序讓數(shù)碼管內(nèi)部相應(yīng)的數(shù)碼管發(fā)光。
數(shù)碼管根據(jù)內(nèi)部接法的不同又可分為共陰極數(shù)碼管和共陽(yáng)極數(shù)碼管兩種,上圖中,數(shù)碼管所有的發(fā)光二極管的陰極接在一起,而陽(yáng)極單獨(dú)引出,我們稱此數(shù)碼管為共陰極數(shù)碼管,而還有一種接法是把陽(yáng)極接在一起,而陰單獨(dú)引出,這種數(shù)碼管則稱之為共陽(yáng)極數(shù)碼管,具體在寫(xiě)程序時(shí)應(yīng)考慮到的是哪一種數(shù)碼管,共陽(yáng)極數(shù)碼管如圖4所示。
圖4 共陽(yáng)極數(shù)碼管
這里需要注意的是,在驅(qū)動(dòng)數(shù)碼管進(jìn)行顯示時(shí),數(shù)碼管內(nèi)部的發(fā)光二極管要正常工作大概需要5mA的電流,而單片機(jī)的I/O口通常不能提供如些大的電流,此時(shí)需要上位電阻或者專用的驅(qū)動(dòng)芯片,如7HHC573等,實(shí)驗(yàn)板上即采用的后者,后面會(huì)具體講到。 
因?yàn)閷?shí)驗(yàn)板上的數(shù)碼管相應(yīng)引腳在和單片機(jī)相連時(shí)用到了鎖存器,這里介紹一下鎖存器相關(guān)的一些知識(shí)。
74HC573為一種數(shù)字芯片,按其封裝的不同,分為直插和貼片的兩種,如圖6和圖7所示,
               圖6 直插式鎖存器,       圖7 貼片式鎖存器,
下面先介紹下74HC573的各個(gè)引腳功能和真值表,如圖8所示,OE為輸出使能端(低電平有效),也就是要使該芯片工作,此腳必須為低電平;1D-8D為數(shù)據(jù)輸入端;1Q-8Q為數(shù)據(jù)輸出端;LE為輸出控制端。
  
              圖8 74HC573引腳圖       圖9 74HC573真值表
圖9為74HC573的真值表,真值表可以直觀的表示數(shù)字芯片的工作特性,也就是要正確的使用數(shù)字芯片,必須學(xué)會(huì)看真值表。在圖9中,L表示低電平,H表示高電平,X表示任意電平,Z表示高阻態(tài),即,可以為高電平,也可以為低電平,高或低由與它相連的其它電氣狀態(tài)決定;Q0表示上一次電平狀態(tài)。
由圖9真值表可以看出,當(dāng)OE為高電平時(shí),無(wú)論控制端LE和數(shù)據(jù)端為什么電平,輸出Q都為高阻態(tài),也就是電平未知,此時(shí)鎖存器處于不可控的狀態(tài),而我們使用該芯片肯定是要控制它以完成相應(yīng)的功能,所以實(shí)驗(yàn)板上兩塊芯片在硬件上均直接接地,相當(dāng)于直接給低電平。
當(dāng)OE為低電平時(shí),LE為高時(shí),D和Q同時(shí)為H或L;LE為低時(shí),無(wú)論D為何種狀態(tài),Q都保持上一次的數(shù)據(jù)狀態(tài)。也就是說(shuō)LE為高電平時(shí),Q端的數(shù)據(jù)隨D端數(shù)據(jù)變化而變化,LE為低電平時(shí),Q端的數(shù)據(jù)保持為LE端由高電平變?yōu)榈碗娖街癚端的數(shù)據(jù)狀態(tài)。
在使用時(shí),我們一般把LE端接單片機(jī)的一個(gè)引腳,而把數(shù)據(jù)輸入端D接單片機(jī)的8個(gè)引腳,此時(shí)我們就可以通過(guò)單片機(jī)控制LE端電平的高低和數(shù)據(jù)端的電平狀態(tài)來(lái)決定鎖存器數(shù)據(jù)輸出端的輸出狀態(tài)。
講到這里,相信大家已經(jīng)對(duì)74HC573基本了解了,鎖存器的作用很多,在實(shí)驗(yàn)板上主要起到兩個(gè)作用,一個(gè)就是解決驅(qū)動(dòng)問(wèn)題,這一點(diǎn)前面已經(jīng)說(shuō)過(guò),單片機(jī)I/O口輸出的電流太小,不足以驅(qū)動(dòng)數(shù)碼管,此時(shí)就可以利用鎖鎖器來(lái)實(shí)現(xiàn);再一個(gè)就是節(jié)約單片機(jī)的I/O口,這一點(diǎn)后面會(huì)解釋到。
2數(shù)碼管靜態(tài)顯示
明白了顯示原理后,我們就可以對(duì)數(shù)碼管進(jìn)行操作了,讓我們先看看一下實(shí)驗(yàn)板的原理圖。
 
實(shí)驗(yàn)板上的數(shù)碼管為兩個(gè)3位一體的數(shù)碼管,共同組成一個(gè)6位8段共陽(yáng)極數(shù)碼管,
相同段的發(fā)光二極管陰極全部接在一起,引出8個(gè)引腳abcdefgdp,分別接到鎖存器的數(shù)據(jù)輸出口,而鎖存器74hc573的數(shù)據(jù)輸入口直接接到單片機(jī)P1口的8信引腳,注意此時(shí)P0口同時(shí)接了10K的上拉電阻;每一位數(shù)碼管內(nèi)部發(fā)光二極管陽(yáng)極接在一起,然后分別引出6個(gè)腳w1w2w3w4w5w6,并能過(guò)鎖存器74hc573接到了單片機(jī)P1口的6個(gè)腳。兩個(gè)鎖存器的鎖存端分別與單片機(jī)的P2^6和P2^7相連。
也就是這六位數(shù)碼管“段選”全部連在一起,而“位選”是可以獨(dú)立控制的,我們可通過(guò)控制位選信號(hào)而選擇讓哪幾個(gè)數(shù)碼管發(fā)光,具體顯示的內(nèi)容可以通過(guò)段選信號(hào)進(jìn)行,但由于所有段選是全部連在一起的,送入所在數(shù)碼管的段選信號(hào)必定相同,所以位選選通的數(shù)碼管上顯示的數(shù)字始終一樣,數(shù)碼管的這種顯示方式稱為靜態(tài)顯示。
下面我們就寫(xiě)一個(gè)簡(jiǎn)單的程序讓第一個(gè)數(shù)碼管顯示一個(gè)8字。先來(lái)分析如下:讓第一個(gè)數(shù)碼管顯示8字,那么別的數(shù)碼管的位選就要關(guān)閉,即只打開(kāi)第一個(gè)數(shù)碼管的位選。在操作時(shí),我從頭先給U2數(shù)碼管的鎖存端一個(gè)高電平,然后將數(shù)據(jù)從單片機(jī)的口P0直接送出到鎖存器的U2的數(shù)據(jù)輸出端,然后再關(guān)閉U2鎖存器。由于實(shí)驗(yàn)板上的數(shù)碼管為共陽(yáng)極,所以位選選通時(shí)為高電平,位選關(guān)閉時(shí)為低電平。即只有W1端對(duì)應(yīng)的數(shù)據(jù)為1,其它的都為0,因此P0口呆輸出的數(shù)據(jù)0x01;(二進(jìn)制為0000 0001)。位選確定后,再確定段選,要顯示8,那么只有h段為0,其余段為1,所以用操作U2的方法一樣操作U1,讓U1數(shù)據(jù)輸出端輸出0x7f(二進(jìn)制為0111 1111)
程序:?jiǎn)纹瑱C(jī)顯示8
#include<reg52.h>
 
#define uint unsigned int
#define uchar unsigned char
 
sbit duan=P2^6;
sbit wei=P2^7;
 
void main()//第一個(gè)數(shù)碼管顯示8
{
       while(1)
       {
              duan=1;
              P0=0x7f;
              duan=0;
      
              wei=1;
              P0=0xfe;
              wei=0;
              while(1);
       }
}
下面先下載到實(shí)驗(yàn)板上看現(xiàn)象。
通過(guò)上面的現(xiàn)象我們實(shí)現(xiàn)了數(shù)碼管靜態(tài)顯示的功能,這里大家家可能已經(jīng)知道,程序中段用了單片機(jī)的8個(gè)引腳,而位用到了單片機(jī)的6個(gè)引腳,按理說(shuō)我們一共需要14個(gè)引腳,而因?yàn)殒i存器的原因,實(shí)際上我們只用到了P1口8個(gè)腳就實(shí)現(xiàn)了,這就是上面講的鎖存器的第二個(gè)作用,使用鎖存器可以達(dá)到節(jié)約單片機(jī)的I/O口的作用。
關(guān)閉窗口

相關(guān)文章