試驗(yàn)二數(shù)碼管顯示_第1頁
試驗(yàn)二數(shù)碼管顯示_第2頁
試驗(yàn)二數(shù)碼管顯示_第3頁
試驗(yàn)二數(shù)碼管顯示_第4頁
試驗(yàn)二數(shù)碼管顯示_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、實(shí)驗(yàn)二數(shù)碼管顯不本實(shí)驗(yàn)的LI的是掌握數(shù)碼管的工作原理與使用,實(shí)現(xiàn)數(shù)碼管的靜、動態(tài) 顯示。靜態(tài)數(shù)碼管我們先看看什么是數(shù)碼管,上圖就是各種長相各種樣子的數(shù)碼管了,肯定很眼熟了吧。不管將兒位數(shù)碼管連在一起,數(shù)碼管的顯示原理都是一樣的,都是靠點(diǎn)亮內(nèi) 部的發(fā)光二極管來發(fā)光,下面就來我們講解一個數(shù)碼管是如何亮起來的。數(shù)碼管 內(nèi)部電路如下圖所示,從右圖可看出,一位數(shù)碼管的引腳是10個,顯示一個8 字需要7個小段,另外還有一個小數(shù)點(diǎn),所以其內(nèi)部一共有8個小的發(fā)光二極管, 最后還有一個公共端,生產(chǎn)商為了封裝統(tǒng)一,單位數(shù)碼管都封裝10個引腳,其 中笫3和第8引腳是連接在一起的。而它們的公共端乂可分為共陽極和共陰極

2、, 中間圖為共陰極內(nèi)部原理圖,右圖為共陽極內(nèi)部原理圖。ww W WWW上圖展出了常用的兩種數(shù)碼管的引腳排列和內(nèi)部結(jié)構(gòu)??偹苤?,點(diǎn)亮發(fā)光 二極管就是要給予它足夠大的正向壓降。所以點(diǎn)亮數(shù)碼管其實(shí)也就是給它內(nèi)部相 應(yīng)的發(fā)光二極管正向壓降。如上圖左(一共a、b、c、d、e、f、g、DP八段), 如果要顯示“1”則要點(diǎn)亮b、c兩段LED;顯示“A”則點(diǎn)亮a、b、c、e、f、g這 六段LED;我們還知道,既然LED加載的是正向壓降,它的兩端電壓必然會有高 低之分:如果八段LED電壓高的一端為公共端,我們稱之為共陽極數(shù)碼管(如上 圖中);如果八段LED電壓低的一段為公共端,則稱之為共陰極數(shù)碼管(上圖右)。

3、 所以,要點(diǎn)亮共陽極數(shù)碼管,則要在公共端給予高于非公共端的電平;反之點(diǎn)亮 共陰極數(shù)碼管,則要在非公共端給予較高電平。對共陰極數(shù)碼來說,其8個發(fā)光二極管的陰極在數(shù)碼管內(nèi)部全部連接在一起, 所以稱“共陰”,而它們的陽極是獨(dú)立的,通常在設(shè)計(jì)電路時一般把陰極接地。 當(dāng)我們給數(shù)碼管的任意一個陽極加一個高電平時,對應(yīng)的這個發(fā)光二極管就點(diǎn)亮 了。如果想要顯示出一個8字,并且把右下角的小數(shù)點(diǎn)也點(diǎn)亮的話,可以給8個陽 極全部送高電平,如果想讓它顯示出一個0字,那么我們可以除了給第“g, dp” 這兩位送低電平外,其余引腳全部都送高電平,這樣它就顯示出0字了。想讓它 顯示兒,就給相對應(yīng)的發(fā)光二極管送高電平,因此我

4、們在顯示數(shù)字的時候首先做 的就是給0-9十個數(shù)字編碼,在要它亮什么數(shù)字的時候直接把這個編碼送到它的 陽極就行了。共陽極數(shù)碼管其內(nèi)部8個發(fā)光二極管的所有陽極全部連接在一起,電路連接 時,公共端接高電平,因此我們要點(diǎn)殼的那個發(fā)光管二極管就需要給陰極送低電 平,此時顯示數(shù)字的編碼與共陽極編碼是相反的關(guān)系,數(shù)碼管內(nèi)部發(fā)光二極管點(diǎn) 亮?xí)r,也需要5mA以上的電流,而且電流不可過大,否則會燒毀發(fā)光二極管。由 于單片機(jī)的I/O口送不出如此大的電流,所以數(shù)碼管與單片機(jī)連接時需要加驅(qū)動 電路,可以用上拉電阻的方法或使用專門的數(shù)碼管驅(qū)動芯片,本實(shí)驗(yàn)板上使用的 是74HC573鎖存器,其輸出電流較大,電路接口簡單,可

