單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器(共16頁)_第1頁
單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器(共16頁)_第2頁
單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器(共16頁)_第3頁
單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器(共16頁)_第4頁
單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器(共16頁)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)(wi j)實(shí)驗(yàn)報(bào)告LED燈控制器指導(dǎo)(zhdo)教師: 專業(yè)(zhuny)班級(jí) :姓名:學(xué)號(hào): 聯(lián)系方式:任務(wù)(rn wu)要求 實(shí)驗(yàn)?zāi)康模杭由顚?duì)定時(shí)(dn sh)/計(jì)數(shù)器、中斷、IO端口的理解,掌握定時(shí)/計(jì)數(shù)器、中斷的應(yīng)用編程技術(shù)及中斷程序的調(diào)試方法。實(shí)驗(yàn)內(nèi)容:利用(lyng)C8051F310單片機(jī)設(shè)計(jì)一個(gè)LED燈控制器主要功能和技術(shù)指標(biāo)要求:1. LED燈外接于P0.0端。2. LED燈分別按2Hz,1Hz和0.5Hz三種不同頻率閃動(dòng),各持續(xù)10s。3. 在LED燈開始和停止閃爍時(shí)蜂鳴器分別鳴響1次。4. 利用單片機(jī)內(nèi)部定時(shí)器定時(shí),要求采用中斷方式。 提高要求:使用按鍵(KINT)

2、控制LED燈閃爍模式的切換。設(shè)計(jì)思路C8051F310單片機(jī)片上晶振為24.5MHz,采用8分頻后為3.0625MHz ,輸入時(shí)鐘信號(hào)為48個(gè)機(jī)器周期,所以T1定時(shí)器采用定時(shí)方式1,單次定時(shí)最長可以達(dá)到的時(shí)間為1.027s,可以滿足0.5Hz是的定時(shí)要求?;A(chǔ)部分:給TMOD賦值10H,即選用T1定時(shí)器采用定時(shí)方式1,三種頻率對(duì)應(yīng)的半周期時(shí)間為0.25s、0.5s、1s。計(jì)算得需給TH1和TL1為C1H、B1H;83H、63H;06H、C6H。要使閃爍持續(xù)10s,三種模式需要各循環(huán)40、20、10次。用LOOP3:MOV C,PSW.5 ;PSW.5為標(biāo)志位,進(jìn)定時(shí)器中斷后置一JNC LOOP

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

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

5、待定時(shí)器中斷,中斷執(zhí)行完清零,并在中斷處向下繼續(xù)執(zhí)行程序。 PSW.5:為標(biāo)志位,用于判斷執(zhí)行一種中斷還是三種,在外部中斷程序中改變。流程圖 1.主程序流程圖(含提高(t go)部分):2.外部(wib)中斷流程圖3.定時(shí)器中斷流程圖源代碼 (含文件頭說明(shumng)、資源使用說明、語句行注釋);*;Filename: LED燈閃爍(shn shu).asm;Decription: LED LED燈分別按2Hz,1Hz和0.5Hz三種不同(b tn)頻率閃動(dòng),各持續(xù)10s。; 在LED燈開始和停止閃爍時(shí)蜂鳴器分別鳴響1次。按一次按鈕,LED以; 2Hz 頻率閃動(dòng);按第二次以1Hz頻率閃動(dòng);

6、按第二次以0.5Hz頻率閃動(dòng);; 第四次時(shí)又順序執(zhí)行三種模式(可以在任何時(shí)候按按鈕,不必等上一模; 式閃爍完) ;Designed 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 ;復(fù)位入口LJMP MAINORG 0003H ;外部中斷0入口LJMP T_KINTORG 001BH ;定時(shí)器1入口LJMP TIME1MAIN: LCALL Init_Device ;初始化配置(pizh)

7、MOV R0,#00H CLR LED ;關(guān)led燈 CLR BEEP CLR PSW.1 ;標(biāo)志(biozh)位1清零 CLR PSW.5 ;標(biāo)志(biozh)位2清零 SETB EA ;允許總中斷 SETB EX0 ;外部中斷0允許 SETB IT0 ;下降沿延觸發(fā) MOV TMOD,#10H ;置T1為定時(shí)方式1 SETB ET1 ;定時(shí)器T1允許中斷;*;外部中斷返回處,選擇模式;*CHOO: CJNE R0,#02H,LOOP ;選擇模式 LJMP CASE2 ;R0等于02H,跳轉(zhuǎn)到模式2LOOP: JC CASE1 ;R0小于02H,跳轉(zhuǎn)到模式1 LJMP CASE3 ;R0大于

