2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  電子音樂鬧鐘</b></p><p><b>  摘 要</b></p><p>  本文設(shè)計(jì)一個(gè)51電子鬧鐘,能隨意設(shè)定走時(shí)起始時(shí)間,12小時(shí)/24小時(shí)兩種制式可選,以適應(yīng)不同的需要,能指示秒節(jié)奏,即秒指示,采用交直流供電電源。與石英鐘不同的是,電子鐘一般采用數(shù)碼管等顯示介質(zhì),因而必須以交流供電為主,以直流電源為

2、后備輔助電源,并能自動(dòng)切換。該設(shè)計(jì)主要包括:按鍵、顯示程序單元部分。、AT89S51單片機(jī)芯片、74HC245驅(qū)動(dòng)LED顯示電路,集成電路74HC245和LM386各1個(gè)。</p><p>  關(guān)鍵詞:AT89S51單片機(jī),自動(dòng)切換,交流供電,電子鬧鐘</p><p><b>  1引言</b></p><p>  現(xiàn)代的快節(jié)奏生活給人們的精神

3、上帶來了很大壓力。如何排解或緩解這些壓力已經(jīng)成為很多人關(guān)心的問題。單片機(jī)電子鬧鐘是具發(fā)前鬧鐘創(chuàng)新性的系統(tǒng),它代表了時(shí)代的發(fā)展趨勢(shì)。2007年,無論從國內(nèi)外行業(yè)發(fā)展趨勢(shì),還是從鬧鐘市場(chǎng)準(zhǔn)入的要求來看,節(jié)能、環(huán)保、創(chuàng)新都已成為中國家電企業(yè)無法回避的大問題。在原材料價(jià)格不斷上漲、下游渠道商實(shí)力膨脹、價(jià)格戰(zhàn)越來越激烈、行業(yè)利潤日趨微薄的背景下,日前,中國的電子鬧鐘在節(jié)能化、環(huán)?;?、創(chuàng)新型轉(zhuǎn)變過程中,正進(jìn)行新一輪鬧鐘賽跑。</p>

4、<p><b>  2 方案論證</b></p><p>  2.1方案一:軟件設(shè)計(jì)</p><p><b>  軟件功能:</b></p><p> ?。?)檢測(cè)按鍵。當(dāng)系統(tǒng)檢測(cè)到某個(gè)案件被按下時(shí),轉(zhuǎn)到相應(yīng)子程序處理,可實(shí)現(xiàn)校時(shí)、設(shè)定鬧鈴時(shí)間的功能。</p><p>  (2) 顯示。系

5、統(tǒng)通過調(diào)用顯示子程序,可將顯示緩沖區(qū)里的內(nèi)容通過動(dòng)態(tài)掃描方式輸出到數(shù)碼管顯示器。</p><p>  (3) 計(jì)時(shí)。系統(tǒng)通過中斷和軟件計(jì)數(shù)器可產(chǎn)生秒信號(hào)。每到1s,系統(tǒng)將會(huì)調(diào)整時(shí)間存儲(chǔ)單元的內(nèi)容,從而實(shí)現(xiàn)計(jì)時(shí)功能。</p><p>  (4) 比較。每當(dāng)秒存儲(chǔ)單元的內(nèi)容為0時(shí),系統(tǒng)通過調(diào)用比較子程序可判斷當(dāng)前時(shí)間是否符合鬧鈴條件,若符合,則調(diào)用發(fā)音子程序使蜂鳴器發(fā)出鬧鈴聲音。</p&

6、gt;<p>  (5) 產(chǎn)生音頻方波輸出。系統(tǒng)通過軟件產(chǎn)生音頻方波輸出使蜂鳴器發(fā)聲,這樣可以省去硬件振蕩電路。</p><p>  (6) 拆分。為了提高存儲(chǔ)單元的利用率,本系統(tǒng)將時(shí)間數(shù)據(jù)壓縮成壓縮BCD碼后再送入顯存才能顯示。</p><p>  (7) 合并。為了提高修改時(shí)間的速度,可先對(duì)現(xiàn)存內(nèi)容逐位修改,然后調(diào)用合并子程序把顯存內(nèi)容合并后送入指定存儲(chǔ)單元。</p

7、><p>  (8) 設(shè)定。系統(tǒng)進(jìn)入設(shè)定狀態(tài)后,可通過按“設(shè)定”鍵改變閃亮位位置和按“+”或“-”鍵來加1或減1閃亮位內(nèi)容,從而達(dá)到報(bào)時(shí)和設(shè)定鬧鈴時(shí)間的目的。</p><p><b>  2.2方案二:</b></p><p>  采用交直流供電電源。與石英鐘不同的是,電子鐘一般采用數(shù)碼管等顯示介質(zhì),因而必須以交流供電為主,以直流電源為后備輔助電源

8、,并能自動(dòng)切換。該設(shè)計(jì)主要包括:按鍵、顯示程序單元部分。、AT89S51單片機(jī)芯片、74HC245驅(qū)動(dòng)LED顯示電路,集成電路74HC245和LM386各1個(gè)。</p><p>  2.3系統(tǒng)方案原理框圖及方案描述</p><p>  圖2-1 整個(gè)系統(tǒng)的原理圖</p><p>  系統(tǒng)功能及使用方法:</p><p>  系統(tǒng)上電后,自動(dòng)進(jìn)

9、入時(shí)鐘狀態(tài)。若在此時(shí)按下“設(shè)定”鍵,顯示器上將出現(xiàn)閃亮位,再按“+”或“-”則可以加或減閃亮位內(nèi)容,修改完一位后再按“設(shè)定”可改變閃亮位位置繼續(xù)修改下一位。修改完成后按“確定”鍵即可退出設(shè)定狀態(tài)進(jìn)入正常顯示時(shí)鐘狀態(tài)。</p><p>  在正常顯示時(shí)鐘狀態(tài)時(shí)按下“鬧鐘”鍵可進(jìn)入鬧鐘狀態(tài),此時(shí)按“+”或“-”可上下翻動(dòng)鬧鐘表;按“設(shè)定”鍵可修改當(dāng)前顯示的鬧鐘時(shí)間,修改方法與修改時(shí)鐘相同。在查看鬧鐘表狀態(tài)下按“鬧鐘”

10、鍵可以開/關(guān)當(dāng)前顯示的鬧鐘時(shí)間,當(dāng)顯示器第5位顯示“-”時(shí)表示鬧鈴已開。按“時(shí)鐘”鍵返回正常顯示時(shí)鐘狀態(tài)。若想設(shè)置鬧鈴,應(yīng)先按下復(fù)位按鍵,然后長時(shí)間按下"設(shè)置"按鍵,第一個(gè)數(shù)碼管會(huì)顯示”C”,然后變?yōu)椤?0-00-00”,此時(shí)進(jìn)入鬧鈴設(shè)置狀態(tài),設(shè)置方法跟上面一樣,鬧鈴設(shè)置完后,下一步要設(shè)置當(dāng)前時(shí)間,調(diào)整方法跳到第一步。這樣設(shè)置好后,她就能按照主人的意思,定時(shí)的把你鬧醒啦!</p><p>  

11、我們先了解簡易鬧鐘的設(shè)計(jì)方法,并自己動(dòng)手設(shè)計(jì)電路和編寫實(shí)現(xiàn)鬧鐘功能的程序。簡易鬧鐘要實(shí)現(xiàn)以下功能:1、、能正確顯示鬧鐘的走時(shí)2、可以進(jìn)行當(dāng)前時(shí)間的設(shè)置3、可以設(shè)置鬧鐘時(shí)間,并在時(shí)間到時(shí)發(fā)出響聲。</p><p>  設(shè)計(jì)中,我們利用儀器中所提供的以上提到的芯片和軟件編程結(jié)合的思路。本設(shè)計(jì)的軟件編程由四部分構(gòu)成,下面將對(duì)照程序的構(gòu)成來闡述我們組對(duì)簡易鬧鐘的方案設(shè)計(jì),具體設(shè)計(jì)方案如下:(一)在主程序中,填寫中斷向量表

