2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機技術(shù)課程設(shè)計說明書</p><p><b>  數(shù) 字 電 子 鐘</b></p><p><b>  摘 要</b></p><p>  電子鐘在生活中應(yīng)用非常廣泛,而一種簡單方便的數(shù)字電子鐘則更能受到人們的歡迎。所以設(shè)計一個簡易數(shù)字電子鐘很有必要。本電子鐘采用ATMEL公司的AT89S52

2、單片機為核心,使用12MHz 晶振與單片機AT89S52 相連接,通過軟件編程的方法實現(xiàn)以24小時為一個周期,同時8位7段LED數(shù)碼管(兩個四位一體數(shù)碼管)顯示小時、分鐘和秒的要求。該電子鐘設(shè)有四個按鍵S1、S2、S3和S4鍵,進行相應(yīng)的操作就可實現(xiàn)校時、復位功能。具有時間顯示、校正等功能。走時準確、顯示直觀、運行穩(wěn)定等優(yōu)點。具有極高的推廣應(yīng)用價值。</p><p>  關(guān)鍵詞 電子鐘;AT89S52;硬件設(shè)計

3、;軟件設(shè)計</p><p><b>  ABSTRACT</b></p><p>  Clock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessa

4、ry.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a

5、24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and i</p><p>  顯示對應(yīng)的拉丁字符的拼音</p><p>  字典 - 查看字典詳細內(nèi)容</p>

6、<p>  Key words Electronic clock;;AT89S52;Hardware Design;Software Design</p><p><b>  目 錄</b></p><p>  設(shè)計課題任務(wù)、功能要求說明及方案介紹……………………………………1</p><p>  設(shè)計課題任務(wù)………………………

7、………………………………………1</p><p>  功能要求說明………………………………………………………………1</p><p>  設(shè)計總體方案介紹及原理說明……………………………………………1</p><p>  設(shè)計課題硬件系統(tǒng)的設(shè)計………………………………………………………2</p><p>  設(shè)計課題硬件系統(tǒng)各模塊功能簡要介紹

8、…………………………………2</p><p>  設(shè)計課題電路原理圖、PCB圖、仿真電路圖……………………………2</p><p>  設(shè)計課題元器件清單………………………………………………………3</p><p>  設(shè)計課題軟件系統(tǒng)的設(shè)計………………………………………………………5</p><p>  設(shè)計課題使用單片機資源的情況…………

9、………………………………5</p><p>  設(shè)計課題軟件系統(tǒng)各模塊功能簡要介紹…………………………………5</p><p>  設(shè)計課題軟件系統(tǒng)程序流程框圖…………………………………………5</p><p>  設(shè)計課題軟件系統(tǒng)程序清單………………………………………………10</p><p>  設(shè)計結(jié)論、仿真結(jié)果、誤差分析、教學建議……

10、……………………………25</p><p>  設(shè)計課題的設(shè)計結(jié)論及使用說明…………………………………………25</p><p>  設(shè)計課題的仿真結(jié)果………………………………………………………25</p><p>  設(shè)計課題的誤差分析………………………………………………………26</p><p>  設(shè)計體會………………………………………

11、……………………………26</p><p>  教學建議……………………………………………………………………26</p><p>  參考文獻 ……………………………………………………………………………27</p><p>  致 謝 ……………………………………………………………………………28</p><p>  附 錄 ……

12、………………………………………………………………………29</p><p>  1 設(shè)計課題任務(wù)、功能要求說明及方案介紹</p><p>  1.1 設(shè)計課題任務(wù)</p><p>  設(shè)計一個具有特定功能的電子鐘。具有時間顯示,時間設(shè)定,時間調(diào)整功能。</p><p>  1.2 功能要求說明</p><p> 

13、 設(shè)計一個具有特定功能的電子鐘。該電子鐘上電或按鍵復位后能自動顯示系統(tǒng)提示符“P.”, 進入時鐘準備狀態(tài);第一次按電子鐘啟動/暫停鍵,電子鐘從0時0分0秒開始運行,進入時鐘運行狀態(tài);再次按電子鐘調(diào)整鍵,則電子鐘進入時鐘調(diào)整狀態(tài),此時可利用各調(diào)整鍵調(diào)整時間,調(diào)整結(jié)束后可按啟動/暫停鍵再次進入時鐘運行狀態(tài)。退出手動調(diào)時系統(tǒng)后,計時系統(tǒng)在調(diào)整后的狀態(tài)下運行。當計時達到24小時后,系統(tǒng)自動清0,重新進入計時系統(tǒng)。</p><

14、p>  1.3 設(shè)計課題總體方案介紹及工作原理說明</p><p>  本電子鐘主要由單片機、4*1獨立鍵盤、顯示接口電路和復位電路構(gòu)成,設(shè)計課題的總體方案如圖1.1所示: </p><p>  圖1.1 總體設(shè)計方案圖</p><p>  本電子鐘的所有的軟件、參數(shù)均存放在AT89S52的Flash ROM和內(nèi)部RAM中,減少了芯片的使用數(shù)量簡化了整體電

