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

下載本文檔

版權(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ì)中以單片機(jī)的發(fā)展過程和發(fā)展方向?yàn)楸尘?,介紹了單片機(jī)的輸入輸出的工作原理和操作方法,中斷的工作原理和操作方法,74LS164譯碼器的工作原理和與LED連接的方法。</p><p>  本次做的數(shù)字鐘是以單片機(jī)(AT89C51)為核心,結(jié)合相關(guān)的元器件(共陰極LED數(shù)碼顯示器、數(shù)碼管驅(qū)動(dòng)器74LS164等),再配以

3、相應(yīng)的軟件,是它具有星期,時(shí),分,秒顯示的功能,并且時(shí),分,秒還可以調(diào)整。此次設(shè)計(jì)電子數(shù)字鐘是為了了解電子數(shù)字鐘的原理,從而學(xué)會(huì)制作電子數(shù)字鐘。而且通過電子數(shù)字鐘的制作進(jìn)一步的了解各種在制作中用到的中小規(guī)模集成電路的作用及實(shí)用方法。通過它可以進(jìn)一步學(xué)習(xí)與掌握單片機(jī)原理與使用方法。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī)AT89C51 共陰極LED數(shù)碼顯示器 74LS164驅(qū)動(dòng)芯片 </p&g

4、t;<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><p>  圖2-1 電子時(shí)鐘的整體框圖</p><p>

5、  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指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大

6、的微型計(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><p>  電子時(shí)鐘設(shè)置6個(gè)按鍵通過程序控制來完成電子時(shí)鐘的啟、停及時(shí)間調(diào)

7、整。調(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)整秒;</p><p>  W鍵設(shè)置星期;

8、 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><p> ?。?)運(yùn)行狀態(tài),按奇數(shù)次S/H鍵進(jìn)入。在此狀態(tài)下,按W、H、M、S鍵均無效,

9、只有按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)行狀態(tài);</p><p>  基本功能要求:“P.”穩(wěn)定地顯示在LED顯示

10、器的最左端數(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í)間修改正確后可再次按下S/H鍵,電子時(shí)鐘則退出調(diào)整狀態(tài),進(jìn)入運(yùn)行狀態(tài)。</p><p&g

11、t;  計(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è)端口輸入的不同的二進(jìn)制數(shù)據(jù)使得它的時(shí)間顯示也不同,從而可以得到我們所要的時(shí)間顯示。對(duì)于四十個(gè)管腳的AT89C5

12、1來說,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,當(dāng)發(fā)現(xiàn)系統(tǒng)運(yùn)行不正常,進(jìn)入死循環(huán),顯示數(shù)值嚴(yán)重失真時(shí),按復(fù)位鍵,其內(nèi)部功能為使單片機(jī)復(fù)位,強(qiáng)行使

13、單片機(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ù)溢出20次即得時(shí)鐘計(jì)時(shí)最小單位秒,而計(jì)數(shù)可用軟件方法實(shí)現(xiàn)。假設(shè)使用T/C0,方式1,50ms定時(shí),fo

14、sc=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次為秒計(jì)時(shí)(1秒),就讓秒計(jì)數(shù)單元加1,當(dāng)秒計(jì)數(shù)達(dá)到60時(shí),就自動(dòng)返回到0,重新秒計(jì)數(shù);</

15、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)存單元中。其中30H、31H單元存放秒數(shù)據(jù),32H-33H單元存放分?jǐn)?shù)據(jù),34H-35H單元存放時(shí)數(shù)據(jù)

16、,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ù)位部分、顯示部分、定時(shí)部分組成,軟件部分對(duì)應(yīng)的由主程序、初始化程序、LED顯示程序、鍵盤掃描程序、鍵功能程序

17、、定時(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í)鐘的電路圖由電源輸入電路、晶振電路、鍵盤輸入電路、復(fù)位電路等電路組成。本系統(tǒng)采用AT89C51單片

