版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 單片微機應(yīng)用課程設(shè)計說明書</p><p> 設(shè)計題目 89C51單片機擴展8155顯示電子鐘 </p><p><b> 目錄</b></p><p><b> 課程設(shè)計任務(wù)書</b></p><p> 設(shè)計方
2、案的擬定及說明</p><p><b> 硬件電路設(shè)計</b></p><p><b> 電子元件的選擇</b></p><p><b> 元件參數(shù)計算確定</b></p><p><b> 電路原理圖設(shè)計</b></p><p
3、><b> 控制軟件流程圖</b></p><p><b> 控制軟件源程序</b></p><p><b> 控制軟件說明書</b></p><p><b> 設(shè)計小結(jié)</b></p><p><b> 參考資料目錄</b
4、></p><p><b> 二、課程設(shè)計任務(wù)書</b></p><p><b> 課程設(shè)計的目的</b></p><p> 單片微機應(yīng)用課程設(shè)計是單片微機課程的綜合性與實踐性教學(xué)環(huán)節(jié),課程設(shè)計的目的就是:(1)綜合運用單片微機原理課程和單片機接口技術(shù)課程的知識,分析和解決實際應(yīng)用中的問題進(jìn)一步鞏固、加深和拓寬
5、所學(xué)的知識。</p><p> ?。?)通過設(shè)計實踐,逐步樹立正確的設(shè)計思想,熟悉掌握單片機應(yīng)用系統(tǒng)設(shè)計的一般規(guī)律,培養(yǎng)分析問題和解決問題的能力。</p><p> ?。?)通過邏輯分析、方案設(shè)計、硬件電路連接、畫程序流程圖,匯編語言編程,上機調(diào)試,進(jìn)行全面的單片微機應(yīng)用基本技能的訓(xùn)練。</p><p><b> 2、課程設(shè)計的內(nèi)容</b>&
6、lt;/p><p> 課程設(shè)計的題目一般是在實驗電路板上設(shè)計制作電子鐘或控制簡易二坐標(biāo)數(shù)控實驗臺。</p><p> 課程設(shè)計的內(nèi)容包括:裝置的方案設(shè)計,電路原理圖設(shè)計,實際電路的連接,畫軟件流程圖,編寫程序,調(diào)試運行,編寫課程設(shè)計說明書。</p><p> 課程設(shè)計中要求完成以下工作:</p><p> (1)一張完整的電路原理圖,包括
7、電路上有關(guān)元件的參數(shù)設(shè)計;</p><p> (2)整個控制軟件流程圖;</p><p> ?。?)設(shè)計計算和操作控制課程設(shè)計說明書。</p><p><b> 3、課程設(shè)計的步驟</b></p><p> (1)課程設(shè)計的一般進(jìn)程和步驟見下表:</p><p> ?。?)片內(nèi)RAM單元分配
8、</p><p> 控制程序中需要使用一些數(shù)據(jù)存儲器單元存放有用的數(shù)據(jù),根據(jù)控制程序中要使用的存儲器單元數(shù)量,需將單片機中片內(nèi)RAM單元進(jìn)行分配,重新定義堆棧指針的值,避免堆棧區(qū)和程序用的數(shù)據(jù)存儲區(qū)之間沖突。</p><p> 在控制軟件中需要使用的數(shù)據(jù)存儲單元有:</p><p> 二、設(shè)計方案的擬定及說明</p><p> 1.方
9、案的擬定及說明</p><p><b> 程序初始化功能為:</b></p><p> 顯示緩沖區(qū)單元、標(biāo)志單元清零,時、分、秒單元和計數(shù)延時單元置初值,定時器初始化,確定定時時間常數(shù),開中斷,如果用8255,則對8255處始化等。</p><p> 時、分、秒顯示功能為:</p><p> 顯示程序,將顯示緩沖
10、區(qū)中的內(nèi)容送數(shù)碼管進(jìn)行顯示。</p><p> 時、分、秒計時單元內(nèi)容送顯示緩沖區(qū)功能為:</p><p> 將時、分、秒三個計時單元的內(nèi)容分別拆開后送六個顯示緩沖區(qū)單元。</p><p> 閃爍指示當(dāng)前正在調(diào)整的單元功能:</p><p> 在時間調(diào)整狀態(tài)下有效。0.5秒閃爍標(biāo)志以0.5秒的間隔在“0”和“1”之間變化,當(dāng)0.5秒閃
11、爍標(biāo)志為“1”時,由時鐘調(diào)整時狀態(tài)指針指示的顯示單元置成顯示“空”碼,當(dāng)0.5秒閃爍標(biāo)志為“0”時,保持原顯示單元的內(nèi)容,這樣在顯示程序的控制下,數(shù)碼管會在閃爍顯示。</p><p> 鍵盤掃描處理功能為:</p><p> 沒有按鍵按下就退出,有按鍵按下,進(jìn)行鍵盤處理:如時鐘調(diào)整狀態(tài)鍵按下時的處理和時鐘調(diào)整鍵按下時的處理。</p><p><b>
12、 中斷程序功能為:</b></p><p> 定時時間到,時、分、秒單元分別計數(shù)(時間到1秒,秒單元計數(shù),當(dāng)秒單元計數(shù)值到60秒后,分單元計數(shù)同時秒單元清0,當(dāng)分單元。計數(shù)值到60分后,時單元計數(shù)同時分單元清0)。</p><p><b> 硬件電路設(shè)計</b></p><p><b> 1.電子元件的選擇</
13、b></p><p> AT89C51、8155</p><p><b> 元件參數(shù)的計算確定</b></p><p> 8155口地址的分配</p><p> 根據(jù)題目要求:PB口地址為F702H,則8155片選信號線應(yīng)接單片機P2.3口,IO/M口可接P2.4口,由此分配8155命令狀態(tài)字口地址為F70
14、0H,8155 PB口口地址為EF02H。</p><p> 定時器定時中斷初始化計算</p><p> 時鐘要實現(xiàn)1S計時,則可將定時器設(shè)定定時時間為50ms,20次中斷后即可實現(xiàn)一秒定時。選擇定時器T0,工作方式為方式一(16位定時器),則定時初值為X=216-(50*1000)=15526=3CB0H,則定時器TH0送初值為03C,TL0送初值為B0H.</p>&
15、lt;p><b> 3.電路原理圖</b></p><p><b> 單片機的功能模塊</b></p><p> MCS-51的晶振電路圖</p><p> AT89C51與8155的接口連接</p><p> 鍵盤與AT89C51的連接電路圖</p><p>
16、;<b> 控制軟件流程圖</b></p><p><b> 1.顯示程序流程圖</b></p><p><b> 中斷程序流程圖</b></p><p><b> 定時中斷</b></p><p><b> 定時器設(shè)初值</b&
17、gt;</p><p><b> 是否有鍵按下</b></p><p> 秒單元計數(shù)+1 秒單元清0,分單元進(jìn)1</p><p> 是否大于60 Y</p><p><b> 是否有鍵按下</b></p><p> 分單元計數(shù)+
18、1 分單元清0,時單元進(jìn)1</p><p> 是否大于60 Y</p><p><b> 是否有鍵按下</b></p><p> 時單元計數(shù)+1 時單元清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 ;程序開始</p>
20、<p> LJMP MAIN ;</p><p> ORG 000BH ;定時器中斷地址設(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 ;時</p><p> MM EQU 37H ;分</p><p> SS EQU 38H ;秒</p>
23、<p> HSEC EQU 39H ;0.5秒計數(shù)延時閃爍</p><p> SEC EQU 40H ;1秒計數(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è)置定時器</p><p><b> ;無窮循環(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: ;使用定時器T0模式1計時&
26、lt;/p><p> MOV TMOD,#11H;定時器T0,工作模式1</p><p> MOV TH0,#3CH ;定時50MS</p><p> MOV TL0,#0B0H</p><p> MOV TH1,#3CH ;定時50MS</p><p> MOV TL1,#0B0H</p>
27、<p> SETB EA;總中斷開放</p><p> SETB ET0;允許T0中斷</p><p> SETB TR0 ;T0開始計時</p><p><b> RET</b></p><p> STOP_SRV: ;中斷服務(wù)程序</p><p> PUSH
28、ACC;累加器入棧保護</p><p> PUSH PSW;狀態(tài)字入棧保護</p><p> MOV TH0,#3CH</p><p> MOV TL0,#0B0H</p><p> INC SEC;1秒計數(shù)器加一</p><p> MOV A,SEC;</p><p> CJNE
29、A,#14H,NEXT;</p><p> INC SS;秒計數(shù)器加一</p><p> MOV SEC,#0;1秒計數(shù)器清零</p><p><b> MOV A,SS</b></p><p> CJNE A,#60,NEXT;</p><p> INC MM;分計數(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ù)器加一</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ù)據(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> ;計時單元清零</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> ;;--------------------------實現(xiàn)調(diào)整時間子程序----------------</p><p> ;按鍵處理程序(設(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 ;開啟定時器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> ;防抖動延時</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> ;***********閃動調(diào)時 程 序***********</p><p> ;T1中斷服務(wù)程序,用作時間調(diào)整時調(diào)整單元閃爍指示,定時50ms</p><p> INTT1: </p><p> MOV TL1, #0B0H ;裝定時器T1定時初值</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 ,新建工程項目,見圖1</p><p><b> 圖1</b></p><p> 2、確定后出現(xiàn)的對話框,輸入新建工程的名字,如example,見圖2</p><p> ?。ㄕ埫總€同學(xué)在D盤上建立自己的文件夾,將建立的項目保持在自己的文件夾內(nèi))</
78、p><p><b> 圖2</b></p><p> 3、在彈出的對話框中選擇CPU 廠商,選中 Atmel 公司,雙擊鼠標(biāo)確認(rèn),見圖3</p><p><b> 圖3</b></p><p> 4、雙擊后在彈出的對話框中選擇CPU類型,選中AT89C51后確認(rèn),見圖4</p>
79、<p><b> 圖4</b></p><p> 5、選擇否(N),不添加</p><p> ?。ㄈ?、設(shè)置工程文件參數(shù)</p><p> 在菜單欄中選擇 Project 項的下拉菜單 Options for Target ‘Target1’ 項,或單擊工具欄中</p><p><b> 圖
80、6</b></p><p> 2、在出現(xiàn)的對話選項卡中選擇 Target 項,在中輸入單片機工作的頻率</p><p><b> 圖7</b></p><p> 3、在選項卡中選擇 Debug 調(diào)試項,見圖8</p><p><b> 圖8</b></p><
81、p><b> (1) </b></p><p><b> 圖8</b></p><p> 選中此項keil為純軟件仿真,不需要連接仿真器就可以仿真,軟件實驗就可以選擇這一項(實驗一、實驗二為純軟件仿真)</p><p><b> (2) </b></p><p&
82、gt;<b> 圖9 </b></p><p> 選中此項keil為帶有Monitor-51目標(biāo)仿真器的仿真,必須要有硬件keil-c51仿真器的支持,否則不能仿真,在我們做硬件實驗時選擇這一項</p><p> ?。▽嶒炄?、實驗四為硬件仿真,此項)</p><p> ?。?)單擊 圖9 后面的 設(shè)置,出現(xiàn)圖10對話框,設(shè)置Port
83、串口:一般為COM1,Baudrate 波特率:38400bit/s, 最后 確認(rèn)</p><p><b> 圖10</b></p><p> ?。?)在選項卡中按確定</p><p> ?。?)設(shè)置完成,就可以添加事先編好的 *.asm 文件程序編譯運行</p><p> ?。ㄋ模⒕帉懶鲁绦蚴吕?lt;/p&
84、gt;<p> 圖11 圖12</p><p> 1、在菜單欄File (文件)選項的下拉菜單中選擇 New… (新建文件),見 圖11 ,選擇后出現(xiàn) 圖12 文本編輯框,輸入?yún)R編程序</p><p><b> 圖13</b></p><p> 2、
85、在輸入程序標(biāo)點符號時注意,應(yīng)在沒有中文輸入法狀態(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保存文件以文件擴展名*.ASM保存,如圖15</p><p> ?。ㄕ埫總€同學(xué)把程序保存在自己的文件夾)</p><p><b> 圖15</b></p>
92、<p> 5、運行程序,要把文件程序添加到工程里去執(zhí)行,操作如圖16</p><p><b> 圖16</b></p><p> 6、添加程序?qū)υ捒虿僮鲌D17所示(如果已編好程序存在自己的U盤中,可以先復(fù)制到D盤上,直接添加即可)</p><p><b> 圖17</b></p><p
93、> 7、添加好程序,在庫里把文件打開,操作見圖18</p><p><b> 圖18</b></p><p> 8、編譯程序,也可以在工具欄中點擊Project ,操做如圖19后圖20</p><p><b> 圖19</b></p><p><b> 圖20</b&
94、gt;</p><p> 在編譯過程中,如果有錯可以在信息窗口中顯示出來,雙擊錯誤信息,可以在源程序中定位所在行。糾錯后,再次編譯直到?jīng)]有錯誤。</p><p><b> 五)、調(diào)試程序</b></p><p> 編譯好以后,要切換編程和調(diào)試模式,操作見圖21,或點擊工具欄上的</p><p><b>
95、 圖21</b></p><p><b> 1、單步調(diào)試</b></p><p> 跟蹤就,若有子程序調(diào)用,也會跟蹤到子程序中去。</p><p> 單步調(diào)試程序,一條指令一條指令地執(zhí)行程序可以全速執(zhí)行子程序(把子程序作為一步執(zhí)行完),而不會跟蹤到子程序中。</p><p> 在單步調(diào)試中,可以查看內(nèi)
96、存地址及外部地址單元內(nèi)容</p><p> 1)、點擊菜單欄選擇View (瀏覽) 的下拉菜單 Memory Windows (存儲器窗口)</p><p><b> 圖26</b></p><p> 2、在Keil軟件的右下方出現(xiàn)的對話框,如圖27所示</p><p><b> 圖27</b&g
97、t;</p><p> 3、在對話框中輸入你查看的地址單元,如圖27、圖28所示,例如要查看30H 內(nèi)存地址單元的內(nèi)容,就輸入D:30H 按ENTER(回車鍵),在底下就顯示30H 的內(nèi)容(第一個為30H,后面一個為31H,一個個按順序排);如果要查看外部數(shù)據(jù)存儲器的8000H 的內(nèi)容就輸入X:8000H 地址后按回車,如圖29所示</p><p><b> 圖28</
98、b></p><p><b> 圖29</b></p><p> 單步執(zhí)行下程序,至 DJNZ R2,A1行。觀察并記錄指令運行結(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> 觀察運行情況,并記錄,此時</p><p> 3、利用斷點進(jìn)行調(diào)試</p><p> 設(shè)置斷點:將鼠標(biāo)移到源程序窗口相應(yīng)程序行,雙擊左鍵設(shè)置斷點,或擊右鍵選“設(shè)置/取消斷點”功能設(shè)置斷點。斷點設(shè)置好后,此行出現(xiàn)紅色方形標(biāo)記。用全速執(zhí)行的功能,當(dāng)程序執(zhí)行到斷點時,會暫停下來,可以觀察程序中各變量的值,判斷程序是否正確。&
100、lt;/p><p> 取消斷點:將鼠標(biāo)移到源程序窗口相應(yīng)斷點程序行,雙擊左鍵取消斷點?;驌粲益I選“設(shè)置/取消斷點”功能取消斷點。斷點取消后,此行的紅色方形標(biāo)記消失。</p><p> 注意:設(shè)置的斷點如果不取消,會一直存在。</p><p> 在MOV R0,#0A0H行設(shè)置斷點,全速執(zhí)行,暫停后觀察并記錄以下單元內(nèi)容</p><p>
101、;<b> 4、運行,見圖22</b></p><p><b> 圖22</b></p><p> 11、軟件仿真時要停止程序可以點擊工具欄上的快捷鍵Halt(停止)</p><p> 硬件仿真時停止程序不要點擊工具欄上的快捷鍵Halt(停止),見圖23。停止程序要按仿真器上的復(fù)位按鈕,見仿真器示意圖24</
102、p><p><b> 圖23</b></p><p><b> 圖24</b></p><p> 停止程序以后,要進(jìn)行模式切換,見圖21,這時就可以對程序進(jìn)行修改,編譯運行。如果要想運行其他程序,就要把原來的程序從工程庫里移除,見圖25,然后再添加</p><p><b> 圖2<
103、;/b></p><p> 綜合運用各種調(diào)試方法對源程序進(jìn)行調(diào)試。</p><p><b> 七、設(shè)計小結(jié)</b></p><p> 本來兩周的單片機課程設(shè)計實習(xí),因為有多門考試壓縮為一周。這個學(xué)期由于大部分時間都在忙著考研,所以也沒有怎么看《單片微機原理系統(tǒng)設(shè)計與應(yīng)用》這本書,雖然選了《單片機原理與接口》這門課程,但學(xué)這門課程的過
104、程中,心里想著考研,雖每節(jié)課都去聽了,卻沒有花許多時間去思考這門課程,很多關(guān)于單片機接口的知識都不甚理解。</p><p> 考完研的第一天,我們開始了課程設(shè)計的動員會,指導(dǎo)老師薛老師給我們每個人都分配了任務(wù)。我的任務(wù)是用一片8155的 PA口(段控)和PB口(位控)作輸出口控制六個數(shù)碼管顯示(二個數(shù)碼管顯示“時”、二個數(shù)碼管顯示“分”、二個數(shù)碼管顯示“秒”), 用89C51的P1口作輸入口控制按鍵輸入,做一臺
105、電子鐘。要求:8155的PB口地址:F702H。當(dāng)時也沒多在意,因為這一周我有四門考試,必須先過了這四關(guān)。周六考試結(jié)束后,就開始思考,仔細(xì)閱讀了課程設(shè)計說明書,才發(fā)現(xiàn)這次課程設(shè)計的任務(wù)不輕,主要是自己的匯編語言差不多忘完了,必須重新把教科書看一片,對程序和單片機要有足夠的理解,才能完成用單片機實現(xiàn)電子鐘的任務(wù)。</p><p> 于是,我花了兩天時間看了一下教科書上重要的知識,并且請教了那些比較熟練單片機的同學(xué)
106、,也在網(wǎng)上和讀書館搜集有關(guān)的資料。之后開始了按照設(shè)計指導(dǎo)書的流程開始編寫自己的電子鐘程序。這幾天真的特辛苦,每天早上九點之前到實驗室,晚上十點才離開實驗室,功夫不負(fù)有心人,我的想法也初步得到實現(xiàn),雖然還有一些沒達(dá)到自己的目的,比如說我本想在時鐘調(diào)整狀態(tài)下,正在調(diào)整的“時”或“分”或“秒”要進(jìn)行閃爍顯示指示。</p><p> 但最后卻只能在秒表調(diào)時是閃爍。雖然花了一天的時間修改程序,并調(diào)試,并在實驗室里呆了一天
107、,當(dāng)最后還是沒能實現(xiàn)理想的功能。</p><p> 我設(shè)計的電子鐘能實現(xiàn)調(diào)試“時”、“分”、“秒”的功能,顯示的也比較清晰,用兩個鍵盤實現(xiàn)調(diào)時,如果還有時間我相信自己能實現(xiàn)自己所想的功能。當(dāng)然這次試驗讓我學(xué)會了很多知識,任何只是都需要運用到實踐才能成為真正的知識,也只有實踐才能讓我學(xué)會更多知識。這次課程設(shè)計是我們大學(xué)里的最后一次課程設(shè)計,真正說來雖然只有短短一周時間,但我們從中體會很多,其中重要的是,遇到困難不
108、僅要自己學(xué)會獨立思考,也需要同學(xué)和老師的幫助。另一方面也體會到研究人員的辛苦,需要耐心和毅力去實現(xiàn)自己的想法,面對困難不應(yīng)退縮,而應(yīng)勇于應(yīng)對。</p><p> 總之,這次課程設(shè)計獲益匪淺,雖然時間安排在考研和末考完之后,但卻更顯其對我們今后走向崗位或進(jìn)入研究生學(xué)習(xí)的特殊意義,不管怎么樣,這次課程設(shè)計鍛煉了我的自學(xué)能力和實踐能力。</p><p><b> 八、參考文獻(xiàn)目錄&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于89c51單片機的數(shù)字電子鐘設(shè)計
- 課程設(shè)計論文-基于89c51單片機的數(shù)字電子鐘設(shè)計
- 《單片機技術(shù)》電子鐘課程設(shè)計---數(shù)字電子鐘
- 電子鐘課程設(shè)計--基于單片機的電子鐘設(shè)計
- 單片機電子鐘課程設(shè)計---數(shù)字電子鐘
- 電子鐘單片機課程設(shè)計
- 單片機課程設(shè)計--電子鐘
- 單片機課程設(shè)計(電子鐘)
- 單片機課程設(shè)計報告—led顯示電子鐘
- 單片機課程設(shè)計--數(shù)字鐘電子鐘
- 單片機課程設(shè)計——數(shù)字電子鐘
- 單片機課程設(shè)計--數(shù)字電子鐘
- 單片機課程設(shè)計--數(shù)字電子鐘
- 單片機課程設(shè)計---智能電子鐘
- 單片機原理課程設(shè)計--電子鐘
- 單片機數(shù)字電子鐘課程設(shè)計
- 單片機課程設(shè)計---基于51單片機的電子鐘設(shè)計
- 單片機課程設(shè)計---可調(diào)電子鐘溫度顯示系統(tǒng)
- 單片機課程設(shè)計--數(shù)字電子鐘
- 單片機課程設(shè)計-智能電子鐘
評論
0/150
提交評論