版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 單片微機(jī)應(yīng)用課程設(shè)計(jì)說(shuō)明書(shū)</p><p> 設(shè)計(jì)題目 89C51單片機(jī)擴(kuò)展8155顯示電子鐘 </p><p><b> 目錄</b></p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p> 設(shè)計(jì)方
2、案的擬定及說(shuō)明</p><p><b> 硬件電路設(shè)計(jì)</b></p><p><b> 電子元件的選擇</b></p><p><b> 元件參數(shù)計(jì)算確定</b></p><p><b> 電路原理圖設(shè)計(jì)</b></p><p
3、><b> 控制軟件流程圖</b></p><p><b> 控制軟件源程序</b></p><p><b> 控制軟件說(shuō)明書(shū)</b></p><p><b> 設(shè)計(jì)小結(jié)</b></p><p><b> 參考資料目錄</b
4、></p><p><b> 二、課程設(shè)計(jì)任務(wù)書(shū)</b></p><p><b> 課程設(shè)計(jì)的目的</b></p><p> 單片微機(jī)應(yīng)用課程設(shè)計(jì)是單片微機(jī)課程的綜合性與實(shí)踐性教學(xué)環(huán)節(jié),課程設(shè)計(jì)的目的就是:(1)綜合運(yùn)用單片微機(jī)原理課程和單片機(jī)接口技術(shù)課程的知識(shí),分析和解決實(shí)際應(yīng)用中的問(wèn)題進(jìn)一步鞏固、加深和拓寬
5、所學(xué)的知識(shí)。</p><p> ?。?)通過(guò)設(shè)計(jì)實(shí)踐,逐步樹(shù)立正確的設(shè)計(jì)思想,熟悉掌握單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的一般規(guī)律,培養(yǎng)分析問(wèn)題和解決問(wèn)題的能力。</p><p> ?。?)通過(guò)邏輯分析、方案設(shè)計(jì)、硬件電路連接、畫(huà)程序流程圖,匯編語(yǔ)言編程,上機(jī)調(diào)試,進(jìn)行全面的單片微機(jī)應(yīng)用基本技能的訓(xùn)練。</p><p><b> 2、課程設(shè)計(jì)的內(nèi)容</b>&
6、lt;/p><p> 課程設(shè)計(jì)的題目一般是在實(shí)驗(yàn)電路板上設(shè)計(jì)制作電子鐘或控制簡(jiǎn)易二坐標(biāo)數(shù)控實(shí)驗(yàn)臺(tái)。</p><p> 課程設(shè)計(jì)的內(nèi)容包括:裝置的方案設(shè)計(jì),電路原理圖設(shè)計(jì),實(shí)際電路的連接,畫(huà)軟件流程圖,編寫(xiě)程序,調(diào)試運(yùn)行,編寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū)。</p><p> 課程設(shè)計(jì)中要求完成以下工作:</p><p> ?。?)一張完整的電路原理圖,包括
7、電路上有關(guān)元件的參數(shù)設(shè)計(jì);</p><p> ?。?)整個(gè)控制軟件流程圖;</p><p> (3)設(shè)計(jì)計(jì)算和操作控制課程設(shè)計(jì)說(shuō)明書(shū)。</p><p><b> 3、課程設(shè)計(jì)的步驟</b></p><p> (1)課程設(shè)計(jì)的一般進(jìn)程和步驟見(jiàn)下表:</p><p> ?。?)片內(nèi)RAM單元分配
8、</p><p> 控制程序中需要使用一些數(shù)據(jù)存儲(chǔ)器單元存放有用的數(shù)據(jù),根據(jù)控制程序中要使用的存儲(chǔ)器單元數(shù)量,需將單片機(jī)中片內(nèi)RAM單元進(jìn)行分配,重新定義堆棧指針的值,避免堆棧區(qū)和程序用的數(shù)據(jù)存儲(chǔ)區(qū)之間沖突。</p><p> 在控制軟件中需要使用的數(shù)據(jù)存儲(chǔ)單元有:</p><p> 二、設(shè)計(jì)方案的擬定及說(shuō)明</p><p> 1.方
9、案的擬定及說(shuō)明</p><p><b> 程序初始化功能為:</b></p><p> 顯示緩沖區(qū)單元、標(biāo)志單元清零,時(shí)、分、秒單元和計(jì)數(shù)延時(shí)單元置初值,定時(shí)器初始化,確定定時(shí)時(shí)間常數(shù),開(kāi)中斷,如果用8255,則對(duì)8255處始化等。</p><p> 時(shí)、分、秒顯示功能為:</p><p> 顯示程序,將顯示緩沖
10、區(qū)中的內(nèi)容送數(shù)碼管進(jìn)行顯示。</p><p> 時(shí)、分、秒計(jì)時(shí)單元內(nèi)容送顯示緩沖區(qū)功能為:</p><p> 將時(shí)、分、秒三個(gè)計(jì)時(shí)單元的內(nèi)容分別拆開(kāi)后送六個(gè)顯示緩沖區(qū)單元。</p><p> 閃爍指示當(dāng)前正在調(diào)整的單元功能:</p><p> 在時(shí)間調(diào)整狀態(tài)下有效。0.5秒閃爍標(biāo)志以0.5秒的間隔在“0”和“1”之間變化,當(dāng)0.5秒閃
11、爍標(biāo)志為“1”時(shí),由時(shí)鐘調(diào)整時(shí)狀態(tài)指針指示的顯示單元置成顯示“空”碼,當(dāng)0.5秒閃爍標(biāo)志為“0”時(shí),保持原顯示單元的內(nèi)容,這樣在顯示程序的控制下,數(shù)碼管會(huì)在閃爍顯示。</p><p> 鍵盤(pán)掃描處理功能為:</p><p> 沒(méi)有按鍵按下就退出,有按鍵按下,進(jìn)行鍵盤(pán)處理:如時(shí)鐘調(diào)整狀態(tài)鍵按下時(shí)的處理和時(shí)鐘調(diào)整鍵按下時(shí)的處理。</p><p><b>
12、 中斷程序功能為:</b></p><p> 定時(shí)時(shí)間到,時(shí)、分、秒單元分別計(jì)數(shù)(時(shí)間到1秒,秒單元計(jì)數(shù),當(dāng)秒單元計(jì)數(shù)值到60秒后,分單元計(jì)數(shù)同時(shí)秒單元清0,當(dāng)分單元。計(jì)數(shù)值到60分后,時(shí)單元計(jì)數(shù)同時(shí)分單元清0)。</p><p><b> 硬件電路設(shè)計(jì)</b></p><p><b> 1.電子元件的選擇</
13、b></p><p> AT89C51、8155</p><p><b> 元件參數(shù)的計(jì)算確定</b></p><p> 8155口地址的分配</p><p> 根據(jù)題目要求:PB口地址為F702H,則8155片選信號(hào)線應(yīng)接單片機(jī)P2.3口,IO/M口可接P2.4口,由此分配8155命令狀態(tài)字口地址為F70
14、0H,8155 PB口口地址為EF02H。</p><p> 定時(shí)器定時(shí)中斷初始化計(jì)算</p><p> 時(shí)鐘要實(shí)現(xiàn)1S計(jì)時(shí),則可將定時(shí)器設(shè)定定時(shí)時(shí)間為50ms,20次中斷后即可實(shí)現(xiàn)一秒定時(shí)。選擇定時(shí)器T0,工作方式為方式一(16位定時(shí)器),則定時(shí)初值為X=216-(50*1000)=15526=3CB0H,則定時(shí)器TH0送初值為03C,TL0送初值為B0H.</p>&
15、lt;p><b> 3.電路原理圖</b></p><p><b> 單片機(jī)的功能模塊</b></p><p> MCS-51的晶振電路圖</p><p> AT89C51與8155的接口連接</p><p> 鍵盤(pán)與AT89C51的連接電路圖</p><p>
16、;<b> 控制軟件流程圖</b></p><p><b> 1.顯示程序流程圖</b></p><p><b> 中斷程序流程圖</b></p><p><b> 定時(shí)中斷</b></p><p><b> 定時(shí)器設(shè)初值</b&
17、gt;</p><p><b> 是否有鍵按下</b></p><p> 秒單元計(jì)數(shù)+1 秒單元清0,分單元進(jìn)1</p><p> 是否大于60 Y</p><p><b> 是否有鍵按下</b></p><p> 分單元計(jì)數(shù)+
18、1 分單元清0,時(shí)單元進(jìn)1</p><p> 是否大于60 Y</p><p><b> 是否有鍵按下</b></p><p> 時(shí)單元計(jì)數(shù)+1 時(shí)單元清0</p><p><b> Y</b></p>
19、<p> 是否大于24 </p><p><b> RETI</b></p><p><b> 控制軟件源程序</b></p><p><b> 源程序清單:</b></p><p> ORG 0000H ;程序開(kāi)始</p>
20、<p> LJMP MAIN ;</p><p> ORG 000BH ;定時(shí)器中斷地址設(shè)置</p><p> LJMP STOP_SRV ;</p><p><b> ORG 001BH</b></p><p> LJMP INTT1</p><p>
21、;<b> MAIN:</b></p><p> ;----------------------------初始化程序------</p><p> DISM0 EQU 30H</p><p> DISM1 EQU 31H</p><p> DISM2 EQU 32H</p><p>
22、 DISM3 EQU 33H</p><p> DISM4 EQU 34H</p><p> DISM5 EQU 35H ;顯示緩存區(qū)</p><p> HH EQU 36H ;時(shí)</p><p> MM EQU 37H ;分</p><p> SS EQU 38H ;秒</p>
23、<p> HSEC EQU 39H ;0.5秒計(jì)數(shù)延時(shí)閃爍</p><p> SEC EQU 40H ;1秒計(jì)數(shù)延時(shí)</p><p> STATUS EQU 42H</p><p> FLAG EQU 20H;</p><p> K1 EQU P1.0 ;按鍵1</p><p>
24、 K2 EQU P1.1 ;按鍵2</p><p> ACALL INIT ;初始變化量</p><p> ACALL INIT_T0;設(shè)置定時(shí)器</p><p><b> ;無(wú)窮循環(huán)</b></p><p> LOOP: </p><p> ACALL SHOW&l
25、t;/p><p> ACALL DIR </p><p> ACALL KEYSCAN</p><p><b> JMP LOOP;</b></p><p> ;-----------------------------</p><p> INIT_T0: ;使用定時(shí)器T0模式1計(jì)時(shí)&
26、lt;/p><p> MOV TMOD,#11H;定時(shí)器T0,工作模式1</p><p> MOV TH0,#3CH ;定時(shí)50MS</p><p> MOV TL0,#0B0H</p><p> MOV TH1,#3CH ;定時(shí)50MS</p><p> MOV TL1,#0B0H</p>
27、<p> SETB EA;總中斷開(kāi)放</p><p> SETB ET0;允許T0中斷</p><p> SETB TR0 ;T0開(kāi)始計(jì)時(shí)</p><p><b> RET</b></p><p> STOP_SRV: ;中斷服務(wù)程序</p><p> PUSH
28、ACC;累加器入棧保護(hù)</p><p> PUSH PSW;狀態(tài)字入棧保護(hù)</p><p> MOV TH0,#3CH</p><p> MOV TL0,#0B0H</p><p> INC SEC;1秒計(jì)數(shù)器加一</p><p> MOV A,SEC;</p><p> CJNE
29、A,#14H,NEXT;</p><p> INC SS;秒計(jì)數(shù)器加一</p><p> MOV SEC,#0;1秒計(jì)數(shù)器清零</p><p><b> MOV A,SS</b></p><p> CJNE A,#60,NEXT;</p><p> INC MM;分計(jì)數(shù)器加一</p
30、><p> MOV SS,#0;SS清零</p><p><b> MOV A,MM;</b></p><p> CJNE A,#60,NEXT;</p><p> INC HH;小時(shí)計(jì)數(shù)器加一</p><p> MOV MM,#0;MM清零</p><p><
31、b> MOV A,HH;</b></p><p> CJNE A,#24,NEXT;</p><p><b> MOV SS,#0</b></p><p><b> MOV MM,#0</b></p><p><b> MOV HH,#0</b>&l
32、t;/p><p><b> NEXT:</b></p><p> POP PSW ;恢復(fù)狀態(tài)字(出棧)</p><p> POP ACC ;恢復(fù)累加器</p><p> RETI;---------------------------------------</p><p><b>
33、 SHOW: ;</b></p><p><b> ;轉(zhuǎn)換秒顯示數(shù)據(jù)</b></p><p><b> MOV A,SS</b></p><p><b> MOV B,#10</b></p><p><b> DIV AB</b>&
34、lt;/p><p> MOV DISM1,A</p><p><b> MOV A,B</b></p><p> MOV DISM0,A</p><p><b> ;轉(zhuǎn)換分?jǐn)?shù)據(jù)</b></p><p><b> MOV A,MM</b></p
35、><p><b> MOV B,#10</b></p><p><b> DIV AB</b></p><p> MOV DISM3,A</p><p><b> MOV A,B</b></p><p> MOV DISM2,A</p>
36、<p><b> ;轉(zhuǎn)換小時(shí)數(shù)據(jù)</b></p><p><b> MOV A,HH</b></p><p><b> MOV B,#10</b></p><p><b> DIV AB</b></p><p> MOV DISM5
37、,A</p><p><b> MOV A,B</b></p><p> MOV DISM4,A</p><p><b> RET</b></p><p><b> DIR:</b></p><p> MOV A,STATUS</p>
38、;<p><b> JNZ DIR00</b></p><p><b> DIP:</b></p><p> MOV A,#03H;</p><p> MOV DPTR,#0F700H</p><p> MOVX @DPTR,A</p><p> M
39、OV R0,#30H</p><p> MOV R5,#0FEH</p><p><b> MOV R4,#6</b></p><p><b> DIR0:</b></p><p><b> MOV A,@R0</b></p><p> MOV
40、 DPTR,#TAB</p><p> MOVC A,@A+DPTR</p><p> MOV DPTR,#0F701H</p><p> MOVX @DPTR,A</p><p><b> MOV A,R5</b></p><p> MOV DPTR,#0F702H</p>
41、<p> MOVX @DPTR,A</p><p><b> RL A</b></p><p><b> MOV R5,A</b></p><p> LCALL DL1MS</p><p><b> INC R0</b></p><p
42、> DJNZ R4,DIR0</p><p><b> DIROUT:</b></p><p><b> RET</b></p><p><b> DIR00:</b></p><p> JB 03H,DIKK</p><p><b
43、> AJMP DIP</b></p><p><b> DIKK:</b></p><p> JNB 00H,DIKKI</p><p> MOV A,#03H </p><p> MOV DPTR,#0F700H</p><p> MOVX @DPTR,A<
44、;/p><p> MOV R0,#30H</p><p> MOV R5,#0FEH</p><p><b> MOV R4,#2</b></p><p><b> DIRR0:</b></p><p> MOV A,#00H</p><p>
45、 MOV DPTR,#0F701H</p><p> MOVX @DPTR,A</p><p><b> MOV A,R5</b></p><p> MOV DPTR,#0F702H</p><p> MOVX @DPTR,A</p><p><b> RL A</b&g
46、t;</p><p><b> MOV R5,A</b></p><p><b> INC R0</b></p><p> DJNZ R4,DIRR0</p><p> MOV R0,#32H</p><p> MOV R5,#0FBH</p><
47、;p><b> MOV R4,#4</b></p><p><b> DIRR1:</b></p><p><b> MOV A,@R0</b></p><p> MOV DPTR,#TAB</p><p> MOVC A,@A+DPTR</p>
48、<p> MOV DPTR,#0F701H</p><p> MOVX @DPTR,A</p><p><b> MOV A,R5</b></p><p> MOV DPTR,#0F702H</p><p> MOVX @DPTR,A</p><p><b> RL
49、 A</b></p><p><b> MOV R5,A</b></p><p> LCALL DL1MS</p><p><b> INC R0</b></p><p> DJNZ R4,DIRR1</p><p> AJMP DIROUT
50、 </p><p><b> DIKKI:</b></p><p> AJMP DIP </p><p><b> DL1MS:</b></p><p> MOV R7,#6;</p><p> DEL1:MOV R6,#250;</p>
51、<p><b> DJNZ R6,$</b></p><p> DJNZ R7,DEL1;</p><p><b> RET</b></p><p> TAB: DB 3FH,06H,5BH,4FH,66H,6DH</p><p> DB 7DH,07H,7FH,6FH,77
52、H,7CH</p><p> DB 39H,5EH,7BH,71H,00H,40H </p><p> ;---------------其他子程序---------------</p><p><b> ;計(jì)時(shí)單元清零</b></p><p><b> INIT:</b></p>
53、<p> MOV HH,#23</p><p> MOV MM,#59</p><p> MOV SS,#40</p><p> MOV SEC,#00H</p><p> MOV FLAG,#00H</p><p> MOV STATUS,#00H</p><p>
54、 MOV HSEC,#00H</p><p><b> RET</b></p><p> ;;--------------------------實(shí)現(xiàn)調(diào)整時(shí)間子程序----------------</p><p> ;按鍵處理程序(設(shè)置時(shí)間)</p><p><b> KEYSCAN:</b>
55、;</p><p> JNB K1,KEYSCAN0</p><p> JNB K2,KEYSCAN1</p><p><b> KEYOUT:</b></p><p> ACALL TIAOSHI1</p><p><b> RET</b></p>
56、<p><b> KEYSCAN0:</b></p><p> LCALL DL20MS</p><p> JB K1,KEYOUT;</p><p><b> WAIT0:</b></p><p> ACALL SHOW</p><p><b>
57、; ACALL DIR</b></p><p> JNB K1,WAIT0</p><p> INC STATUS</p><p> MOV A,STATUS</p><p><b> CLR ET0</b></p><p><b> CLR TR0</b&
58、gt;</p><p> SETB ET1 ;允許T1中斷</p><p> SETB TR1 ;開(kāi)啟定時(shí)器T1</p><p> CJNE A,#04H,KEYOUT</p><p> MOV STATUS,#00</p><p><b> SETB ET
59、0</b></p><p><b> SETB TR0</b></p><p><b> CLR ET1</b></p><p><b> CLR TR1</b></p><p><b> CLR 00H</b></p>
60、<p><b> CLR 01H</b></p><p><b> CLR 02H</b></p><p><b> CLR 03H</b></p><p> SJMP KEYOUT</p><p> KEYSCAN1: </p><p&
61、gt; LCALL DL20MS</p><p> JB K2,KEYOUT</p><p><b> WAIT1:</b></p><p> ACALL SHOW</p><p><b> ACALL DIR</b></p><p> JNB K2,WAIT1&
62、lt;/p><p> MOV A,STATUS</p><p><b> JZ KEYOUT</b></p><p> CJNE A,#01H,KSCAN11</p><p><b> INC SS</b></p><p><b> MOV A,SS</
63、b></p><p> CJNE A,#3CH,KEYOUT</p><p> MOV SS,#00</p><p> SJMP KEYOUT</p><p><b> KSCAN11:</b></p><p> CJNE A,#02H,KSCAN21</p><
64、;p><b> INC MM </b></p><p><b> MOV A,MM</b></p><p> CJNE A,#3CH,KEYOUT</p><p> MOV MM,#00</p><p> SJMP KEYOUT</p><p><b&g
65、t; KSCAN21:</b></p><p><b> INC HH</b></p><p><b> MOV A,HH</b></p><p> CJNE A,#18H,KEYOUT</p><p> MOV HH,#00</p><p> SJM
66、P KEYOUT</p><p><b> TIAOSHI1:</b></p><p> MOV A,STATUS</p><p> CJNE A,#01H,TIAOSHI2</p><p> SETB FLAG.0</p><p> LJMP INTT1</p><
67、p><b> JMP RT00</b></p><p><b> TIAOSHI2:</b></p><p> CJNE A,#02H,TIAOSHI3</p><p> SETB FLAG.1</p><p> CLR FLAG.0</p><p> LJ
68、MP INTT1</p><p><b> JMP RT00</b></p><p><b> TIAOSHI3:</b></p><p> CJNE A,#02H,TIAOSHI4</p><p> SETB FLAG.2</p><p> CLR FLAG.1&
69、lt;/p><p> LJMP INTT1</p><p><b> JMP RT00</b></p><p><b> TIAOSHI4:</b></p><p> CJNE A,#03H,TIAOSHI</p><p><b> SETB 02H</
70、b></p><p><b> CLR 01H</b></p><p> LJMP INTT1</p><p><b> JMP RT00</b></p><p><b> TIAOSHI:</b></p><p><b> C
71、LR 00H</b></p><p><b> CLR 01H</b></p><p><b> CLR 02H</b></p><p><b> CLR 03H</b></p><p><b> RT00:</b></p>
72、<p><b> RET</b></p><p><b> ;防抖動(dòng)延時(shí)</b></p><p><b> DL20MS:</b></p><p> ACALL SHOW</p><p><b> ACALL DIR</b><
73、/p><p> ACALL SHOW</p><p><b> ACALL DIR</b></p><p> ACALL SHOW</p><p><b> ACALL DIR</b></p><p><b> RET</b></p>
74、<p> ;***********閃動(dòng)調(diào)時(shí) 程 序***********</p><p> ;T1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示,定時(shí)50ms</p><p> INTT1: </p><p> MOV TL1, #0B0H ;裝定時(shí)器T1定時(shí)初值</p><p> M
75、OV TH1, #3CH </p><p><b> DEC HSEC</b></p><p> MOV A,HSEC</p><p> JNZ INTT1OUT</p><p><b> CPL 03H </b></p><p> MOV
76、 HSEC,#0AH</p><p><b> INTT1OUT:</b></p><p><b> RETI</b></p><p><b> END</b></p><p><b> 控制軟件操作</b></p><p>
77、; 1、從菜單中選擇 Project 的下拉菜單中 New Project ,新建工程項(xiàng)目,見(jiàn)圖1</p><p><b> 圖1</b></p><p> 2、確定后出現(xiàn)的對(duì)話(huà)框,輸入新建工程的名字,如example,見(jiàn)圖2</p><p> (請(qǐng)每個(gè)同學(xué)在D盤(pán)上建立自己的文件夾,將建立的項(xiàng)目保持在自己的文件夾內(nèi))</
78、p><p><b> 圖2</b></p><p> 3、在彈出的對(duì)話(huà)框中選擇CPU 廠商,選中 Atmel 公司,雙擊鼠標(biāo)確認(rèn),見(jiàn)圖3</p><p><b> 圖3</b></p><p> 4、雙擊后在彈出的對(duì)話(huà)框中選擇CPU類(lèi)型,選中AT89C51后確認(rèn),見(jiàn)圖4</p>
79、<p><b> 圖4</b></p><p> 5、選擇否(N),不添加</p><p> ?。ㄈ⒃O(shè)置工程文件參數(shù)</p><p> 在菜單欄中選擇 Project 項(xiàng)的下拉菜單 Options for Target ‘Target1’ 項(xiàng),或單擊工具欄中</p><p><b> 圖
80、6</b></p><p> 2、在出現(xiàn)的對(duì)話(huà)選項(xiàng)卡中選擇 Target 項(xiàng),在中輸入單片機(jī)工作的頻率</p><p><b> 圖7</b></p><p> 3、在選項(xiàng)卡中選擇 Debug 調(diào)試項(xiàng),見(jiàn)圖8</p><p><b> 圖8</b></p><
81、p><b> (1) </b></p><p><b> 圖8</b></p><p> 選中此項(xiàng)keil為純軟件仿真,不需要連接仿真器就可以仿真,軟件實(shí)驗(yàn)就可以選擇這一項(xiàng)(實(shí)驗(yàn)一、實(shí)驗(yàn)二為純軟件仿真)</p><p><b> (2) </b></p><p&
82、gt;<b> 圖9 </b></p><p> 選中此項(xiàng)keil為帶有Monitor-51目標(biāo)仿真器的仿真,必須要有硬件keil-c51仿真器的支持,否則不能仿真,在我們做硬件實(shí)驗(yàn)時(shí)選擇這一項(xiàng)</p><p> ?。▽?shí)驗(yàn)三、實(shí)驗(yàn)四為硬件仿真,此項(xiàng))</p><p> ?。?)單擊 圖9 后面的 設(shè)置,出現(xiàn)圖10對(duì)話(huà)框,設(shè)置Port
83、串口:一般為COM1,Baudrate 波特率:38400bit/s, 最后 確認(rèn)</p><p><b> 圖10</b></p><p> (4)在選項(xiàng)卡中按確定</p><p> ?。?)設(shè)置完成,就可以添加事先編好的 *.asm 文件程序編譯運(yùn)行</p><p> (四)、編寫(xiě)新程序事例</p&
84、gt;<p> 圖11 圖12</p><p> 1、在菜單欄File (文件)選項(xiàng)的下拉菜單中選擇 New… (新建文件),見(jiàn) 圖11 ,選擇后出現(xiàn) 圖12 文本編輯框,輸入?yún)R編程序</p><p><b> 圖13</b></p><p> 2、
85、在輸入程序標(biāo)點(diǎn)符號(hào)時(shí)注意,應(yīng)在沒(méi)有中文輸入法狀態(tài),如圖13</p><p><b> 輸入程序:</b></p><p><b> ORG 0000H</b></p><p> AJMP MAIN</p><p> ORG 0030H</p><p> M
86、AIN: MOV R0,#20H;(R0)= </p><p> MOV R2,#0FH ;(R2)= </p><p> MOV A,#00H</p><p> A1: MOV @R0,A; <
87、;/p><p> INC R0; (R0)= </p><p> INC A;(A)= </p><p> DJNZ R2,A1</p><p> MOV R0,#20H</p><p> MOV DPTR,#7
88、000H</p><p> MOV R2,#0FH</p><p> A2: MOV A,@R0</p><p> MOVX @DPTR,A</p><p><b> INC R0</b></p><p> INC DPTR</p>&l
89、t;p> DJNZ R2,A2</p><p> MOV R0,#0A0H</p><p> MOV DPTR,#7000H</p><p> MOV R2,#0FH</p><p> A3: MOVX A,@DPTR</p><p> MOVX @R0,A<
90、;/p><p><b> INC R0</b></p><p> INC DPTR</p><p> DJNZ R2,A3</p><p> DO: LJMP DO</p><p><b> END</b></p><p&
91、gt;<b> 3、保存文件</b></p><p><b> 圖14</b></p><p> 4保存文件以文件擴(kuò)展名*.ASM保存,如圖15</p><p> ?。ㄕ?qǐng)每個(gè)同學(xué)把程序保存在自己的文件夾)</p><p><b> 圖15</b></p>
92、<p> 5、運(yùn)行程序,要把文件程序添加到工程里去執(zhí)行,操作如圖16</p><p><b> 圖16</b></p><p> 6、添加程序?qū)υ?huà)框操作圖17所示(如果已編好程序存在自己的U盤(pán)中,可以先復(fù)制到D盤(pán)上,直接添加即可)</p><p><b> 圖17</b></p><p
93、> 7、添加好程序,在庫(kù)里把文件打開(kāi),操作見(jiàn)圖18</p><p><b> 圖18</b></p><p> 8、編譯程序,也可以在工具欄中點(diǎn)擊Project ,操做如圖19后圖20</p><p><b> 圖19</b></p><p><b> 圖20</b&
94、gt;</p><p> 在編譯過(guò)程中,如果有錯(cuò)可以在信息窗口中顯示出來(lái),雙擊錯(cuò)誤信息,可以在源程序中定位所在行。糾錯(cuò)后,再次編譯直到?jīng)]有錯(cuò)誤。</p><p><b> 五)、調(diào)試程序</b></p><p> 編譯好以后,要切換編程和調(diào)試模式,操作見(jiàn)圖21,或點(diǎn)擊工具欄上的</p><p><b>
95、 圖21</b></p><p><b> 1、單步調(diào)試</b></p><p> 跟蹤就,若有子程序調(diào)用,也會(huì)跟蹤到子程序中去。</p><p> 單步調(diào)試程序,一條指令一條指令地執(zhí)行程序可以全速執(zhí)行子程序(把子程序作為一步執(zhí)行完),而不會(huì)跟蹤到子程序中。</p><p> 在單步調(diào)試中,可以查看內(nèi)
96、存地址及外部地址單元內(nèi)容</p><p> 1)、點(diǎn)擊菜單欄選擇View (瀏覽) 的下拉菜單 Memory Windows (存儲(chǔ)器窗口)</p><p><b> 圖26</b></p><p> 2、在Keil軟件的右下方出現(xiàn)的對(duì)話(huà)框,如圖27所示</p><p><b> 圖27</b&g
97、t;</p><p> 3、在對(duì)話(huà)框中輸入你查看的地址單元,如圖27、圖28所示,例如要查看30H 內(nèi)存地址單元的內(nèi)容,就輸入D:30H 按ENTER(回車(chē)鍵),在底下就顯示30H 的內(nèi)容(第一個(gè)為30H,后面一個(gè)為31H,一個(gè)個(gè)按順序排);如果要查看外部數(shù)據(jù)存儲(chǔ)器的8000H 的內(nèi)容就輸入X:8000H 地址后按回車(chē),如圖29所示</p><p><b> 圖28</
98、b></p><p><b> 圖29</b></p><p> 單步執(zhí)行下程序,至 DJNZ R2,A1行。觀察并記錄指令運(yùn)行結(jié)果</p><p> 2、利用“執(zhí)行到光標(biāo)處”功能進(jìn)行調(diào)試</p><p> 將光標(biāo)移到想要暫停的地方,MOV R0,#20H所在行,選擇 “執(zhí)行到光標(biāo)處”功能,程序
99、快速執(zhí)行到光標(biāo)所在行。</p><p> 觀察運(yùn)行情況,并記錄,此時(shí)</p><p> 3、利用斷點(diǎn)進(jìn)行調(diào)試</p><p> 設(shè)置斷點(diǎn):將鼠標(biāo)移到源程序窗口相應(yīng)程序行,雙擊左鍵設(shè)置斷點(diǎn),或擊右鍵選“設(shè)置/取消斷點(diǎn)”功能設(shè)置斷點(diǎn)。斷點(diǎn)設(shè)置好后,此行出現(xiàn)紅色方形標(biāo)記。用全速執(zhí)行的功能,當(dāng)程序執(zhí)行到斷點(diǎn)時(shí),會(huì)暫停下來(lái),可以觀察程序中各變量的值,判斷程序是否正確。&
100、lt;/p><p> 取消斷點(diǎn):將鼠標(biāo)移到源程序窗口相應(yīng)斷點(diǎn)程序行,雙擊左鍵取消斷點(diǎn)?;驌粲益I選“設(shè)置/取消斷點(diǎn)”功能取消斷點(diǎn)。斷點(diǎn)取消后,此行的紅色方形標(biāo)記消失。</p><p> 注意:設(shè)置的斷點(diǎn)如果不取消,會(huì)一直存在。</p><p> 在MOV R0,#0A0H行設(shè)置斷點(diǎn),全速執(zhí)行,暫停后觀察并記錄以下單元內(nèi)容</p><p>
101、;<b> 4、運(yùn)行,見(jiàn)圖22</b></p><p><b> 圖22</b></p><p> 11、軟件仿真時(shí)要停止程序可以點(diǎn)擊工具欄上的快捷鍵Halt(停止)</p><p> 硬件仿真時(shí)停止程序不要點(diǎn)擊工具欄上的快捷鍵Halt(停止),見(jiàn)圖23。停止程序要按仿真器上的復(fù)位按鈕,見(jiàn)仿真器示意圖24</
102、p><p><b> 圖23</b></p><p><b> 圖24</b></p><p> 停止程序以后,要進(jìn)行模式切換,見(jiàn)圖21,這時(shí)就可以對(duì)程序進(jìn)行修改,編譯運(yùn)行。如果要想運(yùn)行其他程序,就要把原來(lái)的程序從工程庫(kù)里移除,見(jiàn)圖25,然后再添加</p><p><b> 圖2<
103、;/b></p><p> 綜合運(yùn)用各種調(diào)試方法對(duì)源程序進(jìn)行調(diào)試。</p><p><b> 七、設(shè)計(jì)小結(jié)</b></p><p> 本來(lái)兩周的單片機(jī)課程設(shè)計(jì)實(shí)習(xí),因?yàn)橛卸嚅T(mén)考試壓縮為一周。這個(gè)學(xué)期由于大部分時(shí)間都在忙著考研,所以也沒(méi)有怎么看《單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用》這本書(shū),雖然選了《單片機(jī)原理與接口》這門(mén)課程,但學(xué)這門(mén)課程的過(guò)
104、程中,心里想著考研,雖每節(jié)課都去聽(tīng)了,卻沒(méi)有花許多時(shí)間去思考這門(mén)課程,很多關(guān)于單片機(jī)接口的知識(shí)都不甚理解。</p><p> 考完研的第一天,我們開(kāi)始了課程設(shè)計(jì)的動(dòng)員會(huì),指導(dǎo)老師薛老師給我們每個(gè)人都分配了任務(wù)。我的任務(wù)是用一片8155的 PA口(段控)和PB口(位控)作輸出口控制六個(gè)數(shù)碼管顯示(二個(gè)數(shù)碼管顯示“時(shí)”、二個(gè)數(shù)碼管顯示“分”、二個(gè)數(shù)碼管顯示“秒”), 用89C51的P1口作輸入口控制按鍵輸入,做一臺(tái)
105、電子鐘。要求:8155的PB口地址:F702H。當(dāng)時(shí)也沒(méi)多在意,因?yàn)檫@一周我有四門(mén)考試,必須先過(guò)了這四關(guān)。周六考試結(jié)束后,就開(kāi)始思考,仔細(xì)閱讀了課程設(shè)計(jì)說(shuō)明書(shū),才發(fā)現(xiàn)這次課程設(shè)計(jì)的任務(wù)不輕,主要是自己的匯編語(yǔ)言差不多忘完了,必須重新把教科書(shū)看一片,對(duì)程序和單片機(jī)要有足夠的理解,才能完成用單片機(jī)實(shí)現(xiàn)電子鐘的任務(wù)。</p><p> 于是,我花了兩天時(shí)間看了一下教科書(shū)上重要的知識(shí),并且請(qǐng)教了那些比較熟練單片機(jī)的同學(xué)
106、,也在網(wǎng)上和讀書(shū)館搜集有關(guān)的資料。之后開(kāi)始了按照設(shè)計(jì)指導(dǎo)書(shū)的流程開(kāi)始編寫(xiě)自己的電子鐘程序。這幾天真的特辛苦,每天早上九點(diǎn)之前到實(shí)驗(yàn)室,晚上十點(diǎn)才離開(kāi)實(shí)驗(yàn)室,功夫不負(fù)有心人,我的想法也初步得到實(shí)現(xiàn),雖然還有一些沒(méi)達(dá)到自己的目的,比如說(shuō)我本想在時(shí)鐘調(diào)整狀態(tài)下,正在調(diào)整的“時(shí)”或“分”或“秒”要進(jìn)行閃爍顯示指示。</p><p> 但最后卻只能在秒表調(diào)時(shí)是閃爍。雖然花了一天的時(shí)間修改程序,并調(diào)試,并在實(shí)驗(yàn)室里呆了一天
107、,當(dāng)最后還是沒(méi)能實(shí)現(xiàn)理想的功能。</p><p> 我設(shè)計(jì)的電子鐘能實(shí)現(xiàn)調(diào)試“時(shí)”、“分”、“秒”的功能,顯示的也比較清晰,用兩個(gè)鍵盤(pán)實(shí)現(xiàn)調(diào)時(shí),如果還有時(shí)間我相信自己能實(shí)現(xiàn)自己所想的功能。當(dāng)然這次試驗(yàn)讓我學(xué)會(huì)了很多知識(shí),任何只是都需要運(yùn)用到實(shí)踐才能成為真正的知識(shí),也只有實(shí)踐才能讓我學(xué)會(huì)更多知識(shí)。這次課程設(shè)計(jì)是我們大學(xué)里的最后一次課程設(shè)計(jì),真正說(shuō)來(lái)雖然只有短短一周時(shí)間,但我們從中體會(huì)很多,其中重要的是,遇到困難不
108、僅要自己學(xué)會(huì)獨(dú)立思考,也需要同學(xué)和老師的幫助。另一方面也體會(huì)到研究人員的辛苦,需要耐心和毅力去實(shí)現(xiàn)自己的想法,面對(duì)困難不應(yīng)退縮,而應(yīng)勇于應(yīng)對(duì)。</p><p> 總之,這次課程設(shè)計(jì)獲益匪淺,雖然時(shí)間安排在考研和末考完之后,但卻更顯其對(duì)我們今后走向崗位或進(jìn)入研究生學(xué)習(xí)的特殊意義,不管怎么樣,這次課程設(shè)計(jì)鍛煉了我的自學(xué)能力和實(shí)踐能力。</p><p><b> 八、參考文獻(xiàn)目錄&
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于89c51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)
- 課程設(shè)計(jì)論文-基于89c51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)
- 《單片機(jī)技術(shù)》電子鐘課程設(shè)計(jì)---數(shù)字電子鐘
- 電子鐘課程設(shè)計(jì)--基于單片機(jī)的電子鐘設(shè)計(jì)
- 單片機(jī)電子鐘課程設(shè)計(jì)---數(shù)字電子鐘
- 電子鐘單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--電子鐘
- 單片機(jī)課程設(shè)計(jì)(電子鐘)
- 單片機(jī)課程設(shè)計(jì)報(bào)告—led顯示電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字鐘電子鐘
- 單片機(jī)課程設(shè)計(jì)——數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)---智能電子鐘
- 單片機(jī)原理課程設(shè)計(jì)--電子鐘
- 單片機(jī)數(shù)字電子鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于51單片機(jī)的電子鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---可調(diào)電子鐘溫度顯示系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)-智能電子鐘
評(píng)論
0/150
提交評(píng)論