18、機(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>  電子時(shí)鐘主控制部分電源需要用5V直流電源供電,把頻率為50Hz、有效值為220V過電源變壓器、整流電

19、路、濾波電路、穩(wěn)壓電路轉(zhuǎn)換成穩(wěn)定的直流電壓。由于輸入電壓為電網(wǎng)電壓,一般情況下所需直流電壓的數(shù)值和電網(wǎng)電壓的有效值相差較大,因而電源變壓器的作用顯現(xiàn)出來起到降壓作用。降壓后還是交流電壓,所以需要整流電路把交流電壓轉(zhuǎn)換成直流電壓。由于經(jīng)整流電路整流后的電壓含有較大的交流分量,會(huì)影響到負(fù)載電路的正常工作。需通過低通濾波電路濾波,使輸出電壓平滑。穩(wěn)壓電路的功能是使輸出直流電壓基本不受電網(wǎng)電壓波動(dòng)和負(fù)載電阻變化的影響,從而獲得穩(wěn)定性足夠高的直

20、流電壓。本電路使用集成穩(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分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用

21、外部時(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.4.1報(bào)時(shí)電路的原理</p><p> ?。?)生活中我們常常到各種各樣

22、的報(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> ?。?)由于要產(chǎn)生上面的信號(hào),把上面的信號(hào)分成兩部分,一部分為1KHZ方波,占用時(shí)間為0.2秒;另一部分為電平,也是占用0.2秒;因此,我們利用單片機(jī)的定時(shí)

23、/計(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秒的定時(shí)時(shí)間了。</p><p>  3.4.2電路的接法</p&g

24、t;<p>  LM386是一種音頻集成功放,具有自身功耗低、電壓增益可調(diào)整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點(diǎn),廣泛應(yīng)用于錄音機(jī)和收音機(jī)之中。第一級(jí)為差分放大電路,使用鏡像電流源作為差分放大電路有源負(fù)載,可使單端輸出電路的增益近似等于雙端輸出電容的增益;第二級(jí)為共射放大電路,以增大放大倍數(shù);第三級(jí)可以消除交越失真。</p><p> ?。?)把“單片機(jī)系統(tǒng)”區(qū)域中的P3.4端口用導(dǎo)線連

25、接到“音頻放大模塊LM386”區(qū)域中的SPK IN端口上。</p><p> ?。?)在“音頻放大模塊”區(qū)域中的SPK OUT端口上接上一個(gè)8歐或者是16歐的喇叭; </p><p>  圖 3-4 報(bào)時(shí)電路原理圖</p><p>  3.5 鍵盤輸入電路</p><p>  鍵盤可分為兩類:非編碼鍵盤和編碼鍵盤;常見的非編碼鍵盤有兩種結(jié)構(gòu):

26、獨(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>  系統(tǒng)軟件設(shè)計(jì)</b></p><p>  4.1電子時(shí)鐘程序流程框圖<

27、/p><p>  4.1.1主程序流程框圖</p><p>  主程序功能主要是初始化、正常顯示時(shí)間和判斷功能轉(zhuǎn)換鍵。初始化包括數(shù)據(jù)堆棧區(qū)、定時(shí)/計(jì)數(shù)器的初始化、AT89C51芯片的初始化及時(shí)間、顯示數(shù)據(jù)的初始化。定時(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所示。&l

28、t;/p><p>  圖4-1 主程序流程框圖</p><p>  4.1.2鍵掃子程序流程框圖</p><p>  鍵盤掃描程序是通過CPU來對(duì)外圍鍵盤電路進(jìn)行查詢。該程序能夠解決的問題有:</p><p> ?。?)是否有鍵按下;</p><p> ?。?)若有鍵按下,判斷是哪一個(gè)鍵并確定其鍵值或鍵號(hào);</p&g

29、t;<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í)10ms處理。</p><p>  去抖之后再次進(jìn)行查詢。然后通過按鍵的鍵號(hào)執(zhí)行相應(yīng)的功能。鍵掃子程序流程框圖圖4-2所示。</p><p>

30、;  圖4-2 鍵掃子程序流程框圖</p><p>  4.1.3定時(shí)中斷程序流程框圖</p><p>  定時(shí)中斷是電子時(shí)鐘的核心。定時(shí)/計(jì)數(shù)器T0和T1的工作方式設(shè)置為:</p><p>  (1)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ù),

31、而從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><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ù)單元

32、中每逢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í),正在被調(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,在加

33、至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)入正常運(yùn)行狀態(tài),時(shí)間正常顯示。調(diào)時(shí)程序流程圖如圖4-4所示。</p><p><b>  4.2 程序清單</b></p>&l

