版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 近年來隨著計算機在社會領域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關的系統(tǒng),越來越廣泛地應用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領域。單片機往往是作為一個核心部件來使用,在根據(jù)具體硬件結(jié)
2、構(gòu),以及針對具體應用對象特點的軟件結(jié)合,以作完善。</p><p> 本次做的數(shù)字鐘是以單片機(AT89C51)為核心,結(jié)合相關的元器件(共陰極LED數(shù)碼顯示器、數(shù)碼管驅(qū)動器74LS164等),再配以相應的軟件,是它具有星期,時,分,秒顯示的功能,并且星期,時,分,秒還可以調(diào)整。通過電子數(shù)字鐘的設計進一步了解和掌握單片機原理與使用方法。</p><p> 關鍵詞:數(shù)字電子鐘 單片機
3、AT89C51 共陰極LED數(shù)碼顯示器 74LS164驅(qū)動芯片 </p><p><b> 系統(tǒng)總體方案設計</b></p><p> 本次設計課題為智能電子數(shù)字時鐘的設計,采用AT89C51單片機內(nèi)部定時器實現(xiàn)數(shù)字時鐘的定時功能,采用單片機的串口和74LS164擴展并口實現(xiàn)LED靜態(tài)驅(qū)動。電子時鐘系統(tǒng)的整體框圖如圖2-1所示。</p>
4、<p> 圖2-1 電子時鐘的整體框圖</p><p> 2.1主控芯片AT89C51簡介</p><p> AT89C51是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指
5、令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89C51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。其引腳圖如圖2-2所示。</p><p> 圖2-2 AT89C51引腳圖</p><p> 2.2.電子時鐘功能及工作原理</p><p> 2.2.1電子時鐘功能及方案介紹</p
6、><p> 電子時鐘設置6個按鍵通過程序控制來完成電子時鐘的啟、停及時間調(diào)整。調(diào)整時鐘時只設計了星期加鍵、時加鍵、分加鍵以及秒加鍵,沒有設置減秒減分減時鍵,可通過循環(huán)調(diào)節(jié)得到正確的調(diào)節(jié)數(shù)值。</p><p> S/T鍵控制電子時鐘的啟、停; H鍵調(diào)整時;</p><p> M鍵調(diào)整分; S鍵調(diào)
7、整秒;</p><p> W鍵設置星期; RES鍵復位鍵。</p><p> 可調(diào)整運行的電子時鐘具有三種工作狀態(tài):“P.”狀態(tài)、運行狀態(tài)、調(diào)整狀態(tài)。</p><p> (1)“P.”狀態(tài),依靠上電或按復位鍵RES進入。在此狀態(tài)下,按W、H、M、S鍵均無效,按S/H鍵有效,進入運行狀態(tài);</p>&
8、lt;p> ?。?)運行狀態(tài),按奇數(shù)次S/H鍵進入。在此狀態(tài)下,按W、H、M、S鍵均無效,只有按S/H鍵有效,按下S/H鍵后,退出運行狀態(tài),進入調(diào)整狀態(tài);</p><p> (3)調(diào)整狀態(tài),按偶數(shù)次S/H鍵進入。在此狀態(tài)下,按S/H、W、H、M、S鍵均有效,如按下S/H鍵,則退出調(diào)整狀態(tài),進入運行狀態(tài);按下W、H、M、S鍵,則分別對星期、時、分、秒加1,調(diào)整結(jié)束后必須按S/H鍵,即可退出調(diào)整狀態(tài),進入運行
9、狀態(tài);</p><p> 基本功能要求:“P.”穩(wěn)定地顯示在LED顯示器的最左端數(shù)碼管(LED6)上,無S/H鍵按下(在“P.”狀態(tài)下,按下W、H、M、S鍵無效),則不進入電子時鐘的運行狀態(tài),繼續(xù)顯示“P.”。按下S/H 鍵后,電子時鐘以起始時間:0星期00時00分00秒開始運行。再次按下S/H 鍵后,電子時鐘退出運行狀態(tài),進入調(diào)整狀態(tài),利用W、H、M、S鍵把電子時鐘的顯示時間修改為當前實時時間,時間修改正確后
10、可再次按下S/H鍵,電子時鐘則退出調(diào)整狀態(tài),進入運行狀態(tài)。</p><p> 計時方案:利用AT89C51單片機內(nèi)部的定時/計數(shù)器進行中斷定時,配合軟件延時實現(xiàn)星期、時、分、秒的計時。</p><p> 鍵盤/顯示方案:AT89C51的P3.0、P3.1口外接一個74LS164擴展芯片,用74LS164芯片的八個端口作LED的段碼輸出口。采用靜態(tài)顯示方式,通過對LED八個端口輸入的不同
11、的二進制數(shù)據(jù)使得它的時間顯示也不同,從而可以得到我們所要的時間顯示。對于四十個管腳的AT89C51來說,LED八個段選管腳太多,于是我選用74LS164芯片來擴展主芯片的管腳。74LS164是數(shù)據(jù)移位寄存器,具有串行輸入,并行輸出的特點。</p><p> P0.0~P0.4端外接五個按鍵S/H、W、H、M、S,S/H鍵控制電子時鐘的啟、停,W、H、M、S鍵分別調(diào)整星期、時、分、秒。RST口接一個復位鍵RES,
12、當發(fā)現(xiàn)系統(tǒng)運行不正常,進入死循環(huán),顯示數(shù)值嚴重失真時,按復位鍵,其內(nèi)部功能為使單片機復位,強行使單片機從頭開始運行,跳出出錯區(qū)。</p><p> 2.2.2時鐘計時的基本方法</p><p> 利用AT89C51單片機的可編程定時/計數(shù)器、中斷系統(tǒng)來實現(xiàn)時鐘計數(shù)。</p><p> (1)計數(shù)初值計算:把定時器設為工作方式1,定時時間為50ms,則計數(shù)溢出2
13、0次即得時鐘計時最小單位秒,而計數(shù)可用軟件方法實現(xiàn)。假設使用T/C0,方式1,50ms定時,fosc=12MHz。則初值X滿足(216-X)×1/12MHz×12μs =50000μs</p><p> X=15536→0011110010110000→3CB0H,則TH0=3CH,TL0=0BOH。</p><p> (2)采用中斷方式進行溢出次數(shù)累計,計滿20次
14、為秒計時(1秒),就讓秒計數(shù)單元加1,當秒計數(shù)達到60時,就自動返回到0,重新秒計數(shù);</p><p> (4)從秒到分,從分到時和從時到星期的計時是通過累加和數(shù)值比較實現(xiàn)。</p><p> 2.2.3電子時鐘的時間顯示</p><p> 電子時鐘的時鐘時間在7個數(shù)碼管上進行顯示,因此,在內(nèi)部RAM中設置顯示緩沖區(qū)共7個單元,數(shù)據(jù)存放在30H-37H內(nèi)存單元
15、中。其中30H、31H單元存放秒數(shù)據(jù),32H-33H單元存放分數(shù)據(jù),34H-35H單元存放時數(shù)據(jù),36H單元存放星期數(shù)據(jù)。如表2-1所示。</p><p> 表2-1數(shù)碼管的數(shù)據(jù)存儲表</p><p><b> 系統(tǒng)硬件設計</b></p><p> 本系統(tǒng)共有兩部分構(gòu)成,其中硬件部分由電源輸入部分、晶振部分、鍵盤輸入部分、復位部分、顯示
16、部分、定時部分組成,軟件部分對應的由主程序、初始化程序、LED顯示程序、鍵盤掃描程序、鍵功能程序、定時中斷程序等組成。單片機上位復電后,從頭開始執(zhí)行程序,時鐘頻率由外部晶振頻率提供。單片機控制整個裝置的運行,對時鐘芯片初始化;讀時鐘芯片;判斷時鐘芯片是否更新;對驅(qū)動芯片74LS164操作及數(shù)碼管的顯示;鍵盤掃描等。</p><p> 3.1電子時鐘電路原理圖</p><p> 電子時鐘
17、的電路圖由電源輸入電路、晶振電路、鍵盤輸入電路、復位電路等電路組成。本系統(tǒng)采用AT89C51單片機作為主控制芯片,LED顯示采用了靜態(tài)掃描方式實現(xiàn),采用共陰極數(shù)碼管,由芯片74LS164進行驅(qū)動。為了提高計時精度,所采用的晶振頻率為12MHz。</p><p> 電子時鐘原理圖 (見附錄)。</p><p> 3.2電源輸入的電路原理圖</p><p> 電子
18、時鐘主控制部分電源需要用5V直流電源供電,把頻率為50Hz、有效值為220V過電源變壓器、整流電路、濾波電路、穩(wěn)壓電路轉(zhuǎn)換成穩(wěn)定的直流電壓。由于輸入電壓為電網(wǎng)電壓,一般情況下所需直流電壓的數(shù)值和電網(wǎng)電壓的有效值相差較大,因而電源變壓器的作用顯現(xiàn)出來起到降壓作用。降壓后還是交流電壓,所以需要整流電路把交流電壓轉(zhuǎn)換成直流電壓。由于經(jīng)整流電路整流后的電壓含有較大的交流分量,會影響到負載電路的正常工作。需通過低通濾波電路濾波,使輸出電壓平滑。
19、穩(wěn)壓電路的功能是使輸出直流電壓基本不受電網(wǎng)電壓波動和負載電阻變化的影響,從而獲得穩(wěn)定性足夠高的直流電壓。本電路使用集成穩(wěn)壓芯片7805解決了電源穩(wěn)壓問題,如圖3-1所示。</p><p> 圖 3-1 電源輸入的電路原理圖</p><p><b> 3.3晶振電路</b></p><p> 晶振電路如圖3-2所示。XTAL1和XTAL2分
20、別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。</p><p> 圖3-2 晶振電路的電路圖</p><p> 3.4 整點報時電路</p><p> 3.
21、4.1報時電路的原理</p><p> ?。?)生活中我們常常到各種各樣的報警聲,例如“嘀、嘀、…”就是常見的一種聲音報警聲,但對于這種報警聲,嘀0.2秒鐘,然后斷0.2秒鐘,如此循環(huán)下去,假設嘀聲的頻率為1KHz,則報警聲時序圖如圖3-3所示:</p><p> 圖3-3報警聲時序圖</p><p> ?。?)由于要產(chǎn)生上面的信號,把上面的信號分成兩部分,一部分
22、為1KHZ方波,占用時間為0.2秒;另一部分為電平,也是占用0.2秒;因此,我們利用單片機的定時/計數(shù)器T0作為定時,可以定時0.2秒;同時,也要用單片機產(chǎn)生1KHZ的方波,對于1KHZ的方波信號周期為1ms,高電平占用0.5ms,低電平占用0.5ms,因此也采用定時器T0來完成0.5ms的定時;最后,可以選定定時/計數(shù)器T0的定時時間為0.5ms,而要定時0.2秒則是0.5ms的400倍,也就是說以0.5ms定時400次就達到0.2秒
23、的定時時間了。</p><p> 3.4.2電路的接法</p><p> LM386是一種音頻集成功放,具有自身功耗低、電壓增益可調(diào)整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點,廣泛應用于錄音機和收音機之中。第一級為差分放大電路,使用鏡像電流源作為差分放大電路有源負載,可使單端輸出電路的增益近似等于雙端輸出電容的增益;第二級為共射放大電路,以增大放大倍數(shù);第三級可以消除交越失真。
24、</p><p> (1)把“單片機系統(tǒng)”區(qū)域中的P3.4端口用導線連接到“音頻放大模塊LM386”區(qū)域中的SPK IN端口上。</p><p> (2)在“音頻放大模塊”區(qū)域中的SPK OUT端口上接上一個8歐或者是16歐的喇叭; </p><p> 圖 3-4 報時電路原理圖</p><p> 3.5 鍵盤輸入電路</p&g
25、t;<p> 鍵盤可分為兩類:非編碼鍵盤和編碼鍵盤;常見的非編碼鍵盤有兩種結(jié)構(gòu):獨立式鍵盤和矩陣式鍵盤。本設計采用獨立式鍵盤作為電子時鐘的按鍵。單片機P1.0-P1.4接按鍵S/H、W、H、M、S,RET接按鍵RES。按鍵電路如圖3-5所示。</p><p><b> 圖3-5 按鍵電路</b></p><p><b> 3.6顯示電路&
26、lt;/b></p><p> 顯示驅(qū)動芯片的引腳功能如圖3-6所示。該芯片具有串行輸入,并行輸出的特點,當單片機驅(qū)動的數(shù)碼管較多時,用此芯片可以省去單片機很多引腳。</p><p><b> SN74LS164</b></p><p> 圖3-6 顯示驅(qū)動芯片</p><p><b> 3.7復
27、位電路</b></p><p> 電路如圖3-6所示,當復位鍵S1被按下時,電容C1開始充電,按鍵放開時,C1開始放電,電流經(jīng)電阻R3流向接地端,此時單片機復位端RST電平被拉高,當放電時間常數(shù)C1×R3 > 2Tcy(Tcy時為機器周期)即給單機機持續(xù)兩個機器周期的高電平時單片機被復位。</p><p><b> 圖3-7 復位電路</b&
28、gt;</p><p><b> 系統(tǒng)軟件設計</b></p><p> 4.1電子時鐘程序流程框圖</p><p> 4.1.1主程序流程框圖</p><p> 主程序功能主要是初始化、正常顯示時間和判斷功能轉(zhuǎn)換鍵。初始化包括數(shù)據(jù)堆棧區(qū)、定時/計數(shù)器的初始化、AT89C51芯片的初始化及時間、顯示數(shù)據(jù)的初始化。
29、定時/計數(shù)器的初始化:包括對TMOD、TCON以及根據(jù)定時時間對時間初值的設置。顯示時間調(diào)用顯示子程序。當P1.0端口的S/H鍵按下時,轉(zhuǎn)入調(diào)時功能。主程序流程圖如圖4-1所示。</p><p> 圖4-1 主程序流程框圖</p><p> 4.1.2鍵掃子程序流程框圖</p><p> 鍵盤掃描程序是通過CPU來對外圍鍵盤電路進行查詢。該程序能夠解決的問題有
30、:</p><p> ?。?)是否有鍵按下;</p><p> ?。?)若有鍵按下,判斷是哪一個鍵并確定其鍵值或鍵號;</p><p> ?。?)去抖動:一個電壓信號是通過機械觸點的閉合、斷開過程來實現(xiàn)信號傳遞的。抖動時間一般為5~10ms。按鍵的穩(wěn)定閉合期為幾百毫秒到幾秒鐘時間。為了保證CPU對按鍵閉合僅做一次鍵輸入處理,必須去除抖動影響,通常硬件或軟件延時10m
31、s處理。</p><p> 去抖之后再次進行查詢。然后通過按鍵的鍵號執(zhí)行相應的功能。鍵掃子程序流程框圖圖4-2所示。</p><p> 圖4-2 鍵掃子程序流程框圖</p><p> 4.1.3定時中斷程序流程框圖</p><p> 定時中斷是電子時鐘的核心。定時/計數(shù)器T0和T1的工作方式設置為:</p><p&
32、gt; ?。?)T0是工作在計數(shù)狀態(tài)下,對輸入的頻率信號進行計數(shù),但對工作在計數(shù)狀態(tài)下的T0,最大計數(shù)值為fOSC/24,所以T1工作在定時狀態(tài)下,每定時1秒中到,就停止T0的計數(shù),而從T0的計數(shù)單元中讀取計數(shù)的數(shù)值,然后進行數(shù)據(jù)處理。</p><p> (2)T1工作在定時狀態(tài)下,最大定時時間為65ms,達不到1秒的定時,所以采用定時50ms,共定時20次,即可完成1秒的定時功能。</p>&l
33、t;p> 時鐘的最小計時單位是秒,60s進位為1min,60min進位為1h,24h進位為1天。T0用于產(chǎn)生最小單位1s,定時時間為50ms,中斷累計20次即為1s。計數(shù)單元中每逢60進位。定時中斷程序流程如圖4-3所示。</p><p> 圖4-3 中斷服務程序流程框圖</p><p> 4.1.4調(diào)時程序流程框圖</p><p> 進行時間調(diào)整時,
34、正在被調(diào)整的時間的間隔符以閃爍的形式表現(xiàn)。調(diào)整時間的方法是:按下S/H鍵,進入調(diào)時狀態(tài),按下W鍵,星期單元加1,加至8時變?yōu)?(7過后即顯示1,不顯示8);按下H鍵,時單元加1,在加至24時變?yōu)?0(23過后即顯示0,不顯示24);按下M鍵,分單元加1,加至60時變?yōu)?0(59過后即顯示00,不顯示60);按下S鍵,秒單元加1,秒如分一樣,加至60時變?yōu)?0,在調(diào)節(jié)好時間后,按下S/H鍵,保存操作者對時鐘時間的修改并退出調(diào)時模式進入正常
35、運行狀態(tài),時間正常顯示。調(diào)時程序流程圖如圖4-4所示。</p><p><b> 4.2 程序清單</b></p><p> 本設計的程序主要采用大學所學的知識,參考課本《單片機原理及應用》一書,編寫而成。匯編語言是計算機提供給用戶的最快最有效的語言,也是能夠利用計算機的所有硬件特性并能夠直接控制硬件的唯一語言。</p><p> 程序當
36、中包含P點顯示、鍵掃子程序、鍵功能子程序、顯示程序、中斷定時程序等一些子程序,并且在程序中添加了適當?shù)臉俗?。具體程序如下:</p><p> ORG 0000H</p><p> AJMP MAIN</p><p> ORG 000BH</p><p> LJMP INTT0<
37、/p><p> ORG 0030H</p><p> MAIN: MOV SP, #60H ;確立堆棧區(qū)</p><p> MOV PSW, #00H ;</p><p> MOV R0,
38、 #20H ;RAM區(qū)首地址</p><p> MOV R7, #5FH ;RAM區(qū)單元個數(shù)</p><p> QL: MOV @R0, #00H ;RAM清零</p><p> INC R0
39、</p><p> DJNZ R7, QL</p><p> MOV IP, #02H ;IP初始化,優(yōu)先定時器0</p><p> MOV IE, #82H ;IE初始化, </p><
40、p> MOV TMOD, #01H ;定時器0方式1工作</p><p> LCALL PP ;調(diào)P.子程序</p><p> NEXT: LCALL KEY ;按鍵檢測子程序</p>
41、;<p> JB ACC.0, RUNF ;S/H鍵按下運行</p><p> LCALL DISP ;調(diào)用顯示子程序</p><p> SJMP NEXT</p><p> RUNF: LCALL TIM
42、E ;開電子時鐘</p><p> JK: LCALL DISP ;調(diào)用顯示子程序</p><p> LCALL KEY ;按鍵檢測子程序</p><p> JZ
43、 JK</p><p> LCALL ANKEY</p><p> LCALL DISP ;調(diào)用顯示子程序</p><p> SJMP JK</p><p><b> END</b></p><p> ;
44、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;;;;;;;;;;; P點顯示 ;;;;;;;;;;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> PP: MOV R0, #30H
45、 ;P點編碼送寄存器</p><p> MOV R7, #07H</p><p> PPP: MOV @R0, #10</p><p> INC R0</p><p> DJNZ R7, PPP</p>
46、<p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;;;;;;;;;;; 鍵掃子程序 ;;;;;;;;;;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p
47、><p> KEY: LCALL KEYS ;調(diào)鍵值處理子程序</p><p> JZ EXIT ;沒有鍵按下轉(zhuǎn)到返回</p><p> LCALL DISP ;調(diào)顯示去
48、抖動</p><p> LCALL KEYS </p><p> JZ EXIT</p><p> MOV B, 20H ;保存鍵值</p><p> KEYSF: LCALL KEYS
49、 ;調(diào)鍵值處理子程序</p><p> JZ KEYY ;鍵釋放,轉(zhuǎn)到恢復鍵值</p><p> LCALL DISP ;調(diào)顯示子程序延時</p><p> AJMP KEYSF
50、 ;等到鍵釋</p><p> KEYY: MOV A, B ;鍵值送20H單元保存</p><p> EXIT: RET ;返回</p><p> KEYS: MOV P1,
51、#0FFH ;先向P1口寫1</p><p> MOV A, P1 ;P1口值送累加器A</p><p> CPL A ;A值取反</p><p> ANL A,
52、 #0FH ;保存P1口的低4位</p><p> MOV 20H, A ;A值送20H保存</p><p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p&
53、gt;<p> ;;;;;;;;;;; 鍵功能子程序 ;;;;;;;;;;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ANKEY: CLR EA ;關中斷</p><p> CHECK: JB
54、 TR0, YXZ ;判斷是否運行</p><p> K0: CJNE A, #01H, K1</p><p> AJMP RUN ;轉(zhuǎn)運行</p><p> K1: CJNE
55、 A, #02H, K2</p><p> AJMP KEY1 ;轉(zhuǎn)星期調(diào)整</p><p> K2: CJNE A, #04H, K3</p><p> AJMP KEY2
56、 ;轉(zhuǎn)時調(diào)整</p><p> K3: CJNE A, #08H, K4</p><p> AJMP KEY3 ;轉(zhuǎn)分調(diào)整</p><p> K4: CJNE A, #10H, OUT</p&g
57、t;<p> AJMP KEY3 ;轉(zhuǎn)秒調(diào)整</p><p> YXZ: JB ACC.0, STOP</p><p> AJMP OUT </p><p> KEY1: MOV R0, #46H
58、 ;星期調(diào)整</p><p> LCALL ADD1</p><p> CLR C</p><p> CJNE A, #8, OUTT</p><p> ACALL CLR0</p><p> AJMP OUTT
59、</p><p> KEY2: MOV R0, #44H ;時調(diào)整</p><p> LCALL ADD1</p><p> CLR C</p><p> CJNE A, #24, OUTT</p>
60、<p> ACALL CLR0</p><p> AJMP OUTT</p><p> KEY3: MOV R0, #42H ;分調(diào)整</p><p> LCALL ADD1</p><p> CLR C</p&
61、gt;<p> CJNE A, #60, OUTT</p><p> ACALL CLR0</p><p> AJMP OUTT</p><p> KEY4: MOV R0, #40H ;秒調(diào)整</p><
62、p> ACALL ADD1 </p><p> CLR C</p><p> CJNE A, #60, OUTT </p><p> ACALL CLR0</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&
63、lt;/p><p> ;;;;;;;;;;;; 顯示子程序 ;;;;;;;;;;;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> DISP: MOV A,30H ;掃描顯示位碼載入A</p><p> ADD
64、 A,#20H ;掃描顯示位碼作為偏移量,再加上顯示緩沖區(qū)首地址20H,顯示數(shù)據(jù)的實際地址</p><p> MOV R1,A ;存入掃描顯示指針R1</p><p> MOV A,30H ;掃描顯示位碼載入A</p><p> SWAP A
65、 ;A中低4位交換到高4位(P1高4位為顯示位碼,低4位為顯示數(shù)據(jù)值)</p><p> ORL A,@R1 ;得“顯示位碼—顯示段碼”</p><p> MOV P2,A ;輸出至P2顯示</p><p> INC 30H
66、 ;掃描偏移量指針加1</p><p> MOV A,30H</p><p> CJNE A,#07H,DSPEND ;掃描顯示完否?不是,則跳至DSPEND</p><p> MOV 30H,#00H ;是,則掃描顯示位移量置為0</p><p>
67、; DSPEND: RET</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;;;;;;;;;; 開、關時鐘子程序 ;;;;;;;;;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> STOP:
68、 CLR TR0 ;關電子時鐘并跳出</p><p><b> RET</b></p><p> RUN: LCALL TIME ;運行電子時鐘</p><p> OUT: SETB EA
69、 ;無鍵按下或完成功能跳出</p><p><b> RET</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;;;;;;;;;;; 運行電子時鐘 ;;;;;;;;;;;</p><
70、p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> TIME: SETB EA</p><p> MOV TL0, #0B0H </p><p> MOV TH0, #3CH ;3CB0H</
71、p><p> MOV R4, #20 ;50ms,20次循環(huán)</p><p> SETB TR0 ;啟動定時器0</p><p><b> RET </b></p><p> ;;;;;;;;
72、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;;;;;;;;;;; 定時中斷子程序 ;;;;;;;;;;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> INTT0: PUSH ACC</p><p> PUSH
73、 PSW</p><p> CLR ET0</p><p> CLR TR0</p><p> MOV TL0, #0B0H ;重新設定定時初值</p><p> MOV TH0, #3CH</p><p>
74、 SETB TR0 ;啟動定時器0</p><p> DJNZ R4, ADDSS ;1秒到</p><p> ADDSS:MOVA, 30H;將秒寄存器的值放入A</p><p> ADD
75、 A, #01 ;A的內(nèi)容加1</p><p> DA A ;十進制調(diào)整</p><p> MOV 30H, A;將A的值放回秒寄存器</p><p> CJNE A,
76、 #3CH, CLR ;是否等于60秒?不是,則跳至CLR</p><p> AJMP ADDMM;是則跳至ADDMM處</p><p> ADDMM: MOV30H, #OOH ;重新設置秒寄存器的值為00H</p><p> MOVA, 32H;將分寄存器的值放入A</p&
77、gt;<p> ADD A, #01 ;A的內(nèi)容加1</p><p> DA A ;十進制調(diào)整</p><p> MOV 32H, A;將A的值放回分寄存器</p><p> CJ
78、NE A, #3CH, CLR ;是否等于60分?不是,則跳至CLR</p><p> AJMP ADDHH;是則跳至ADDHH處</p><p> ADDHH: MOV32H, #OOH ;重新設置分寄存器的值為00H </p><p> LCALLSPEAK
79、;調(diào)用整點報時子程序</p><p> MOVA, 34H;將時寄存器的值放入A</p><p> ADD A, #01 ;A的內(nèi)容加1</p><p> DA A ;十進制調(diào)整</p>
80、<p> MOV 34H, A;將A的值放回時寄存器</p><p> CJNE A, #18H, CLR ;是否等于24時?不是,則跳至CLR</p><p> AJMP HOUR;是則跳至HOUR處</p><p> HOUR: MOV34H
81、, #OOH ;重新設置時寄存器的值為00H</p><p> MOVA, 36H;將星期寄存器的值放入A</p><p> ADD A, #01 ;A的內(nèi)容加1</p><p> DA A
82、 ;十進制調(diào)整</p><p> MOV 36H, A;將A的值放回星期寄存器</p><p> CJNE A, #08H, CLR ;是否等于8天?不是,則跳至CLR</p><p> MOV36H, #O1H ;是則重新設置星期寄存器的值為01H</p>
83、;<p> POP PSW</p><p> POP ACC</p><p> SETB ET0</p><p> RETI;中斷返回</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p>&
84、lt;p> ;;;;;;;;;;; 報時設置 ;;;;;;;;;;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> SPEAK:T02SA EQU 50HT02SB EQU 51HFLAG BIT 00HORG 00HLJMP STARTOR
85、G 0BHLJMP INT_T0</p><p> START: MOV T02SA, #00H</p><p> MOV T02SB, #00HCLR FLAGMOV TMOD, #01HMOV TH0, #(65
86、536-500) / 256MOV TL0, #(65536-500) MOD 256SETB TR0SETB ET0SETB EASJMP $</p><p> INT_T0:MOV TH0, #(65536-500) / 256MOV TL0, #
87、(65536-500) MOD 256INC T02SAMOV A, T02SACJNE A, #100,NEXTINC T02SBMOV A, T02SBCJNE A, #04H,NEXTMOV T02SA, #00H
88、MOV T02SB, #00HCPL FLAG</p><p> NEXT: JB FLAG, DONECPL P1.4</p><p> DONE: RETI</p><p><b> 結(jié)論</b></p><p
89、> 本設計從經(jīng)濟實用的角度出發(fā),采用美國Atmel公司的單片機AT89C51與顯示驅(qū)動芯片74LS164作為主控芯片與驅(qū)動,結(jié)合外圍的鍵盤輸入、顯示、電源輸入等電路并用匯編編寫主控芯片的控制程序,設計了一款可以調(diào)時并帶有整點報時功能的電子時鐘。使用單片機制作的電子時鐘具有軟硬件設計簡單,易于開發(fā),成本較低,安全可靠,操作方便等特點,可應用于車站、辦公室及家庭等場所,有一定的實用性。此電子時鐘嚴格按照要求設計,基本達到了預期效果,
90、能夠正確的顯示時分秒的計時,算是一次比較成功的設計了。</p><p> 通過這次的課程設計,使我明白:知識,不僅僅是要學會,更重要的是要會用,要懂得怎么用。在剛開始做電子時鐘設計時,我一籌莫展,根本不知道如何下手。但是,通過不斷的查閱資料,查閱一些優(yōu)秀的論文,思路有了,設計起來也就水到渠成了。雖然我的論文還不算太成熟,思路簡單,電子時鐘實現(xiàn)的功能較少,但是,我依然很高興,因為這篇論文是我兩個周的勞動成果,它使
91、我將大學當中學到的知識更好的融匯在一起,也使我發(fā)現(xiàn)了自己還有許多知識沒有很好的掌握。我會在以后的工作、學習、生活當中更加認真的學好知識,為實現(xiàn)自己的人生理想打好堅實的基礎。</p><p><b> 參考文獻</b></p><p> [1] 張文灼.單片機應用技術.機械工業(yè)出版社,2009</p><p> [2] 張 偉.Prote
92、l 99SE實用教程.人民郵電出版社,2008</p><p> [3] 童詩白 華成英.模擬電子技術基礎.北京:高等教育出版社,2000</p><p> [4] 李 華.MCS-51系列單片機使用接口技術.北京航空航天大學出版社,1993.</p><p> [5] 邱關源.電路.北京:高等教育出版社,1999</p><p>
93、 [6] 何立民.單片機應用技術選編.北京:北京航空大學出版社,1998</p><p> [7] 李瀚蓀.電路分析基礎.北京:高等教育出版社1991</p><p> [8] 張思發(fā) 吳讓仲.計算機組成原理及匯編語言.北京:高等教育出版社 2003</p><p> [9] 溫希東 路勇.計算機控制技術.西安電子科技大學出版社 2005</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電子課程設計--數(shù)字時鐘
- 智能儀器課程設計報告---數(shù)字電子時鐘
- 數(shù)字電子課程設計--數(shù)字電子時鐘
- 電子數(shù)字時鐘課程設計報告
- 數(shù)字電子時鐘課程設計
- 數(shù)字電子時鐘課程設計
- 課程設計--數(shù)字電子時鐘設計
- 數(shù)字電子時鐘課程設計
- 數(shù)字電子時鐘課程設計
- 數(shù)字電子鐘課程設計--電子數(shù)字時鐘
- 《數(shù)字電子技術》課程設計--數(shù)字時鐘
- 數(shù)字電子時鐘 課程設計報告
- 電子課程設計總結(jié)--數(shù)字電子時鐘
- 數(shù)字電子時鐘課程設計報告
- 數(shù)字電子時鐘課程設計報告
- 電工電子綜合課程設計--數(shù)字時鐘設計
- 數(shù)字電子時鐘課程設計報告
- 數(shù)字電子時鐘課程設計報告
- 數(shù)字電子時鐘課程設計 (2)
- 數(shù)字電子時鐘課程設計 (3)
評論
0/150
提交評論