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