34、t;p>  本設(shè)計(jì)的程序主要采用大學(xué)所學(xué)的知識(shí),參考課本《單片機(jī)原理及應(yīng)用》一書,編寫而成。匯編語言是計(jì)算機(jī)提供給用戶的最快最有效的語言,也是能夠利用計(jì)算機(jī)的所有硬件特性并能夠直接控制硬件的唯一語言。</p><p>  程序當(dāng)中包含P點(diǎn)顯示、鍵掃子程序、鍵功能子程序、顯示程序、中斷定時(shí)程序等一些子程序,并且在程序中添加了適當(dāng)?shù)臉?biāo)注。</p><p><b>  ;主程序&

35、lt;/b></p><p>  ORG 0000H ;復(fù)位起始地址</p><p>  AJMP START ;跳轉(zhuǎn)至主程序</p><p>  ORG 000BH ;TIMER0中斷矢量地址</p><p>  AJMP TIMER0

36、 ;跳轉(zhuǎn)至T0中斷子程序</p><p>  START: MOV SP,#6FH ;設(shè)置堆棧從6F開始</p><p>  MOV 30H,#00H ;顯示碼寄存器初值為00H</p><p>  MOV 2AH,#00H ;'天'寄存器初值為00H</p>

37、;<p>  MOV 2BH,#00H ;'時(shí)'寄存器初值為00H</p><p>  MOV 2CH,#00H ;'分'寄存器初值為00H</p><p>  MOV 2DH,#00H ;'秒'寄存器初值為00H</p><p>  MO

38、V TMOD,#01H ;設(shè)T0工作方式為1</p><p>  MOV TH0,#0ECH ;定時(shí)器及時(shí)中斷時(shí)間為5000us</p><p>  MOV TL0,#78H </p><p>  MOV IE,#82H ;T0中段使能,總的中段使能</p><p

39、>  MOV R4,#0C8H ;實(shí)現(xiàn)計(jì)時(shí)1s功能</p><p>  SETB TR0 ;啟動(dòng)定時(shí)器T0</p><p>  ;LOOP段為主程序中用于循環(huán)的掃描按鍵以檢測(cè)外界輸入對(duì)天,時(shí),分,秒</p><p><b>  ;的設(shè)置和修改</b></p><p&

40、gt;  LOOP: JB P0.0,NEXT2 ;P0.0(秒值修改鍵)是否被按下?</p><p>  ;不是,則跳至NEXT2檢查P0.1</p><p>  ACALL DELAY1 ;去抖動(dòng)</p><p>  JB P0.0,NEXT2 ;P0.0(秒值修改鍵)不是否被按下,<

41、;/p><p>  ;則跳轉(zhuǎn)至NEXT2檢查P0.1</p><p>  NEXT1: JNB P0.0,NEXT1 ;P0.0(秒值修改鍵)是否被放開?</p><p>  MOV A,2DH ;將秒寄存器的值放入A</p><p>  ADD A,#01 ;A

42、的內(nèi)容加1</p><p>  DA A ;十進(jìn)制調(diào)整</p><p>  MOV 2DH,A ;將A的值放回秒寄存器</p><p>  CJNE A,#3CH,NEXT2 ;是否等于60秒?不是,則跳至</p><p><b>  ; NEXT2&l

43、t;/b></p><p>  MOV 2DH,#00 ;是則重新設(shè)置秒寄存器的值為00</p><p>  NEXT2: JB P0.1,NEXT4 ;P0.1(分值修改鍵)是否被按下?</p><p>  ;不是,則跳至NEXT4檢查P0.2</p><p>  ACALL

44、DELAY1 ;去抖動(dòng)</p><p>  JB P0.1,NEXT4 ;P0.1(分值修改鍵)不是否被按下,</p><p>  ;則跳轉(zhuǎn)至NEXT4檢查P0.2</p><p>  NEXT3: JNB P0.1,NEXT3 ;P0.1(分值修改鍵)是否被放開?</p><

45、;p>  MOV A,2CH ;將分寄存器的值放入A</p><p>  ADD A,#01 </p><p>  DA A </p><p>  MOV 2CH,A ;將A的值放回分寄存器</p><p>  CJ

46、NE A,#3CH,NEXT4 ;是否等于60分?不是,則跳至</p><p><b>  ;NEXT4</b></p><p>  MOV 2CH,#00 ;是則重新設(shè)置分寄存器的值為00</p><p>  NEXT4: JB P0.2,NEXT6 ;P0.2(時(shí)值修改鍵)是

47、否被按下?</p><p>  ;不是,則跳至NEXT6檢查P0.3</p><p>  ACALL DELAY1 ;去抖動(dòng)</p><p>  JB P0.2,NEXT6 ;P0.2(時(shí)值修改鍵)不是否被按下,</p><p>  ;則跳轉(zhuǎn)至NEXT4檢查P0.2</p><p&