15、路也降低了整機的工作電流。鍵盤采用動態(tài)掃描方式。利用單片機定時器及計數(shù)器產(chǎn)生定時效果通過編程形成數(shù)字鐘效果,再利用數(shù)碼管動態(tài)掃描顯示單片機內(nèi)部處理的數(shù)據(jù),同時通過端口讀入當前外部控制狀態(tài)來改變程序的不同狀態(tài),實現(xiàn)不同功能。</p><p>  2 設(shè)計課題硬件系統(tǒng)的設(shè)計</p><p>  設(shè)計課題硬件系統(tǒng)各模塊功能簡要介紹</p><p>  本設(shè)計的硬件系統(tǒng)主

16、要采用以下基本模塊來實現(xiàn),單片機最小系統(tǒng)模塊,輸入模塊、輸出模塊、電源模塊。。</p><p>  (1)時鐘電路:系統(tǒng)的時鐘電路設(shè)計是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。AT89單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大

17、器的反饋回路中。對外接電容的值雖然沒有嚴格的要求,但電容的大小會影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應(yīng)盡可能的選擇陶瓷電容,電容值約為22μF。在焊接刷電路板時,晶體振蕩器和電容應(yīng)盡可能安裝得與單片機芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。</p><p>  (2)復位電路:復位是由外部的復位電路來實現(xiàn)的。片內(nèi)復

18、位電路是復位引腳RST通過一個斯密特觸發(fā)器與復位電路相連,斯密特觸發(fā)器用來抑制噪聲,它的輸出在每個機器周期的S5P2,由復位電路采樣一次。復位電路通常采用上電自動復位和按鈕復位兩種方式,此電路系統(tǒng)采用的是上電與按鈕復位電路,如圖所示。當時鐘頻率選用6MHz時,C取22μF,Rs約為200Ω,Rk約為1K。</p><p>  (3)鍵盤電路:當非編碼鍵盤的按鍵較少時,采用獨立式鍵盤比較方便,可以隨意拿硬件作為預處

19、理,各鍵盤之間不影響,編程相對矩陣式鍵盤簡單,但占用的I/O口線較多。</p><p>  (4)顯示電路:顯示器普遍地用于直觀地顯示數(shù)字系統(tǒng)的運行狀態(tài)和工作數(shù)據(jù),按照材料及生產(chǎn)工藝,單片機應(yīng)用系統(tǒng)中常用的顯示器有:發(fā)光二極管LED顯示器、液晶LCD顯示器、CRT顯示器等。LED顯示器是現(xiàn)在最常用的顯示器之一。LED顯示器的顯示控制方式按驅(qū)動方式可分成靜態(tài)顯示方式和動態(tài)顯示方式兩種。對于多位LED顯示器,通常都是

20、采用動態(tài)掃描的方法進行顯示,其硬件連接方式如系統(tǒng)原理圖。在動態(tài)方式中,逐個地循環(huán)地點亮各位顯示器。這樣雖然在任一時刻只有一位顯示器被點亮,但是由于人眼具有視覺殘留效應(yīng),看起來與全部顯示器持續(xù)點亮效果完全一樣。</p><p>  (5)電源電路:現(xiàn)在市面上銷售的編程器有很多都是由PC機的USB口直接供電,為了降低本設(shè)計的成本及節(jié)省設(shè)計時間,沒有另外設(shè)計編程器。</p><p>  設(shè)計課題

21、電路原理圖、PCB圖、元器件布局圖</p><p>  圖2.1 電路原理圖</p><p><b>  圖2.2 PCB圖</b></p><p><b>  圖2.3 仿真電路</b></p><p><b>  設(shè)計課題元器件清單</b></p><p

22、>  設(shè)計課題元器件清單如表2.1所示。</p><p>  表2.1 設(shè)計所用元器件清單</p><p>  3 設(shè)計課題軟件系統(tǒng)的設(shè)計</p><p>  3.1 設(shè)計課題使用單片機資源的情況</p><p>  設(shè)計課題使用單片機資源的情況如下:</p><p>  P0口輸出數(shù)碼管段選信號,P3口輸

23、出數(shù)碼管位選信號;晶振12MHz;開始/暫停鍵S1;按一次開始計時,再按時間暫停在當前狀態(tài):調(diào)整鍵S2;通過選擇鍵選擇調(diào)整位,選中位閃爍;增加鍵S3;按一次使選中位加1;減少鍵S3;按一次使選中位減1;; P3.1口接蜂鳴器; </p><p>  78H 用于秒個位; 79H 用于秒十位;</p><p>  7BH 用于分個位; 7CH 用于分十位;</p><p&

24、gt;  7EH 用于時個位; 7FH 用于時十位;</p><p>  54H 用于控制調(diào)時閃爍;堆棧棧底:70H。</p><p>  設(shè)計課題軟件系統(tǒng)個模塊功能簡要介紹</p><p>  本設(shè)計的軟件系統(tǒng)主要采用以下基本模塊來實現(xiàn),主程序、中斷服務(wù)程序、鍵盤輸入程序模塊、數(shù)碼管及其驅(qū)動模塊和延時模塊。</p><p>  主程序:主要

