版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)應(yīng)用課程設(shè)計(jì)電子時(shí)鐘 一、設(shè)計(jì)任務(wù)及要求【電子時(shí)鐘】利用實(shí)驗(yàn)板上4個(gè)LED數(shù)碼管,設(shè)計(jì)帶有鬧鈴功能的數(shù)字時(shí)鐘,要求:1、在4位數(shù)碼管上顯示當(dāng)前時(shí)間。顯示格式“時(shí)時(shí)分分”;”2、由LED閃動(dòng)做秒顯示;3、利用按鍵可對(duì)時(shí)間及鬧玲進(jìn)行設(shè)置,并可顯示鬧玲時(shí)間。當(dāng)鬧玲時(shí)間到蜂鳴器發(fā)出聲響,按停止鍵使可使鬧玲聲停止。拓展設(shè)計(jì):1 用數(shù)碼管的小數(shù)點(diǎn)閃動(dòng)替代二極管顯示秒,使之成為一個(gè)“完整的時(shí)鐘”;2、使數(shù)字時(shí)鐘的鬧鐘鈴聲為音樂(lè)。二、設(shè)計(jì)思路【工作原理及設(shè)計(jì)思路】計(jì)時(shí)功能利用單片機(jī)的定時(shí)器來(lái)完成,由于定時(shí)器定時(shí)的時(shí)長(zhǎng)有限,所以要利用中斷程序才能定時(shí)1秒,若中斷程序每隔5ms中斷一次并當(dāng)作一個(gè)計(jì)數(shù),則每中
2、斷一次計(jì)數(shù)加1,當(dāng)計(jì)數(shù)200次時(shí),則表示1s到了,秒變量加1,同理再判斷1min是否到了,再判斷1h是否到了。為了將時(shí)間在LED數(shù)碼管上顯示,可采用靜態(tài)顯示法和動(dòng)態(tài)顯示法,由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等較多硬件,可采用動(dòng)態(tài)顯示法實(shí)現(xiàn)LED顯示。鬧鈴聲由交流蜂鳴器產(chǎn)生,所以當(dāng)鬧鈴時(shí)間和當(dāng)前時(shí)間相等時(shí),可以對(duì)蜂鳴器輸入方波信號(hào),蜂鳴器就會(huì)發(fā)出聲音。三、設(shè)計(jì)分析【系統(tǒng)的主要功能】本實(shí)驗(yàn)實(shí)際是設(shè)計(jì)一個(gè)電子表,可以顯示時(shí)和分,并且用一個(gè)二極管顯示秒。另外,還可以對(duì)它進(jìn)行時(shí)間調(diào)整,還要有鬧鈴功能?!舅黝}目的意義】時(shí)鐘電路在各個(gè)系統(tǒng)中都起著十分重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。同時(shí)時(shí)鐘電路整體的設(shè)計(jì)及
3、其工作原理涉及到了單片機(jī)基礎(chǔ)課程中各章節(jié)的內(nèi)容,是對(duì)單片機(jī)理論基礎(chǔ)課程的一個(gè)綜合實(shí)踐,通過(guò)本課題不僅讓我對(duì)電子時(shí)鐘這一課題有更深入的了解,更加深了自己對(duì)單片機(jī)課程整體知識(shí)的把握,將理論所學(xué)用于實(shí)踐,將知識(shí)綜合,達(dá)到融會(huì)貫通的高度。【硬件電路設(shè)計(jì)及描述】實(shí)驗(yàn)用JD51開(kāi)發(fā)板完成,本實(shí)驗(yàn)的硬件包括顯示部分、鬧鈴部分、開(kāi)關(guān)部分。顯示部分JD51上用于顯示部分的電路如下圖: JD51上有四位共陽(yáng)LED數(shù)碼管,其標(biāo)號(hào)分別為L(zhǎng)ED1LED4,低電平選通,且任何時(shí)候僅有一位輸出低電平,顯示時(shí)對(duì)各顯示器進(jìn)行動(dòng)態(tài)掃描,顯示器分時(shí)輪流工作。雖然每次只有一個(gè)顯示器顯示,但是由于人的視覺(jué)暫留現(xiàn)象我們?nèi)詴?huì)感覺(jué)所有的顯示
4、器都在同時(shí)顯示。P0口作為輸出口控制8個(gè)發(fā)光二極管的亮滅,控制數(shù)碼管的顯示。鬧鈴部分蜂鳴器與P2.4口相連。開(kāi)關(guān)部分本實(shí)驗(yàn)中的開(kāi)關(guān)是實(shí)驗(yàn)儀上的四個(gè)邏輯開(kāi)關(guān),它們分別與P3.2、P3.3、P3.4、P3.5相連。其總P3.2用于調(diào)整時(shí)鐘或鬧鐘的時(shí),P3.3用于調(diào)整時(shí)鐘或鬧鐘的分,P3.5用于控制顯示時(shí)鐘還是顯示鬧鐘,并且同時(shí)控制調(diào)整時(shí)鐘還是調(diào)整鬧鐘,按任意鍵(SW1、SW2、SW4)時(shí)停止鬧鐘。【軟件設(shè)計(jì)流程及描述】顯示部分 顯示部分分為時(shí)鐘顯示、鬧鐘顯示和秒顯示三部分,主要由時(shí)鐘顯示子程序和鬧鐘顯示子程序構(gòu)成,鬧鐘顯示與時(shí)鐘顯示編程流程大致相同。 流程圖如下:鬧鈴部分設(shè)計(jì)思路及原理:音節(jié)由不同
5、頻率的方波產(chǎn)生,音節(jié)與頻率的關(guān)系如下表所示。要產(chǎn)生音頻方波,設(shè)計(jì)利用延時(shí)來(lái)建立音符表NOTE,表格中的數(shù)存R3*20us,其倒數(shù)1/(R3*2*10us)對(duì)應(yīng)相應(yīng)音符的頻率。另外,音樂(lè)的節(jié)拍是由延時(shí)實(shí)現(xiàn)的,如果1拍為0.4秒,1/4拍是0.1秒。只要設(shè)定延時(shí)時(shí)間,就可求得節(jié)拍的時(shí)間。延時(shí)作為基本延時(shí)時(shí)間,節(jié)拍值只能是它的整數(shù)倍。設(shè)計(jì)利用T1中斷產(chǎn)生10ms延時(shí),取1/4拍為10H*10ms,相應(yīng)產(chǎn)生所需延時(shí)。 音符(低).1.2.3.4.5.6.7頻率(HZ)262294330349392440494音符(中)1234567頻率(HZ)523587659698784880988音符(高)123
6、4567頻率(HZ)1046117513181397156817601967鬧鐘鈴聲選取情景比較合適的豬之歌,其曲譜如下圖:其相應(yīng)的音符和節(jié)拍表NOTE和METRE如下:NOTE:DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,98H,72H,7FH DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,72H,4CH,55H,00HMETRE:DB 80H,20H,20
7、H,20H,20H,20H,20H,20H,20H,80H DB 20H,20H,20H,20H,40H,20H,20H,20H,20H,20H,20H,80HDB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H DB 20H,20H,20H,20H,40H,20H,20H,20H,20H,20H,20H,40H開(kāi)關(guān)掃描及處理部分本實(shí)驗(yàn)用到了三個(gè)開(kāi)關(guān),其中涉及開(kāi)關(guān)的掃描及處理。開(kāi)關(guān)4控制數(shù)碼管當(dāng)前顯示的是時(shí)鐘還是鬧鐘,顯示時(shí)鐘時(shí),可通過(guò)開(kāi)關(guān)1和開(kāi)關(guān)2調(diào)整時(shí)鐘的時(shí)和分;顯示鬧鐘時(shí),也可以通過(guò)開(kāi)關(guān)1和開(kāi)關(guān)2調(diào)整時(shí)和分。開(kāi)關(guān)4控制鬧鈴的開(kāi)和關(guān)。按鍵調(diào)整鬧鐘與按鍵調(diào)整時(shí)
8、鐘編程流程基本一致,按鍵掃描及處理流程圖如圖:T0中斷服務(wù)程序:采用定時(shí)器T0計(jì)時(shí),中斷程序每隔50ms中斷一次計(jì)數(shù)加1,當(dāng)計(jì)數(shù)20次時(shí),則表示1s到了,秒變量加1,同理再判斷是否1分鐘到了,再判斷是否1小時(shí)到了,再判斷是否24小時(shí)到了。程序流程圖如下:三、源程序代碼及注釋;*;/*電子時(shí)鐘程序*/ ;程序主要包括MAIN函數(shù),T0、T1中斷程序,時(shí)間、鬧鐘顯示程序 ,按鍵掃描、處理程序;* ORG 0000HAJMP MAIN ;跳轉(zhuǎn)到主程序MAIN執(zhí)行ORG 000BHAJMP INTT0 ;跳到INTT0執(zhí)行ORG 001BHLJMP INTT1 ;跳到INTT1執(zhí)行ORG 0300H;
9、/*主函數(shù)*/預(yù)置T0T1工作方式,置初值,預(yù)置時(shí)鐘、鬧鐘,置位數(shù)碼管MAIN:MOV SP,#80H MOV TMOD,#11H ;設(shè)置定時(shí)器T0、T1工作于方式1 MOV TH0,#3CH ;裝入時(shí)鐘定時(shí)初值(50ms) MOV TL0,#0B0H MOV TH1,#0D8H ;裝入鬧鈴定時(shí)初值(10ms) MOV TL1,#0F0H MOV R1,#00H ;確保首次默認(rèn)鬧鈴工作MOV 20H,#00H MOV 21H,#00H MOV 22H,#00H ;預(yù)置時(shí)鐘分分MOV 23H,#00H ;預(yù)置時(shí)鐘時(shí)時(shí) MOV 30H,#30H ;預(yù)置鬧鈴分分MOV 31H,#08H ;預(yù)置鬧鈴時(shí)
10、時(shí)SETB P2.0 ;數(shù)碼管接P2口,置位數(shù)碼管,使其全滅SETB P2.1SETB P2.2SETB P2.3CLR P1.7 ;發(fā)光二極管LED7LED8用于顯示秒,清P1.7,發(fā)光二極管LED8亮SETB P1.6 ;置位P1.6,發(fā)光二極管LED7滅SETB EA ;開(kāi)放總中斷SETB ET0 ;允許T0中斷SETB TR0 ;開(kāi)啟定時(shí)器T0LOOP:LCALL DISPT ;調(diào)用時(shí)間顯示子程序LCALL RING ;調(diào)用鬧鈴處理子程序LCALL KEY ;調(diào)用按鍵掃描子程序JZ LOOP ;無(wú)鍵按下則循環(huán)LCALL CASE ;有鍵按下則轉(zhuǎn)按鍵處理子程序執(zhí)行SJMP LOOP ;循
11、環(huán);/*T0一秒定時(shí)中斷程序INTT0*/正常時(shí)鐘計(jì)時(shí)INTT0:PUSH PSW ;狀態(tài)字入棧保護(hù) PUSH ACC ;累加器入棧保護(hù)MOV TL0,#0B0H ;裝入計(jì)數(shù)初值,12MHZ晶振,形成1S中斷MOV TH0,#3CHINC 20HMOV A,20HCJNE A,#20,RETURNCPL P1.7 ;一秒到發(fā)光二極管輪流亮,用于顯示秒CPL P1.6MOV 20H,#00H ;一秒到清20H MOV A,21HADD A,#01HDA AMOV 21H,ACJNE A,#60H,RETURNMOV 21H,#00H ;一分到,21H單元清零MOV A,22HADD A,#01H
12、DA AMOV 22H,ACJNE A,#60H,RETURNMOV 22H,#00H ;一小時(shí)到,22H單元清零MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETURNMOV 23H,#00H ;滿(mǎn)24,23H單元清零RETURN:POP ACCPOP PSWRETI;/*時(shí)間顯示子程序*/DISPT:MOV A,22HANL A,#0FHMOV 2AH,A ;時(shí)鐘分的低位MOV A,22HANL A,#0F0HSWAP AMOV 2BH,A ;時(shí)鐘分的高位MOV A,23HANL A,#0FHMOV 2CH,A ;時(shí)鐘時(shí)的低位MOV A,23HA
13、NL A,#0F0HSWAP AMOV 2DH,A ;時(shí)鐘時(shí)的高位LED1:SETB P2.3 MOV A,2DH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.0 ;選通數(shù)碼管1 MOV P0,A ;顯示時(shí)鐘時(shí)的十位部分 LCALL DELAYLED2:SETB P2.0 MOV A,2CH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.1 ;選通數(shù)碼管2 MOV P0,A ;顯示時(shí)鐘時(shí)的個(gè)位部分 LCALL DELAY LED3:SETB P2.1 MOV A,2BH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.2
14、;選通數(shù)碼管3 MOV P0,A ;顯示時(shí)鐘分的十位部分 LCALL DELAYLED4:SETB P2.2 MOV A,2AH JB P1.7,TA2TA1: ADD A,#10 ;用于利用數(shù)碼管的小數(shù)點(diǎn)來(lái)表示秒TA2: MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.3 ;選通數(shù)碼管4 MOV P0,A ;顯示時(shí)鐘分的個(gè)位部分 LCALL DELAY RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;共陽(yáng)數(shù)碼管的不帶小數(shù)點(diǎn)的時(shí)間顯示碼 DB 40H,79H,24H,30H,19H,12H,02H,78H,0
15、0H,10H;共陽(yáng)數(shù)碼管的帶小數(shù)點(diǎn)的時(shí)間顯示碼 ;/*按鍵掃描程序*/開(kāi)關(guān)接P3口,判斷按鍵情況KEY: MOV P3,#0FFH MOV A,P3CPL AANL A,#2CHJZ RETK ;無(wú)鍵按下則返回LCALL DELAY ;延時(shí)消抖MOV A,P3CPL AANL A,#2CHJZ RETK ;鍵盤(pán)去抖動(dòng)MOV R6,A ;將鍵值存入R6LOOP1:LCALL DISPT;MOV A,P3CPL AANL A,#2CHJNZ LOOP1 ;等待鍵釋放MOV A,R6RETK:RET;/*按鍵處理子程序*/根據(jù)按鍵情況進(jìn)行處理CASE:MOV A,R6CLR P1.0 ;發(fā)光二極管L
16、ED1亮JB ACC.2,SETH ;轉(zhuǎn)調(diào)整時(shí)JB ACC.3,SETM ;轉(zhuǎn)調(diào)整分JB ACC.5,SETR ;轉(zhuǎn)鬧鈴設(shè)置WAITCASE:LCALL DISPT ;無(wú)鍵按下時(shí)等待LCALL KEYJZ WAITCASE;/*時(shí)間調(diào)整程序*/按鍵調(diào)整時(shí)間SETT:LCALL DISPTLCALL KEYJZ SETTMOV A,R6JB ACC.2,SETHJB ACC.3,SETMJB ACC.5,KEYGO ;第二次按為確認(rèn)離開(kāi)KEYGO: SETB P1.0 ;發(fā)光二極管LED1、LED2滅SETB P1.1RETSETH:MOV A,23H ;調(diào)整時(shí)鐘時(shí),時(shí)加1ADD A,#01HD
17、A A ;十進(jìn)制調(diào)整MOV 23H,ACJNE A,#24H,HD ;判斷是否到24,不到繼續(xù)MOV 23H,#00H ;到24時(shí)清零HD:LJMP SETTSETM:MOV A,22H ;分加1ADD A,#01HDA A ;十進(jìn)制調(diào)整 MOV 22H,ACJNE A,#60H,MD ;判斷是否到1小時(shí),不到繼續(xù)MOV 22H,#00H ;到1小時(shí)則清零MD:LJMP SETT;/*鬧鈴時(shí)間調(diào)整按鍵掃描及處理子程序*/KEYR: MOV P3,#0FFH MOV A,P3CPL AANL A,#2CHJZ RETK ;無(wú)鍵按下則返回LCALL DISPR ;延時(shí)消抖MOV A,P3CPL A
18、ANL A,#2CHJZ RETK ;鍵盤(pán)去抖動(dòng)MOV R6,A ;將鍵值存入R6LJMP LOOPRLOOPR:LCALL DISPRMOV A,P3CPL AANL A,#2CHJNZ LOOPR ;等待鍵釋放MOV A,R6AJMP RETK;/*設(shè)置鬧鈴時(shí)間*/SETR:SETB P1.0 ;發(fā)光二極管LED1滅CLR P1.1 ;發(fā)光二極管LED2亮,改顯示狀態(tài)LCALL DISPRMOV R1,#00H ;設(shè)置鬧鐘時(shí)重設(shè)R1,用于檢測(cè)鬧鈴播放與否MOV 53H,#03H ;重設(shè)鬧鈴次數(shù)LCALL KEYR ;鬧鈴時(shí)間調(diào)整按鍵檢測(cè)JZ SETRMOV A,R6JB ACC.2,SET
19、RHJB ACC.3,SETRMJB ACC.5,KEYGO ;第二次按為確認(rèn)離開(kāi)SETRH:MOV A,31H ;鬧鐘時(shí)加1ADD A,#01HDA A ;十進(jìn)制調(diào)整MOV 31H,ACJNE A,#24H,RHD ;判斷是否到24,不到繼續(xù)MOV 31H,#00H ;到24時(shí)則清零RHD:LJMP SETRSETRM:MOV A,30H ;鬧鐘分加1ADD A,#01HDA A ;十進(jìn)制調(diào)整MOV 30H,ACJNE A,#60H,RMD ;判斷是否到1小時(shí),不到繼續(xù)MOV 30H,#00H ;到1小時(shí)則清零RMD:LJMP SETR;/*鬧鐘設(shè)置顯示子程序*/DISPR:MOV A,30
20、HANL A,#0FH ;屏蔽高四位MOV 3AH,A ;保留低位送3AHMOV A,30HANL A,#0F0H ;屏蔽低四位 SWAP A ;高四位與第四位交換MOV 3BH,A ;將保留的高4位送3BHMOV A,31HANL A,#0FH MOV 3CH,A ;低位MOV A,31HANL A,#0F0HSWAP AMOV 3DH,A ;高位LEDR1:SETB P2.3MOV A,3DH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.0MOV P0,ALCALL DELAYLEDR2:SETB P2.0 MOV A,3CH MOV DPTR,#TAB MOVC
21、 A,A+DPTR CLR P2.1MOV P0,ALCALL DELAYLEDR3:SETB P2.1 MOV A,3BH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.2MOV P0,ALCALL DELAYLEDR4:SETB P2.2 MOV A,3AH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.3MOV P0,ALCALL DELAYRET;/*延時(shí)子程序*/DELAY:MOV R5,#2 D1:MOV R4,#250D2:DJNZ R4,D2DJNZ R5,D1RET;/*鬧鈴檢測(cè)程序*/RING:MOV A,23H ;比較時(shí)CJ
22、NE A,31H,RETRMOV A,22H ;比較分CJNE A,30H,RETR LCALL SINGRETR:RET;/*定時(shí)器T1中斷子程序*/INTT1:PUSH PSW ;狀態(tài)字入棧保護(hù) PUSH ACC ;累加器入棧保護(hù) INC 50H ;中斷服務(wù)程序,中斷計(jì)數(shù)器加1MOV TH1,#0D8H ;裝入計(jì)數(shù)初值,12M晶振,形成10MS中斷 MOV TL1,#0F0H POP ACC POP PSWRETI ;/*響鈴子程序*/ SING:CJNE R1,#01H,SING1 ;判斷是否已經(jīng)鬧鈴過(guò)一次 LJMP RETS SING1:SETB ET1 MOV 50H,#00H ;中
23、斷計(jì)數(shù)器清0 MOV 51H,#00H ;音符指針 MOV 52H,#00H ;節(jié)拍碼指針 MOV 53H,#03H ;設(shè)置鬧鐘不退出響鈴次數(shù) GETNOT:MOV A,51H MOV DPTR,#NOTE ;表頭地址送DPTR MOVC A,A+DPTR ;查表取音符碼 JZ ENDP ;是00H,則結(jié)束 MOV R6,A ;存R6 INC 51H CJNE A,#0FFH,GETMET ;不為0FFH,轉(zhuǎn)取節(jié)拍碼 LJMP PAUSE ;轉(zhuǎn)休止播放 LJMP GETNOT ;取音符碼 GETMET:MOV A,52H MOV DPTR,#METRE ;取節(jié)拍碼首地址 MOVC A,A+DP
24、TR ;取節(jié)拍代碼送R7 MOV R7,A INC 52H PLAY:SETB TR1 ;啟動(dòng)計(jì)數(shù) CPL P2.4 LCALL KEY JNZ RETS MOV A,R6 MOV R3,A ;音符碼存R3 LCALL DELAY1 MOV A,R7 ;取節(jié)拍碼放A與中斷計(jì)數(shù)比較CJNE A,50H,PLAY ;斷計(jì)數(shù)器(50H)=R7否,不等繼續(xù)循環(huán)MOV 50H,#00H ;等于,則取下一代碼 LCALL DISPT LCALL DISPT LCALL DISPT LCALL DISPT CLR TR1 LJMP GETNOT RETS:SETB P2.4 ;置位蜂鳴器,否則可能產(chǎn)生嘯叫M
25、OV R1,#01H ;表明播放過(guò)一次CLR A ;清除A,防止進(jìn)入按鍵處理子程序LJMP RETR PAUSE:CLR TR1 ;休止100毫秒 MOV R2,#0DH DELAY2: MOV R3,#0FFH LCALL DELAY1 DJNZ R2,DELAY2RET ENDP:SETB P2.4 MOV R2,#0C7H ;歌曲結(jié)束,延時(shí)1秒后繼續(xù)END1M: MOV R3,#00H LCALL DELAY1 DJNZ R2,END1M DJNZ 53H,SING RET DELAY1:NOP ;R3為01H時(shí),DELAY延時(shí)為20uSDELAY3: MOV R4,#02H DELAY
26、4: DJNZ R4,DELAY4 DJNZ R3,DELAY3 RETNOTE:DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,98H,72H,7FH DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,72H,4CH,55H,00HMETRE:DB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H DB 20H,20H,20H,20H,
27、40H,20H,20H,20H,20H,20H,20H,80HDB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H DB 20H,20H,20H,20H,40H,20H,20H,20H,20H,20H,20H,40H END四、調(diào)試分析過(guò)程1、建立一個(gè)Keil51應(yīng)用程序首先新建一個(gè)工程項(xiàng)目文件zj,再為工程選擇目標(biāo)器件P80P87C52X2,如圖所示。然后把源程序文件(.asm)添加到項(xiàng)目中.2、程序文件的編譯、連接單擊工具欄Project選項(xiàng),在彈出的下拉菜單中選擇“Option For Target Target1”命令為目標(biāo)設(shè)置工具選項(xiàng),在Debug欄內(nèi)
28、選中Use Simulator選項(xiàng),單擊確定命令按鈕,此時(shí)配置為軟件仿真,在Output欄中選擇Create HEX Fi選項(xiàng),用于生成HEX文件。經(jīng)過(guò)上述設(shè)置,就可以編譯程序了。單擊工具欄Project選項(xiàng),在彈出的下拉菜單中選擇Build Target命令對(duì)源程序文件進(jìn)行編譯,若出現(xiàn)下圖所示窗口,顯示無(wú)錯(cuò)誤,繼續(xù)進(jìn)行Rebuild all target fiels, 在信息輸出窗口會(huì)輸出一些相關(guān)的信息。第五行“Creating hex file from zj”說(shuō)明已生成目標(biāo)文件zj.hex,最后一行說(shuō)明在編譯過(guò)程中不存在錯(cuò)誤和警告,編譯連接成功。若在編譯過(guò)程中出現(xiàn)錯(cuò)誤,系統(tǒng)會(huì)給出錯(cuò)誤所在
29、的行和該錯(cuò)誤提示信息,我們可以根據(jù)這些提示信息更正程序中出項(xiàng)的錯(cuò)誤,重新編譯調(diào)試程序,直至完全正確為止。3、將生成的目標(biāo)文件last.hex下載到Flash中 運(yùn)行可執(zhí)行文件“SSTFlashFlex51.exe”。打開(kāi)界面如圖2所示。點(diǎn)擊菜單“DetectChip/RS232”-“Detect Target MCUand RS232 Config”。打開(kāi)界面如圖所示。根據(jù)板載單片機(jī)型號(hào)選擇“SST98C58”或“SST89E/V58RD2”。存儲(chǔ)器模式選“Internal Memory”。點(diǎn)擊確定。設(shè)置串行口參數(shù),如圖4所示。注意串口號(hào)應(yīng)選擇與學(xué)習(xí)板連接的端口,波特率選默認(rèn)值38400。其他
30、不用改動(dòng)。按“Detect MCU”。根據(jù)彈出的對(duì)話(huà)框操作:先按下“確定”,然后按一下學(xué)習(xí)板的復(fù)位按鈕SW1。(如果MCU已經(jīng)復(fù)位,可以不用按SW1,應(yīng)視乎軟件能否檢測(cè)到MCU決定)。如果軟件檢測(cè)到MCU則界面如圖5所示(因MCU狀況不同可能有差異)。點(diǎn)擊“IAP Function”中的“Dnload/Run UserCode”,在彈出對(duì)話(huà)框中輸入要下載的程序名(hex后綴)。彈出對(duì)話(huà)框問(wèn)是否覆蓋原來(lái)代碼,點(diǎn)擊“是”,程序代碼即下載到學(xué)習(xí)板的單片機(jī)中并開(kāi)始運(yùn)行。時(shí)鐘開(kāi)始運(yùn)行(預(yù)置的是00:00,用于顯示秒的LED78開(kāi)始閃爍)。4、在線(xiàn)調(diào)試選擇菜單“Project”-“Open Project
31、”。選擇打開(kāi)項(xiàng)目文件zj.Uv2。打開(kāi)項(xiàng)目后可看到源代碼。點(diǎn)擊左邊Project Workspace窗口的目錄樹(shù)最頂端的Target 1。然后選擇菜單“Project”-“Options for Target Target 1”。打開(kāi)窗口如圖所示。點(diǎn)擊“Debug”選項(xiàng)卡。打開(kāi)如圖所示界面,選擇右邊“Use Keil Monitor-51 Driver”。選擇下面“Run to main()”復(fù)選框。然后點(diǎn)擊“Settings”按鈕。彈出對(duì)話(huà)框中選擇串口號(hào)和波特率,串口號(hào)選擇與上文使用SST下載軟件時(shí)相同(如果串口連接沒(méi)有改變的話(huà)),波特率選擇38400。完成后點(diǎn)擊“確定”。再次點(diǎn)擊“確定”退
32、出項(xiàng)目設(shè)置窗口。在主界面上方圖標(biāo)按鈕處點(diǎn)擊 按鈕。軟件即進(jìn)入仿真調(diào)試狀態(tài)。黃色光標(biāo)停留在main函數(shù)的第一語(yǔ)句處。光標(biāo)下方紅色方塊為運(yùn)行斷點(diǎn),可以自行設(shè)置(雙擊黃色光標(biāo)下方的深灰色區(qū)域即可設(shè)置或取消斷點(diǎn))。按全速執(zhí)行按鈕 執(zhí)行程序,光標(biāo)將停留在預(yù)設(shè)的斷點(diǎn)處。接著可按單步執(zhí)行按鈕執(zhí)行斷點(diǎn)處的語(yǔ)句。同理,可繼續(xù)設(shè)置斷點(diǎn)或全速執(zhí)行全部程序。可在子函數(shù)內(nèi)部設(shè)置斷點(diǎn),亦可使用 按鈕進(jìn)入某個(gè)子函數(shù)。如果接下來(lái)沒(méi)有其他斷點(diǎn)而按全速運(yùn)行按鈕,MCU將全速運(yùn)行,軟件將不能再實(shí)時(shí)觀(guān)察到MCU的狀態(tài),此時(shí)可以觀(guān)察學(xué)習(xí)板的硬件運(yùn)行情況是否和設(shè)想的一致。進(jìn)入全速運(yùn)行后要停止操作須按停止按鈕 。彈出對(duì)話(huà)框中選擇“Stop
33、 Debugging”。退出仿真調(diào)試狀態(tài)后若須重新仿真調(diào)試,請(qǐng)先復(fù)位學(xué)習(xí)板MCU(按學(xué)習(xí)板的SW1按鈕)。五、課程設(shè)計(jì)體會(huì)【實(shí)驗(yàn)中遇到的問(wèn)題及解決方案】1、首先是定時(shí)的問(wèn)題,一開(kāi)始我用的是查詢(xún)方式,但是查詢(xún)方式得不斷查詢(xún)TF0的值,很繁瑣。后來(lái)我改用了中斷方式,較簡(jiǎn)單。2、實(shí)驗(yàn)中按鍵掃描及處理部分困擾了我很久。我直接用JD51上的四個(gè)按鍵,其中三個(gè)用于調(diào)整時(shí)、分、顯示變化,它們分別接在P3.2、P3.3、P3.5口,第一個(gè)問(wèn)題是調(diào)整出現(xiàn)誤差,開(kāi)關(guān)存在抖動(dòng)現(xiàn)象,通過(guò)調(diào)用延時(shí)子程序、確認(rèn)按鍵程序消除開(kāi)關(guān)抖動(dòng)現(xiàn)象;同時(shí),由于延時(shí)太長(zhǎng),導(dǎo)致顯示出現(xiàn)閃爍或滅掉,最后解決的方法是在延時(shí)程序內(nèi)部也加入調(diào)用顯示程序
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年【就業(yè)】上海市第一社會(huì)福利院招聘養(yǎng)老護(hù)理員備考題庫(kù)及參考答案詳解1套
- 2026年九江市專(zhuān)業(yè)森林消防支隊(duì)(九江市綜合應(yīng)急救援支隊(duì))招聘10人備考題庫(kù)完整答案詳解
- 2026年中鐵工程設(shè)計(jì)咨詢(xún)集團(tuán)有限公司社會(huì)招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 2026年中交海峰風(fēng)電發(fā)展股份有限公司招聘?jìng)淇碱}庫(kù)帶答案詳解
- 2026年中國(guó)特種飛行器研究所招聘?jìng)淇碱}庫(kù)及一套完整答案詳解
- 2026年平果市協(xié)力初級(jí)中學(xué)教師招聘?jìng)淇碱}庫(kù)及參考答案詳解
- 2026年關(guān)于龍江縣第一人民醫(yī)院公開(kāi)招聘編外醫(yī)生的備考題庫(kù)及參考答案詳解
- 2026年南海區(qū)大瀝鎮(zhèn)漖表小學(xué)臨聘教師招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 2026年賓陽(yáng)縣祥盛人力資源管理有限公司招聘?jìng)淇碱}庫(kù)及參考答案詳解一套
- 2026年中電建生態(tài)環(huán)境集團(tuán)有限公司招聘?jìng)淇碱}庫(kù)含答案詳解
- 11116《機(jī)電控制工程基礎(chǔ)》國(guó)家開(kāi)放大學(xué)期末考試題庫(kù)
- 2025年機(jī)關(guān)工會(huì)工作總結(jié)及2025年工作計(jì)劃
- 2026年扎蘭屯職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案詳解
- 2025年昆明市呈貢區(qū)城市投資集團(tuán)有限公司及下屬子公司第二批招聘(11人)備考考試題庫(kù)及答案解析
- 廣西貴百河2025-2026學(xué)年高一上學(xué)期12月聯(lián)考化學(xué)試題
- 2025年初級(jí)海外優(yōu)化師面試題庫(kù)及答案
- 2025年黃河農(nóng)村商業(yè)銀行科技人員社會(huì)招聘參考筆試題庫(kù)及答案解析
- 高中作文“德才育人方為良器”主題作文導(dǎo)寫(xiě)
- 北京市公安局輔警崗位招聘300人考試歷年真題匯編帶答案解析
- 2025中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-無(wú)創(chuàng)正壓通氣護(hù)理技術(shù)
- 國(guó)開(kāi)2025年《應(yīng)用寫(xiě)作》形考任務(wù)1-4參考答案
評(píng)論
0/150
提交評(píng)論