C51單片機定時器及數(shù)碼管控制試驗報告_第1頁
C51單片機定時器及數(shù)碼管控制試驗報告_第2頁
C51單片機定時器及數(shù)碼管控制試驗報告_第3頁
C51單片機定時器及數(shù)碼管控制試驗報告_第4頁
C51單片機定時器及數(shù)碼管控制試驗報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、昆明理工大學信息工程與自動化學院學生實驗報告(201201學年第1學期)年級、專業(yè)、班學號i名成績實驗項目名稱定時器及數(shù)碼喈控制實驗指導教師開課實驗室:年月日教師課程名稱:單片機技術該同學是否了解實驗儀器原埋:A.了解口B.,基本了解口C.不了解該同學的實驗能力:A.強口B.中等口C.差該同學的實驗是否達到要求:A.達到口B.基本達到口C.未達到實驗報告是否規(guī)范:A.規(guī)范口B.基本規(guī)范口C.不規(guī)范實驗過程是否詳細記錄:A.詳細口B.FC.沒有注:5個A為優(yōu)4個A為良3個A為及格其余為不及格教師簽名:一、實驗目的1 .掌握定時器T0、T1的方式選擇和編程方法,了解中斷服務程序的設計方法,學會實時

2、程序的調(diào)試技巧。2 .掌握LED數(shù)碼管動態(tài)顯示程序設計方法。二、實驗原理1. 89C51單片機有五個中斷源(89C52有六個),分別是外部中斷請求0、外部中斷請求1、定時器/計數(shù)器0溢出中斷請求、定時器/計數(shù)器0溢出中斷請求及用行口中斷請求。每個中斷源都對應一個中斷請求位,它們設置在特殊功能寄存器TCON和SCON中。當中斷源請求中斷時,相應標志分別由TCON和SCON的相應位來鎖寄。五個中斷源有二個中斷優(yōu)先級,每個中斷源可以編程為高優(yōu)先級或低優(yōu)先級中斷,可以實現(xiàn)二級中斷服務程序嵌套。在同一優(yōu)先級別中,靠內(nèi)部的查詢邏輯來確定響應順序。不同的中斷源有不同的中斷矢量地址。中斷的控制用四個特殊功能寄

3、存器IE、IP、TCON由六位)和SCON由二位),分別用于控制中斷的類型、中斷的開/關和各種中斷源的優(yōu)先級別。中斷程序由中斷控制程序(主程序)和中斷服務程序兩部分組成:1)中斷控制程序用于實現(xiàn)對中斷的控制;2)中斷服務程序用于完成中斷源所要求的中斷處理的各種操作。C51的中斷函數(shù)必須通過interruptm進行修飾。在C51程序設計中,當函數(shù)定義時用了interruptm修飾符,系統(tǒng)編譯時把對應函數(shù)轉化為中斷函數(shù),自動加上程序頭段和尾段,并按MCS-51系統(tǒng)中斷的處理方式自動把它安排在程序存儲器中的相應位置。在該修飾符中,m的取值為031,對應的中斷情況如下:0外部中斷01定時/計數(shù)器T02

4、外部中斷13定時/計數(shù)器T14用行口中斷5定時/計數(shù)器T2其它值預留。89C51單片機內(nèi)設置了兩個可編程的16位定時器T0和T1,通過編程,可以設定為定時器和外部計數(shù)方式。T1還可以作為其用行口的波特率發(fā)生器。2.定時器T0由特殊功能寄存器TL0和TH0構成,定時器T1由TH1和TL1構成,特殊功能寄存器TMOD控制定時器的工作方式,TCON空制其運行。定時器的中斷由中斷允許寄存器IE,中斷優(yōu)先權寄存器IP中的相應位進行控制。定時器T0的中斷入口地址為000BH,T1的中斷入口地址為001BH。定時器的編程包括:1)置工作方式。2)置計數(shù)初值。3)中斷設置。4)啟動定時器。定時器/計數(shù)器由四種