48、gt;  NEXT5: JNB P0.1,NEXT5 ;P0.2(時(shí)值修改鍵)是否被放開?</p><p>  MOV A,2BH ;將時(shí)寄存器的值放入A</p><p>  ADD A,#01 </p><p>  DA A </p>

49、<p>  MOV 2BH,A ;將A的值放回時(shí)寄存器</p><p>  CJNE A,#18H,NEXT6 ;是否等于24時(shí)?不是,則跳至</p><p><b>  ;NEXT6</b></p><p>  MOV 2BH,#00 ;是則重新設(shè)置時(shí)寄存器的值為00

50、</p><p>  NEXT6: JB P0.3,LOOP ;P0.3(天值修改鍵)是否被按下?</p><p>  ;不是,則跳至LOOP檢查P0.0</p><p>  ACALL DELAY1 ;去抖動(dòng)</p><p>  JB P0.3,LOOP ;P0.3(

51、分值修改鍵)不是真正被按下,</p><p>  ;則跳轉(zhuǎn)至LOOP檢查P0.0</p><p>  NEXT7: JNB P0.1,NEXT7 ;P0.3(天值修改鍵)是否被放開?</p><p>  MOV A,2AH ;將寄存器的值放入A</p><p>  ADD A,#01

52、 </p><p>  DA A </p><p>  MOV 2CH,A ;將A的值放回天寄存器</p><p>  CJNE A,#07H,LOOP ;是否等于7天?不是,則跳至</p><p><b>  ;LOOP</

53、b></p><p>  MOV 2AH,#00 ;是則重新設(shè)置天寄存器的值為00</p><p>  AJMP LOOP</p><p>  ;T0中斷子程序。每5000us中斷一次,在該子程序中判斷是否1s計(jì)時(shí)到,并做</p><p>  ;相應(yīng)調(diào)整和處理(CLK_CHANGE子程序和CONVERT子程

54、序),同時(shí)實(shí)現(xiàn)每</p><p>  ;5000s的顯示更新。</p><p>  TIMER0: MOV TH0,#0ECH ;定時(shí)器及時(shí)中斷時(shí)間為5000us</p><p>  MOV TL0,#78H </p><p>  PUSH ACC ;保留現(xiàn)場(chǎng)的值<

55、/p><p>  PUSH PSW</p><p>  DJNZ R4,TIMLP1 ;計(jì)時(shí)1s到否?不到1s,則跳</p><p><b>  ;至TIMLP1</b></p><p>  MOV R4,#0C8H</p><p>  ACALL CLK

56、_CHANGE ;調(diào)用計(jì)時(shí)子程序</p><p>  ;CLK_CHANGE</p><p>  ACALL CONVERT ;調(diào)用數(shù)碼轉(zhuǎn)換及存儲(chǔ)子程序</p><p><b>  ;CONVERT</b></p><p>  TIMLP1: ACALL DISP

57、 ;調(diào)用顯示子程序DISP</p><p>  POP PSW ;恢復(fù)現(xiàn)場(chǎng)的值</p><p>  POP ACC</p><p><b>  RETI</b></p><p>  ;DISP子程序?qū)崿F(xiàn)天,時(shí),分,秒計(jì)時(shí)制在數(shù)碼管上的輸出驅(qū)動(dòng)顯示。每一次</p

58、><p>  ;調(diào)用(相隔5000us)只驅(qū)動(dòng)顯示7個(gè)數(shù)碼管中的一個(gè)。</p><p>  DISP: MOV A,30H ;掃描顯示位碼載入A</p><p>  ADD A,#20H ;掃描顯示位碼作為偏移量,再加上</p><p><b>  ;顯示緩沖區(qū)<

59、/b></p><p>  ;首地址20H,的戴顯示數(shù)據(jù)的實(shí)際</p><p><b>  ;地址</b></p><p>  MOV R1,A ;存入掃描顯示指針R1</p><p>  MOV A,30H ;掃描顯示位碼載入A</p>

60、<p>  SWAP A ;A中低4位交換到高4位(P1高4</p><p>  ;位為顯示位碼,低4位為顯示數(shù)據(jù)值)</p><p>  ORL A,@R1 ;得“顯示位碼—顯示段碼”</p><p>  MOV P2,A ;輸出至P2顯示</p>