25、是用于對輸入信號的處理、輸出信號的控制和對各個功能程序模塊的運用及其控制。</p><p>  中斷服務(wù)程序:主要是用于電子鐘的準確運行、數(shù)據(jù)輸入過程中的閃爍。</p><p>  鍵盤輸入程序模塊:主要是用于確定按鍵并得到特定的鍵碼值。</p><p>  數(shù)碼管及其驅(qū)動模塊:主要是用于驅(qū)動數(shù)碼管及利用數(shù)碼管顯示時間。</p><p>  

26、延時模塊:程序中有兩種延時子程序,一種是短延時用于判鍵按下等,一種是長延時。</p><p>  3.3 設(shè)計課題軟件系統(tǒng)程序流程框圖</p><p>  系統(tǒng)軟件采用匯編語言按模塊化方式進行設(shè)計,然后通過Keil軟件開發(fā)平臺將程</p><p>  序轉(zhuǎn)變成十六進制程序語言,接著使用Proteous 進行仿真,讀出顯示數(shù)據(jù)。</p><p&g

27、t;  主程序流程框圖如3.1所示;</p><p>  加1子程序如3.2所示;</p><p>  中斷服務(wù)程序程序如3.3所示;</p><p>  鍵盤掃描子程序框圖如3.4所示;</p><p>  顯示子程序框圖如3.5所示;</p><p>  圖3.1 主程序流程框圖</p><p

28、>  圖3.2 加1子程序流程框圖</p><p>  圖3.3 中斷子程序</p><p>  圖3.4 鍵盤掃描子程序</p><p>  圖3.5 顯示子程序</p><p>  3.4設(shè)計課題軟件系統(tǒng)程序清單</p><p>  ;---------------------------------

29、--------------------------------------</p><p>  ;本電子鐘實現(xiàn)24小時制,8位數(shù)碼管顯示時分秒,可整點報時</p><p>  ;顯示格式:00-00-00(設(shè)置小時十位為0時,不顯示)</p><p>  ;通過3只按鍵來調(diào)整時間</p><p>  ;調(diào)整鍵SET_KEY:P1.1;通過選

30、擇鍵選擇調(diào)整位,選中位閃爍</p><p>  ;增加鍵ADD_KEY:P1.2;按一次使選中位加1</p><p>  ;減少鍵DEC_KEY:P1.3;按一次使選中位減1</p><p>  ;P0口輸出數(shù)碼管段選信號,P2口輸出數(shù)碼管位選信號;晶振12MHz</p><p>  ;P3.1為蜂鳴器發(fā)聲報時</p><

31、p>  ;編程人:劉亞龍 編寫日期:2012年12月28日 修改日期(最終):2013年1月2日</p><p>  ;-----------------------------------------------------------------------</p><p>  ;-----------</p><p><b>  ;程序入口

32、</b></p><p>  ;----------- </p><p>  ORG0000H </p><p>  START:LJMPMAIN</p><p>  ORG001BH ;定時器1的中斷入口地址</p><p><b>  LJMPTT</

33、b></p><p>  ;*********************************************************</p><p><b>  ;系統(tǒng)監(jiān)控程序區(qū)</b></p><p>  ORG0030H</p><p>  MAIN:MOVSP,#60H ;確立堆棧

34、區(qū)</p><p>  MOVPSW,#00H ;初始化PSW,通用寄存器組為第0組</p><p>  MOVR0,#20H ;RAM區(qū)首地址</p><p>  MOVR5,#96 ;RAM區(qū)單元個數(shù)</p><p>  QL:MOV@R0,#00H</p><p>&

35、lt;b>  INCR0</b></p><p>  DJNZR5,QL</p><p>  SETBEA ;中斷初始化</p><p><b>  SETBET1</b></p><p>  MOVTMOD,#10H ;TMOD初始化</p><p

36、>  MOVTH1,#3CH ;計數(shù)初值初始化</p><p>  MOVTL1,#0B0H </p><p>  XP0:MOVDPTR,#BG0 ;提示符“P.”字符代碼表首地址</p><p>  MOVR0,#78H</p><p>  MOVR2,#08H</p>

37、<p>  XP:CLRA</p><p>  MOVCA,@A+DPTR </p><p>  MOV@R0,A</p><p><b>  INCR0</b></p><p><b>  INCDPTR</b></p><p&g

38、t;  DJNZR2,XP</p><p>  LCALLDIR ;調(diào)顯示子程序顯示提示符“P.”</p><p>  LCALLKEY ;調(diào)鍵盤掃描子程序</p><p>  JB20H.0,K0</p><p><b>  LJMPXP0</b></p><

39、;p>  ;***********************************************</p><p><b>  ;鍵功能程序;</b></p><p>  ;電子鐘進入啟動/調(diào)整狀態(tài)</p><p>  K0:MOVDPTR,#BG1 ;顯示0時0分0秒字符代碼表首地址</p><

