數(shù)碼管動(dòng)態(tài)顯示模塊設(shè)計(jì)_第1頁(yè)
數(shù)碼管動(dòng)態(tài)顯示模塊設(shè)計(jì)_第2頁(yè)
數(shù)碼管動(dòng)態(tài)顯示模塊設(shè)計(jì)_第3頁(yè)
數(shù)碼管動(dòng)態(tài)顯示模塊設(shè)計(jì)_第4頁(yè)
數(shù)碼管動(dòng)態(tài)顯示模塊設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)碼管動(dòng)態(tài)顯示模塊設(shè)計(jì)實(shí)驗(yàn)?zāi)康?、理解數(shù)碼管動(dòng)態(tài)顯示原理2、理解數(shù)碼管動(dòng)態(tài)顯示電路的設(shè)計(jì)方法3、掌握數(shù)碼管動(dòng)態(tài)顯示程序的設(shè)計(jì)方法4、掌握單片機(jī)定時(shí)器與中斷系統(tǒng)的使用方法實(shí)驗(yàn)儀器單片機(jī)開發(fā)板、萬利仿真機(jī)、穩(wěn)壓電源、計(jì)算機(jī)實(shí)驗(yàn)原理數(shù)碼管動(dòng)態(tài)顯示原理幾乎所有的單片機(jī)應(yīng)用系統(tǒng)都要用到數(shù)碼顯示。數(shù)碼顯示是一個(gè)占用IO資源較多、程序設(shè)計(jì)較復(fù)雜的模塊。在設(shè)計(jì)時(shí),應(yīng)從IO占用與軟件復(fù)雜程度兩方面考慮。這里以8位數(shù)碼管動(dòng)態(tài)顯示電路以例說明工作原理。電路如圖4-4所示。圖4-48位數(shù)據(jù)碼動(dòng)態(tài)顯示電路數(shù)碼管顯示器的8個(gè)筆劃段a-hp同名端連在一起,而每一位數(shù)碼管顯示器的公共端〔1,2,3,4〕各自獨(dú)立地受三極管控制。CPU向字段輸出口送出字形碼時(shí),所有顯示器接收到相同的字形碼,但究竟是那個(gè)顯示器亮,那么取決于數(shù)碼管的公共端,而這一端是由74LS164控制的,所以我們只要控制164的輸出數(shù)據(jù)就可以決定何時(shí)顯示哪一位了。而所謂動(dòng)態(tài)掃描就是指我們采用分時(shí)的方法,輪流控制各個(gè)顯示器的公共端,使各個(gè)顯示器輪流點(diǎn)亮。在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的〔約1ms〕,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。圖中100歐電阻起限流作用,保護(hù)發(fā)光二極管。電阻值越小,發(fā)光二極管越亮。2K電阻是位選端限流電阻,保護(hù)位選三極管。由上圖可知,這里的數(shù)碼管是共陽(yáng)極型。數(shù)碼管上顯示一些符號(hào),必須給數(shù)碼管的筆形口接低電平信號(hào),給要顯示的位公共端送高電平,相應(yīng)位的數(shù)碼管就可以顯示所要的符號(hào)。數(shù)碼管動(dòng)態(tài)顯示程序設(shè)計(jì)數(shù)碼管動(dòng)態(tài)顯示程序包含顯示數(shù)字、局部字母符號(hào)、小數(shù)點(diǎn)、數(shù)碼管閃爍、數(shù)碼管消隱等。其它程序輸出到顯示程序的數(shù)據(jù)既可以是BCD碼、二進(jìn)制碼、ASCII碼、自定義顯示碼等。假設(shè)顯示的符號(hào)與數(shù)據(jù)的對(duì)應(yīng)關(guān)系如下:顯示符號(hào)0123456789數(shù)據(jù)00H01H02H03H04H05H06H07H08H09H顯示符號(hào)ABCDEFH全亮全暗-數(shù)據(jù)0AH0BH0CH0DH0EH0FH10H11H12H13H由硬件電路工作原理可知,為了顯示穩(wěn)定的數(shù)據(jù),每秒必須顯示數(shù)據(jù)50次以上,才能到達(dá)預(yù)期目的。輸出位選數(shù)據(jù)-10輸出位選數(shù)據(jù)-10寫入74LS1641寫入74LS164返回YN數(shù)碼管動(dòng)態(tài)顯示初始化顯示緩沖區(qū)首地址,顯示計(jì)數(shù)器數(shù)碼管動(dòng)態(tài)顯示初始化顯示緩沖區(qū)首地址,顯示計(jì)數(shù)器取緩沖區(qū)一字節(jié)數(shù),并轉(zhuǎn)換成顯示碼輸出位選數(shù)據(jù),并延時(shí)1ms顯示指針指向下一字節(jié),計(jì)數(shù)器減1顯示計(jì)數(shù)為0返回YNDIN=0,CLK=0,位選數(shù)據(jù)設(shè)定為左邊第1位顯示位選數(shù)據(jù)左移一位,移出的位送到DIN,CLK產(chǎn)生正脈沖CLK產(chǎn)生一個(gè)正脈沖輸出數(shù)據(jù)位數(shù)減1輸出完成?返回輸出位選數(shù)據(jù)-2圖4-5數(shù)碼管動(dòng)態(tài)顯示程序流程圖小數(shù)點(diǎn)顯示原理在顯示數(shù)據(jù)時(shí),顯示小數(shù)是一個(gè)必要功能。但在前面的分析中,并沒有包含顯示小數(shù)點(diǎn)的內(nèi)容。小數(shù)點(diǎn)的顯示方式有:〔1〕固定式:小數(shù)點(diǎn)的顯示位置不能改變,程序設(shè)計(jì)較簡(jiǎn)單?!?〕特征位式:每位二進(jìn)制數(shù)控制一個(gè)小數(shù)點(diǎn)的亮暗情況,一個(gè)字節(jié)同時(shí)控制8個(gè)。〔3〕計(jì)數(shù)式:用數(shù)字控制第N位的小數(shù)點(diǎn)亮。如:5表示第5位小數(shù)點(diǎn)亮,其它暗。〔4〕ASCII碼式:送到顯示緩沖區(qū)的數(shù)是ASCII碼數(shù)據(jù),在包含“.“時(shí),相應(yīng)位的小數(shù)點(diǎn)亮。這里以第〔2〕種為例說明,其它方式由讀者自行設(shè)計(jì)。假定小數(shù)點(diǎn)控制數(shù)據(jù)dispdot的各位情況如下所示。D7D6D5D4D3D2D1D0第1位小數(shù)點(diǎn)開關(guān)第2位小數(shù)點(diǎn)開關(guān)第3位小數(shù)點(diǎn)開關(guān)第4位小數(shù)點(diǎn)開關(guān)第5位小數(shù)點(diǎn)開關(guān)第6位小數(shù)點(diǎn)開關(guān)第7位小數(shù)點(diǎn)開關(guān)第8位小數(shù)點(diǎn)開關(guān)轉(zhuǎn)成顯示碼輸出位選數(shù)據(jù)小數(shù)點(diǎn)亮,并與顯示碼合并輸出當(dāng)前小數(shù)點(diǎn)位小數(shù)點(diǎn)暗,并與顯示碼合并輸出10當(dāng)對(duì)應(yīng)位為1時(shí),小數(shù)點(diǎn)亮;當(dāng)對(duì)應(yīng)位為0時(shí),小數(shù)點(diǎn)暗。小數(shù)點(diǎn)顯示的信息可以在顯示碼輸出之前,也可以在掃描一幀結(jié)束后單獨(dú)顯示小點(diǎn)數(shù)。原理說明:當(dāng)顯示第一位數(shù)據(jù)時(shí),判斷dispdot的D7是否為1,如果為轉(zhuǎn)成顯示碼輸出位選數(shù)據(jù)小數(shù)點(diǎn)亮,并與顯示碼合并輸出當(dāng)前小數(shù)點(diǎn)位小數(shù)點(diǎn)暗,并與顯示碼合并輸出10圖4-6小數(shù)點(diǎn)控制程序流程圖單片機(jī)定時(shí)器的工原理MCS-51單片機(jī)內(nèi)部有兩個(gè)16位可編程的定時(shí)器/計(jì)數(shù)器T0和T1。它們即可用作定時(shí)器方式,又可用作計(jì)數(shù)器方式。其中T0由TH0和TL0計(jì)數(shù)器構(gòu)成;T1由TH1和TL1計(jì)數(shù)器構(gòu)成。工作于定時(shí)器方式時(shí),通過對(duì)機(jī)器周期〔新型51單片機(jī)可以對(duì)振蕩周期計(jì)數(shù)〕的計(jì)數(shù),即每一個(gè)機(jī)器周期定時(shí)器加1,來實(shí)現(xiàn)定時(shí)。故系統(tǒng)晶振頻率直接影響定時(shí)時(shí)間。如果晶振頻率為12MHZ,那么定時(shí)器每隔〔1/12MHZ〕×12=1us加1。工作于計(jì)數(shù)器方式時(shí),對(duì)P3.4或P3.5管腳的負(fù)跳變〔1→0〕計(jì)數(shù)。它在每個(gè)機(jī)器周期的S5P2時(shí)采樣外部輸入,當(dāng)采樣值在這個(gè)機(jī)器周期為高,在下一個(gè)機(jī)器周期為低時(shí),計(jì)數(shù)器加1。因此需要兩個(gè)機(jī)器周期來識(shí)別一個(gè)有效跳變,故最高計(jì)數(shù)頻率為晶振頻率的1/24。特殊功能存放器TMOD用于定時(shí)器/計(jì)數(shù)器的方式控制。高4位用于設(shè)置T1,低4位用于設(shè)置T0。如圖4-7所示。圖4-7定時(shí)器模式控制字格式TCON存放器用于定時(shí)器的計(jì)數(shù)控制和中斷標(biāo)志。如圖4-8所示。圖4-8定時(shí)控制存放器數(shù)據(jù)格式編寫程序控制這兩個(gè)存放器就可以控制定時(shí)器的運(yùn)行方式。單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器的使用,簡(jiǎn)而概之:〔1〕如需用中斷,那么將EA和相關(guān)中斷控制位置1;〔2〕根據(jù)需要設(shè)置工作方式,即對(duì)TMOD設(shè)置;〔3〕然后啟動(dòng)計(jì)數(shù),即對(duì)TR0或TR1置1?!?〕如使用中斷,那么計(jì)數(shù)溢出后硬件會(huì)自動(dòng)轉(zhuǎn)入中斷入口地址;如使用查詢,那么必須對(duì)溢出中斷標(biāo)志位TF0或TF1進(jìn)行判斷。用定時(shí)器編寫一個(gè)秒計(jì)時(shí)器假設(shè)系統(tǒng)使用的晶振頻率為12MHZ,即每個(gè)機(jī)器周期為1us。如使用方式1,那么定時(shí)時(shí)間最長(zhǎng)是216×1us=65536us=65.536ms,小于1s。故必須設(shè)置一個(gè)軟件計(jì)數(shù)單元,即假設(shè)定時(shí)器定時(shí)中斷時(shí)間為50ms,那么必須定時(shí)中斷20次才到達(dá)1s并對(duì)秒計(jì)時(shí)單元加1,20即為軟件計(jì)數(shù)次數(shù)。最后再把秒計(jì)時(shí)單元的值轉(zhuǎn)成顯示數(shù)碼送顯示緩沖區(qū)。定時(shí)器中斷效勞程序定時(shí)器中斷效勞程序中斷返回保護(hù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)軟件計(jì)數(shù)-1=0?秒計(jì)時(shí)器加1,轉(zhuǎn)成顯示數(shù)據(jù)并送顯示YN圖4-9定時(shí)器應(yīng)用程序流程圖單片機(jī)中斷系統(tǒng)結(jié)構(gòu)及工作原理標(biāo)準(zhǔn)51單片機(jī)的中斷系統(tǒng)有五個(gè)中斷源。分別為:中斷源入口地址優(yōu)先級(jí)別〔同級(jí)〕外部中斷00003H最高定時(shí)器0溢出000BH外部中斷10013H定時(shí)器1溢出001BH串行口中斷0023H最低使用中斷之前,必須對(duì)中斷允許存放器IE進(jìn)行設(shè)置,將中斷允許標(biāo)志EA和對(duì)應(yīng)中斷位置1,以將中斷翻開。中斷控制結(jié)構(gòu)如圖4-10所示。圖4-10MSC51中斷結(jié)構(gòu)圖CPU中斷的過程為:當(dāng)有中斷源發(fā)生中斷信號(hào)時(shí),首先對(duì)IE中對(duì)應(yīng)的中斷位判斷;如翻開,那么進(jìn)行EA判斷;如EA=1,將根據(jù)中斷優(yōu)先級(jí)IP的設(shè)置情況進(jìn)行優(yōu)先級(jí)判別;如該中斷優(yōu)先級(jí)較高,在硬件控制下,先將程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧,同時(shí)把被響應(yīng)的中斷效勞程序的入口地址裝入PC中,以執(zhí)行中斷效勞程序。中斷效勞程序的最后一條指令必須是中斷返回指令RETI。CPU執(zhí)行完這條指令后,將從堆棧中彈出兩個(gè)字節(jié)內(nèi)容〔斷點(diǎn)地址〕裝入PC中,從而執(zhí)行被中斷的程序。實(shí)驗(yàn)內(nèi)容1、在數(shù)碼管上顯示學(xué)號(hào)的后8位程序如下include<reg51.h>/*動(dòng)態(tài)數(shù)碼管顯示,共陽(yáng)極*/#defineuintunsignedint#defineucharunsignedchar#include<intrins.h>sbitCLK=P3^4;sbitDIN=P2^3;uinti; ucharcodeduan[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//小數(shù)點(diǎn)不亮,段碼0-9voiddelay(uintxms){ uinti,j; for(i=xms;i>0;--i) for(j=110;j>0;--j); }voidmach(){DIN=1; CLK=0; _nop_(); CLK=1; _nop_(); }voidmain(){ while(1) { for(i=0;i<8;i++) { mach(); } DIN=0; CLK=0; _nop_(); CLK=1; _nop_(); P0=0xff; P0=duan[2];//顯示第一個(gè)數(shù)碼管 delay(2); mach(); P0=0xff; P0=duan[2];//顯示第二個(gè)數(shù)碼管 delay(2); mach(); P0=0xff; P0=duan[0];//顯示第三個(gè)數(shù)碼管 delay(2); mach(); P0=0xff; P0=duan[2];//顯示第四個(gè)數(shù)碼管 delay(2); mach(); P0=0xff; P0=duan[8];//顯示第五個(gè)數(shù)碼管 delay(2); mach(); P0=0xff; P0=duan[0];//顯示第六個(gè)數(shù)碼管 delay(2); mach(); P0=0xff; P0=duan[4];//顯示第七個(gè)數(shù)碼管 delay(2); mach(); P0=0xff; P0=duan[9];//顯示第八個(gè)數(shù)碼管 delay(2); } }2、設(shè)計(jì)一個(gè)以學(xué)號(hào)后兩位加10秒的倒計(jì)時(shí)程序程序如下#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintucharcodenumber[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};uchara[8];uintcounter=0;sbitCLK=P3^4;sbitDIN=P2^3;voidDelay(uchart){uchari;while(t--)for(i=120;i>0;i--);}voidrefresh_led(){staticucharj=0;switch(j){case0:DIN=0;CLK=0;_nop_();CLK=1;_nop_();CLK=0;j++;P0=number[a[0]];Delay(2);//break;case1:DIN=1;CLK=0;_nop_();CLK=1;_nop_();CLK=0;j++;P0=number[a[1]];Delay(2);//break;case2:DIN=1;CLK=0;_nop_();CLK=1;_nop_();CLK=0;j++;P0=number[a[2]];Delay(2);//break;case3:DIN=1;CLK=0;_nop_();CLK=1;_nop_();CLK=0;j++;P0=number[a[3]];Delay(2);//break;case4:DIN=1;CLK=0;_nop_();CLK=1;_nop_();CLK=0;j++;P0=number[a[4]];Delay(2);//break;case5:DIN=1;CLK=0;_nop_();CLK=1;_nop_();CLK=0;j++;P0=number[a[5]];Delay(2);//break;case6:DIN=1;CLK=0;_nop_();CLK=1;_nop_();CLK=0;j++;P0=number[a[6]];Delay(2);//break;case7:DIN=1;CLK=0;_nop_();CLK=1;_nop_();CLK=0;j=0;P0=number[a[7]];Delay(2);break;default:break;}}voidmain(){ TMOD|=0x10;TH1=0xfc;TL1=0x67;TR1=1;ET1=1;EA=1;while(1);}voidtimer1()interrupt3{staticucharsec=32;uchari;TH1=0xb1;TL1=0xe0;counter++;if(counter==50) { counter=0; a[0]=sec%10; a[1]=sec/10%10; a[2]=sec/100%10; a[3]=0; a[4]=0; a[5]=0; a[6]=0; a[7]=0; sec--; }for(i=0;i<8;i++){DIN=1;CLK=0; _nop_();CLK=1; _nop_(); }refresh_led();}思考題1、運(yùn)行上面的程序,計(jì)算顯示程序每秒運(yùn)行的次數(shù)?2、請(qǐng)說明數(shù)碼管的消隱〔數(shù)據(jù)不顯示,內(nèi)容保持不變〕如何實(shí)現(xiàn)答

溫馨提示

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

評(píng)論

0/150

提交評(píng)論