12、,應(yīng)用8255A的IRQ7和IRQ5端。利用8253A和8259A完成計(jì)時(shí)一秒的功能,然后通過更新時(shí)間的子程序完成時(shí)間跳變的功能,待到新的時(shí)間判斷是否到達(dá)設(shè)定的鬧鐘的時(shí)間,如果是,則啟動(dòng)揚(yáng)聲器;如果否,則繼續(xù)進(jìn)行顯示時(shí)間。(二)鬧鐘的時(shí)間是變化的,在更新時(shí)間的子程序中,首先判斷更改后的秒數(shù)是否小于10,如果是,則返回主程序;如果否,則秒的個(gè)位跳變成0,秒的十位加一;再次判斷秒的十位,過程同判斷秒的個(gè)位相同。(三)簡易鬧鐘最重要的功能就是

13、“It’s time to do something!”在這部分,主要要考慮的也是判斷當(dāng)前時(shí)間是不是設(shè)定的鬧鐘時(shí)間。如果跳變后的時(shí)間的四位完完全全的和設(shè)定的鬧鐘時(shí)間相同,則揚(yáng)聲器應(yīng)該響起,提示鬧鐘的主人“Time is up!”從鬧鐘的分鐘的十位開始依次判斷,如果前一個(gè)鬧鐘位的顯示與設(shè)定的鬧鐘時(shí)間對(duì)應(yīng)位相同,則轉(zhuǎn)入判斷下一位;如果不相同,則返回主程序。都判斷</p><p>  3 各電路設(shè)計(jì)和論證</p&

14、gt;<p>  單片機(jī)最小應(yīng)用系統(tǒng)實(shí)際上就是一個(gè)內(nèi)置程序存儲(chǔ)器的單片機(jī),可由單片機(jī)芯片,配以必要的外部器件構(gòu)成,這些外部功能器件無法集成到芯片內(nèi)部,主要有按鍵電路、復(fù)位電路、顯示電路,單片機(jī)系統(tǒng)的設(shè)計(jì)等。</p><p>  3.1按鍵電路的設(shè)計(jì)</p><p>  作為一個(gè)按鍵從沒有按下到按下以及釋放是一個(gè)完整的過程,也就是說當(dāng)我們按下一個(gè)按鍵時(shí),總希望某個(gè)命令只執(zhí)行一次

15、。而在按下的過程中不要有干擾進(jìn)來,因?yàn)樵诎聪碌倪^程中,一旦有干擾過來可能造成誤觸發(fā)過程,因此我們?cè)谠O(shè)計(jì)按鍵電路的時(shí)候應(yīng)注意不要有干擾進(jìn)來以用在焊接時(shí)應(yīng)注意:</p><p>  獨(dú)立式按鍵。如果設(shè)置過多按鍵,將會(huì)占用較多I/O口,而且會(huì)給布線帶來不便,因此,此方案適用于按鍵較少的情況。如果選擇此方案,由于按鍵較少,在修改時(shí)間或設(shè)置鬧鈴時(shí)間時(shí)就不能直接輸入,只能通過加或減完成,稍為麻煩一些,但其程序簡單。</

16、p><p>  (1)執(zhí)錫補(bǔ)焊時(shí)應(yīng)按照從左到右,由上到下的順序,避免檢查時(shí)漏檢或焊接時(shí)漏修。</p><p> ?。?)焊接時(shí)要經(jīng)常清洗烙鐵頭,防止烙鐵頭的雜物造成虛焊、針孔、加焊等不良發(fā)生。</p><p> ?。?) 不要在基板上給烙鐵頭加焊錫,生產(chǎn)過程中不能抖錫、敲錫、甩錫,防止焊錫渣、焊錫 、珠掉到基板上面。</p><p

17、> ?。?)在壓件或拆件時(shí)要先在線路板的銅箔面上加焊錫,要求均勻加熱,避免松香失效或銅箔翹皮造成線路破壞。</p><p>  考慮到電路不要復(fù)雜性,因而設(shè)計(jì)成3個(gè)按鍵,一個(gè)為復(fù)位,其它2個(gè)為按數(shù)字時(shí)間的按鍵和確定設(shè)好的時(shí)間確定.后2個(gè)按鍵要接89C2051端.若想設(shè)置鬧鈴,應(yīng)先按下復(fù)位按鍵,然后長時(shí)間按下"設(shè)置"按鍵,第一個(gè)數(shù)碼管會(huì)顯示”C”,然后變?yōu)椤?0-00-00”,此時(shí)進(jìn)入鬧鈴

18、設(shè)置狀態(tài),設(shè)置方法跟上面一樣,鬧鈴設(shè)置完后,下一步要設(shè)置當(dāng)前時(shí)間,調(diào)整方法跳到第一步。</p><p>  在復(fù)位后的待機(jī)狀態(tài)下,用于啟動(dòng)設(shè)定時(shí)間參數(shù)(對(duì)時(shí)或定鬧);</p><p>  在設(shè)定時(shí)間參數(shù)狀態(tài)而且不是設(shè)定最低位(即分個(gè)位)的狀態(tài)下,用于結(jié)束當(dāng)前位的設(shè)定,當(dāng)前設(shè)定位下移;</p><p>  在設(shè)定最低位(分個(gè)位)的狀態(tài)下,用于結(jié)束本次時(shí)間設(shè)定。<

19、/p><p>  2)+1鍵,用于對(duì)當(dāng)前設(shè)定位(編輯位)進(jìn)行加1操作,根據(jù)12/24小時(shí)工作模式和正在編輯的當(dāng)前位的含義(時(shí)十位、時(shí)個(gè)位、分十位、分個(gè)位)自動(dòng)進(jìn)行數(shù)據(jù)的上限和下限判斷。例如,對(duì)12小時(shí)制,小時(shí)的十位只能是0、1,如果當(dāng)前值為0,則按+1鍵后為1,再按+1鍵則又回復(fù)到0。</p><p>  3.2復(fù)位電路的設(shè)計(jì)</p><p>  目前為止,單片機(jī)復(fù)位電

20、路主要有四種類型:(1)微分型復(fù)位電路;(2)積分型復(fù)位電路;(3)比較器型復(fù)位電路;(4)看門狗型復(fù)位電路。另外,Maxim等公司也推出了專用于復(fù)位的專用芯片復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開關(guān)或電源插頭分-合過程中引起的抖動(dòng)而影響復(fù)位。當(dāng)輸入的復(fù)位信號(hào)延續(xù)兩個(gè)機(jī)器周期以上的高電平時(shí)即為有效,用完成單片機(jī)的復(fù)位初始化操作。&l

21、t;/p><p>  單片機(jī)目前已被廣泛地應(yīng)用于家電、醫(yī)療、儀器儀表、工業(yè)自動(dòng)化、航空航天等領(lǐng)域。市場(chǎng)上比較流行的單片機(jī)種類主要有Intel公司、Atmel公司和Philip公司的8051系列單片機(jī),Motorola公司的M6800系列單片機(jī),Intel公司的MCS96系列單片機(jī)以及Microchip公司的PIC系列單片機(jī)。無論用戶使用哪種類型的單片機(jī),總要涉及到單片機(jī)復(fù)位電路的設(shè)計(jì)。而單片機(jī)復(fù)位電路設(shè)計(jì)的好壞,直接