40、;p>  MOVR0,#78H</p><p>  MOVR1,#08H</p><p>  XK:CLRA</p><p>  MOVCA,@A+DPTR</p><p>  MOV@R0,A</p><p><b>  INCR0</b></

41、p><p><b>  INCDPTR</b></p><p>  DJNZR1,XK</p><p>  MOVR2,#14H </p><p>  KA:SETBTR1 ;開啟定時器,電子鐘進入啟動狀態(tài)</p><p>  KA0:LCALLDI

42、R</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,K00</p><p><b>  LJMPKA0</b></p><p>  K00:CLRTR1 ;關(guān)閉定時器電子鐘進入準備調(diào)整狀態(tài)</p><p>

43、<b>  LCALLDIR</b></p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T01 ;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,K1 ;選擇調(diào)整時鐘的秒針數(shù)</p><p><b>  LJ

44、MPK00</b></p><p>  ;****************************************************</p><p>  ;選擇調(diào)整時鐘的秒針數(shù)</p><p>  K1:MOVR5,7EH</p><p>  MOVR6,7FH</p><

45、p>  MF3:MOVR0,78H</p><p>  MOVR1,79H;保存緩沖區(qū)78H,79H中的內(nèi)容</p><p>  SM:MOV7EH,R5</p><p>  MOV7FH,R6</p><p>  MOV78H,#0AH</p><p>  M

46、OV79H,#0AH;給78H,79H中送提示符“滅”字符代碼</p><p>  MOVR2,#16H</p><p>  CL1:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,MF0;重新進入時鐘運行狀態(tài)</p

47、><p>  JB20H.1,K10;選擇調(diào)整時鐘的分針數(shù)</p><p>  JB20H.2,K20;對時鐘的秒針數(shù)進行加一操作</p><p>  JB20H.3,T30</p><p>  DJNZR2,CL1</p><p>  MOV78H,R0</p>

48、<p>  MOV79H,R1;將78H,79H中原有的內(nèi)容送回其中</p><p>  MOVR2,#16H</p><p>  CL2:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T01;重新進入時鐘

49、運行狀態(tài)</p><p>  JB20H.1,K10;選擇調(diào)整時鐘的分針數(shù)</p><p>  JB20H.2,K20;對時鐘的秒針數(shù)進行加一操作</p><p>  JB20H.3,T30</p><p>  DJNZR2,CL2</p><p><b>  LJMP

50、SM</b></p><p>  T30:LJMPK30;對時鐘的秒針數(shù)進行減一操作</p><p>  MF0:MOV78H,R0</p><p>  MOV79H,R1</p><p>  T01:LJMPKA</p><p>  ;*****************

51、*********************************</p><p>  ;選擇調(diào)整時鐘的分針數(shù)</p><p>  K10:MOVR3,7BH</p><p>  MOVR4,7CH;保存緩沖區(qū)7BH,7CH中的內(nèi)容</p><p>  SF:MOV78H,R0</p><

52、;p>  MOV79H,R1</p><p>  MOV7BH,#0AH</p><p>  MOV7CH,#0AH;給7BH,7CH中送提示符“滅”字符代碼</p><p>  MOVR2,#16H</p><p>  CL3:LCALLDIR</p><p><b&g

53、t;  LCALLKEY</b></p><p>  JB20H.0,MF1;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,T11</p><p>  JB20H.2,T21</p><p>  JB20H.3,T31</p><p>  DJNZR2,C

54、L3</p><p>  MOV7BH,R3</p><p>  MOV7CH,R4;將7BH,7CH中原有的內(nèi)容送回其中</p><p>  MOVR2,#16H</p><p>  CL4:LCALLDIR</p><p><b>  LCALLKEY</b>

55、</p><p>  JB20H.0,T01;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,T11</p><p>  JB20H.2,T21</p><p>  JB20H.3,T31</p><p>  DJNZR2,CL4</p><p>

56、<b>  LJMPSF</b></p><p>  T11:LJMPK11;選擇調(diào)整時鐘的時針數(shù)</p><p>  T21:LJMPK21;對時鐘的分針數(shù)進行加一操作</p><p>  T31:LJMPK31;對時鐘的分針數(shù)進行減一操作</p><p>  ;***

57、******************************************</p><p>  ;對時鐘的秒針數(shù)進行加一操作</p><p>  K20:MOV78H,R0</p><p>  MOV79H,R1</p><p>  K200:CJNER0,#09H,IMG</p><p&

58、gt;  MOV78H,#00H</p><p><b>  INC79H</b></p><p>  MOVR1,79H</p><p>  CJNER1,#06H,IMG0</p><p>  MOV79H,#00H</p><p>  LJMPIMG0&l

59、t;/p><p>  IMG:INC78H</p><p>  IMG0:MOVR0,78H</p><p>  MOVR1,79H</p><p>  CL70:MOVR2,#26H</p><p>  CL7:LCALLDIR</p><p><b&g

