單片機實驗3 中斷、定時器計數(shù)器實驗_第1頁
單片機實驗3 中斷、定時器計數(shù)器實驗_第2頁
單片機實驗3 中斷、定時器計數(shù)器實驗_第3頁
單片機實驗3 中斷、定時器計數(shù)器實驗_第4頁
單片機實驗3 中斷、定時器計數(shù)器實驗_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、西南科技大學實驗報告課程名稱: 單片機原理及應(yīng)用A 實驗名稱: 中斷、定時器/計數(shù)器實驗 姓 名: 學 號: 班 級: 生醫(yī)1401 指導教師: 雷華軍 西南科技大學信息工程學院制2實驗題目數(shù)碼管動態(tài)掃描顯示驅(qū)動、鍵盤動態(tài)掃描驅(qū)動一、 實驗?zāi)康?、 熟練鞏固單片機開發(fā)環(huán)境KEIL界面的相關(guān)操作和PROTUES仿真軟件的操 作,會使用HEX文件進行單片機的仿真。2、 了解定時器的原理和四種工作方式的使用方法,學習定時器的相關(guān)應(yīng)用,包括產(chǎn)生信號和計數(shù),利用定時器進行延時等。3、 進一步掌握熟練單個數(shù)碼管以及多位數(shù)碼管的顯示原理,學會將01000的數(shù)字進行顯示。4、 掌握利用單片機產(chǎn)生矩形方脈沖的相

2、關(guān)原理。二、 實驗原理1、 定時器結(jié)構(gòu)和原理 圖 上圖 為定時器T0、T1的結(jié)構(gòu),其中振蕩器經(jīng)12分頻后作為定時器的時鐘脈沖,T為外部計數(shù)脈沖輸入端,通過開關(guān)K1選擇。反相器,或門,與門共同構(gòu)成啟/??刂菩盘枴H和TL為加1計數(shù)器,TF為中斷標志。每接收到一個脈沖,加1計數(shù)器自動加1,當計數(shù)器中的數(shù)被加為0時產(chǎn)生溢出標志,TF將被置1。計數(shù)器工作方式的選擇和功能的實現(xiàn)需要配置相應(yīng)的寄存器TMOD和TCON。2、定時器工作方式定時器共有四種工作方式分別為方式0方式3。方式0:13位計數(shù)器,最大計數(shù)值為213個脈沖。方式1:16位計數(shù)器,最大計數(shù)值為216個脈沖。方式2:8位自動重裝計數(shù)器。該方

3、式下,TL進行計數(shù)工作,TH用于存放計數(shù)初值,當產(chǎn)生溢出中斷請求時會自動將TH中的初值重新裝入TL,以使計數(shù)器繼續(xù)工作。方式3:僅限于T0計數(shù)器,在方式3下,T0計數(shù)器被分成兩個獨立的8為計數(shù)器TL0和TH0。3、 定時器間隔1ms產(chǎn)生一個脈沖利用單片機1 P3.0口進行脈沖的輸出,通過定時器進行端口定時控制,實現(xiàn)每1ms高低電平變換。就可以實現(xiàn)一個占空比為50%的矩形脈沖輸出。對于定時器的定時功能實現(xiàn),需要進行定時器模式選擇,定時器初值設(shè)定。4、 利用中斷進行脈沖的計數(shù)將單片機1 P3.0口輸出的脈沖連接到單片機2的中斷INT0口P3.2,通過脈沖的高低電平變換觸發(fā)中斷0,進行脈沖個數(shù)的計數(shù)

4、。 三、 實驗步驟(一)實驗詳細步驟1、啟動KEIL建立一個空白工程,然后命名文件。2、新建源程序文件,輸入程序代碼并保存,然后進行綜合編譯。若在編譯過程中發(fā)現(xiàn)錯誤,則找出并更正錯誤,直至編譯成功為止。3、通過設(shè)置生成HEX文件,保存。4、啟動Protues建立一個空白工程,然后命名文件5、進行電路的原理圖連接并輸入HEX文件進行仿真。(二)實驗仿真原理圖 圖 圖如圖 為單片機1的脈沖產(chǎn)生系統(tǒng),通過定時的定時控制,讓P3.0口輸出脈寬為1ms的方脈沖,對于定時器程序的初始化。TMOD = (TMOD&0XF0)|0X00; / 定時器模式0的選擇s = 8192-11059.2/12;TH0

5、= s/32;TL0 = s%32; / 定時器的初值的設(shè)定如圖 為單片機2的電路連接原理,單片機通過接受單片機1的方脈沖信號觸發(fā)中斷進行計數(shù),沒來一個脈沖記一次數(shù),再通過數(shù)碼管顯示出來。四、 實驗結(jié)果及分析圖通過按下按鍵開始進行脈沖的產(chǎn)生和計數(shù),如圖左邊為單片機1產(chǎn)生脈沖并通過數(shù)碼管顯示脈沖產(chǎn)生數(shù),右邊為單片機2接受脈沖同時也通過數(shù)碼管顯示脈沖接受數(shù)字。當按下按鍵時開始產(chǎn)生并傳送脈沖,通過一個VSM counter timer進行計數(shù)驗證的準確與否。按下按鍵后發(fā)現(xiàn)兩個多位數(shù)碼管同時顯示并跳轉(zhuǎn)同樣的數(shù)字,并且計數(shù)器也顯示同樣的數(shù)字。如圖所示。 圖最后通過示波器驗證觀察所產(chǎn)生的脈沖是否正確,通過