22、影響到整個(gè)系統(tǒng)工作的可靠性。許多用戶在設(shè)計(jì)完單片機(jī)系統(tǒng),并在實(shí)驗(yàn)室調(diào)試成功后,在現(xiàn)場(chǎng)卻出現(xiàn)了“死機(jī)”、“程序走飛”等現(xiàn)象,這主要是單片機(jī)的復(fù)位電路設(shè)計(jì)不可靠引起的。圖1是一個(gè)單片機(jī)與大功率LED八段顯示器共享一個(gè)電源,并采用微分復(fù)位電路的實(shí)例。在這種情況下,系統(tǒng)有時(shí)會(huì)出現(xiàn)一些不可預(yù)料的現(xiàn)象,如無規(guī)律可循的“死機(jī)”、“程序走飛”等。而用仿真器調(diào)試時(shí)卻無此現(xiàn)象發(fā)生或極少發(fā)生此現(xiàn)象。又如圖2所示,在此圖中單片機(jī)復(fù)位采用另外一種復(fù)位電路。在此電

23、路的應(yīng)用中,用戶有時(shí)會(huì)發(fā)現(xiàn)在關(guān)閉電源后的短時(shí)間內(nèi)再次開啟電源,單片機(jī)可能會(huì)工作不正常。這些現(xiàn)象,都可認(rèn)為是由于單片機(jī)復(fù)位電路的設(shè)計(jì)不當(dāng)引起的。</p><p>  圖3-2 復(fù)位電路圖</p><p>  3.3顯示電路的設(shè)計(jì)</p><p>  就時(shí)鐘而言,通??刹捎靡壕э@示或數(shù)碼管顯示。由于一般的段式液晶屏,需要專門的驅(qū)動(dòng)電路,而且液晶顯示作為一種被動(dòng)顯示,可視

24、性相對(duì)較差;對(duì)于具有驅(qū)動(dòng)電路和微處理器接口的液晶顯示模塊(字符或點(diǎn)陣),一般多采用并行接口,對(duì)微處理器的接口要求較高,占用資源多。另外,89C2051本身無專門的液晶驅(qū)動(dòng)接口,因此,本時(shí)鐘采用數(shù)碼管顯示方式。數(shù)碼管作為一種主動(dòng)顯示器件,具有亮度高、價(jià)格便宜等優(yōu)點(diǎn),而且市場(chǎng)上也有專門的時(shí)鐘顯示組合數(shù)碼管。基于AT89S51單片機(jī)的控制系統(tǒng)包括四部分:數(shù)據(jù)采集、控制系統(tǒng)、時(shí)鐘電路、語音錄音電路和報(bào)音提示信息電路。</p>&l

25、t;p>  用數(shù)碼管作為顯示器。數(shù)碼管的驅(qū)動(dòng)電路簡單,使用方便,如果選擇了此方案,那么在夜間看時(shí)間的時(shí)候就不需要有光源,非常方便。其缺點(diǎn)是功耗較大。由于數(shù)碼管使用起來較為方便,在夜間看時(shí)間也很方便,因此我們選擇了數(shù)碼管作為顯示器.</p><p><b>  發(fā)音部分:</b></p><p>  用軟件方法產(chǎn)生方波輸出,通過三極管放大后驅(qū)動(dòng)蜂鳴器發(fā)音,這樣就可

26、以省去硬件振蕩電路,降低成本。</p><p><b>  4.器件介紹</b></p><p><b>  電源:</b></p><p>  如果是用電池供電,就比較方便攜帶,但是本系統(tǒng),采用了數(shù)碼管作為顯示器,功耗較大,需要經(jīng)常更換電池。況且,本系統(tǒng)的體積較大,即使使用電池供電也不能隨身攜帶,因此,用電池供電不大合適

27、,所以用外部穩(wěn)壓電源來供電。</p><p><b>  振蕩器:</b></p><p>  石英晶體振蕩器的特點(diǎn)是振蕩頻率準(zhǔn)確、電路結(jié)構(gòu)簡單、頻率易調(diào)整。它被廣泛應(yīng)用于彩電、計(jì)算機(jī)、遙控器等各類振蕩電路中。它還具有壓電效應(yīng):在晶體某一方向加一電場(chǎng),晶體就會(huì)產(chǎn)生機(jī)械變形;反之,若在晶片的兩側(cè)施加機(jī)械壓力,則在晶片相應(yīng)的方向上將產(chǎn)生電場(chǎng),這種物理現(xiàn)象稱為壓電效應(yīng)。在這

28、里,我們?cè)诰w某一方向加一電場(chǎng),從而在與此垂直的方向產(chǎn)生機(jī)械振動(dòng),有了機(jī)械振動(dòng),就會(huì)在相應(yīng)的垂直面上產(chǎn)生電場(chǎng),從而使機(jī)械振動(dòng)和電場(chǎng)互為因果,這種循環(huán)過程一直持續(xù)到晶體的機(jī)械強(qiáng)度限制時(shí),才達(dá)到最后穩(wěn)定,這種壓電諧振的頻率即為晶體振蕩器的固有頻率。</p><p><b>  控制器:</b></p><p>  控制器是電子鬧鐘設(shè)計(jì)的核心部分,按設(shè)計(jì)要求產(chǎn)生相應(yīng)的控制邏

29、輯,以控制其他各部分的工作。由程序計(jì)數(shù)器、指令寄存器、指令譯碼器、時(shí)序產(chǎn)生器和操作控制器組成,它是發(fā)布命令的“決策機(jī)構(gòu)”,即完成協(xié)調(diào)和指揮整個(gè)計(jì)算機(jī)系統(tǒng)的操作。</p><p>  控制器主要功能如下:從內(nèi)存中取出一條指令,并指出下一條指令在內(nèi)存中位置對(duì)指令進(jìn)行譯碼或測(cè)試,并產(chǎn)生相應(yīng)的操作控制信號(hào),以便啟動(dòng)規(guī)定的動(dòng)作;指揮并控制CPU、內(nèi)存和輸入/輸出設(shè)備之間數(shù)據(jù)流動(dòng)的方向。</p><p&g

30、t;<b>  計(jì)數(shù)器</b></p><p>  計(jì)數(shù)器ALARM-COUNTER實(shí)際上是一個(gè)異步復(fù)位、異步置位的累加器。在中央處理器 CPU 中,累加器 (accumulator) 是一種暫存器,用來儲(chǔ)存計(jì)算所產(chǎn)生的中間結(jié)果。沒有像累加器這樣的暫存器,那么在每次計(jì)算 (加法,乘法,移位等等) 后就必須要把結(jié)果寫回到內(nèi)存,也許然后再讀回來。然而存取主內(nèi)存的速度是比從數(shù)學(xué)邏輯單元(ALU)

31、到有直接路徑的累加器存取更慢。計(jì)數(shù)器的作用是:通常情況下進(jìn)行時(shí)鐘累加計(jì)數(shù),必要時(shí)可以置入新的時(shí)鐘值,然后從該值開始新的計(jì)數(shù)。</p><p><b>  寄存器</b></p><p>  寄存器ALARM-REG用于保存用戶設(shè)置的鬧鐘時(shí)間,是一個(gè)異步復(fù)位寄存器。寄存器是中央處理器內(nèi)的組成部份,是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址。在中央處理器

32、的控制部件中,包含的寄存器有指令寄存器(IR)和程序計(jì)數(shù)器(PC)。在中央處理器的算術(shù)及邏輯部件中,包含的寄存器有累加器(ACC)。</p><p><b>  分頻器</b></p><p>  分頻器DIVIDER將高速的外部時(shí)鐘頻率分頻成每一分鐘一次的時(shí)鐘頻率,以便進(jìn)行時(shí)鐘計(jì)數(shù)。由于石英晶體振蕩器產(chǎn)生的頻率很高,要得到秒脈沖,需要用分頻電路。例如,振蕩器輸出4M

