單片機實例之數(shù)碼管_第1頁
單片機實例之數(shù)碼管_第2頁
單片機實例之數(shù)碼管_第3頁
單片機實例之數(shù)碼管_第4頁
單片機實例之數(shù)碼管_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課題三(實例)課題三(實例) 之數(shù)碼管顯示之數(shù)碼管顯示n任務一 單個單個LED數(shù)碼管的靜態(tài)控制顯示方式數(shù)碼管的靜態(tài)控制顯示方式n任務二 多個多個LED數(shù)碼管的動態(tài)控制顯示方式數(shù)碼管的動態(tài)控制顯示方式n任務三 099999999加法計數(shù)器加法計數(shù)器n課題目標課題目標 本課題的任務是用單片機實現(xiàn)簡易數(shù)字本課題的任務是用單片機實現(xiàn)簡易數(shù)字顯示,演示效果如圖顯示,演示效果如圖4-1所示。通過編程,所示。通過編程,學會在單片機上實現(xiàn)一位數(shù)字和多位數(shù)字學會在單片機上實現(xiàn)一位數(shù)字和多位數(shù)字的靜態(tài)和動態(tài)顯示控制方法,以及不同進的靜態(tài)和動態(tài)顯示控制方法,以及不同進制計數(shù)的程序編寫方法。制計數(shù)的程序編寫方法。任務

2、一任務一 LED數(shù)碼管的靜態(tài)顯示數(shù)碼管的靜態(tài)顯示 本任務就是將單片機與數(shù)碼管接成圖4-2所示靜態(tài)顯示方式,編程實現(xiàn)數(shù)碼管每隔0.2s的0-9數(shù)字顯示。圖4-2 數(shù)碼管顯示電路圖一、任務分析一、任務分析 所謂靜態(tài)顯示,就是當單片機某一端口輸出一組顯示數(shù)據(jù)之后,該端口一直保持該數(shù)據(jù)輸出,維持數(shù)碼管的顯示數(shù)字,直到端口數(shù)據(jù)改變,又保持顯示下一數(shù)據(jù)的顯示方式。 在具體電路連接上,將單片機一個端口的八個端子接在一只數(shù)碼管的八個引腳上(h端為小數(shù)點),控制數(shù)碼管的七段LED的亮或熄,顯示器出數(shù)字,這種顯示控制方式就是靜態(tài)顯示。靜態(tài)顯示電路連接特點是單片機端口的每一位與數(shù)碼管的一個端相連接,相當于單片機的一

3、個引腳外接一只發(fā)光二極管。二、LED數(shù)碼管的結構和工作原理。圖4-3 數(shù)碼管結構圖 數(shù)碼管實際上是由7個發(fā)光管組成“8”字形構成的,加上小數(shù)點就是8個。這些段分別由字母a、b、c、d、e、f、g、dp來表示。當數(shù)碼管特定的段加上電壓后,這些特定的段就會發(fā)亮,以形成我們眼睛看到的字樣。例如:顯示一個“3”字,那么應當是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、dp不亮。數(shù)碼管的內部結構如圖2.4所示,其中COM引腳為公共端,用來控制數(shù)碼管顯示的打開或關閉,即起到“使能”作用。 根據(jù)公共端接法的不同,數(shù)碼管又分為共陰極和共陽極兩種結構,分別如圖2.4(b)和圖 2.4(c)所示。 共陽極就是將

4、8個LED的陽極連接到一起組成公共端COM,接正極,當相應字段為低電平“0”時,可以點亮該字段;當相應字段為高電平“1”時,該字段不亮。 共陰極就是將8個LED的陰極連接到一起組成公共端COM,接負極,當相應字段為高電平“1”時,可以點亮該字段;當相應字段為低電平“0”時,該字段不亮。數(shù)碼管段碼 表4-1 共陰數(shù)碼管顯示數(shù)字的段碼表數(shù)碼管段碼 表4-2 共陽數(shù)碼管顯示數(shù)字的段碼表四、程序設計 要實現(xiàn)09的顯示,設計方法與前面彩燈花樣顯示類似,首先寫出09的顯示數(shù)據(jù)(表4-1中的字型碼數(shù)據(jù),注意電路中選用的是共陰或共陽數(shù)碼管一致),這些數(shù)據(jù)在程序中作數(shù)組元素。程序中將數(shù)組元素依次讀出送到端口,使

