單片機實驗報告——LED燈控制器_第1頁
單片機實驗報告——LED燈控制器_第2頁
單片機實驗報告——LED燈控制器_第3頁
單片機實驗報告——LED燈控制器_第4頁
單片機實驗報告——LED燈控制器_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上微機實驗報告LED燈控制器指導教師: 專業(yè)班級 :姓名:學號: 聯系方式:一、 任務要求 實驗目的:加深對定時/計數器、中斷、IO端口的理解,掌握定時/計數器、中斷的應用編程技術及中斷程序的調試方法。實驗內容:利用C8051F310單片機設計一個LED燈控制器主要功能和技術指標要求:1. LED燈外接于P0.0端。2. LED燈分別按2Hz,1Hz和0.5Hz三種不同頻率閃動,各持續(xù)10s。3. 在LED燈開始和停止閃爍時蜂鳴器分別鳴響1次。4. 利用單片機內部定時器定時,要求采用中斷方式。 提高要求:使用按鍵(KINT)控制LED燈閃爍模式的切換。二、 設計思路C8

2、051F310單片機片上晶振為24.5MHz,采用8分頻后為3.0625MHz ,輸入時鐘信號為48個機器周期,所以T1定時器采用定時方式1,單次定時最長可以達到的時間為1.027s,可以滿足0.5Hz是的定時要求。基礎部分:給TMOD賦值10H,即選用T1定時器采用定時方式1,三種頻率對應的半周期時間為0.25s、0.5s、1s。計算得需給TH1和TL1為C1H、B1H;83H、63H;06H、C6H。要使閃爍持續(xù)10s,三種模式需要各循環(huán)40、20、10次。用LOOP3:MOV C,PSW.5 ;PSW.5為標志位,進定時器中斷后置一JNC LOOP3 代替踏步程序等待中斷,以便中斷完后回

3、到主程序繼續(xù)向下執(zhí)行。為了減少代碼長度,可以采用循環(huán)結構,循環(huán)主題中,將R1、R2分別賦給TH1、TL1,R7為循環(huán)次數(用DJNZ語句實現);定時中斷里,重新給TH1、TL1賦值時同理。這樣,循環(huán)時只要把定時時間和循環(huán)次數賦給R1、R2、R7即可,達到減少代碼長度的效果。蜂鳴器也采用T1定時方式1,定時一秒。提高部分: 采用外部中斷0,下降沿觸發(fā)。外部中斷程序里置標志位PSW.1和R0,PSW.5用于判斷執(zhí)行完一種模式后,是否跳出循環(huán)結束。R0用于判斷執(zhí)行何種模式,每按一次后RO加一,第四次時就將R0和PSW.5清零,這樣程序就又回到了基礎部分的循序執(zhí)行。因為中斷程序執(zhí)行完后,會回到原來程序

4、中斷的地方,繼續(xù)向下執(zhí)行而給程序運行帶來諸多不便。所以,查看了RETI語句的實現形式:將棧頂壓入PCH,POP后再將棧頂壓入PCL,利用這個定義,只要將需要返回的地址壓入PCH和PCL就能返回到指定地址。三、 資源分配 P0.0:為LED燈控制端口,高電平觸發(fā)。P3.1:為蜂鳴器控制端口,高電平觸發(fā)。P0.1:為KINT鍵控制端口,下降沿觸發(fā)。 R1、R2:用于存放計時器計時數據,R1賦給TH1、R2賦給TL1。 R7:存放三種模式的循環(huán)次數。 R0:在外部中斷程序中賦值,用于判斷采用何種模式。 PSW.1:為標志位,用于等待定時器中斷,中斷執(zhí)行完清零,并在中斷處向下繼續(xù)執(zhí)行程序。 PSW.5

