單片機(jī)課程設(shè)計(jì)數(shù)字電子鐘_第1頁
已閱讀1頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

3、;軟件設(shè)計(jì)</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>  顯示對(duì)應(yīng)的拉丁字符的拼音</p><p>  字典 - 查看字典詳細(xì)內(nèi)容</p>

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

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

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

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

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

11、……………………………26</p><p>  教學(xué)建議……………………………………………………………………26</p><p>  參考文獻(xiàn) ……………………………………………………………………………27</p><p>  致 謝 ……………………………………………………………………………28</p><p>  附 錄 ……

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

29、--------------------------------------</p><p>  ;本電子鐘實(shí)現(xiàn)24小時(shí)制,8位數(shù)碼管顯示時(shí)分秒,可整點(diǎn)報(bào)時(shí)</p><p>  ;顯示格式:00-00-00(設(shè)置小時(shí)十位為0時(shí),不顯示)</p><p>  ;通過3只按鍵來調(diào)整時(shí)間</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ù)碼管段選信號(hào),P2口輸出數(shù)碼管位選信號(hào);晶振12MHz</p><p>  ;P3.1為蜂鳴器發(fā)聲報(bào)時(shí)</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 ;定時(shí)器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ū)單元個(gè)數(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 ;計(jì)數(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>  ;電子鐘進(jìn)入啟動(dòng)/調(diào)整狀態(tài)</p><p>  K0:MOVDPTR,#BG1 ;顯示0時(shí)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 ;開啟定時(shí)器,電子鐘進(jìn)入啟動(dòng)狀態(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)閉定時(shí)器電子鐘進(jìn)入準(zhǔn)備調(diào)整狀態(tài)</p><p>

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

44、MPK00</b></p><p>  ;****************************************************</p><p>  ;選擇調(diào)整時(shí)鐘的秒針數(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;重新進(jìn)入時(shí)鐘運(yùn)行狀態(tài)</p

47、><p>  JB20H.1,K10;選擇調(diào)整時(shí)鐘的分針數(shù)</p><p>  JB20H.2,K20;對(duì)時(shí)鐘的秒針數(shù)進(jìn)行加一操作</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;重新進(jìn)入時(shí)鐘

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

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

51、*********************************</p><p>  ;選擇調(diào)整時(shí)鐘的分針數(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;重新進(jìn)入時(shí)鐘運(yùn)行狀態(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;重新進(jìn)入時(shí)鐘運(yùn)行狀態(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í)鐘的時(shí)針數(shù)</p><p>  T21:LJMPK21;對(duì)時(shí)鐘的分針數(shù)進(jìn)行加一操作</p><p>  T31:LJMPK31;對(duì)時(shí)鐘的分針數(shù)進(jìn)行減一操作</p><p>  ;***

57、******************************************</p><p>  ;對(duì)時(shí)鐘的秒針數(shù)進(jìn)行加一操作</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 ;重新進(jìn)入時(shí)鐘運(yùn)行狀態(tài)</p><p>  JB20H.1,K10 ;選擇調(diào)整時(shí)鐘的分針數(shù)</p><p>  JB20H.2,K200 ;對(duì)時(shí)鐘的秒針數(shù)進(jìn)行加一操作</p><p>  JB20H.3

61、,K30 ;對(duì)時(shí)鐘的秒針數(shù)進(jìn)行減一操作</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>  ;對(duì)時(shí)鐘的秒針數(shù)進(jìn)行減一操作</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;對(duì)時(shí)鐘的秒針數(shù)進(jìn)行加一操作</p><p>  JB20H.3,K300;對(duì)時(shí)鐘的秒針數(shù)進(jìn)行減一操作</p><p>  DJNZR2,CD7</p><p><b>  LJMPCD70</b></p><p>  T10:LJMPK

67、10;選擇調(diào)整時(shí)鐘的分針數(shù)</p><p>  T02:LJMPKA ;重新進(jìn)入時(shí)鐘運(yùn)行狀態(tài)</p><p>  ;***************************************************</p><p>  ;選擇調(diào)整時(shí)鐘的時(shí)針數(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;重新進(jìn)入時(shí)鐘運(yùn)行狀態(tài)</p><p>  JB20H.

70、1,Y1;選擇調(diào)整時(shí)鐘的秒針數(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;重新進(jìn)入時(shí)鐘運(yùn)行狀態(tài)</p><p>  JB20H.1,Y1

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

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

74、***********************************</p><p>  ;對(duì)時(shí)鐘的分針數(shù)進(jìn)行加一操作</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;重新進(jìn)入時(shí)鐘運(yùn)行狀態(tài)</p><p>  JB20H.1,K11;選擇調(diào)整時(shí)鐘的時(shí)針數(shù)</p><p>  JB20H.2,K210;對(duì)時(shí)鐘的分針數(shù)進(jìn)行加一操作</p><p>  JB20H.3,K31

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

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 ;重新進(jìn)入時(shí)鐘運(yùn)行狀態(tài)</p><p>  JB20H.1,Y11 ;選擇調(diào)整時(shí)鐘的時(shí)針數(shù)</p><p>  JB20H.2,K21 ;對(duì)時(shí)鐘的分針數(shù)進(jìn)行加一操作</p><p>  JB

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

84、************************</p><p>  ;對(duì)時(shí)鐘的時(shí)針數(shù)進(jìn)行加一操作</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í)鐘的秒針數(shù)</p><p>  JB20H.2,K220;對(duì)時(shí)鐘的時(shí)針數(shù)進(jìn)行加一操作</p><p>  JB20H.3,K32;對(duì)時(shí)鐘的時(shí)針

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

90、/p><p>  ;對(duì)時(shí)鐘的時(shí)針數(shù)進(jìn)行減一操作</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;重新進(jìn)入時(shí)鐘運(yùn)行狀態(tài)</p><p>  JB20H.1,Y2;選擇調(diào)整時(shí)鐘的秒針數(shù)</p><p>  JB20H.2,Y22;對(duì)時(shí)鐘的時(shí)針數(shù)進(jìn)行加一操作</p><p>  JB20H.3,K320;對(duì)時(shí)鐘的時(shí)針數(shù)進(jìn)行減一操作</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;重賦計(jì)數(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;秒個(gè)位加一</p><p>  MOVA,#0AH</p><p>  XRLA,78H</p><p>  JNZQUIT;秒個(gè)位不等于10則跳出中斷</p><p>  MOV78H

98、,#00H;秒個(gè)位重賦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;分個(gè)位加一</p><p>  MOVA,#0AH</p><p>  XRLA,7BH</p><p>  JNZQUIT;分個(gè)位不等于10則跳出中斷</p><p>  MOV7BH,#00H;分個(gè)位重賦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;蜂鳴器整點(diǎn)報(bào)時(shí)</p><p>  MOV21H,7FH </p><p>  JB21H.1,X1;查時(shí)十位狀態(tài)</p><p><b>  INC7EH</b></p><p>  MOVA,#0AH</p>

102、;<p>  XRLA,7EH</p><p>  JNZQUIT;時(shí)個(gè)位不等于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;時(shí)個(gè)位不等于4則跳出中斷</p><p>  MOV7EH,#00H</p><p>  X2:INC7FH</p><p>  MOVA,#03H</p>

104、<p>  XRLA,7FH</p><p>  JNZQUIT;時(shí)十位不等于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)顯示子程序去抖動(dòng)</p><p>  LCALLDIR</p><p>  JZFH;確認(rèn)鍵是否真的按下</p><p>  MOVB,20H;保存取反后的鍵值</p><p>  KEYSF:LCALLKEYCL;調(diào)P1口數(shù)據(jù)處理子程序</p><p>  JZ

107、HF;判斷鍵是否釋放</p><p>  LCALLDIR;調(diào)顯示子程序延時(shí)</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 ;保護(hù)現(xiàn)場</p><p><b>  PUSHDPL</b></p><p><b>  PUSHACC</b></p><p><b>  

111、PUSHPSW</b></p><p>  SETBRS0;改變當(dāng)前寄存器組為組01組</p><p>  CLRRS1;顯示緩沖存儲(chǔ)單元首地址</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;延時(shí)</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;恢復(fù)現(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ù)碼管顯示子程序中所需的延時(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è)計(jì)結(jié)論、仿真結(jié)果、誤差分析、教學(xué)建議</p><p>  4.1

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

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

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

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論