61、;<p>  INC 30H ;掃描偏移量指針加1</p><p>  MOV A,30H</p><p>  CJNE A,#07H,DSPEND ;掃描顯示完否?不是,則跳至</p><p><b>  ;DSPEND</b></p><p>

62、  MOV 30H,#00H ;是,則掃描顯示位移量置為0</p><p>  DSPEND: RET</p><p>  ;CLK_CHANGE子程序?yàn)橛?jì)時(shí)1s到各天,時(shí),分,秒數(shù)據(jù)的處理程序</p><p>  CLK_CHANGE:</p><p>  MOV A,2DH ;2DH單

63、元為秒寄存器</p><p>  ADD A,#1 ;加1秒</p><p>  DA A ;十進(jìn)制調(diào)整 </p><p>  MOV 2DH,A ;存入秒寄存器</p><p>  CJNE A,#60,CLKEND ;是否

64、超過60秒?不是,則跳至</p><p><b>  ; CLKEND</b></p><p>  MOV 2DH,#00H ;是,則重設(shè)為00</p><p>  MOV A,2CH ;2CH單元為分寄存器,其處理類同秒</p><p>  ADD A,#1

65、 </p><p>  DA A </p><p>  MOV 2CH,A </p><p>  CJNE A,#60,CLKEND ;是否超過60分?不是,則跳至</p><p><b>  ;CLKEND</b></p&

66、gt;<p>  CALL RING ;調(diào)用正點(diǎn)報(bào)時(shí) </p><p>  MOV 2CH,#00H ;是,則重設(shè)為00 </p><p>  MOV A,2BH ;2BH單元為時(shí)寄存器</p><p>  ADD A,#1 </p&

67、gt;<p>  DA A </p><p>  MOV 2BH,A </p><p>  CJNE A,#24,CLKEND ;是否超過24時(shí)?不是,則跳至</p><p><b>  ; CLKEND</b></p><p&

68、gt;  MOV 2BH,#00H ;是,則重設(shè)為00</p><p>  MOV A,2AH ;2AH單元為秒寄存器</p><p>  ADD A,#1 </p><p>  DA A </p><p>  MO

69、V 2AH,A </p><p>  CJNE A,#07,CLKEND ;是否超過7天?不是,則跳至</p><p><b>  ;CLKEND</b></p><p>  MOV 2AH,#00H ;是,則重設(shè)為00</p><p>  CLKEN

70、D: RET</p><p>  ;CONVERT子程序?qū)崿F(xiàn)天,時(shí),分,秒計(jì)時(shí)值轉(zhuǎn)換為BCD碼并存儲(chǔ)在以20H</p><p>  ;為起始地址的顯示輸出數(shù)據(jù)單元里,即顯示緩沖區(qū)20H至26H單元</p><p>  CONVERT: MOV R1,#20H ;送顯示緩沖區(qū)首地址值到R1指針</p><p>  MO

71、V A,2DH ;將秒寄存器的內(nèi)容存入A</p><p>  ANL A,#0FH ;取秒值的個(gè)位,并存入20H單元</p><p>  MOV @R1,A</p><p>  INC R1 ;目標(biāo)地址指針的修改</p><p>  M

72、OV A,2DH ;將秒寄存器的內(nèi)容存入A</p><p>  ANL A,#0F0H ;取秒值的十位,并存入21H單元</p><p>  SWAP A</p><p>  MOV @R1,A</p><p>  INC R1 ;

73、目標(biāo)地址指針的修改</p><p>  MOV A,2CH ;將分寄存器的內(nèi)容存入A</p><p>  ANL A,#0FH ;取分值的個(gè)位,并存入22H單元</p><p>  MOV @R1,A</p><p>  INC R1 ;目

74、標(biāo)地址指針的修改</p><p>  MOV A,2CH ;將分寄存器的內(nèi)容存入A</p><p>  ANL A,#0F0H ;取分值的十位,并存入23H單元</p><p>  SWAP A</p><p>  MOV @R1,A</p><p&g

75、t;  INC R1 ;目標(biāo)地址指針的修改</p><p>  MOV A,2BH ;將時(shí)寄存器的內(nèi)容存入A</p><p>  ANL A,#0FH ;取時(shí)值的個(gè)位,并存入24H單元</p><p>  MOV @R1,A</p><p>

76、;  INC R1 ;目標(biāo)地址指針的修改</p><p>  MOV A,2BH ;將時(shí)寄存器的內(nèi)容存入A</p><p>  ANL A,#0F0H ;取時(shí)值的十位,并存入25H單元</p><p>  SWAP A</p><p>  MO