33、Hz信號(hào),通過D觸發(fā)器(74LS74)進(jìn)行4分頻變成1MHz,然后送到10分頻計(jì)數(shù)器(74LS90,該計(jì)數(shù)器可以用8421碼制,也可以用5421碼制),經(jīng)過6次10分頻而獲得1Hz方波信號(hào)作為秒脈沖信號(hào)。</p><p><b>  顯示電路</b></p><p>  顯示器DRIVER根據(jù)需要顯示當(dāng)前時(shí)間、用戶設(shè)置的鬧鐘時(shí)間或用戶通過鍵盤輸入的新時(shí)間,同時(shí)判斷當(dāng)前

34、時(shí)間是否已到了鬧鐘時(shí)間,實(shí)際上是一個(gè)多路選擇比較器。多路選擇器是數(shù)據(jù)選擇器的別稱。在多路數(shù)據(jù)傳送過程中,能夠根據(jù)需要將其中任意一路選出來的電路,叫做數(shù)據(jù)選擇器,也稱多路選擇器或多路開關(guān)。</p><p><b>  輸入電路</b></p><p>  鍵盤緩沖器KEY-BUFFER是一個(gè)移位寄存器,暫存用戶鍵入的數(shù)字,并且實(shí)現(xiàn)用戶鍵入數(shù)字在顯示器上從右到左是依次顯示

35、。寄存器的用途:(1)可將寄存器內(nèi)的數(shù)據(jù)執(zhí)行算術(shù)及邏輯運(yùn)算。(2)存于寄存器內(nèi)的地址可用來指向內(nèi)存的某個(gè)位置,即尋址。(3)可以用來讀寫數(shù)據(jù)到電腦的周邊設(shè)備。AT89S51有8個(gè)8位數(shù)據(jù)寄存器,這些8位寄存器可分別組成16位寄存器: AH&AL=AX:累加寄存器,常用于運(yùn)算; BH&BL=BX:基址寄存器,常用于地址索引; CH&CL=CX:計(jì)數(shù)寄存器,常用于計(jì)數(shù); DH&DL=DX:數(shù)據(jù)

36、寄存器,常用于數(shù)據(jù)傳遞。</p><p>  為了運(yùn)用所有的內(nèi)存空間,8086設(shè)定了四個(gè)段寄存器,專門用來保存段地址:CS(Code Segment):代碼段寄存器;DS(Data Segment):數(shù)據(jù)段寄存器;SS(Stack Segment):堆棧段寄存器;ES(Extra Segment):附加段寄存器。</p><p>  當(dāng)一個(gè)程序要執(zhí)行時(shí),就要決定程序代碼、數(shù)據(jù)和堆棧

37、各要用到內(nèi)存的哪些位置,通過設(shè)定段寄存器 CS,DS,SS 來指向這些起始位置。通常是將DS固定,而根據(jù)需要修改CS。所以,程序可以在可尋址空間小于64K的情況下被寫成任意大小。所以,程序和其數(shù)據(jù)組合起來的大小,限制在DS 所指的64K內(nèi),這就是COM文件不得大于64K的原因。</p><p><b>  計(jì)時(shí)器</b></p><p>  在計(jì)時(shí)過程中,系統(tǒng)利用89

38、S51自身的計(jì)時(shí)器T0作為時(shí)鐘基準(zhǔn),計(jì)時(shí)器中斷的準(zhǔn)確度直接關(guān)系到整個(gè)系統(tǒng)的精度,因此獲取精確的定時(shí)時(shí)鐘信號(hào)成為該系統(tǒng)的關(guān)鍵。AT89S51單片機(jī)內(nèi)有2個(gè)可編程的16位定時(shí)器/計(jì)數(shù)器,并工作在方式l下,晶振頻率為12MHz。</p><p>  5系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件的設(shè)計(jì)方法與硬件設(shè)計(jì)的方法是相同的,也是根據(jù)系統(tǒng)的各個(gè)功能,劃分成各個(gè)子模塊,分別對(duì)每個(gè)模塊來進(jìn)行設(shè)計(jì),然后在通過各個(gè)模塊之間的調(diào)用來實(shí)現(xiàn)整個(gè)系統(tǒng)的功

39、能。</p><p>  系統(tǒng)軟件部分的設(shè)計(jì)模塊有:按鍵電路的軟件設(shè)計(jì)、復(fù)位電路的軟件設(shè)計(jì)、顯示電路的軟件設(shè)計(jì)共3個(gè)模塊。</p><p><b>  發(fā)音部分:</b></p><p>  用軟件方法產(chǎn)生方波輸出,通過三極管放大后驅(qū)動(dòng)蜂鳴器發(fā)音,這樣就可以省去硬件振蕩電路,降低成本。</p><p><b>

40、  電源:</b></p><p>  如果是用電池供電,就比較方便攜帶,但是本系統(tǒng),采用了數(shù)碼管作為顯示器,功耗較大,需要經(jīng)常更換電池。況且,本系統(tǒng)的體積較大,即使使用電池供電也不能隨身攜帶,因此,用電池供電不大合適,所以用外部穩(wěn)壓電源來供電。</p><p><b>  5.1軟件設(shè)計(jì)  </b></p><p&

41、gt;  AT89S5l內(nèi)部定時(shí)/計(jì)數(shù)器T0和Tl設(shè)置為定時(shí)器模式l工作方式.作為電子時(shí)鐘及電子秒表的計(jì)時(shí)基準(zhǔn)。定時(shí)器T0產(chǎn)生10 ms的中斷信號(hào),每經(jīng)過1t30次中斷,時(shí)鐘秒位加一,秒位經(jīng)60次加一后向時(shí)位進(jìn)位,當(dāng)時(shí)問為23時(shí)59分59秒時(shí),秒位再加一后變?yōu)?0時(shí)00分00秒.當(dāng)按鍵切換為電子秒表功能時(shí),T0每產(chǎn)生一次中斷,十毫秒單元加一,十毫秒單元經(jīng)過l0次加一后,百毫秒單元加一。依次進(jìn)位可實(shí)現(xiàn)最長為9小時(shí)59分59秒990毫秒的秒

42、表計(jì)時(shí),可達(dá)到分辯10 ms的計(jì)時(shí)精度。</p><p>  利用K1~K4按鍵可對(duì)時(shí)鐘進(jìn)行對(duì)時(shí)當(dāng)首次按下K1按鍵時(shí),顯示數(shù)碼管第一位閃爍,繼續(xù)按鍵時(shí),下一位閃爍。當(dāng)某一位閃爍時(shí),按下K2按鍵可使閃爍位加一。在正常時(shí)鐘顯示方式下按下K2鍵時(shí),轉(zhuǎn)為年、月、日顯示.按下K3鍵,可進(jìn)入秒表狀態(tài),按下K4鍵可顯示鬧鐘定時(shí)時(shí)間。</p><p>  軟件設(shè)計(jì)分為主程序、定時(shí)器T0和定時(shí)器T1中斷服務(wù)

43、程序及相應(yīng)的子程序。</p><p><b>  軟件功能:</b></p><p> ?。?)檢測(cè)按鍵。當(dāng)系統(tǒng)檢測(cè)到某個(gè)案件被按下時(shí),轉(zhuǎn)到相應(yīng)子程序處理,可實(shí)現(xiàn)校時(shí)、設(shè)定鬧鈴時(shí)間的功能。</p><p>  (2) 顯示。系統(tǒng)通過調(diào)用顯示子程序,可將顯示緩沖區(qū)里的內(nèi)容通過動(dòng)態(tài)掃描方式輸出到數(shù)碼管顯示器。</p><p>