5、數(shù)碼管顯示出對應的數(shù)字。程序的設計框圖見圖4-5。圖4-51、C語言程序:#include #define uchar unsigned charunsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char dispcount;void delay02s() unsigned char i,j,k;for(i=10;i0;i-)for(j=200;j0;j-)for(k=248;k0;k-);void main(void) while(1) for(dispc

6、ount=0;dispcount10;dispcount+) P1=tabledispcount; delay02s();2、匯編語言程序:org 00haa:mov r0,#00hmov dptr,#tabsd:mov a,r0movc a,a+dptrmov p1,alcall delayinc r0cjne r0,#10,sdsjmp aadelay:mov r6,#5SS:MOV R7, #200LOOP:MOV R5, #249DJNZ R5, $DJNZ R7,LOOPDJNZ R6,SSrettab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6

7、fh end任務二任務二 LED數(shù)碼管的動態(tài)顯示數(shù)碼管的動態(tài)顯示 本任務就是當單片機與數(shù)碼管接成動態(tài)顯示方式,編程實現(xiàn)數(shù)碼管的0-7數(shù)字顯示。 一、電路原理 動態(tài)顯示的電路有很多,本課題中所選用的動態(tài)顯示的電路有很多,本課題中所選用的電路如圖電路如圖4-6所示。圖中用的是兩只四位數(shù)碼管。所示。圖中用的是兩只四位數(shù)碼管。每只已將所有數(shù)碼管的每只已將所有數(shù)碼管的ah分別連接在一起,再分別連接在一起,再將兩只四位數(shù)碼管的將兩只四位數(shù)碼管的ah連接在一起,即將八只連接在一起,即將八只數(shù)碼管八段顯示的數(shù)碼管八段顯示的段碼控制線連接段碼控制線連接在一起,作為在一起,作為整個數(shù)碼管的段碼控制。單片機端口驅動

8、能力不整個數(shù)碼管的段碼控制。單片機端口驅動能力不足,在段碼上使用足,在段碼上使用74LS373提高數(shù)碼管亮度。對提高數(shù)碼管亮度。對每只數(shù)碼管的公共端進行控制,使每只數(shù)碼管的公共端進行控制,使每只數(shù)碼管可每只數(shù)碼管可以單獨顯示以單獨顯示。電路中,將每個數(shù)碼管的。電路中,將每個數(shù)碼管的COM端接端接位選信號位選信號dig,該引腳為低電平即接通顯示,實現(xiàn),該引腳為低電平即接通顯示,實現(xiàn)數(shù)碼管的位控制。數(shù)碼管的位控制。圖4-6 數(shù)碼管原理圖三、74LS138譯碼器: 74LS138 為3 線8 線譯碼器,其工作原理如下: 當一個選通端(G1)為高電平,另兩個選通端(/(G2A)和/(G2B))為低電平

9、時,可將地址端(A、B、C)的二進制編碼在一個對應的輸出端以低電平譯出。 圖4-4 74LS138引腳圖n真值表: 表4-2 74LS138功能表圖4-6 數(shù)碼管原理圖1、C語言程序:#include #define uchar unsigned charsbit a=P05;sbit b=P06;sbit c=P07;uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;uchar dispcount;void delay02s(void) unsigned char i,j,k;for(i=

10、10;i0;i-)for(j=200;j0;j-)for(k=248;k0;k-);void main(void) while(1) for(dispcount=0;dispcount10;dispcount+) a=0; b=0; c=0; P1=tabledispcount; delay02s(); 2、匯編語言程序:org 00haa:mov r0,#00hmov dptr,#tabclr p0.5clr p0.6clr p0.7sd:mov a,r0movc a,a+dptrlcall delaymov p1,ainc r0cjne r0,#10,sdsjmp aadelay:mov

11、r6,#5SS:MOV R7, #200LOOP:MOV R5, #249DJNZ R5, $DJNZ R7,LOOPDJNZ R6,SSrettab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh end 如圖如圖4-6所示電路,在電路連接上將所有要顯所示電路,在電路連接上將所有要顯示的數(shù)碼管的八個端并接在單片機同一個端口的示的數(shù)碼管的八個端并接在單片機同一個端口的八位上,而用單片機的另一個端口的各個位分別八位上,而用單片機的另一個端口的各個位分別控制各數(shù)碼管的公共端,控制數(shù)碼管是否點亮。控制各數(shù)碼管的公共端,控制數(shù)碼管是否點亮。在程序的控制下,在程序的