5、:為標志位,用于判斷執(zhí)行一種中斷還是三種,在外部中斷程序中改變。四、 流程圖 1.主程序流程圖(含提高部分):2.外部中斷流程圖3.定時器中斷流程圖五、 源代碼 (含文件頭說明、資源使用說明、語句行注釋);*;Filename: LED燈閃爍.asm;Decription: LED LED燈分別按2Hz,1Hz和0.5Hz三種不同頻率閃動,各持續(xù)10s。; 在LED燈開始和停止閃爍時蜂鳴器分別鳴響1次。按一次按鈕,LED以; 2Hz 頻率閃動;按第二次以1Hz頻率閃動;按第二次以0.5Hz頻率閃動;; 第四次時又順序執(zhí)行三種模式(可以在任何時候按按鈕,不必等上一模; 式閃爍完) ;Design

6、ed by: gxy;Date: 2012.10.31;*$include (C8051F310.inc)LED BIT P0.0 ;LED燈控制端口BEEP BIT P3.1 ;蜂鳴器控制端口KINT BIT P0.1 ;KINT按鈕端口ORG 0000H ;復位入口LJMP MAINORG 0003H ;外部中斷0入口LJMP T_KINTORG 001BH ;定時器1入口LJMP TIME1MAIN: LCALL Init_Device ;初始化配置 MOV R0,#00H CLR LED ;關led燈 CLR BEEP CLR PSW.1 ;標志位1清零 CLR PSW.5 ;標志位2

7、清零 SETB EA ;允許總中斷 SETB EX0 ;外部中斷0允許 SETB IT0 ;下降沿延觸發(fā) MOV TMOD,#10H ;置T1為定時方式1 SETB ET1 ;定時器T1允許中斷;*;外部中斷返回處,選擇模式;*CHOO: CJNE R0,#02H,LOOP ;選擇模式 LJMP CASE2 ;R0等于02H,跳轉到模式2LOOP: JC CASE1 ;R0小于02H,跳轉到模式1 LJMP CASE3 ;R0大于02H,跳轉到模式3;*;模式1,2Hz閃爍10s;*CASE1:MOV R1,#0C1H MOV R2,#0B1H MOV R7,#28H LJMP START;*

8、; 模式2,1Hz閃爍10s;*CASE2:MOV R1,#83H MOV R2,#63H MOV R7,#14H LJMP START;*; 模式3,0.5Hz閃爍10s;*CASE3:MOV R1,#06H MOV R2,#0C6H MOV R7,#0AH LJMP START;*;閃爍控制程序;*START:LCALL VOICE ;蜂鳴1s MOV TH1,R1 MOV TL1,R2 MOV A,R7BACK: SETB TR1 ;開定時LOOP1:MOV C,PSW.5 ;等待中斷,中斷會置一標志位PSW.5 JNC LOOP1 ;中斷結束,繼續(xù)向下運行 CLR PSW.5 ;清零標

9、志位 DJNZ R7,BACK ;循環(huán),使閃爍達到10s MOV C,PSW.1 JC THERE ; PSW.1為1則只執(zhí)行一種模式跳轉到THERE等待外;部中斷 CJNE A,#14H,LOOP2 ;順序執(zhí)行時,判斷下一模式 LJMP CASE3 ;A=14H則跳轉到模式3LOOP2:JC THERE LJMP CASE2 ;A<14H則跳轉到模式2THERE:LCALL VOICE ;蜂鳴1s SJMP $ ;踏步,等待外部中斷;*;蜂鳴器響1s;*VOICE:SETB BEEP ;開蜂鳴 MOV TH1,#06H MOV TL1,#0C6H CLR PSW.5 SETB TR1

10、;開定時器1LOOP3:MOV C,PSW.5 ;等待中斷 JNC LOOP3 CLR BEEP ;關蜂鳴 RET;*;外部中斷0;*T_KINT:SETB PSW.1 ;標志位1置一,用于判斷是否順序執(zhí)行三種模式 INC R0 ;R0加一,用于判斷何種模式 CJNE R0,#04H,K_RET CLR PSW.1 ;R0到04H時清零標志位和R0 MOV R0,#00HK_RET: CLR TR1 ;關定時器1 POP SP POP SP ;出棧兩次 MOV DPTR,#0036H ;0036H為選擇處地址 PUSH DPL ;DPL壓入棧頂 PUSH DPH ;DPH壓入棧頂 RETI ;