44、;  (3) 計(jì)時(shí)。系統(tǒng)通過中斷和軟件計(jì)數(shù)器可產(chǎn)生秒信號(hào)。每到1s,系統(tǒng)將會(huì)調(diào)整時(shí)間存儲(chǔ)單元的內(nèi)容,從而實(shí)現(xiàn)計(jì)時(shí)功能。</p><p>  (4) 比較。每當(dāng)秒存儲(chǔ)單元的內(nèi)容為0時(shí),系統(tǒng)通過調(diào)用比較子程序可判斷當(dāng)前時(shí)間是否符合鬧鈴條件,若符合,則調(diào)用發(fā)音子程序使蜂鳴器發(fā)出鬧鈴聲音。</p><p>  (5) 產(chǎn)生音頻方波輸出。系統(tǒng)通過軟件產(chǎn)生音頻方波輸出使蜂鳴器發(fā)聲,這樣可以省去硬件振蕩

45、電路。</p><p>  (6) 拆分。為了提高存儲(chǔ)單元的利用率,本系統(tǒng)將時(shí)間數(shù)據(jù)壓縮成壓縮BCD碼后再送入顯存才能顯示。</p><p>  (7) 合并。為了提高修改時(shí)間的速度,可先對(duì)現(xiàn)存內(nèi)容逐位修改,然后調(diào)用合并子程序把顯存內(nèi)容合并后送入指定存儲(chǔ)單元。</p><p>  (8) 設(shè)定。系統(tǒng)進(jìn)入設(shè)定狀態(tài)后,可通過按“設(shè)定”鍵改變閃亮位位置和按“+”或“-”鍵

46、來加1或減1閃亮位內(nèi)容,從而達(dá)到報(bào)時(shí)和設(shè)定鬧鈴時(shí)間的目的。</p><p>  圖 T0中斷服務(wù)程序流程圖</p><p><b>  電路流程圖</b></p><p>  5.2整個(gè)系統(tǒng)軟件部分的總體設(shè)計(jì)</p><p>  在各個(gè)模塊的軟件設(shè)計(jì)完成后,便可以對(duì)整個(gè)系統(tǒng)進(jìn)行整體的軟件設(shè)計(jì)。其根本的設(shè)計(jì)思路是通

47、過設(shè)置一些聯(lián)系信號(hào),把原本功能獨(dú)立的各個(gè)模塊聯(lián)結(jié)在一起,從而實(shí)現(xiàn)整體系統(tǒng)的功能。AT89S5l內(nèi)部定時(shí)/計(jì)數(shù)器T0和Tl設(shè)置為定時(shí)器模式l工作方式.作為電子時(shí)鐘及電子秒表的計(jì)時(shí)基準(zhǔn)。定時(shí)器T0產(chǎn)生10 ms的中斷信號(hào),每經(jīng)過1t30次中斷,時(shí)鐘秒位加一,秒位經(jīng)60次加一后向時(shí)位進(jìn)位,當(dāng)時(shí)問為23時(shí)59分59秒時(shí),秒位再加一后變?yōu)?0時(shí)00分00秒.當(dāng)按鍵切換為電子秒表功能時(shí),T0每產(chǎn)生一次中斷,十毫秒單元加一,十毫秒單元經(jīng)過l0次加一后

48、,百毫秒單元加一。依次進(jìn)位可實(shí)現(xiàn)最長為9小時(shí)59分59秒990毫秒的秒表計(jì)時(shí),可達(dá)到分辯10 ms的計(jì)時(shí)精度。</p><p>  利用K1~K4按鍵可對(duì)時(shí)鐘進(jìn)行對(duì)時(shí)當(dāng)首次按下K1按鍵時(shí),顯示數(shù)碼管第一位閃爍,繼續(xù)按鍵時(shí),下一位閃爍。當(dāng)某一位閃爍時(shí),按下K2按鍵可使閃爍位加一。在正常時(shí)鐘顯示方式下按下K2鍵時(shí),轉(zhuǎn)為年、月、日顯示.按下K3鍵,可進(jìn)入秒表狀態(tài),按下K4鍵可顯示鬧鐘定時(shí)時(shí)間。</p>&

49、lt;p>  軟件設(shè)計(jì)分為主程序、定時(shí)器T0和定時(shí)器T1中斷服務(wù)程序及相應(yīng)的子程序。</p><p>  5.3子程序及其功能簡介</p><p><b>  (1) 比較程序</b></p><p>  每當(dāng)秒存儲(chǔ)單元的內(nèi)容為0時(shí),系統(tǒng)通過調(diào)用比較子程序可判斷當(dāng)前時(shí)間是否符合鬧鈴條件,若符合,則調(diào)用發(fā)音子程序使蜂鳴器發(fā)出鬧鈴聲音。<

50、;/p><p>  (2) 檢測(cè)按鍵程序</p><p>  當(dāng)系統(tǒng)檢測(cè)到某個(gè)案件被按下時(shí),轉(zhuǎn)到相應(yīng)子程序處理,可實(shí)現(xiàn)校時(shí)、設(shè)定鬧鈴時(shí)間的功能</p><p><b>  (3) 顯示程序</b></p><p>  系統(tǒng)通過調(diào)用顯示子程序,可將顯示緩沖區(qū)里的內(nèi)容通過動(dòng)態(tài)掃描方式輸出到數(shù)碼管顯示器。</p>&

51、lt;p>  (4) 時(shí)間設(shè)置程序</p><p>  系統(tǒng)通過按鍵檢測(cè),更改顯示數(shù)值,從而實(shí)現(xiàn)對(duì)當(dāng)前時(shí)間修改的功能</p><p><b>  5.4 子程序設(shè)計(jì)</b></p><p>  子程序設(shè)計(jì)框圖5.1所示,具體程序見附錄</p><p>  圖5.1 比較程序框圖</p><p&

52、gt;  5.5 軟件的調(diào)試環(huán)境</p><p>  單片機(jī)本身不具備自主開發(fā)能力,即使在單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)完成以后用戶也不能直接對(duì)程序進(jìn)行修改。單片機(jī)應(yīng)用系統(tǒng)的開發(fā)必須借助一套開發(fā)工具和軟件環(huán)境才能進(jìn)行。本節(jié)介紹一種單片機(jī)模擬調(diào)試軟件的使用。模擬調(diào)試軟件不僅可以在程序下載到單片機(jī)芯片之前驗(yàn)證它的正確性,而且模擬調(diào)試軟件也可以用來輔助學(xué)習(xí)單片機(jī)的基本知識(shí)。實(shí)用軟件Kei進(jìn)行模擬調(diào)試,Keil單片機(jī)模擬調(diào)試軟件是