60、t;  LCALLKEY</b></p><p>  JB20H.0,T02 ;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,K10 ;選擇調(diào)整時鐘的分針數(shù)</p><p>  JB20H.2,K200 ;對時鐘的秒針數(shù)進行加一操作</p><p>  JB20H.3

61、,K30 ;對時鐘的秒針數(shù)進行減一操作</p><p>  DJNZR2,CL7</p><p><b>  LJMPCL70</b></p><p>  MF1:MOV7BH,R3</p><p>  MOV7CH,R4</p><p><b>  L

62、JMPKA</b></p><p>  ;****************************************************</p><p>  ;對時鐘的秒針數(shù)進行減一操作</p><p>  K30:MOV78H,R0</p><p>  MOV79H,R1</p><

63、;p>  K300:CJNER0,#00H,DMG</p><p>  MOV78H,#09H</p><p>  CJNER1,#00H,DMG1</p><p>  LJMPDMG2</p><p>  DMG1:DEC79H</p><p><b>  LJMP

64、DMG0</b></p><p>  DMG2:MOV79H,#05H</p><p><b>  LJMPDMG0</b></p><p>  DMG:DEC78H</p><p>  DMG0:MOVR0,78H</p><p>  MOVR1,

65、79H</p><p>  CD70:MOVR2,#26H</p><p>  CD7:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T02</p><p>  JB20H.1,T10</p>

66、<p>  JB20H.2,K20;對時鐘的秒針數(shù)進行加一操作</p><p>  JB20H.3,K300;對時鐘的秒針數(shù)進行減一操作</p><p>  DJNZR2,CD7</p><p><b>  LJMPCD70</b></p><p>  T10:LJMPK

67、10;選擇調(diào)整時鐘的分針數(shù)</p><p>  T02:LJMPKA ;重新進入時鐘運行狀態(tài)</p><p>  ;***************************************************</p><p>  ;選擇調(diào)整時鐘的時針數(shù)</p><p>  K11:MOVR5,7

68、EH</p><p>  MOVR6,7FH;保存緩沖區(qū)7EH,7FH中的內(nèi)容</p><p>  SS:MOV7BH,R3</p><p>  MOV7CH,R4</p><p>  MOV7EH,#0AH</p><p>  MOV7FH,#0AH;給7EH,7FH

69、中送提示符“滅”字符代碼</p><p>  MOVR2,#16H</p><p>  CL5:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,MF2;重新進入時鐘運行狀態(tài)</p><p>  JB20H.

70、1,Y1;選擇調(diào)整時鐘的秒針數(shù)</p><p>  JB20H.2,T22</p><p>  JB20H.3,T32</p><p>  DJNZR2,CL5</p><p>  MOV7EH,R5</p><p>  MOV7FH,R6;將7EH,7FH中原有的內(nèi)容送

71、回其中</p><p>  MOVR2,#16H</p><p>  CL6:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T02;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,Y1

72、;選擇調(diào)整時鐘的秒針數(shù)</p><p>  JB20H.2,T22</p><p>  JB20H.3,T32</p><p>  DJNZR2,CL6</p><p><b>  LJMPSS</b></p><p>  T22:LJMPK22;對時鐘的時針數(shù)

73、進行加一操作</p><p>  T32:LJMPK32;對時鐘的時針數(shù)進行減一操作</p><p>  MF2:MOV7EH,R5</p><p>  MOV7FH,R6</p><p><b>  LJMPKA</b></p><p>  ;**********

74、***********************************</p><p>  ;對時鐘的分針數(shù)進行加一操作</p><p>  K21:MOV7BH,R3</p><p>  MOV7CH,R4</p><p>  K210:CJNER3,#09H,IFG</p><p>  MO

75、V7BH,#00H</p><p><b>  INC7CH</b></p><p>  MOVR4,7CH</p><p>  CJNER4,#06H,IFG0</p><p>  MOV7CH,#00H</p><p>  LJMPIFG0</p>

76、;<p>  IFG:INC7BH</p><p>  IFG0:MOVR3,7BH</p><p>  MOVR4,7CH</p><p>  CL80:MOVR2,#26H</p><p>  CL8:LCALLDIR</p><p><b>  LCA

77、LLKEY</b></p><p>  JB20H.0,T02;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,K11;選擇調(diào)整時鐘的時針數(shù)</p><p>  JB20H.2,K210;對時鐘的分針數(shù)進行加一操作</p><p>  JB20H.3,K31

78、;對時鐘的分針數(shù)進行減一操作</p><p>  DJNZR2,CL8</p><p>  LJMPCL80</p><p>  Y1:LJMPMF3</p><p>  ;*********************************************</p><p>  ;對時鐘的分針數(shù)進

79、行減一操作</p><p>  K31:MOV7BH,R3</p><p>  MOV7CH,R4</p><p>  K310:CJNER3,#00H,DFG</p><p>  MOV7BH,#09H</p><p>  CJNER4,#00H,DFG1</p>