8、02H,跳轉(zhuǎn)到模式3;*;模式1,2Hz閃爍10s;*CASE1:MOV R1,#0C1H MOV R2,#0B1H MOV R7,#28H LJMP START;*; 模式(msh)2,1Hz閃爍10s;*CASE2:MOV R1,#83H MOV R2,#63H MOV R7,#14H LJMP START;*; 模式(msh)3,0.5Hz閃爍10s;*CASE3:MOV R1,#06H MOV R2,#0C6H MOV R7,#0AH LJMP START;*;閃爍(shn shu)控制程序;*START:LCALL VOICE ;蜂鳴1s MOV TH1,R1 MOV TL1,R2

9、MOV A,R7BACK: SETB TR1 ;開定時(shí)LOOP1:MOV C,PSW.5 ;等待中斷,中斷會(huì)置一標(biāo)志位PSW.5 JNC LOOP1 ;中斷結(jié)束,繼續(xù)向下(xin xi)運(yùn)行 CLR PSW.5 ;清零(qn ln)標(biāo)志位 DJNZ R7,BACK ;循環(huán)(xnhun),使閃爍達(dá)到10s MOV C,PSW.1 JC THERE ; PSW.1為1則只執(zhí)行一種模式跳轉(zhuǎn)到THERE等待外;部中斷 CJNE A,#14H,LOOP2 ;順序執(zhí)行時(shí),判斷下一模式 LJMP CASE3 ;A=14H則跳轉(zhuǎn)到模式3LOOP2:JC THERE LJMP CASE2 ;A14H則跳轉(zhuǎn)到模式

10、2THERE:LCALL VOICE ;蜂鳴1s SJMP $ ;踏步,等待外部中斷;*;蜂鳴器響1s;*VOICE:SETB BEEP ;開蜂鳴 MOV TH1,#06H MOV TL1,#0C6H CLR PSW.5 SETB TR1 ;開定時(shí)器1LOOP3:MOV C,PSW.5 ;等待中斷 JNC LOOP3 CLR BEEP ;關(guān)蜂鳴 RET;*;外部(wib)中斷0;*T_KINT:SETB PSW.1 ;標(biāo)志(biozh)位1置一,用于判斷(pndun)是否順序執(zhí)行三種模式 INC R0 ;R0加一,用于判斷何種模式 CJNE R0,#04H,K_RET CLR PSW.1 ;R

11、0到04H時(shí)清零標(biāo)志位和R0 MOV R0,#00HK_RET: CLR TR1 ;關(guān)定時(shí)器1 POP SP POP SP ;出棧兩次 MOV DPTR,#0036H ;0036H為選擇處地址 PUSH DPL ;DPL壓入棧頂 PUSH DPH ;DPH壓入棧頂 RETI ;返回到知道位置;*;定時(shí)器1中斷;*TIME1: MOV TH1,R1 MOV TL1,R2 ;重新置數(shù) SETB PSW.5 ;標(biāo)志位置一 CLR TR1 ;關(guān)定時(shí) CPL LED ;LED取反 RETI;*;初始化配置(pizh);*PCA_Init: ;關(guān)閉(gunb)看門狗 anl PCA0MD, #0BFh m

12、ov PCA0MD, #000h retTimer_Init: ;定時(shí)器1初始化配置(pizh) mov TMOD, #010h mov CKCON, #002h retPort_IO_Init: ;端口初始化配置 mov XBR1, #040h retInterrupts_Init: ;中斷初始化配置 mov IE, #009h retInit_Device: lcall PCA_Init lcall Timer_Init lcall Port_IO_Init lcall Interrupts_Init retEND 程序測試方法與結(jié)果(ji gu)、軟件性能分析1 、軟件(run jin)