6、調(diào)節(jié)示波器上的時間和幅度旋鈕可以觀察到矩形方波的產(chǎn)生。如圖所示圖問題一:運行電路時,數(shù)碼管亂碼解決的方法:檢查電路,發(fā)現(xiàn)程序中掃描信號端口錯誤,將掃描信號的端口順序調(diào)換,重新運行。問題二:定時器的時間設(shè)置問題解決的方法:檢查程序,發(fā)現(xiàn)是是定時器的初始化設(shè)置問題,在改動后,重新編譯后在次運行電路,電路正常顯示,符合要求。通過本次實驗,通過實驗我切身實際的進行代碼的編寫以及電路的仿真連接從中發(fā)現(xiàn)問題,解決問題,再而收獲知識,獲取經(jīng)驗。五、 體會通過本次的實驗,在前三個實驗的基礎(chǔ)上讓我復習了知識點,也讓我在次掌握了新的知識。在完成這次實驗后,讓我更加熟悉數(shù)碼管的顯示功能代碼的實現(xiàn)。并且還學會了定時器

7、中斷的運用,學會了用更加精確的方式去進行定時延時操作。我覺得這次的課程實驗讓我知道,一次次的失敗,并不會讓我放棄去追求,相反它會引領(lǐng)著我去發(fā)現(xiàn)問題,從而解決問題,完成更深入的探索。也讓我明白理論知識的重要性,并且與實際相結(jié)合,多動手,在實踐中成長。所以我會很重視每一次的實驗。我堅信:每次實驗都會給我自身很大幫助。慢慢的積累點滴的知識,到最后就會多的。六、 附錄1、 單片機1脈沖產(chǎn)生代碼#includeunsigned char code ET10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;unsigned int AT,s;unsign

8、ed int a,b,c,d;void delay(int counter)int i,j;for(i = 0;i 10;i+)for(j =0;j 10)count = 0;P30=P30;/高低電平取反if(P30 = 0)AT+;if(AT 9999)AT = 0; void main ()TMOD = (TMOD&0XF0)|0X00;/模式0選擇s = 8192-11059.2/12;TH0 = s/32;TL0 = s%32; /初值設(shè)定TR0 = 0;ET0 = 1;IT0 = 1;EX0 = 1;EA = 1;/定時器的初始化while (1)if(AT10) a=AT;P2

9、= 0xff; /消除鬼影P1 = 0xf7;P2 = ETa; else if(AT100)a=AT%10;P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT/10;P2 = 0xff; /消除鬼影P1 = 0xfb;P2 = ETb;delay(2); else if(AT1000)a=AT%100%10; P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT%100/10;P2 = 0xff;/消除鬼影P1 = 0xfb;P2 = ETb;delay(2);c=AT/100; P2 = 0xff;

10、/消除鬼影P1 = 0xfd;P2 = ETc;delay(2);else if(AT10000)a=AT%1000%100%10; P2 = 0xff;/消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT%1000%100/10;P2 = 0xff; /消除鬼影P1 = 0xfb;P2 = ETb;delay(2);c=AT%1000/100;P2 = 0xff;/消除鬼影P1 = 0xfd;P2 = ETc;delay(2);d=AT/1000;P2 = 0xff; /消除鬼影P1 = 0xfe;P2 = ETd;delay(2); / 數(shù)碼管進行數(shù)字顯示部分 2、

11、單片機2接受脈沖代碼#includeunsigned char code ET10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;unsigned int AT;unsigned int a,b,c,d;void delay(int counter)int i,j;for(i = 0;i 10;i+)for(j =0;j counter;j+);void anjian(void) interrupt 0/中斷函數(shù),觸發(fā)一次計數(shù)一次AT+;void main ()IT0 = 1;EX0 = 1;EA = 1; /中斷0初始化while (1)

12、if(AT10) a=AT;P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa; else if(AT100)a=AT%10;P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT/10;P2 = 0xff; /消除鬼影P1 = 0xfb;P2 = ETb;delay(2); else if(AT1000)a=AT%100%10; P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT%100/10;P2 = 0xff;/消除鬼影P1 = 0xfb;P2 = ETb;delay(2);c=AT/100; P2 = 0xff; /消除鬼影P1 = 0xfd;P2 = ETc;delay(2);else if(AT10000)a=AT%1000%100%10; P2 = 0xff;/消除鬼影P1 = 0xf

溫馨提示

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

評論

0/150

提交評論