電子鐘課程設(shè)計--89c51單片機擴展8155顯示電子鐘_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論