項目六 數碼管顯示原理_第1頁
項目六 數碼管顯示原理_第2頁
項目六 數碼管顯示原理_第3頁
項目六 數碼管顯示原理_第4頁
項目六 數碼管顯示原理_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、項目六 數碼管顯示原理學習目的:1. 介紹STC89C51的數碼管顯示的原理;2. 掌握單個數碼管靜態顯示的原理;3. 熟悉四位一體數碼管動態顯示的原理;4. 掌握單片機數碼管顯示的C51程序編程。常用的LED顯示器有LED狀態顯示器(俗稱發光二極管)、LED七段顯示器(俗稱數碼管)和LED十六段顯示器。發光二極管可顯示兩種狀態,用于系統狀態顯示;數碼管用于數字顯示;LED十六段顯示器用于字符顯示。一、數碼管簡介1數碼管的結構數碼管由8個發光二極管(以下簡稱字段)構成,通過不同的組合可用來顯示數字0 9、字符A F、H、L、P、R、U、Y、符號“”及小數點“”。數碼管的外形結構如下圖所示。數碼

2、管又分為共陰極和共陽極兩種結構。常用的LED顯示器為8段(或7段,8段比7段多了一個小數點“dp”段)。有共陽極和共陰極兩種其結構如下圖所示:圖6-1 數碼管結構圖2數碼管工作原理共陽極數碼管的8個發光二極管的陽極(二極管正端)連接在一起。通常,公共陽極接高電平(一般接電源),其它管腳接段驅動電路輸出端。當某段驅動電路的輸出端為低電平時,則該端所連接的字段導通并點亮。根據發光字段的不同組合可顯示出各種數字或字符。此時,要求段驅動電路能吸收額定的段導通電流,還需根據外接電源及額定段導通電流來確定相應的限流電阻。共陰極數碼管的8個發光二極管的陰極(二極管負端)連接在一起。通常,公共陰極接低電平(一

3、般接地),其它管腳接段驅動電路輸出端。當某段驅動電路的輸出端為高電平時,則該端所連接的字段導通并點亮,根據發光字段的不同組合可顯示出各種數字或字符。此時,要求段驅動電路能提供額定的段導通電流,還需根據外接電源及額定段導通電流來確定相應的限流電阻。3數碼管字形編碼要使數碼管顯示出相應的數字或字符,必須使段數據口輸出相應的字形編碼。字型碼各位定義為:數據線D0與a字段對應,D1與b字段對應,依此類推。如使用共陽極數碼管,數據為0表示對應字段亮,數據為1表示對應字段暗;如使用共陰極數碼管,數據為0表示對應字段暗,數據為1表示對應字段亮。如要顯示“0”,共陽極數碼管的字型編碼應為:11000000B(

4、即C0H);共陰極數碼管的字型編碼應為:00111111B(即3FH)。依此類推。下圖為LED顯示器的結構原理圖。N個LED顯示塊有N位位選線和8×N根段碼線。 段碼線控制顯示的字型,位選線控制該顯示位的亮或暗。靜態顯示和動態顯示兩種顯示方式。圖6-2 LED顯示器的結構原理圖二、靜態顯示接口靜態顯示是指數碼管顯示某一字符時,相應的發光二極管恒定導通或恒定截止。這種顯示方式的各位數碼管相互獨立,公共端恒定接地(共陰極)或接正電源(共陽極)。每個數碼管的8個字段分別與一個8位I/O口地址相連,I/O口只要有段碼輸出,相應字符即顯示出來,并保持不變,直到I/O口輸出新的段碼。采用靜態顯示

5、方式,較小的電流即可獲得較高的亮度,且占用CPU時間少,編程簡單,顯示便于監測和控制,但其占用的口線多,硬件電路復雜,成本高,只適合于顯示位數較少的場合。圖6-3 4位靜態數碼顯示電路上圖中各位的公共端連接在一起(接地或+5V)。 每位的段碼線(adp)分別與一個8位的鎖存器輸出相連。顯示字符一確定,相應鎖存器的段碼輸出將維持不變,直到送入另一個段碼為止。顯示的亮度高。該電路各位可獨立顯示。三、動態顯示接口動態顯示是一位一位地輪流點亮各位數碼管,這種逐位點亮顯示器的方式稱為位掃描。通常,各位數碼管的段選線相應并聯在一起,由一個8位的I/O口控制;各位的位選線(公共陰極或陽極)由另外的I/O口線

6、控制。動態方式顯示時,各數碼管分時輪流選通,要使其穩定顯示,必須采用掃描方式,即在某一時刻只選通一位數碼管,并送出相應的段碼,在另一時刻選通另一位數碼管,并送出相應的段碼。依此規律循環,即可使各位數碼管顯示將要顯示的字符。雖然這些字符是在不同的時刻分別顯示,但由于人眼存在視覺暫留效應,只要每位顯示間隔足夠短就可以給人以同時顯示的感覺。圖6-4 4位動態數碼顯示電路上圖所有位的段碼線相應段并在一起,由一個8位I/O 口控制,形成段碼線的多路復用,各位的公共端分別由相應的I/O線控制,形成各位的分時選通。圖6-4為4位8段LED動態顯示電路。其中段碼線占用一個8位I/O口,而位選線占用一個4位I/

