版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《單片機(jī)技術(shù)》電子鐘課程設(shè)計(jì)---數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)——數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)數(shù)字電子鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字鐘電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘設(shè)計(jì)
- 單片機(jī)電子鐘課程設(shè)計(jì)---數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電子鐘的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的數(shù)字電子鐘
- 電子鐘單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--多功能數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)— 多功能數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--電子鐘
- 單片機(jī)課程設(shè)計(jì)(電子鐘)
- 電子時(shí)鐘數(shù)字電子鐘單片機(jī)課程設(shè)計(jì)
- 電子鐘課程設(shè)計(jì)--基于單片機(jī)的電子鐘設(shè)計(jì)
- 課程設(shè)計(jì)----基于單片機(jī)的數(shù)字電子鐘設(shè)計(jì)
- 單片機(jī)數(shù)字時(shí)鐘課程設(shè)計(jì)--單片機(jī)多功能電子鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論