5、借鑒使用。一般共陽極數(shù)碼管更為常用,為什么呢?這是因?yàn)閿?shù)碼管的非公共端往往接 在IC芯片的10上,而IC芯片的驅(qū)動能力往往是比較小的,如果采用共陰極數(shù)碼 管,它的驅(qū)動端在非公共端,就有可能受限于IC芯片輸出電流不夠而顯示昏暗(比 如51單片機(jī)),要外加上拉電阻或者是三極管加大驅(qū)動能力。所以使用共陽數(shù)碼 管的好處是:將驅(qū)動數(shù)碼管的工作交到公共端(一般接驅(qū)動電源),加大驅(qū)動電 源的功率自然要比加大IC芯片10口的驅(qū)動電流簡單許多。另一方面,這樣也能減 輕MCU的負(fù)擔(dān)。當(dāng)多位一體時,它們內(nèi)部的公共端是獨(dú)立的,而負(fù)責(zé)顯示什么數(shù)字的段線全 部是連接在一起的,獨(dú)立的公共端可以控制多位一體中的哪一位數(shù)碼管點(diǎn)

6、亮,而 連接在一起的段線可以控制這個能點(diǎn)亮數(shù)碼管亮什么數(shù)字,通常我們把公共端叫 做“位選線”,連接在一起的段線叫做“段選線”,有了這兩個線后,通過單片 機(jī)及外部驅(qū)動電路就可以控制任意的數(shù)碼管顯示任意的數(shù)字了。一般單位數(shù)碼管有10個引腳,二位數(shù)碼管也是10個引腳,四位數(shù)碼管是12 個引腳,關(guān)于具體的引腳及段、位標(biāo)號大家可以查詢相關(guān)資料,最簡單的辦法就 是用數(shù)字萬用表測量,若沒有數(shù)字萬用表也可用5V直流電源審接lk電阻后測量, 將測量結(jié)果記錄,通過統(tǒng)計(jì)便可繪制出引腳標(biāo)號。知識點(diǎn):如何用萬用表檢瀏數(shù)碼管的引腳排列對數(shù)字萬用表來說,紅色表筆連接表內(nèi)部電池正極,黑色表筆連接表內(nèi)部電 池負(fù)極,當(dāng)把數(shù)字萬用

7、表置于二極管檔時,其兩表筆間開路電壓約為1. 5V,把兩 表筆正確加在發(fā)光二極管兩端時,可以點(diǎn)亮發(fā)光二極管。如下圖所示,將數(shù)字萬用表置于二極管擋,紅表筆接在腳,然后用黑表筆 去接觸其他各引腳,假設(shè)只有當(dāng)接觸到腳時,數(shù)碼管的&段發(fā)光,而接觸其余 引腳時則不發(fā)光。山此可知,被測數(shù)碼管為共陰極結(jié)構(gòu)類型,腳是公共陰極, 腳則是數(shù)碼管的a段接下來再檢測各段引腳,仍使用數(shù)字萬用表二極管檔,將黑表筆固定接在腳,用紅表筆依次接觸、引腳 時,數(shù)碼管的其他段先后分別發(fā)光,據(jù)此便可繪出該數(shù)碼管的內(nèi)部結(jié)構(gòu)和引腳排 列圖。檢測中,若被測數(shù)碼管為共陽極類型,則需將紅、黑表筆對調(diào)才能測出上述 結(jié)果,在判別結(jié)構(gòu)類型時