53、目前獲得廣泛應(yīng)用的一種開發(fā)MCS51系列兼容單片機(jī)的軟件。該軟件可以從Keil公司中國代理處購買,也可以從Keil公司的網(wǎng)站(http://www. keil.com)上下載它的免費(fèi)評(píng)估(Eval)版本。</p><p>  下載獲得的Keil單片機(jī)模擬調(diào)試軟件是一個(gè)壓縮包,解壓后執(zhí)行其中的Setup.exe程序就可以安裝這個(gè)軟件。軟件的安裝過程與一般的Windows應(yīng)用軟件類似,只要按照安裝提示操作即可,這里不

54、作詳細(xì)介紹,僅需要注意的是,安裝方式要選擇Eval Vision安裝。Keil單片機(jī)模擬調(diào)試軟件安裝完成以后,計(jì)算機(jī)桌面上將產(chǎn)生一個(gè)標(biāo)注有“KeilμVision2”的圖標(biāo),雙擊這個(gè)圖標(biāo)就可以進(jìn)入Keil單片機(jī)模擬調(diào)試軟件的集成開發(fā)環(huán)境。集成開發(fā)環(huán)境的界面,初次進(jìn)入的集成開發(fā)環(huán)境界面中只包括空的工程管理窗口和輸出窗口。Keil單片機(jī)模擬調(diào)試軟件對(duì)MCS51單片機(jī)應(yīng)用系統(tǒng)的軟件開發(fā)過程采用工程(Project)管理。工程保存著程序編輯的信

55、息和程序調(diào)試的環(huán)境。在開始編寫程序之前首先應(yīng)該建立一個(gè)工程。新建一個(gè)工程之前通常還需要建立一個(gè)文件夾,后面產(chǎn)生的工程文件和源程序文件等都將存儲(chǔ)在這個(gè)文件夾之中。Keil單片機(jī)模擬調(diào)試軟件支持許多公司生產(chǎn)的MCS51單片機(jī)兼容產(chǎn)品。如前所述,本書應(yīng)用電路中采用Atmel公司的AT89S51芯片,下面以這款芯片為例介紹如何實(shí)現(xiàn)選擇。</p><p>  在圖5.3所示的對(duì)話框中的Data base列表框中首先選擇生產(chǎn)

56、芯片的公司名稱Atmel,雙擊這個(gè)公司名稱即可打開Atmel公司目前生產(chǎn)的所有芯片型號(hào)。接著在列出的產(chǎn)品清單中選擇將使用的AT89S51芯片,如圖5.3所示。最后單擊“確定”按鈕即可完成芯片的選擇。</p><p>  完成芯片的選擇后又回到如圖5.3所示的集成開發(fā)環(huán)境的窗口,但是這時(shí)該窗口中的工程管理窗口不再是空白,在它的文件選項(xiàng)卡中出現(xiàn)目錄列表Target 1和它的子目錄Source Group 1。<

57、/p><p>  集成開發(fā)環(huán)境中的菜單Project內(nèi)還包含Open Project和Close Project等選項(xiàng)。Open Project選項(xiàng)用來以后再次進(jìn)入已經(jīng)建立的工程,選擇Project→Open Project命令將打開選擇工程的對(duì)話框,該對(duì)話框與圖5.3類似。在 “查找范圍”下拉列表框中選擇欲打開的工程所在的文件夾,列表框中將出現(xiàn)該文件夾中的所有工程,選擇將要打開的工程,單擊“打開”按鈕即可打開一個(gè)工

58、程。選擇Project→Close Project命令將關(guān)閉當(dāng)前的工程。</p><p>  6.軟硬件系統(tǒng)的調(diào)試</p><p><b>  系統(tǒng)的調(diào)試方法 </b></p><p>  整個(gè)系統(tǒng)調(diào)試的主要思想是:先每個(gè)模塊進(jìn)行調(diào)試,然后整個(gè)系統(tǒng)一起調(diào)試。先軟硬件分開調(diào)試,然后一起調(diào)試。遵循先部分后整體的原則。</p><

59、;p>  系統(tǒng)的在調(diào)試過程中要注意以下幾點(diǎn):</p><p> ?。?)硬件電路焊完之后,在上電之前一定要先用萬用表檢測(cè)電源和地之間是否短路。</p><p> ?。?)上電之后要用示波器觀察信號(hào)的在電路中變化的情況,與設(shè)計(jì)當(dāng)初的情況相比較,找出差別,并進(jìn)行分析。</p><p> ?。?)軟件調(diào)試過程中可以使用斷點(diǎn)、單步執(zhí)行等常用的方法。</p>

60、<p> ?。?)軟硬件聯(lián)調(diào)時(shí),要注意軟件部分要一個(gè)功能一個(gè)功能的調(diào)試。</p><p>  6.1.1輸入按鍵的調(diào)試</p><p>  輸入按鍵的調(diào)試,只要按鍵按下去時(shí),按鍵有相應(yīng)的反應(yīng)就行,通過程序來判斷,單片機(jī)I/O是否能夠識(shí)別出。</p><p>  6.1.2復(fù)位電路的調(diào)試</p><p>  當(dāng)電源剛接通時(shí),接通電

61、源就完成了系統(tǒng)的初始化。</p><p>  6.1.3顯示電路的調(diào)試</p><p>  在本設(shè)計(jì)中,顯示電路只需完成,當(dāng)輸入數(shù)字時(shí)能正確顯示數(shù)字.</p><p>  6.1.4整個(gè)系統(tǒng)的聯(lián)調(diào)</p><p>  在系統(tǒng)各個(gè)部分都調(diào)試完畢之后,即可以進(jìn)行整個(gè)系統(tǒng)的調(diào)試。由于前面各個(gè)部分的調(diào)試做的都比較充分,所以在實(shí)際調(diào)試過程中,能夠較順利

62、的實(shí)現(xiàn)整個(gè)系統(tǒng)預(yù)期的功能。</p><p><b>  7 結(jié)論</b></p><p>  整個(gè)設(shè)計(jì)思路是:先進(jìn)行系統(tǒng)的整體規(guī)劃確定整個(gè)系統(tǒng)的功能,然后按照每個(gè)功能的具體要求,進(jìn)行各個(gè)模塊的實(shí)物設(shè)計(jì)并逐個(gè)調(diào)試,待全部通過后,進(jìn)行整個(gè)系統(tǒng)的聯(lián)調(diào),最終實(shí)現(xiàn)一個(gè)完整的系統(tǒng),并制成印刷線路板。</p><p>  整個(gè)系統(tǒng)的設(shè)計(jì)步驟如下:<

63、/p><p>  在單片機(jī)最小系統(tǒng)的基礎(chǔ)上,完成按鍵電路和復(fù)位電路的設(shè)計(jì)。</p><p>  完成顯示電路、數(shù)字按鍵、復(fù)位電路。</p><p><b>  具有3個(gè)功能按鍵:</b></p><p>  在復(fù)位后的待機(jī)狀態(tài)下,用于啟動(dòng)設(shè)定時(shí)間參數(shù)(對(duì)時(shí)或定鬧);</p><p>  在設(shè)定時(shí)間參數(shù)

64、狀態(tài)而且不是設(shè)定最低位(即分個(gè)位)的狀態(tài)下,用于結(jié)束當(dāng)前位的設(shè)定,當(dāng)前設(shè)定位下移;</p><p>  3.在設(shè)定最低位(分個(gè)位)的狀態(tài)下,用于結(jié)束本次時(shí)間設(shè)定。</p><p>  2)+1鍵,用于對(duì)當(dāng)前設(shè)定位(編輯位)進(jìn)行加1操作,根據(jù)12/24小時(shí)工作模式和正在編輯的當(dāng)前位的含義(時(shí)十位、時(shí)個(gè)位、分十位、分個(gè)位)自動(dòng)進(jìn)行數(shù)據(jù)的上限和下限判斷。例如,對(duì)12小時(shí)制,小時(shí)的十位只能是0、1

65、,如果當(dāng)前值為0,則按+1鍵后為1,再按+1鍵則又回復(fù)到0。把以上各個(gè)模塊聯(lián)結(jié)起來,整體調(diào)試功能。</p><p>  系統(tǒng)能在設(shè)定的時(shí)間內(nèi)鬧鈴,但聲音有點(diǎn)沙啞。這是因?yàn)榭刂品澍Q器的I/O口每次取反后,必須調(diào)用一次顯示子程序后才能再次取反,否則在發(fā)音期間不能顯示,而調(diào)用一次顯示子程序需要的時(shí)間大約為6ms(6位每位1ms),所以振蕩頻率f=1/T=1/(2*6ms)≈83Hz,顯然這個(gè)頻率過低,這就是造成聲音沙啞

66、的原因。經(jīng)測(cè)試,其時(shí)鐘誤差約為3秒/天,這是因?yàn)閺亩〞r(shí)器向CPU發(fā)出中斷申請(qǐng)信號(hào)到重裝定時(shí)初值的過程需要一定的時(shí)間。</p><p>  本系統(tǒng)通過測(cè)試,能夠?qū)崿F(xiàn)以下功能:</p><p><b> ?。?)按鍵輸入。</b></p><p><b> ?。?)鬧鈴聲音。</b></p><p>&