11、返回到知道位置;*;定時器1中斷;*TIME1: MOV TH1,R1 MOV TL1,R2 ;重新置數 SETB PSW.5 ;標志位置一 CLR TR1 ;關定時 CPL LED ;LED取反 RETI;*;初始化配置;*PCA_Init: ;關閉看門狗 anl PCA0MD, #0BFh mov PCA0MD, #000h retTimer_Init: ;定時器1初始化配置 mov TMOD, #010h mov CKCON, #002h retPort_IO_Init: ;端口初始化配置 mov XBR1, #040h retInterrupts_Init: ;中斷初始化配置 mov

12、IE, #009h retInit_Device: lcall PCA_Init lcall Timer_Init lcall Port_IO_Init lcall Interrupts_Init retEND 六、 程序測試方法與結果、軟件性能分析1 、軟件調試總體界面:2 、定時器1測試 軟件調試時 利用標志位用LOOP1:MOV C,PSW.5 JNC LOOP1語句,可以在中斷返回后,在中斷處繼續(xù)向下執(zhí)行代碼硬件調試時,可以順序以2Hz,1Hz和0.5Hz三種不同頻率閃動,各持續(xù)10s,并且蜂鳴器鳴叫1s正常3、定時循環(huán)代碼測試:例如執(zhí)行模式1定時0.25s,要循環(huán)40次才能跳出一次循

13、環(huán)后R7為27H開始時,R7為28H跳出循環(huán)時,R7為0所以,定時循環(huán)程序正常4、外部中斷測試 如圖,軟件調試時,進入中斷程序執(zhí)行到RETI后,DPTR被賦為0036H,pc在00ACH處再執(zhí)行一步Pc在0036H處,返回到了指定位置。所以,這說明不管程序運行到了哪里,只要按下KINT鍵,就會返回到指定位置,選擇下一種模式運行。Program Size: data=8.0 xdata=0 code=219代碼利用合理空行和注釋,不僅在視覺上美化了,而且讓各個子段程序的功能一目了然,方便調試和檢錯硬件調試時,在C8051F310單片機開發(fā)板上跑代碼:不按KINT鍵時,LED燈以2Hz,1Hz和0

14、.5Hz三種不同頻率閃動,各持續(xù)10s,在開始、結束和切換模式時,蜂鳴器都響1s,按下一次時,LED燈以2Hz閃爍10s后結束;按下兩次時,LED燈以1Hz閃爍10s后結束;按下三次時,LED燈以0.5Hz閃爍10s后結束;當按下第四次時,又切換回順序執(zhí)行三種模式,在上述過程,蜂鳴器君鳴叫正常。綜上:此次程序,運行正常,很好的完成了要求的基礎部分和提高部分七、 思考題.若想實現3種閃耀方式的持續(xù)時間在5s-20s范圍內可調,且每種方式的持續(xù)時間各不相同,應如何設計程序? 答: 三種閃爍方式利用定時器執(zhí)行,定時時間為0.25s、0.5s、1s 通過循環(huán)次數來控制持續(xù)時間,所以只要改變循環(huán)次數,就能改變持續(xù)時間(初始持續(xù)時間可設為10s)可以利用矩陣鍵盤來實現,通過鍵值掃描程序來判斷按下了什么鍵,再通過鍵值處理來執(zhí)行按鍵的功能可以設置 +鍵、-鍵、和輸入鍵按下+鍵,寄存器如R5加一;按下-鍵,寄存器如R5減一再按輸入鍵后,模式1循環(huán)次數加4* R5;模式1循環(huán)次數加2* R5;模式1循環(huán)次數加1* R5,再執(zhí)行程序來達到改變持續(xù)時間的功能。八、 實驗小結通過本實驗,我們一方面熟悉了C8051F

溫馨提示

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

評論

0/150

提交評論