12、控制下,快速地依次輸出要顯示各個數(shù),快速地依次輸出要顯示各個數(shù),并同時控制對應數(shù)碼管工作并同時控制對應數(shù)碼管工作,這就是數(shù)碼管的動,這就是數(shù)碼管的動態(tài)顯示方式。態(tài)顯示方式。 宏觀看同時點亮,微觀看依次點亮宏觀看同時點亮,微觀看依次點亮圖4-6 數(shù)碼管原理圖 動態(tài)顯示達到一定速度時,由于人眼的視覺暫動態(tài)顯示達到一定速度時,由于人眼的視覺暫留特性,在觀察時,數(shù)碼管所有內容如同靜態(tài)顯留特性,在觀察時,數(shù)碼管所有內容如同靜態(tài)顯示一樣,不會產(chǎn)生閃爍。所以,對動態(tài)掃描的頻示一樣,不會產(chǎn)生閃爍。所以,對動態(tài)掃描的頻率有一定的要求,率有一定的要求,LED數(shù)碼管將出現(xiàn)數(shù)碼管將出現(xiàn)現(xiàn)象。如現(xiàn)象。如,由于每個,由于

13、每個LED數(shù)碼管點數(shù)碼管點亮的時間太短,亮的時間太短,LED數(shù)碼管的亮度太低,數(shù)碼管的亮度太低,。所以,顯示時間一般取。所以,顯示時間一般取幾個幾個ms左右為宜。在左右為宜。在編寫程序時,常采用調用延時子程序來達到要求編寫程序時,常采用調用延時子程序來達到要求的保持時間。程序工作時,使電路的保持時間。程序工作時,使電路選通某一位數(shù)選通某一位數(shù)碼管后,該數(shù)碼管被點亮后并保持一定的時間碼管后,該數(shù)碼管被點亮后并保持一定的時間。 下面,以在數(shù)碼管上從左到右依次顯示出下面,以在數(shù)碼管上從左到右依次顯示出8 8個個數(shù)字(數(shù)字(0 07 7)為例,編寫動態(tài)顯示程序。程序中)為例,編寫動態(tài)顯示程序。程序中將

14、要顯示的八個數(shù)字放在一個數(shù)組中(該數(shù)組取將要顯示的八個數(shù)字放在一個數(shù)組中(該數(shù)組取名為名為display_datadisplay_data)。如果從段碼輸出端口來看,)。如果從段碼輸出端口來看,動態(tài)顯示程序的顯示段碼輸出的過程,其實質和動態(tài)顯示程序的顯示段碼輸出的過程,其實質和靜態(tài)顯示八個數(shù)字是一樣的,依次輸出各個段碼;靜態(tài)顯示八個數(shù)字是一樣的,依次輸出各個段碼;從位碼端口看,要哪只數(shù)碼管顯示,就在那只數(shù)從位碼端口看,要哪只數(shù)碼管顯示,就在那只數(shù)碼對應位輸出碼對應位輸出1 1,顯示一個數(shù)字后,則下一位輸出,顯示一個數(shù)字后,則下一位輸出高電平,這與跑馬燈的控制是一樣的。將這兩個高電平,這與跑馬燈

15、的控制是一樣的。將這兩個程序結合起來,就是動態(tài)顯示程序,流程圖如圖程序結合起來,就是動態(tài)顯示程序,流程圖如圖4-74-7所示。所示。二、程序分析二、程序分析圖4-7 動態(tài)顯示流程圖變量賦初值化將數(shù)組display_data中第i個元素送段碼端口等待一段時間Yes i8No變量指向下一個數(shù)據(jù)輸出位碼控制數(shù)據(jù)1、C語言程序:#include #define uchar unsigned charuchar code tabledu=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;uchar code tablewe=0 x1f

16、,0 x3f,0 x5f,0 x7f,0 x9f,0 xbf,0 xdf,0 xff;unsigned char dispcount;void delaynms(unsigned char n) unsigned char i,j;for(i=n;i0;i-)for(j=250;j0;j-);void main(void) while(1) for(dispcount=0;dispcount8;dispcount+) P1=tabledudispcount; P0=tablewedispcount; delaynms(20); /10ms,12MHz2、匯編語言:org 00haa:mov r

