張成法++孫月興
摘 要
本文講述利用74HC573鎖存器和定時器來實現對數碼管的動態(tài)顯示,通過從左向右讓六位數碼管中的每一位每隔一秒依次顯示123456來闡述數碼管動態(tài)顯示具體實現方法。
【關鍵詞】動態(tài)顯示 數碼管 鎖存器
數碼管由于價格便宜,使用簡單,在電器特別是家電領域(比如空調、熱水器和冰箱等)得到了極為廣泛的應用。在高校電子信息類專業(yè)單片機的教學過程中,數碼管動態(tài)顯示及實現方法是學生普遍反映較難掌握的內容。鑒于此,本文通過實際案例詳細闡述了數碼管的動態(tài)顯示特點及實現方法。
1 系統(tǒng)整體設計
本系統(tǒng)是由AT89C52單片機、2個74HC573鎖存器U3和U4,1個10K的電阻排,6個7段共陰極數碼管、電源電路和復位電路組成。
74HC573鎖存器的鎖存端LE是高電平的時候,它的輸入端D0~D7和輸出端Q0~Q7是直通的,此時輸入端數據會直接輸出給輸出端。74HC573鎖存器的鎖存端LE是低電平的時候,輸入端和輸出端斷開,輸出端保持原來的數值。
通過2個74HC573鎖存器可以實現對數碼管的段選和位選的選擇。所謂段選是表示數碼管中亮的內容(比如 1,2,3,4,5.......),而位選是表示讓哪一個數碼管亮,本系統(tǒng)中同時接入了6個數碼管,通過對位選的賦值,可以選擇讓哪一個數碼管亮。
鎖存器U3的輸出WE1、WE2、WE3、WE4、WE5和WE6用來控制數碼管的位選,鎖存器U4的輸出a、b、c、d、e、f、g和h用來控制數碼管的段選,這兩個鎖存器的輸入端全部接在了P0口上,P0口的內部無上拉電阻,需在它的外部加一個10K的上拉電阻排P1,這樣的話,單片機一上電后,P0口就是高電平。
2 數碼管顯示分析
如果想讓哪個數碼管亮,那么先將控制位選的鎖存器U3的鎖存端LE設為高電平,然后通過P0口送數值選擇哪一位數碼管亮,當這一位的數碼管亮了以后,然后把鎖存端LE設為低電平,鎖存器的數據輸出端的位選就保持住了,然后再把控制段選的鎖存器U4的鎖存端LE設置為高電平,然后通過P0口送數值,使數碼管顯示相應的數值,然后再把鎖存器U4的鎖存端LE設置為低電平,這時候段選和位選都賦上值了,數碼管就亮了,并且顯示相應的數值。這就是用一個P0端口通過兩個鎖存器U3和U4控制六位數碼管。
要在第一個數碼管上顯示數字1,可以這樣操作:將鎖存器U3的鎖存端LE設為高電平,通過P0口送數0xfe,然后再將鎖存端LE設為低電平,這時在鎖存器U3的右端就保持住了0xfe這個數值,不管再怎么改變P0口的數值,鎖存器U3右端的數值還是0xfe,不會發(fā)生變化;將鎖存器U4的鎖存端LE設為高電平,然后給P0口送數據0x06(0x06對應十進制數1),然后將鎖存端LE設為低電平,這樣就把段選數值鎖存住了,這樣的話在第一個數碼管上就會顯示十進制數字1。
3 動態(tài)顯示實現方法
通過編寫“從左向右讓六位數碼管中的每一位每隔一秒依次顯示123456”的程序來講述數碼管的動態(tài)顯示實現方法。
在程序中會用到共陰極數碼管編碼表{0x06,0x5b,0x4f,0x66,0x6d,0x7d },此編碼表中的數值分別對應十進制數1,2,3,4,5,6,此編碼表的表示可以使用數組biao[ ],將biao[ ]定義成編碼的格式,利用biao[ ]數組將編碼表{0x06,0x5b,0x4f,0x66,0x6d,0x7d}中的數值取出來。利用位選數組biaowe[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}選擇點亮六位數碼管中的哪一位。在程序中,利用定時器和中斷服務程序來控制數碼管的顯示時間實現了數碼管的動態(tài)顯示。部分程序如下所示:
TMOD=0x01; //設置工作方式為16位定時/計數器
EA=1; //開總中斷
ET0=1; //開定時器0中斷
TR0=1; //啟動定時器0
if(aa==40)
{ aa=0;numdu++;
dula=1;P0=biao[numdu];dula=0;
wela=1;P0=biaowe[numwe];wela=0;
numwe++;}
void timecalculate0() interrupt 1 //中斷
{ TH0=(65536-25000)/256; TL0=(65536-25000)%256; aa++;}
此程序是讓6個數碼管中的數值依次每隔1秒顯示,現在稍微得加快數碼管顯示速度,通過將程序中的aa==40修改為aa==10讓數碼管中的數值依次每隔250毫秒顯示,通過單片機仿真系統(tǒng)原理圖,可以看出數碼管顯示速度加快;將數碼管顯示速度進一步加快,通過修改程序讓數碼管中的數值依次每隔50毫秒顯示,觀察數碼管的變化效果,可以看到數碼管顯示速度加快,6個數值在數碼管上隱約全部顯示出來;再讓數碼管中的數值依次每隔5毫秒顯示,看看數碼管的變化效果,可以看到123456這六個數在數碼管上完全清晰地顯示出來了。
4 結束語
在本文中,通過對鎖存器功能的介紹、數碼管顯示的分析和案例程序的編寫,詳細闡述了數碼管的動態(tài)顯示及實現方法。
參考文獻
[1]吳振磊,劉孝趙.74HC595在單片機控制多位數碼管中的應用[J].科技廣場,2013.
[2]李全利.單片機原理及應用技術[M].高等教育出版社,2009.
作者簡介
張成法(1984-),男,山東省青州市人。碩士研究生學歷。現供職于濰坊工程職業(yè)學院。主要研究方向為單片機與嵌入式系統(tǒng)。
作者單位
濰坊工程職業(yè)學院 山東省青州市 262500