7、O口。采用動態顯示方式比較節省I/O口,硬件電路也較靜態顯示方式簡單,但其亮度不如靜態顯示方式,而且在顯示位數較多時,CPU要依次掃描,占用CPU較多的時間。四、定時/計數器應用程序舉例1.在四位一體數碼管個位上上顯示數字1。(1)硬件原理圖本教材配套開發板中,數碼管的段選控制信號由連接器J15分別接到單片機P0.0P0.7,位選控制信號由連接器J16分別接到單片機P2.0P2.3。四個三極管對位選信號進行驅動,位選控制信號為低電平時,相應的數碼管被選中。具體的原理圖如圖6-5所示。圖6-5 四位一體數碼管原理圖(2)程序流程圖具體程序流程圖見圖6-6所示。(3)軟件代碼#include vo

8、id main(P2=0xfe; /選中個位P0=0xf9; / 1while(1;2.在四位一體數碼管各位依次顯示0F,間隔時間為1秒。(1)硬件原理圖具體原理圖參見圖6-5。(2)程序流程圖具體程序流程圖見圖6-7所示。(3)軟件代碼#include #define uchar unsigned char #define uint unsigned intuchar data smg=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void delay(uint t /0.2ms

9、 * t 供參考uchar time;dotime=100;while(-time;while(-t;void cycle(uchar i;P2=0xfe;while(1for(i=0;i<16;i+P0=smgi;delay(5000; void main(cycle(;3.在四位一體數碼管上動態顯示8952。(1)硬件原理圖具體原理圖參見圖6-5。(2)程序流程圖具體程序流程圖見圖6-8所示。(3)軟件代碼#include #define uchar unsigned charuchar data smgd=0x80,0x90,0x92,0xa4; /8952uchar data s

10、mgw=0xf7,0xfb,0xfd,0xfe; /位void delay(uchar t /0.2ms * t 供參考uchar time;dotime=100;while(-time;while(-t;void show(uchar i;while(1for(i=0;i<4;i+P0=0xff; /消影P2=smgwi; /位P0=smgdi; /段delay(21; void main(show(;五、實訓1.實訓目的進一步了解掌握四位一體數碼管顯示的靜態顯示方式,掌握編程方法,能夠熟練編寫相關控制程序。2.實訓內容(1)定時器報警器設計(定時器T1定時,數碼管顯示20秒倒計時,時

11、間為0時觸發蜂鳴器鳴叫)。(2)四位一體數碼管四個位同時顯示0F,時間間隔為1秒,利用定時器定時。(3)四位顯示(分+秒)的數字時鐘。3.實訓步驟1)用Keil51編寫代碼,調試、編譯后生成.hex文件。2)將開發板上連接器J3、J15、J16用跳線帽連接。3)利用STC-ISP下載軟件,將.hex文件下載到單片機ROM中。4.軟件代碼實訓(1)軟件代碼:#include #define uchar unsigned charsbit P21=P21;sbit P20=P20;sbit wave=P34;#define thr P0=0xff;P21=0;P20=1; / 宏定義函數#defi

12、ne fou P0=0xff;P21=1;P20=0;uchar x=20;uchar t=0;uchar data smg10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delay(uchar t / t * 0.2 ms 參考uchar time;dotime=100;while(-time;while(-t;void init( / 初始化TMOD=0x01;TH0=(65536-50000/256;TL0=(65536-50000%256;EA=1;ET0=1;TR0=1;void show( / 顯示if(x/10

13、/ 高位滅零thr P0=smgx/10;delay(21; fou P0=smgx%10;delay(21;void fire( / 報警程序wave=0;while(1; / 程序終止void cycle(while(1if(t/20 / 1st=0;x-;if(x=0P0=0xc0; / 顯示 0fire(; / 20秒到了,調用報警程序show(; void main(init(;cycle(;void zd(interrupt 1t+;TH0=(65536-50000/256;TL0=(65536-50000%256;實訓(2)軟件代碼:#include #define uchar

14、unsigned charuchar x=0;uchar data smg16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void init(TMOD=0x10;TH1=(65536-50000/256;TL1=(65536-50000%256;EA=1;ET1=1;TR1=1;void wx( / 四位同時顯示P2=0xf0;void cycle(uchar i=0;while(1if(x/20 / 定時達到1sP0=smgi;x=0;i+;if(i=16i=0; void

15、main(init(;wx(;cycle(;void zd(interrupt 3x+;TH1=(65536-50000/256;TL1=(65536-50000%256;實訓(3)軟件代碼:#include #define uchar unsigned charsbit P23=P23;sbit P22=P22;sbit P21=P21;sbit P20=P20;#define one P0=0xff;P23=0;P22=1;P21=1;P20=1; / 宏定義函數#define two P0=0xff;P23=1;P22=0;P21=1;P20=1;#define thr P0=0xff;

16、P23=1;P22=1;P21=0;P20=1;#define fou P0=0xff;P23=1;P22=1;P21=1;P20=0;uchar m=0,s=0,x=0; / 初值為零uchar data smg10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delay(uchar t / 0.2ms * t 參考uchar time;dotime=100;while(-time;while(-t;void init( / 初始化TMOD=0x01;TH0=(65536-50000/256;TL0=(65536-50000%256;EA=1;ET0=1;TR0=1;void show( / 顯示one P0=smgm/10;delay(21;two P0=smgm%10;delay(21;thr P0=smgs/10;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論