67、lt;b> ?。?)鬧鐘定時(shí)。</b></p><p>  6 附錄 原理圖</p><p>  7 附錄 參考文獻(xiàn)</p><p>  1.李捷,陳典濤等,一種應(yīng)用單片機(jī)電子鬧鐘的設(shè)計(jì)與制作設(shè)計(jì)[J],農(nóng)機(jī)化研究,2005。</p><p>  2.陳明熒.8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材 北

68、京:清華大學(xué)出版社 20043.胡漢才.單片機(jī)原理及其接口技術(shù) 北京:清華大學(xué)出版社 19954.徐淑華 程退安 姚萬生 .單片機(jī)微型機(jī)原理及應(yīng)用 哈爾濱工業(yè)大學(xué)出版社1994</p><p>  5.丁元杰.《單片機(jī)原理與應(yīng)用》.機(jī)械工業(yè)出版社出版.2003年2月.58-67 </p><p>  6. 朱定華.《單片機(jī)原理及接口技術(shù)》.電子工業(yè)出版社出版.2004年5月.32-46

69、 </p><p>  7. 何立民.《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù)》.北京航空航天大學(xué)出版社出版.2005年2月.16-45 </p><p>  8. 江曉安、董秀峰.《模擬電子技術(shù)》.西安電子科技大學(xué)出版社.2003年 9月.46-110 </p><p>  9. 陸坤.《電子設(shè)計(jì)技術(shù)》. 成都電子科技大學(xué)出版社.1996年5月.31-76<

70、/p><p>  8 附錄 程序</p><p>  ;;;;;;;;定義變量;;;;;;;;;</p><p>  S1EQUP3.4;按鍵</p><p>  JIAEQUP3.5</p><p>  SECLEQU24H;各個(gè)顯示單元</p><p>  SE

71、CHEQU25H</p><p>  HENGXIANEQU26H</p><p>  MINULEQU27H</p><p>  MINUHEQU28H</p><p>  HENGEQU29H</p><p>  HOURLEQU2AH</p><p>  

72、HOURHEQU2BH</p><p>  SECONDEQU2DH;秒變量單位</p><p>  COUNTEQU2EH;溢出中斷計(jì)數(shù)器</p><p>  SETFLAGEQU20H</p><p>  HHEQU00H;移位時(shí)用到的單元</p><p>  HL

73、EQU01H</p><p>  MHEQU02H</p><p>  MLEQU03H</p><p>  WARNSLEQU2FH</p><p>  WARNSHEQU30H</p><p>  WARNMLEQU32H;報(bào)警分低位</p><p>

74、  WARNMHEQU33H;報(bào)警分高位</p><p>  WARNHLEQU35H;報(bào)警時(shí)低位</p><p>  WARNHHEQU36H;報(bào)警時(shí)高位</p><p>  WARNCNTEQU37H;已設(shè)定鬧鈴時(shí)間標(biāo)志</p><p>  WARNINGBIT0CH;鬧鈴標(biāo)志</p

75、><p>  WARNSETTEDBIT0DH;已設(shè)定鬧鈴時(shí)間標(biāo)志</p><p>  ;;;;;;;誤差修正;;;;;;;;;;;;;;;</p><p>  TFIXBIT0EH;開始修正標(biāo)志</p><p>  NEQU60;誤差值,單位:1/10s,默認(rèn)為0,即不修正</p><p> 

76、 ;;;;;;;;;;;;程序入口地址;;;;;;;;;;;;;;</p><p><b>  ORG0000H</b></p><p><b>  LJMPMAIN</b></p><p>  ORG000BH;定時(shí)器T0溢出中斷入口</p><p>  LJMPTIMER0<

77、/p><p><b>  ORG0030H</b></p><p>  ;;;;;;;;主程序;;;;;;;;;;;;;;;</p><p><b>  MAIN:</b></p><p>  MOVSP,#60H;堆棧設(shè)置</p><p>  CLRTFIX;

78、誤差開始修正標(biāo)志初始化</p><p>  MOVCOUNT,#0</p><p>  LCALLSYS_INIT;系統(tǒng)初始化</p><p>  LCALLT0_INIT;定時(shí)器初始化</p><p>  LCALLSETTIME;等待設(shè)置當(dāng)前時(shí)間</p><p><b>  MAIN_

79、0:</b></p><p>  MOVIE,#80H;設(shè)置完后開始走時(shí),啟動(dòng)定時(shí)器T0</p><p>  SETBTR0;允許T0溢出中斷</p><p>  ;LCALLDELAY10MS</p><p>  LCALLDISPLAY1</p><p>  ;;;;;;;;;

80、;;系統(tǒng)初始化子程序;;;;;;;;;</p><p><b>  SYS_INIT:</b></p><p>  MOVIE,#00H;關(guān)中斷</p><p>  MOVR0,#20;清變量</p><p>  MOVR1,#10H</p><p>  MOVA,#00H&l

81、t;/p><p><b>  SYS_0:</b></p><p><b>  MOV@R0,A</b></p><p><b>  INCR0</b></p><p>  DJNZR1,SYS_0</p><p><b>  RET&l

82、t;/b></p><p>  ;;;;;;;;定時(shí)器、串口初始化;;;;;;;;;;;;;</p><p><b>  T0_INIT:</b></p><p>  MOVTMOD,#01H</p><p>  MOVTH0,#3CH</p><p>  MOVTL0,#0B0H&l

83、t;/p><p><b>  RET</b></p><p>  ;;;;;;;;;;;;;鬧鈴時(shí)間設(shè)定;;;;;;;;;;;</p><p><b>  SETWARN:</b></p><p>  MOVWARNHH,#0</p><p>  MOVWARNHL,#0&l

84、t;/p><p>  MOVWARNMH,#0</p><p>  MOVWARNML,#0</p><p>  MOVWARNSH,#0</p><p>  MOVWARNSL,#0</p><p>  MOVSETFLAG,#00</p><p><b>  SETBHH&

85、lt;/b></p><p>  KAISHI_NAO:</p><p>  LCALLDISPLAYNEW1</p><p><b>  SETW_1:</b></p><p>  JBS1,LOOP3</p><p>  LCALLDELAY10MS</p>&l

86、t;p>  JBS1,LOOP3</p><p><b>  JNBS1,$</b></p><p>  JBML,LOOPW1</p><p>  MOVA,SETFLAG </p><p>  RLA ;當(dāng)前位右移 l 位(標(biāo)志左移 1 位) </p><p>  MOV

87、 SETFLAG,A ;回存</p><p>  SJMP SET_W2</p><p><b>  LOOP3:</b></p><p>  LJMPSET_W2</p><p><b>  LOOPW1:</b></p><p>  LJMPKAISHI1

88、</p><p><b>  SET_W2:</b></p><p>  LCALLDISPLAYNEW1</p><p>  JBJIA,SETW_1</p><p>  LCALLDELAY10MS</p><p>  JBJIA,SETW_1</p><p&g

89、t;<b>  JNBJIA,$</b></p><p>  JNBHH,SHI_W2;為真,則當(dāng)前位滅</p><p>  INCWARNHH</p><p>  MOVA,WARNHH</p><p><b>  XRLA,#3</b></p><p>  J

90、ZSET_W1_1</p><p>  LJMPKAISHI_NAO</p><p>  SET_W1_1:</p><p>  MOVWARNHH,#0</p><p>  LJMPKAISHI_NAO</p><p><b>  SHI_W2:</b></p>&

91、lt;p>  JNBHL,FEN_W1</p><p>  INCWARNHL</p><p>  MOVA,WARNHH</p><p>  CJNEA,#2,SHI_W2_1</p><p>  MOVA,WARNHL</p><p>  XRLA,#05H;小時(shí)低位只能是0-4</p&

92、gt;<p>  JZSET_W21</p><p>  LJMPKAISHI_NAO</p><p><b>  SHI_W2_1:</b></p><p>  MOVA,WARNHL</p><p>  XRLA,#0AH</p><p>  JZSET_W21<