17、0,#00hsd:mov dptr,#tab2mov a,r0movc a,a+dptrmov p0,amov a,r0mov dptr,#tab1movc a,a+dptrmov p1,alcall delayinc r0cjne r0,#8,sdsjmp aadelay:mov r6,#5SS:MOV R7,#200LOOP:MOV R5,#249DJNZ R5, $DJNZ R7,LOOPDJNZ R6,SSrettab1:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07htab2:db 1fh,3fh,5fh,7fh,9fh,0bfh,0dfh,0ffhend思考n1

18、.若位控制不是由74Ls138控制,而是由P0口直接控制,程序應該做如何修改?n2.兩種位控制方式,各有什么優(yōu)缺點?任務三任務三 099999999加法計數(shù)器加法計數(shù)器本任務是實現(xiàn)本任務是實現(xiàn)099999999的加的加1計數(shù)顯示。計數(shù)顯示。程序設計分析1.需要定義一個變量,記錄加1后的結果,該變量初值為0,問該變量定義為何種類型?unsigned char x8=0;2.對x加13.將x送顯,4.延時5.跳轉到2.#include unsigned char code tabledu=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0

19、 x6f;unsigned char code tablewe=0 x1f,0 x3f,0 x5f,0 x7f,0 x9f,0 xbf,0 xdf,0 xff;void delay02s(void) unsigned char i,j,k;for(i=10;i0;i-)for(j=200;j0;j-)for(k=248;k0;k-);void main(void) unsigned char i; unsigned char x8=0;while(1)/2.對對x加加1for(i=0;i=10)xi=0;elsebreak;/3.將將x送顯送顯,先送先送xi的段碼,再送的段碼,再送xi的位碼的

20、位碼for(i=0;i8;i+)P1=tableduxi;P0=tablewei;/4.延時延時delay02s(); 任務四任務四 24進制計數(shù)器進制計數(shù)器本任務實現(xiàn)本任務實現(xiàn)24進制計數(shù)器,計數(shù)范圍為進制計數(shù)器,計數(shù)范圍為023。程序設計分析1. 24進制計數(shù)和前面的十進制計數(shù)不同的是,當計數(shù)到24時,個位數(shù)要變?yōu)?,同時十位數(shù)也要變?yōu)?。需要定義一個變量,記錄加1后的結果,該變量初值為0,問該變量定義為何種類型?unsigned char x=0;2.對x加1,若x=24,則x=0;3.將x送顯,個位a=x%10, b=x/10;4.延時5.跳轉到2.#include unsigned

21、char code tabledu=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char code tablewe=0 x1f,0 x3f,0 x5f,0 x7f,0 x9f,0 xbf,0 xdf,0 xff;void delay02s(void) unsigned char i,j,k;for(i=10;i0;i-)for(j=200;j0;j-)for(k=248;k0;k-);void main(void) unsigned char dispcount,i; unsigned char x=

22、0,a,b;while(1)/2.對對x加加1x+;if(x=24) x=0;/3.將將x送顯送顯,求個位求個位a,十位十位b,a=x%10;P1=tabledua;P0=tablewe0;/4.延時延時delay02s();b=x%10;P1=tabledub;P0=tablewe1;/4.延時延時delay02s();任務五任務五 簡易數(shù)字鐘簡易數(shù)字鐘要求利用單片機和要求利用單片機和 數(shù)碼管實現(xiàn)數(shù)字鐘。數(shù)碼管實現(xiàn)數(shù)字鐘。任務分析任務分析 數(shù)字鐘要完成的功能是顯示小時、分和秒和計數(shù)器。數(shù)字鐘要完成的功能是顯示小時、分和秒和計數(shù)器。其中秒和分為其中秒和分為60進制,小時為進制,小時為24進制(也可用進制(也可用12翻翻1)計)計數(shù)。數(shù)。 為了確定為了確定1秒,首先要確定動態(tài)顯示一次所需要的時秒,首先要確定動態(tài)顯示一次所需要的時間,如果每一只數(shù)碼管顯示的時間為間,如果每一只數(shù)碼管顯示的時間為0.5ms,則一次動態(tài),則一次動態(tài)顯示

溫馨提示

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

評論

0/150

提交評論