77、V @R1,A</p><p>  INC R1 ;目標(biāo)地址指針的修改</p><p>  MOV A,2AH ;將天寄存器的內(nèi)容存入A</p><p>  ANL A,#0FH ;取天值,并存入26H單元</p><p>  SWAP

78、 A</p><p>  MOV @R1,A</p><p><b>  RET</b></p><p><b>  ;整點(diǎn)報(bào)時(shí)子程序</b></p><p>  RING: SETB P0.4 ;蜂鳴器開始鳴叫</p><p&

79、gt;  ACALL DELAY2 </p><p>  CLR P0.4</p><p><b>  RET</b></p><p><b>  ;延時(shí)5ms子程序</b></p><p>  DELAY1: MOV R6,#10</p>

80、;<p>  D1: MOV R7,#250</p><p>  DJNZ R7,$</p><p>  DJNZ R6,D1</p><p><b>  RET</b></p><p><b>  ;延時(shí)1秒子程序</b></p>&l

81、t;p>  DELAY2: MOV R5,#200</p><p>  DEL1: MOV R6,#10</p><p>  DEL2: MOV R7,#250</p><p>  DJNZ R7,$</p><p>  DJNZ R6,DEL2</p><

82、;p>  DJNZ R5,DEL1</p><p><b>  RET</b></p><p><b>  END</b></p><p><b>  結(jié)論</b></p><p>  本設(shè)計(jì)從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用美國(guó)Atmel公司的單片機(jī)AT89S51與顯

83、示驅(qū)動(dòng)芯片74LS245作為主控芯片與數(shù)據(jù)存儲(chǔ)器單元,結(jié)合外圍的鍵盤輸入、顯示、電源輸入等電路并用匯編編寫主控芯片的控制程序,研制了一款可以調(diào)時(shí)并帶有鬧鐘功能的電子時(shí)鐘。使用單片機(jī)制作的電子時(shí)鐘具有軟硬件設(shè)計(jì)簡(jiǎn)單,易于開發(fā),成本較低,安全可靠,操作方便等特點(diǎn),可應(yīng)用于車站、辦公室及家庭等場(chǎng)所,有一定的實(shí)用性。此電子時(shí)鐘嚴(yán)格按照要求設(shè)計(jì),基本達(dá)到了預(yù)期效果,能夠正確的顯示時(shí)分秒的計(jì)時(shí),算上是一次比較成功的設(shè)計(jì)了。</p>&

84、lt;p>  通過這次的畢業(yè)設(shè)計(jì),使我明白:知識(shí),不僅僅是要學(xué)會(huì),更重要的是要會(huì)用,要懂得怎么用。在剛開始做畢業(yè)論文時(shí),我一籌莫展,根本不知道如何下手,甚至連論文的格式都不太清楚。但是,通過不斷的查閱資料,詢問老師,研究一些優(yōu)秀的論文,我終于得到了我想要的東西,思路有了,格式明白了。雖然我的論文還不算太成熟,思路簡(jiǎn)單,電子時(shí)鐘實(shí)現(xiàn)的功能較少,但是,我依然很高興,因?yàn)檫@篇論文是我一個(gè)月的勞動(dòng)成果,它使我將大學(xué)三年當(dāng)中學(xué)到的知識(shí)更好的

85、融匯在一起,也使我發(fā)現(xiàn)了自己還有許多知識(shí)沒有很好的掌握,又一次讓我明白了知識(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] 張 偉.Prot

86、el 99SE實(shí)用教程.人民郵電出版社,2008</p><p>  [3] 童詩白 華成英.模擬電子技術(shù)基礎(chǔ).北京:高等教育出版社,2000</p><p>  [4] 李 華.MCS-51系列單片機(jī)使用接口技術(shù).北京航空航天大學(xué)出版社,1993.</p><p>  [5] 邱關(guān)源.電路.北京:高等教育出版社,1999</p><p>

87、  [6] 何立民.單片機(jī)應(yīng)用技術(shù)選編.北京:北京航空大學(xué)出版社,1998</p><p>  [7] 李瀚蓀.電路分析基礎(chǔ).北京:高等教育出版社1991</p><p>  [8] 張思發(fā) 吳讓仲.計(jì)算機(jī)組成原理及匯編語言.北京:高等教育出版社 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)頁內(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)論