單片機驅動數碼管顯示設計
②靜態(tài)顯示驅動:靜態(tài)驅動也稱直流驅動。靜態(tài)驅動是指每個數碼管的每一個段碼都由一個單片機的I/O端口進行驅動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅動。靜態(tài)驅動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅動5個數碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅動,要知道一個89S51單片機可用的I/O端口才32個呢:),實際應用時必須增加譯碼驅動器進行驅動,增加了硬件電路的復雜性。
前面我們學習了數碼管的基礎知識,現在馬上來看看S51增強型實驗板的數碼管吧(圖4),S51實驗板上有5位高亮度共陽數碼管DG1~DG5,可以用來做計數器(最大計數值99999)、溫度顯示、電子鐘等顯示實驗,掌握數碼管的靜態(tài)顯示驅動和動態(tài)顯示驅動。
![]() |
圖4 |
S51增強型實驗板的數碼管驅動原理圖如下圖5所示。
![]() |
圖5 |
從原理圖可以看出,S51增強型實驗板中數碼管的段碼a,b,c,d,e,f,g,dp分別與單片機的P0.0~P0.7相連,控制數碼管中顯示的字形;數碼管的位選通由5個PNP三極管控制,分別接到單片機的P2.0、P2.1、P2.2、P2.3、P2.4端口上,程序中通過控制P2.0~P2.4端口的輸出電平就可以控制數碼管的顯示與關閉。如P2.0輸出低電平時,三極管T1導通,+5V電源加到第一個數碼管的COM端,那么第一個數碼管DG1就會顯示出相應的數字,顯示的數字由單片機P0.0~P0.7輸出段碼決定,當P2.0輸出高電平時,三極管T1截止,數碼管DG1就不顯示,從而實現數碼管位選通控制。同理,當P2.1輸出低電平時,則數碼管DG2顯示。。。
單片機驅動數碼管的靜態(tài)顯示編程
上面我們學習了一大堆的理論知識,對數碼管已經有了較全面的認識,是否躍躍欲試了呀!馬上動手編一個簡單的程序驗證一下理論吧,現在我們編程讓實驗板上的第一個數碼管DG1顯示數字“6”,最終的實驗效果見上面圖4所示。
啟動Keil C51單片機集成開發(fā)環(huán)境,新建一個工程,工程命名為smg1.uv2,(不懂如何建立新工程的初學者請看網頁 手把手教你建立Keil工程),打開一個文本編輯窗,在文本編輯窗中輸入如下代碼:
;********** 下面是數碼管顯示"6"的程序 **********
MAIN:CLR P0.0;P0.0輸出低電平,點亮數碼管段碼"a"
SETBP0.1;P0.1輸出高電平,熄滅數碼管段碼"b"
CLR P0.2;P0.2輸出低電平,點亮數碼管段碼"c"
CLR P0.3;P0.3輸出低電平,點亮數碼管段碼"d"
CLR P0.4;P0.4輸出低電平,點亮數碼管段碼"e"
CLR P0.5;P0.5輸出低電平,點亮數碼管段碼"f"
CLR P0.6;P0.6輸出低電平,點亮數碼管段碼"g"
SETBP0.7;P0.7輸出高電平,熄滅數碼管小數點段碼"dp"
CLR P2.0;P2.0輸出低電平,選通數碼管DG1
SETBP2.1;P2.1輸出高電平,不選通數碼管DG2
SETBP2.2;P2.2輸出高電平,不選通數碼管DG3
SETBP2.3 ;P2.3輸出高電平,不選通數碼管DG4
SETBP2.4;P2.4輸出高電平,不選通數碼管DG5
AJMPMAIN;跳轉到開始重新進行
END ;程序結束
注:程序中分號“;”后面的中文為每一行程序的注釋,是方便我們閱讀程序的,可以不輸入。
上面的源程序輸入完畢后,保存為"smg1.asm",然后添加到工程smg1.uv2中,最后源程序經過編譯得到目標文件"smg1.hex"(見下面的圖6所示),不熟悉Keil工程建立、設置及源程序編譯等詳細操作的初學者請參考網頁 >>> 手把手教你建立Keil工程。>>>
手機電池相關文章:手機電池修復
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
評論