13、調(diào)試總體界面:2 、定時(shí)器1測試(csh) 軟件調(diào)試時(shí) 利用標(biāo)志位用LOOP1:MOV C,PSW.5 JNC LOOP1語句,可以在中斷返回后,在中斷處繼續(xù)向下執(zhí)行代碼硬件調(diào)試時(shí),可以順序以2Hz,1Hz和0.5Hz三種不同頻率閃動(dòng),各持續(xù)10s,并且蜂鳴器鳴叫1s正常3、定時(shí)循環(huán)代碼測試:例如執(zhí)行模式1定時(shí)0.25s,要循環(huán)40次才能跳出一次循環(huán)后R7為27H開始時(shí),R7為28H跳出(tio ch)循環(huán)時(shí),R7為0所以,定時(shí)(dn sh)循環(huán)程序正常4、外部(wib)中斷測試 如圖,軟件調(diào)試時(shí),進(jìn)入中斷程序執(zhí)行到RETI后,DPTR被賦為0036H,pc在00ACH處再執(zhí)行一步Pc在003

14、6H處,返回到了指定位置。所以(suy),這說明不管程序運(yùn)行到了哪里,只要按下KINT鍵,就會(huì)返回到指定位置,選擇下一種模式運(yùn)行。Program Size: data=8.0 xdata=0 code=219代碼利用合理空行和注釋,不僅在視覺上美化(mihu)了,而且讓各個(gè)子段程序的功能一目了然,方便調(diào)試和檢錯(cuò)硬件(yn jin)調(diào)試時(shí),在C8051F310單片機(jī)開發(fā)板上跑代碼:不按KINT鍵時(shí),LED燈以2Hz,1Hz和0.5Hz三種不同頻率閃動(dòng),各持續(xù)10s,在開始、結(jié)束和切換模式時(shí),蜂鳴器都響1s,按下一次時(shí),LED燈以2Hz閃爍10s后結(jié)束;按下兩次時(shí),LED燈以1Hz閃爍10s后結(jié)束

15、;按下三次時(shí),LED燈以0.5Hz閃爍10s后結(jié)束;當(dāng)按下第四次時(shí),又切換回順序執(zhí)行三種模式,在上述過程,蜂鳴器君鳴叫正常。綜上:此次程序,運(yùn)行正常,很好的完成了要求的基礎(chǔ)部分和提高部分思考題.若想實(shí)現(xiàn)3種閃耀方式的持續(xù)時(shí)間在5s-20s范圍內(nèi)可調(diào),且每種方式的持續(xù)時(shí)間各不相同,應(yīng)如何設(shè)計(jì)(shj)程序? 答: 三種(sn zhn)閃爍方式利用定時(shí)器執(zhí)行,定時(shí)時(shí)間為0.25s、0.5s、1s 通過(tnggu)循環(huán)次數(shù)來控制持續(xù)時(shí)間,所以只要改變循環(huán)次數(shù),就能改變持續(xù)時(shí)間(初始持續(xù)時(shí)間可設(shè)為10s)可以利用矩陣鍵盤來實(shí)現(xiàn),通過鍵值掃描程序來判斷按下了什么鍵,再通過鍵值處理來執(zhí)行按鍵的功能可以設(shè)置 +鍵、-鍵、和輸入鍵按下+鍵,寄存器如R5加一;按下-鍵,寄存器如R5減一再按輸入鍵后,模式1循環(huán)次數(shù)加4* R5;模式1循環(huán)次數(shù)加2* R5;模式1循環(huán)次數(shù)加1* R5,再執(zhí)行程序來達(dá)到改變持續(xù)時(shí)間的功能。實(shí)驗(yàn)小結(jié)通過本實(shí)驗(yàn),我們一方面熟悉了C8051F310單片機(jī)開發(fā)板的結(jié)構(gòu)、芯片間的連接方法,同時(shí)也掌握了簡單的配置方法;另一方面,我們又加深對(duì)定時(shí)/計(jì)數(shù)器、中斷、IO端口的理解,通過編寫代碼,我們也掌握了定時(shí)/計(jì)數(shù)器、中斷的應(yīng)用編程技術(shù)。程序?qū)懲旰螅{(diào)試是一定會(huì)出現(xiàn)很多問題,在軟件調(diào)試時(shí),我們一定要掌握利用斷點(diǎn)來單步調(diào)試

溫馨提示

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

評(píng)論

0/150

提交評(píng)論