80、<p><b>  LJMPDFG2</b></p><p>  DFG1:DEC7CH</p><p><b>  LJMPDFG0</b></p><p>  DFG2:MOV7CH,#05H</p><p><b>  LJMPDFG0</b>

81、;</p><p>  DFG:DEC7BH</p><p>  DFG0:MOVR3,7BH</p><p>  MOVR4,7CH</p><p>  CD80:MOVR2,#26H</p><p>  CD8:LCALLDIR</p><p><

82、b>  LCALLKEY</b></p><p>  JB20H.0,T03 ;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,Y11 ;選擇調(diào)整時鐘的時針數(shù)</p><p>  JB20H.2,K21 ;對時鐘的分針數(shù)進行加一操作</p><p>  JB

83、20H.3,K310 ;對時鐘的分針數(shù)進行減一操作</p><p>  DJNZR2,CD8</p><p><b>  LJMPCD80</b></p><p>  Y11:LJMPK11 ;選擇調(diào)整時鐘的時針數(shù)</p><p>  ;*********************

84、************************</p><p>  ;對時鐘的時針數(shù)進行加一操作</p><p>  K22:MOV7EH,R5</p><p>  MOV7FH,R6</p><p>  K220:MOV21H,7FH</p><p>  JB21H.1,I1</p

85、><p>  CJNER5,#09H,ISG</p><p>  MOV7EH,#00H</p><p><b>  INC7FH</b></p><p>  MOVR6,7FH</p><p>  CJNER6,#03H,ISG0</p><p&

86、gt;  MOV7FH,#00H</p><p><b>  LJMPISG0</b></p><p>  I1:CJNER5,#03H,ISG</p><p>  MOV7EH,#00H</p><p>  MOV7FH,#00H</p><p>  LJMPI

87、SG0</p><p>  ISG:INC7EH</p><p>  ISG0:MOVR5,7EH</p><p>  MOVR6,7FH</p><p>  CL90:MOVR2,#26H</p><p>  CL9:LCALLDIR</p><p>&

88、lt;b>  LCALLKEY</b></p><p>  JB20H.0,T03</p><p>  JB20H.1,Y1;選擇調(diào)整時鐘的秒針數(shù)</p><p>  JB20H.2,K220;對時鐘的時針數(shù)進行加一操作</p><p>  JB20H.3,K32;對時鐘的時針

89、數(shù)進行減一操作</p><p>  DJNZR2,CL9</p><p><b>  LJMPCL90</b></p><p>  T03:LJMPKA ;重新進入時鐘運行狀態(tài)</p><p>  ;*********************************************<

90、/p><p>  ;對時鐘的時針數(shù)進行減一操作</p><p>  K32:MOV7EH,R5</p><p>  MOV7FH,R6</p><p>  K320:MOVA,7FH</p><p><b>  JZD1</b></p><p>  

91、CJNER5,#00H,DSG</p><p>  MOV7EH,#09H</p><p>  CJNER6,#00H,DSG1</p><p><b>  LJMPDSG2</b></p><p>  D1:CJNER5,#00H,DSG</p><p>  

92、DSG2:MOV7EH,#03H</p><p>  MOV7FH,#02H</p><p>  LJMPDSG0</p><p>  DSG1:DEC7FH</p><p>  LJMPDSG0</p><p>  DSG:DEC7EH</p><p>  D

93、SG0:MOVR5,7EH</p><p>  MOVR6,7FH</p><p>  CD90:MOVR2,#26H</p><p>  CD9:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T

94、03;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,Y2;選擇調(diào)整時鐘的秒針數(shù)</p><p>  JB20H.2,Y22;對時鐘的時針數(shù)進行加一操作</p><p>  JB20H.3,K320;對時鐘的時針數(shù)進行減一操作</p><p>  DJNZR2,CD9</p

95、><p><b>  LJMPCD90</b></p><p>  Y2:LJMPMF3</p><p>  Y22:LJMPK22</p><p>  ;*************************************************</p><p><b>

96、  ;中斷服務(wù)程序:</b></p><p>  TT:MOVTH1,#3CH;重賦計數(shù)初值</p><p>  MOVTL1,#0B0H</p><p>  DJNZR2,QUIT;中斷次數(shù)沒滿20次則跳出中斷</p><p>  MOVR2,#14H</p><p&

97、gt;  SETBP3.1;關(guān)蜂鳴器</p><p>  INC78H;秒個位加一</p><p>  MOVA,#0AH</p><p>  XRLA,78H</p><p>  JNZQUIT;秒個位不等于10則跳出中斷</p><p>  MOV78H

98、,#00H;秒個位重賦0</p><p>  INC79H;秒十位加一</p><p>  MOVA,#06H</p><p>  XRLA,79H</p><p>  JNZQUIT;秒十位不等于6則跳出中斷</p><p>  MOV79H,#00H

99、;秒十位重賦0</p><p>  INC7BH;分個位加一</p><p>  MOVA,#0AH</p><p>  XRLA,7BH</p><p>  JNZQUIT;分個位不等于10則跳出中斷</p><p>  MOV7BH,#00H;分個位重賦0&