8、,操作時要靈活掌握,反復(fù)試驗(yàn),直到找出公共端為止, 大家只要懂得了原理,檢測出各個引腳便不在是問題了。數(shù)碼管靜態(tài)顯示當(dāng)多位數(shù)碼管應(yīng)用于某一系統(tǒng)時,它們的“位選”是可獨(dú)立控制的,而“段 選”是連接在一起的,我們可以通過位選信號控制哪兒個數(shù)碼管亮,而在同一時 刻,位選選通的所有數(shù)碼管上顯示的數(shù)字始終都是一樣的,因?yàn)樗鼈兊亩芜x是連 接在一起的,所以送入所有數(shù)碼管的段選信號都是相同的,那么它們顯示的數(shù)字 必定一樣,數(shù)碼管的這種顯示方法叫做靜態(tài)顯示。iim inr IFD6 im ihm urn irre uni(ND從電路圖可以看出,本開發(fā)板使用的是共陰極數(shù)碼管,在每段數(shù)碼管端加上 一個限流電阻。C程

9、序:/*實(shí)驗(yàn)需*使用的io*實(shí)驗(yàn)效果 下K4鍵,*顯示加lo靜態(tài)數(shù)碼管實(shí)驗(yàn)數(shù)碼管使用P0,鍵盤使用P3.0、P3l、P3.2. P3.3按下K1鍵,顯示0,按下K2鍵,顯示9,按下K3鍵,顯示減1,按券豐卒半節(jié)乍彷彷芥豐卒卒豐不彷彷豐卒卒卒豐不卒k豐豐半半半不彷巧彷茶卒半卒豐卒不彷芥豐半半卒卒畢XX卒卒半半不彷芥豐豐半節(jié)豐不卒舉券豐下半彷彷芥芥豐卒豐節(jié)不彷/#include<reg51 h>#include<intrins h> define GPIO.DIG PO sbit LSA二P2"2;sbit LS氏P2"3;sbit LSC二P2F;sb

10、it KI二P3X;sbit K2二P3"0;sbit K3二P32;sbit K4=P3“3;unsignedcharcodeDIG_CODE1O二0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f;顯示 0、9 的值void DelaylOms ();/延時 10msmain 主函數(shù) 無 無/*客*客函數(shù)名 *函數(shù)功能 *輸 入 拳輸 出*void main(void)unsigned int i, j;LSA=O;LSB二0;LSC二0;while (1)辻(K1=O)/檢測按鍵K1是否按下DelaylOms ()

11、;/消除抖動if(Kl=O)j 二0;while(i<50)&&(Kl=0)/檢測按鍵是否松開DelaylOms0;i+;i 二0;辻(K2=0)/檢測按鍵K2是否按下DelaylOms();辻(K2=0)j 二9;while(i<50)&&(K2=0)DelaylOms0;i+;i 二0;辻(K3=0)/檢測按鍵K3是否按下DelaylOms();辻(K3=0)辻(j>9)j 二9;wh 訂 e(i<50)&&(K3=0)DelaylOms();i+;if(K4=0)/檢測按鍵K4是否按下Delay10ms 0; if(

12、K4=0)j+;if(j>9) j 二0;while(i<50)&&(K4=0) DelaylOmsO ; i+;i 二0;GPIO_DIG二DIG_CODEj;京函數(shù)名 *函數(shù)功能 *輸 入 客輸 出DelaylOms延時函數(shù),延時10ms 無無*void DelaylOms (void) /誤差 Ous unsigned char a,b, c; for(c=l;c>0;c) for(b=38;b>0;b)for(a=130;a>0;a);匯編程序:ORGOOHUMPINITORG30HDB03FH,006H,05BH,04FH66H,06DH

13、Q7DH,007HQ7FH,06FH*車*球*車* / /INIT:CLRP2.2CLRP2.3CLRP2.4MOV R1,#OOHSTART:MOVA,R1MOV DPTR,#3OHMOVC A,A+DPTRMAIN:MOVP3,#OFFHMOVPOZAJNBP3.1.K1JNBP3.0,K2JNBP32K3JNBP3.3,K4SJMPMAIN.*車車* 京*4ti)t* . / /;KI按鍵按下處理程序:.*球*京京*./ /KI:ACALLDELAY1OMS;延時消抖JBP31MAINMOVR1,OOHMOVR2Z#O3OHKEY1_UP:ACALLDELAY1OMSDJNZR2,KEY

14、1_UP;按鍵延時UMPSTART.京 * 案*4(*#才才* .;K2按鍵按下處理程序:/9K2:ACALL DELAY1OMSJBP3QMAINMOVRl,#09HMOVR2Z#O3OHKEY2_UP:ACALL DELAY1OMSDJNZ R2,KEY2_UPUMP START*璟*/ /;K3按鍵按下處理程序:.*車*未璟*未未未*.K3:ACALLDELAY1OMSJBP32MAINDECR1MOVR2Z#O3OHKEY3_UP:ACALLDELAY1OMSDJNZR2,KEY3_UPCJNER1,#OFFH,KEY3MOVRlz#09HKEY3:UMPSTART.*未璟*未未未*.

15、;K4按鍵按下處理程序:.*車#*#/*.K4:ACALLDELAY1OMSJBP3.3,MAININC R1MOVR2/#O3OHKEY4_UP:ACALLDELAY1OMSDJNZR2,KEY4_UPCJNERlz#00AH,KEY4MOVR1Z#OOHKEY4:UMPSTART.京*.;延時程序.*孚*.DELAY10MS:MOVR6Z#O15HDEI:MOVR7,#OF8HDE2:DJNZR7ZDE2DJNZR6,DE1RETEND動態(tài)數(shù)碼管1.動態(tài)掃描的原理在實(shí)際的單片機(jī)系統(tǒng)中,往往需要多位顯示。動態(tài)顯示是一種最常見的 多位顯示方法,應(yīng)用非常廣泛。所有數(shù)碼管段選都連接在一起的時候,怎

16、么 讓數(shù)碼管顯示不一樣的數(shù)字呢?動態(tài)顯示是多個數(shù)碼管,交替顯示,利用人 的視覺暫停作用使人看到多個數(shù)碼管同時顯示的效果。首先我們來看一下開發(fā)板上的電路原理圖:譯瑪數(shù)碼管本開發(fā)板上使用的是,通過P22、P23、P24控制3-8譯碼器來對數(shù)碼管進(jìn)行位 選,通過P0口經(jīng)過573的驅(qū)動控制數(shù)碼管的段選,通過P13控制573的使能端,為 低電平時373才會有輸出。 " " » " » » " » " " » " » » " » " &q

17、uot; » " » » " » " " » " » » " » " " » " » » " » " " » " » » " » " " » " » » " » " " » " &

18、#187; » " » I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I *實(shí)驗(yàn)名:動態(tài)顯示數(shù)碼管實(shí)驗(yàn)*使用的10:數(shù)碼管使用P0, P2. 2, P2. 3, P2. 4*實(shí)驗(yàn)效果:數(shù)碼管顯示76543210c " » " " » » " " " » "

19、; " » » " " " » " " » » " " " » " " » » " " " » " " » » " " " » " " » » " " " » " " » 

20、7; " " " » " " » » " " » 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 #includereg31 h>ttdefine GPIO DIG P0sbit LSA二P2"2;sbit LSB二P2"3;sbit LSC二P2"4;unsigned char code DIG_C0D

21、E17=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, Oxoe, 0x79, 0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼 unsigned char DisplayData8;用來存放要顯示的8位數(shù)的值void DigDisplay () ; /動態(tài)顯示函數(shù)1 I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I

22、 I I I I I I I I I I I I I I I I I I 1 1 I 1 I 1 I I 1 1 I 1 1 *函數(shù)名:main*函數(shù)功能:主函數(shù)*輸入:無*輸出:無 » " " » " » » " » " " » " » » " » " " » " » » " » " " » " »

23、; » " » " " » " » » " » " " » " » » " » " " » " » » " » " " » " » » " » I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1

24、 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I f | | 4 | 1 | | 4 | | 4 | 1 4 void main(void)unsigned char i:for(i=0;i<8;i+)DisplayDatai=DIG_CODEi;while (1)DigDisplay (); » » " " » " » " » » " " » "

25、 " I I I I I I I I I I I I I I I *函數(shù)名*函數(shù)功能*輸 入*輸 出:DigDisplay:使用數(shù)碼管顯示:無:無 » » " " » " " » » " " » " " » » " " » " " » » " " » " " » » " &quo

26、t; » " " » » " " » " " » » " " » " " » » " " » " " " » » * » * " » " » » * » * » I | a j j j * * a | a j j a void DigDisplay(

27、)unsigned char i:unsigned int j;for(i=0;i<8;i+)switch(i)/位選,選擇點(diǎn)亮的數(shù)碼管,case(0):LSA二0;LSB二0;LSC二0; break;/顯示:第0位 case (1):LSA二 1; LSB二0; LSC二0; break; /顯示第 1 位 case(2):LSA二0; LSB二 1; LSC二0; break; /顯示第2位 case (3):LSA二 1; LSB二 1; LSC二0; break; /顯示第3位 case (4):LSA二0; LSB二0; LSC二 1; break; /顯示第4位case (

28、5):LSA二 1; LSB二0; LSO1; break; /顯示第5位case(6):LSA二0; LSB二 1; LSOl; break; /顯示第6位case(7):LSA二 1; LSB二 1; LSC二 1; break; /顯示第7位GPIO_DIG=DisplayDatai;/發(fā)送段碼j二10;/掃描間隔時間設(shè)定while(j-);GPI0_DIG 二 0x00;/ 消隱在用C語言編程時,編碼定義方法如下:unsigned char code DIG_C0DE17 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0

29、x6f, 0x77, 0x7c, 0x39, Oxoe, 0x79, 0x71 ;/0、1、2、3、4、5、 6、1、8、9、A、b、C、d、E、F的顯示碼編碼定義方法與C語言中的數(shù)組定義方法非常相似,不同的地方就是在數(shù)組 類型后面多了一個code關(guān)鍵字,code即表示編碼的意思。需要注意的是,單片機(jī) C語言中定義數(shù)組時是占用內(nèi)存空間的,而定義編碼時是直接分配到程序空間中, 編譯后編碼占用的是程序存儲空間,而非內(nèi)存空間。匯編程序:0RG00HLJMPINIT0RG30HDB03FH,006H,05BH, 04FH, 066H, 06DH, 07DH, 007H, 07FH, 06FH, 077H, 07CH, 039H,05EH, 079H, 071H;0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, FDAT0EQU30H;要顯示的八位數(shù)DAT1EQU31HDAT2EQU32HDAT3EQU33HDAT4EQU34H

溫馨提示

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

評論

0/150

提交評論