5、工作方式,所用的計數(shù)位數(shù)不同,因此,定時計數(shù)常數(shù)也就不同。3.單片機的拉電流比較小(100200哂,灌電流比較大(最大是25mA,一股不能超過10mA),不能直接驅(qū)動數(shù)碼管,需要擴流電路??梢杂萌壒軄眚?qū)動,但是51單片機只有32個I/O口,可能需要外接多種器件,I/O口是不夠用的。故可選用74HC573鎖存器來解決這個問題,開發(fā)板上數(shù)碼管的硬件設計電路圖,如圖1所示。TX-1C實驗開發(fā)板用兩個74HC573鎖存器(輸出電流較大,接口簡單),通過P0口控制六個數(shù)碼管的段選及位選,其中控制鎖存器U1(DULA,控制鎖存器U2(WELA。單片機控制鎖存器的鎖存端,進而控制鎖存器的輸出,這種分時控制

6、的方法可方便地控制任意數(shù)碼管顯示任意數(shù)字。O'52U裳年£器.SH舊日BH書ntm噌咐十hi第圖1LED數(shù)碼管電路原理圖三、實驗內(nèi)容利用動態(tài)掃描和定時器1在數(shù)碼管上顯示出從765432開始以1/10秒的速度往下遞減直至765398并保持顯示此數(shù),與此同時利用定時器0以500MS速度進行流水燈從上至下移動,當數(shù)碼管上數(shù)減到停止時,實驗板上流水燈也停止然后全部開始閃爍,3秒后(用T0定時)流水燈全部關閉、數(shù)碼管上顯示出“HELLO。到此保持住。計算初值公式定時模式1th0=(216-定時時間)/256tl0=(216-定時時間)%256四、實驗步驟1、按實驗要求在KeilC中創(chuàng)建

7、項目,編輯、編譯程序。2、將編譯生成的目標碼文件(后綴為.Hex)下載到實驗板電路中。3、在實驗板中運行程序,觀察實驗運行結果并記錄。五、實驗結果開始時數(shù)碼管的數(shù)字是765432,隨后是765429,流水燈顯示的是第一個燈,實驗結果如下圖所示:日照舊當數(shù)碼管顯示765406時,流水燈顯示是第六個燈,實現(xiàn)現(xiàn)象如下圖所示:當數(shù)碼管顯示765398時,流水燈顯示的是第七個燈,由于LED燈變化快,難以捕捉到此時刻,以下圖片是隨后LED閃爍,數(shù)碼管保持765398的現(xiàn)象:最后流水燈全部關閉,數(shù)碼管顯示HELLO?樣的現(xiàn)象:15六、心得體會通過這次實驗,鞏固了流水燈的操作,顯示的理解,對定時器中斷的理解和

8、運用,樣的問題,但是在老師和同學們的幫助下,續(xù)的學習打下了堅實的基礎。在此之上,加深了八段數(shù)碼管的動態(tài)雖然在實驗的的過程中遇到了各種各我失算順利的完成了這次實驗,為后七、思考1 .若用定時器1方式2,程序如何修答:對定時器/計數(shù)器的工作方式進行修改,即:TMOD=0x21;/0010'00012 .若顯示從“99”開始遞減,程序如何修改答:只需選擇第一個和第二個數(shù)碼管即可,當遞減到0時停止,或者繼改回數(shù)字99,程序的其他部分基本不變。八、源代碼#include<>#include<>#defineucharunsignedchar#defineuintunsig

9、nedintsbitled1=P1A0;sbitdula=P2A6;sbitwela=P2A7;ucharcodetable=/建一張table數(shù)組,元素是0F字樣0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;ucharcodeHello=/建一張HELLCM組,元素是H,E,L,L,O字樣0x76,0x79,0x38,0x38,0x3f;voidinit();/main()函數(shù)初始化的函數(shù)的聲名voiddelayms(uint);/延時函數(shù)聲名voiddisplay(uchar,

10、uchar,uchar);/數(shù)碼管顯示函數(shù)聲名voiddisHello();/HELLO顯示函數(shù)聲名ucharnum1,num2,bai,shi,ge;/定義全局變量intcount,temp;voidmain()init();while(1)if(num1=10)/定時器每次計時50ms當計滿500ms時,LED燈流動num1=0;P1=_crol_(P1,1);/循環(huán)左移if(num2=2)/當計滿時,數(shù)碼管的值減1num2=0;count-;if(count=398)/當數(shù)碼管減到765398時,保持該數(shù),8個LED燈閃/爍TR1=0;TR0=0;bai=count/100;/獲得398

11、的個、十、百位shi=count/10%10;ge=count%10;display(bai,shi,ge);/顯示數(shù)碼管的六位數(shù)P1=0x00;/8個LED閃爍的初始狀態(tài)numl=0;/重新啟動定時器T0時,numl重新初始化為0TR0=1;while(1)(if(num1%10=0)/8個LED每隔500ms閃爍P1=P1;/LED燈取反if(num1=60)/當計滿3s時,關閉LED燈,在數(shù)碼管上顯示HELLO(TR0=0;/關閉定時器T0P1=0xff;/關閉LED丁disHello();/顯示HELLOelsedisplay(bai,shi,ge);/當沒計滿3s時,繼續(xù)顯示之前的6

12、位數(shù)bai=count/100;shi=count/10%10;ge=count%10;display(bai,shi,ge);voidinit()/main()函數(shù)的初始化TMOD=0x11;/定時器T0,T1的工作方式都是1TH0=(65536-45872)/256;/T0計數(shù)寄存器的初始化TL0=(65536-45872)%256;TH1=(65536-45872)/256;/T1計數(shù)寄存器的初始化TL1=(65536-45872)%256;P1=0xfe;/LED的初始化count=432;/計數(shù)器的初始化,因為只有后三位變化EA=1;/打開總中斷ET0=1;/打開計時器T0TR0=1

13、ET1=1TR1=1)/打開計時器T1開啟計時器T0開啟計時器T1voiddisHello()/HELLO(wela=1;P0=0xfe;wela=0;P0=0xff;dula=1;P0=Hello0;dula=0;delayms(5);wela=1;P0=0xfd;wela=0;P0=0xff;dula=1;P0=Hello1;dula=0;delayms(5);wela=1;P0=0xfb;wela=0;P0=0xff;dula=1;P0=Hello2;dula=0;delayms(5);wela=1;P0=0xf7;wela=0;P0=0xff;dula=1;P0=Hello3;dula

14、=0;delayms(5);顯小程序P0=0xef;wela=0;P0=0xff;dula=1;P0=Hello4;dula=0;delayms(5);數(shù)碼管顯示程序)voiddisplay(ucharbai,ucharshi,ucharge)/wela=1;P0=0xfe;wela=0;P0=0xff;dula=1;P0=table7;dula=0;delayms(5);wela=1;P0=0xfd;wela=0;P0=0xff;dula=1;P0=table6;dula=0;delayms(5);wela=1;P0=0xfb;wela=0;P0=0xff;dula=1;P0=table5;dula=0;delayms(5);wela=1;P0=0xf7;wela=0;P0=0xff;dula=1;P0=tablebai;dula=0;delayms(5);wela=1;P0=0xef;wela=0;P0=0xff;dula=1;P0=tableshi;dula=0;delayms(5);wela=1;P0=0xdf;wela=0;P0=0xff;dula=1;P0=tablege;dula=0;delayms(5)

溫馨提示

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

評論

0/150

提交評論