100、lt;/p><p>  INC7CH;分十位加一</p><p>  MOVA,#06H</p><p>  XRLA,7CH</p><p>  JNZQUIT;分十位不等于6則跳出中斷</p><p>  MOV7CH,#00H;分十位重賦0</p>

101、<p>  CLRP3.1;蜂鳴器整點報時</p><p>  MOV21H,7FH </p><p>  JB21H.1,X1;查時十位狀態(tài)</p><p><b>  INC7EH</b></p><p>  MOVA,#0AH</p>

102、;<p>  XRLA,7EH</p><p>  JNZQUIT;時個位不等于10則跳出中斷</p><p>  MOV7EH,#00H</p><p><b>  LJMPX2</b></p><p>  X1:INC7EH</p><p>

103、  MOVA,#04H</p><p>  XRLA,7EH</p><p>  JNZQUIT;時個位不等于4則跳出中斷</p><p>  MOV7EH,#00H</p><p>  X2:INC7FH</p><p>  MOVA,#03H</p>

104、<p>  XRLA,7FH</p><p>  JNZQUIT;時十位不等于3則跳出中斷</p><p>  MOV7FH,#00H</p><p>  QUIT:RETI;中斷返回</p><p>  ;****************************************

105、*****</p><p>  ;鍵盤掃描子程序:鍵值在內(nèi)部RAM 20H單元中</p><p>  KEY:PUSHACC</p><p>  LCALLKEYCL ;調(diào)P1口數(shù)據(jù)處理子程序</p><p>  JZFH;判斷鍵是否按下</p><p>  LCALLDIR

106、;調(diào)顯示子程序去抖動</p><p>  LCALLDIR</p><p>  JZFH;確認鍵是否真的按下</p><p>  MOVB,20H;保存取反后的鍵值</p><p>  KEYSF:LCALLKEYCL;調(diào)P1口數(shù)據(jù)處理子程序</p><p>  JZ

107、HF;判斷鍵是否釋放</p><p>  LCALLDIR;調(diào)顯示子程序延時</p><p>  LJMPKEYSF;等待鍵釋放</p><p>  HF:MOV20H,B;鍵值送20H保存</p><p>  FH:POPACC</p><p><b&

108、gt;  RET</b></p><p>  ;**********************************************</p><p>  ;P1口數(shù)據(jù)處理子程序</p><p>  KEYCL:MOVA,P1;讀P1口數(shù)據(jù)</p><p>  CPLA;P1口數(shù)據(jù)取反</

109、p><p>  MOV20H,A;保存取反后的鍵值</p><p><b>  RET</b></p><p>  ;********************************************</p><p>  ;數(shù)碼管顯示子程序入口:7FH,7EH,7DH,7CH,7BH,7AH,79H,78H

110、(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)</p><p>  DIR:PUSHDPH ;保護現(xiàn)場</p><p><b>  PUSHDPL</b></p><p><b>  PUSHACC</b></p><p><b>  

111、PUSHPSW</b></p><p>  SETBRS0;改變當前寄存器組為組01組</p><p>  CLRRS1;顯示緩沖存儲單元首地址</p><p>  MOVR0,#78H;從右至左顯示</p><p>  MOVR1,#0FEH</p><p>

112、;  MOVA,R1</p><p>  LED0:MOVP2,A ;送位控</p><p>  MOVDPTR,#BG;共陽數(shù)碼管字型代碼表首地址</p><p>  MOVA,@R0</p><p>  MOVCA,@A+DPTR</p><p>  MOV

113、P0,A;送段控</p><p>  LCALLDL;延時</p><p>  INCR0;獲得新的顯示緩沖單元地址</p><p>  MOVA,R1;位控碼送A</p><p>  JNBACC.7,LED1;循環(huán)沒有結(jié)束則繼續(xù)</p><p>  RL

114、A;獲得新的位控碼</p><p>  MOVR1,A;保存新的位控碼</p><p><b>  LJMPLED0</b></p><p>  LED1:POPPSW;恢復現(xiàn)場</p><p><b>  POPACC</b></p>

115、<p><b>  POPDPL</b></p><p><b>  POPDPH</b></p><p><b>  RET</b></p><p>  ;*****************************************************</p>

116、<p>  ;數(shù)碼管顯示子程序中所需的延時子程序</p><p>  DL:MOVR7, #02H</p><p>  DL1:MOVR6, #0FFH</p><p>  DL2:DJNZR6, DL2</p><p>  DJNZR7, DL1</p>&l

117、t;p><b>  RET</b></p><p>  ;*******************************************************</p><p>  BG0:DB0AH,0AH,0AH,0AH,0AH,0AH,0AH,0BH</p><p>  BG1:DB00H,00H,0CH,00H,0

118、0H,0CH,00H,00H</p><p>  BG:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0CH,0BFH;</p><p><b>  END</b></p><p>  4 設(shè)計結(jié)論、仿真結(jié)果、誤差分析、教學建議</p><p>  4.1