93、/p><p>  LJMPKAISHI_NAO </p><p><b>  SET_W21:</b></p><p>  MOVWARNHL,#0</p><p>  LJMPKAISHI_NAO</p><p><b>  FEN_W1:</b></p>

94、<p>  JNBMH,FEN_W2</p><p>  INCWARNMH</p><p>  MOVA,WARNMH</p><p><b>  XRLA,#6</b></p><p>  JZSET_W22</p><p>  LJMPKAISHI_NAO</

95、p><p>  SET_W22:</p><p>  MOVWARNMH,#0</p><p>  LJMPKAISHI_NAO</p><p><b>  FEN_W2:</b></p><p>  INCWARNML</p><p>  MOVA,WARNML&

96、lt;/p><p>  XRLA,#0AH</p><p>  JZSET_W23</p><p>  LJMPKAISHI_NAO</p><p><b>  SET_W23:</b></p><p>  MOVWARNML,#0</p><p>  LJMPKAI

97、SHI_NAO</p><p>  ;;;;;;;設(shè)置時(shí)間鬧鈴掃描;;;;;;;;;;</p><p>  DISPLAYNEW1:</p><p>  MOVA,#0AH</p><p><b>  MOV31H,A</b></p><p><b>  MOV34H,A</

98、b></p><p>  MOVR0,#2FH</p><p>  MOVR3,#0FEH</p><p>  PLAYNEW1:</p><p><b>  MOVA,R3</b></p><p><b>  MOVP2,A</b></p>

99、<p><b>  MOVA,@R0</b></p><p>  MOVDPTR,#TABLE</p><p>  MOVCA,@A+DPTR</p><p><b>  MOVP0,A</b></p><p>  LCALLDELAY1MS</p><p&g

100、t;  INCR0 RLA</p><p><b>  MOVR3,A</b></p><p>  SJMPPLAYNEW1</p><p>  LOOP2:RET</p><p>  ;;;;;;;;;;;;;時(shí)間調(diào)整;;;;;;;;;;;</p><p><b>  S

101、ETTIME:</b></p><p>  MOVHOURH,#0</p><p>  MOVHOURL,#0</p><p>  MOVMINUH,#0;計(jì)時(shí)無保存,可能是鬧鈴沒進(jìn)去</p><p>  MOVMINUL,#0</p><p>  MOVSECH,#0</p>

102、<p>  MOVSECL,#0</p><p>  MOVSETFLAG,#00</p><p><b>  SETBHH</b></p><p><b>  PANLING:</b></p><p>  LCALLDISPLAYNEW</p><p>

103、;  JBS1,PANLING</p><p>  LCALLDELAY100MS</p><p>  LCALLDELAY100MS</p><p>  LCALLDELAY100MS</p><p>  LCALLDELAY100MS</p><p>  LCALLDELAY100MS</p>

104、;<p>  JBS1,KAISHI1</p><p>  ;LCALLDELAY10MS</p><p>  JNBS1,SETC_1;;;;;;;;;;;;;;;;;;;;;;;;;;;;按住時(shí)間更長為設(shè)置鬧鈴,第一個(gè)數(shù)碼管顯示為"C"</p><p><b>  SETNAO:</b></

105、p><p>  SETBWARNSETTED</p><p>  LCALLSETWARN</p><p><b>  SETC_1:</b></p><p>  LCALLSETC</p><p><b>  KAISHI1:</b></p><

106、p>  MOVHOURH,#0</p><p>  MOVHOURL,#0</p><p>  MOVMINUH,#0</p><p>  MOVMINUL,#0</p><p>  MOVSECH,#0</p><p>  MOVSECL,#0</p><p>  MOV

107、SETFLAG,#00</p><p><b>  SETBHH</b></p><p><b>  KAISHI:</b></p><p>  LCALLDISPLAYNEW</p><p><b>  SET_1:</b></p><p>&

108、lt;b>  MOVA,R3</b></p><p>  JNBACC.7,LOOP2</p><p><b>  RLA</b></p><p><b>  MOVR3,A</b></p><p>  SJMPPLAYNEW1</p><p> 

109、 LOOP2:RET</p><p>  ;;;;;;;;;;;;;時(shí)間調(diào)整;;;;;;;;;;;</p><p><b>  SETTIME:</b></p><p>  MOVHOURH,#0</p><p>  MOVHOURL,#0</p><p>  MOVMINUH,#0

110、;計(jì)時(shí)無保存,可能是鬧鈴沒進(jìn)去</p><p>  MOVMINUL,#0</p><p>  MOVSECH,#0</p><p>  MOVSECL,#0</p><p>  MOVSETFLAG,#00</p><p><b>  SETBHH</b></p>&l

111、t;p><b>  PANLING:</b></p><p>  LCALLDISPLAYNEW</p><p>  JBS1,PANLING</p><p>  LCALLDELAY100MS</p><p>  LCALLDELAY100MS</p><p>  LCALLD

112、ELAY100MS</p><p>  LCALLDELAY100MS</p><p>  LCALLDELAY100MS</p><p>  JBS1,KAISHI1</p><p>  ;LCALLDELAY10MS</p><p>  JNBS1,SETC_1;;;;;;;;;;;;;;;;;;;;

113、;;;;;;;;按住時(shí)間更長為設(shè)置鬧鈴,第一個(gè)數(shù)碼管顯示為"C"</p><p><b>  SETNAO:</b></p><p>  SETBWARNSETTED</p><p>  LCALLSETWARN</p><p><b>  SETC_1:</b><

114、/p><p>  LCALLSETC</p><p><b>  KAISHI1:</b></p><p>  MOVHOURH,#0</p><p>  MOVHOURL,#0</p><p>  MOVMINUH,#0</p><p>  MOVMINUL,#

115、0</p><p>  MOVSECH,#0</p><p>  MOVSECL,#0</p><p>  MOVSETFLAG,#00</p><p><b>  SETBHH</b></p><p><b>  KAISHI:</b></p>&

116、lt;p>  LCALLDISPLAYNEW</p><p><b>  SET_1:</b></p><p>  JBS1,SET_2</p><p>  LCALLDELAY10MS</p><p>  JBS1,SET_2</p><p><b>  JNBS1,$

117、</b></p><p>  JBML,LOOP1</p><p>  MOVA,SETFLAG </p><p>  RLA ;當(dāng)前位右移 l 位(標(biāo)志左移 1 位) </p><p>  MOV SETFLAG,A ;回存</p><p>  SJMP SET_2</p>

118、<p><b>  LOOP1:</b></p><p>  LJMPMAIN_0</p><p><b>  SET_2:</b></p><p>  LCALLDISPLAYNEW</p><p>  JBJIA,SET_1</p><p>  

119、LCALLDELAY10MS</p><p>  JBJIA,SET_1</p><p><b>  JNBJIA,$</b></p><p>  JNBHH,SHI_2;為真,則當(dāng)前位滅</p><p><b>  INCHOURH</b></p><p>  

120、MOVA,HOURH</p><p><b>  XRLA,#3</b></p><p>  JZSET_1_1</p><p>  LJMPKAISHI</p><p>  SET_1_1:</p><p>  MOVHOURH,#0</p><p>  L

121、JMPKAISHI</p><p><b>  SHI_2:</b></p><p>  JNBHL,FEN_1</p><p><b>  INCHOURL</b></p><p>  MOVA,HOURH</p><p>  CJNEA,#2,SHI_2_1

122、</p><p>  MOVA,HOURL</p><p>  XRLA,#05H;小時(shí)低位只能是0-4</p><p><b>  JZSET_21</b></p><p>  LJMPKAISHI</p><p><b>  SHI_2_1:</b></

溫馨提示

  • 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)論