119、 設(shè)計課題的設(shè)計結(jié)論及使用說明</p><p>  本設(shè)計為基于單片機的電子鐘的設(shè)計。剛開始,我們很多地方理不清頭緒,無從下手,但通過認真研究設(shè)計課題,找書上網(wǎng)查資料買元件,確定基本設(shè)計方案,對所用芯片功能進行查找、調(diào)試,然后畫電路圖制PCB板、打孔、溶銅、焊接等,真的經(jīng)歷了許多困難,卻積累了很多寶貴的經(jīng)驗,本設(shè)計用2個四位一體的共陽數(shù)碼管做為顯示器,它顯示時間值;設(shè)計中有三個按鍵,其中S1為啟動/選擇調(diào)整位置

120、,S2為加控制鍵 S3為減控制鍵,當整點時間到時,蜂鳴器報警。這樣的結(jié)果與設(shè)計要求完全相符,本設(shè)計成功。完成了設(shè)計任務(wù)。</p><p>  4.2 設(shè)計課題的仿真結(jié)果</p><p>  在Proteus ISIS的Debug菜單中選擇Execute,運行程序,系統(tǒng)仿真結(jié)果如圖4.1與4.2所示。</p><p><b>  實現(xiàn)功能:</b&g

121、t;</p><p>  可調(diào)整運行的電子鐘具有三種工作狀態(tài):“P.”狀態(tài)、運行狀態(tài)、調(diào)整狀態(tài)。</p><p> ?。?)、“P.”狀態(tài),依靠上電或按復位鍵進入,在此狀態(tài)下,按S2、S3鍵均無效,</p><p>  按S1鍵有效,進入運行狀態(tài);</p><p>  (2)、運行狀態(tài),在此狀態(tài)下,按S2、S3鍵均無效,只有按S1鍵有效,按下

122、S1鍵后,退出運行狀態(tài),進入調(diào)整狀態(tài);</p><p> ?。?)、調(diào)整狀態(tài),按S1鍵進入時、分、秒的閃爍,在此狀態(tài)下,按S2(+1鍵)、</p><p>  S3(-1鍵)鍵均有效;調(diào)整結(jié)束后必須按S1鍵,即可退出調(diào)整狀態(tài),進入</p><p>  運行狀態(tài)。在調(diào)整狀態(tài)時長按S2、S3時可以連加及連減。</p><p>  時間顯示格式為:

123、時-分-秒; </p><p>  圖4.1 “P.”運行狀態(tài)仿真</p><p>  圖4.2 時鐘運行狀態(tài)仿真</p><p>  4.3 設(shè)計課題的誤差分析</p><p>  該電子鐘在運行中存在一定的誤差,誤差產(chǎn)生有三種可能,首先是采用的計時方案是軟件計時的,計時優(yōu)勢利用中斷來實現(xiàn)。而當電子鐘運行時間1秒時,又得去執(zhí)行中斷程序

124、,這個過程是需要時間的,所以就產(chǎn)生了一定的誤差,當然這個誤差是避免不了的,其次還有硬件系統(tǒng)也有一定的影響。第三,設(shè)計用到11.0592MHz的晶振,計算是滿20次為一秒鐘,但實際會慢很多。</p><p><b>  4.4 設(shè)計體會</b></p><p>  本次課程設(shè)計,讓我受益匪淺,認識到了自己的許多缺點和不足,使我深深的感受到了理論聯(lián)系實際的必要性及其重要

125、性。在我們以往的學習過程中,我們刻意地去加強理論的基礎(chǔ),對于一個程序我們只求它在運行時沒有出錯,我們便以為我們的計劃成功了豈不知它能否在硬件結(jié)構(gòu)中得以實現(xiàn)則是另外一回事,這就要求我們的動手能力,如果無法使軟件與硬件實現(xiàn)有機的結(jié)合,那么再好的程序也只是一堆廢字符。</p><p><b>  4.5 教學建議</b></p><p>  經(jīng)過一個學期王韌老師教導的的單

126、片機學習,我掌握了很多單片機學習的寶貴經(jīng)驗,尤其在編程的思路和PCB實物的制作上面。編程思路是整個程序的靈魂,沒有編程思路,程序就不會編出來,就失去了編程的意義。在開始編程之前,想好編程的思路,編程能力才會提高,編程的過程才會順暢,程序的質(zhì)量才會提高。</p><p><b>  參考文獻</b></p><p>  [1] 代啟化.基于Proteus的電路設(shè)計與仿真

127、[J].現(xiàn)代電子技術(shù).2006,第19期.</p><p>  [2] 劉文秀.單片機應(yīng)用系統(tǒng)仿真的研究[J].現(xiàn)代電子技術(shù).2005, 第286 期.</p><p>  [3] 曹巧媛.單片機原理及應(yīng)用[M],北京:電子工業(yè)出版社,1997.7.</p><p>  [4] 張洪潤.蘭清華,單片機應(yīng)用技術(shù)教程[M],北京:清華大學出版社,1997.11.<

溫馨提示

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

評論

0/150

提交評論