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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  題 目:時(shí)鐘計(jì)時(shí)器的設(shè)計(jì)</p><p><b>  姓 名: </b></p><p><b>  學(xué) 號(hào):</b></p><p>  專(zhuān) 業(yè):電氣工程及其自動(dòng)化</p><p><b>  指導(dǎo)老師: </b></p>

2、<p>  設(shè)計(jì)時(shí)間:2011年4月</p><p><b>  目 錄</b></p><p><b>  1. 引 言1</b></p><p>  1.1. 設(shè)計(jì)意義1</p><p>  1.2. 系統(tǒng)功能要求1</p><p><b> 

3、 2. 方案設(shè)計(jì)1</b></p><p>  2.1. 數(shù)字時(shí)鐘計(jì)時(shí)器設(shè)計(jì)方案論證1</p><p>  2.2. 硬件系統(tǒng)的總體設(shè)計(jì)框圖2</p><p><b>  3. 硬件設(shè)計(jì)2</b></p><p><b>  4. 軟件設(shè)計(jì)3</b></p>&l

4、t;p>  4.1. 主程序3</p><p>  4.2. 顯示子程序4</p><p>  4.3. 定時(shí)器T0中斷服務(wù)程序4</p><p>  4.4. 定時(shí)器T1中斷服務(wù)程序5</p><p>  4.5. 調(diào)時(shí)功能程序6</p><p>  4.6. 秒表功能程序6</p>

5、<p>  4.7. 鬧鐘時(shí)間設(shè)定功能程序6</p><p>  5. 調(diào)試及性能分析7</p><p>  5.1. 硬件調(diào)試7</p><p>  5.2. 軟件調(diào)試7</p><p>  5.3. 性能分析8</p><p><b>  6. 設(shè)計(jì)總結(jié)8</b><

6、/p><p>  7. 附 錄A:匯編源程序9</p><p>  8. 附錄B:作品實(shí)物圖片26</p><p>  9. 參考文獻(xiàn)27</p><p><b>  時(shí)鐘計(jì)時(shí)器的設(shè)計(jì)</b></p><p><b>  引 言</b></p><p&g

7、t;<b>  設(shè)計(jì)意義</b></p><p>  隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機(jī)控制的數(shù)字時(shí)鐘計(jì)時(shí)器,本數(shù)字時(shí)鐘計(jì)時(shí)器,可以顯示時(shí)、分、秒,以24小時(shí)計(jì)時(shí)方式運(yùn)行,能整點(diǎn)提醒(短蜂鳴,次數(shù)代表整點(diǎn)時(shí)間),使用按鍵開(kāi)關(guān)可實(shí)現(xiàn)時(shí)、分調(diào)整,秒表/時(shí)鐘功能轉(zhuǎn)換,省電(關(guān)閉顯示)及定時(shí)設(shè)定提醒(蜂鳴器)

8、等功能。</p><p>  人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,其中數(shù)字時(shí)鐘計(jì)時(shí)器就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。</p><p>  本設(shè)計(jì)所介紹的數(shù)字時(shí)鐘計(jì)時(shí)器與傳統(tǒng)的計(jì)時(shí)器相比,具有讀數(shù)方便,操作簡(jiǎn)

9、單,計(jì)時(shí)精準(zhǔn),還能實(shí)現(xiàn)整點(diǎn)提醒,定時(shí)提醒等功能。其輸出時(shí)間采用數(shù)字顯示,主要用于對(duì)時(shí)間要求精度高的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)AT89C52,用6位共陽(yáng)極LED數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)數(shù)字顯示功能,能準(zhǔn)確達(dá)到以上要求。</p><p><b>  系統(tǒng)功能要求</b></p><p>  用單片機(jī)及6位LED數(shù)碼管顯示時(shí)、分、秒,以24小時(shí)計(jì)時(shí)方式

10、運(yùn)行,能整點(diǎn)提醒(短蜂鳴,次數(shù)代表整點(diǎn)時(shí)間),使用按鍵開(kāi)關(guān)可實(shí)現(xiàn)時(shí)、分調(diào)整,秒表/時(shí)鐘功能轉(zhuǎn)換,省電(關(guān)閉顯示)及定時(shí)設(shè)定提醒(蜂鳴器)等功能。</p><p><b>  方案設(shè)計(jì)</b></p><p>  數(shù)字時(shí)鐘計(jì)時(shí)器設(shè)計(jì)方案論證</p><p>  為了實(shí)現(xiàn)LED顯示器的數(shù)字顯示,可以采用靜態(tài)顯示法和動(dòng)態(tài)顯示法。由于靜態(tài)顯示法需要數(shù)據(jù)

11、鎖存器等硬件,接口復(fù)雜一些,又考慮到時(shí)鐘顯示只有6位,且系統(tǒng)沒(méi)有其他復(fù)雜的處理任務(wù),所以決定采用動(dòng)態(tài)掃描法實(shí)現(xiàn)LED的顯示。</p><p>  單片機(jī)采用易購(gòu)的AT89C52系列,這種單片機(jī)具有足夠的空余硬件資源,可以實(shí)現(xiàn)其他的擴(kuò)充功能。如果考慮使用電池供電,則可采用LV系列單片機(jī)。</p><p>  硬件系統(tǒng)的總體設(shè)計(jì)框圖</p><p>  時(shí)鐘計(jì)時(shí)器硬件系

12、統(tǒng)的總體設(shè)計(jì)方框圖如圖2-1所示,控制器采用單片機(jī)AT89C52,數(shù)字輸出采用6位共陽(yáng)極LED數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)數(shù)字顯示。</p><p>  圖2-1 硬件系統(tǒng)的總體設(shè)計(jì)方框圖</p><p><b>  硬件設(shè)計(jì)</b></p><p>  時(shí)鐘計(jì)時(shí)器的硬件電路如圖2.2所示。該電路采用AT89C52單片機(jī)最小化應(yīng)用設(shè)計(jì),采用共陽(yáng)7段

13、LED顯示器,P0口段碼數(shù)據(jù),P2.0~P2.5口作列掃描輸出,P1.0,P1.1,P1.2,P1.3口接4個(gè)按鈕開(kāi)關(guān),用于調(diào)時(shí)及功能設(shè)置,P1.7端口接5V的小蜂鳴器,用于按鍵發(fā)音及定時(shí)提醒、整點(diǎn)到時(shí)提醒等,為了提供共陽(yáng)LED數(shù)碼管的列掃描驅(qū)動(dòng)電壓,用三極管9012做電源驅(qū)動(dòng)輸出,采用12MHZ晶振,可提高秒計(jì)時(shí)的精確性。</p><p>  圖3-1 時(shí)鐘計(jì)時(shí)器的硬件電路</p><p&

14、gt;<b>  軟件設(shè)計(jì)</b></p><p><b>  主程序</b></p><p>  本設(shè)計(jì)中計(jì)時(shí)采用定時(shí)器T0中斷完成,秒表使用定時(shí)器T1中斷完成。主程序循環(huán)調(diào)用顯示子程序和查鍵子程序,當(dāng)端口有開(kāi)關(guān)按下時(shí),轉(zhuǎn)入相應(yīng)功能程序。其主程序執(zhí)行流程如圖2.3所示。</p><p>  圖4-1 主程序流程圖<

15、;/p><p><b>  顯示子程序</b></p><p>  時(shí)間顯示子程序每次顯示6個(gè)連續(xù)內(nèi)存單元的十進(jìn)制BCD碼數(shù)據(jù),首地址在調(diào)用顯示程序時(shí)先指定。</p><p>  內(nèi)存中50H~55H為鬧鐘定時(shí)單元,60H~66H為秒表計(jì)時(shí)單元,70H~75H為時(shí)鐘顯示單元。由于采用7段共陽(yáng)極LED數(shù)碼管動(dòng)態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示,所以顯示用十進(jìn)制BCD

16、碼數(shù)據(jù)的對(duì)應(yīng)段碼存放在ROM表中。</p><p>  顯示時(shí),先取出內(nèi)存地址中的數(shù)據(jù),然后查得對(duì)應(yīng)的顯示用段碼從P0口輸出,P2口將對(duì)應(yīng)的數(shù)碼管選中供電,就能顯示該地址單元的數(shù)據(jù)值。為了顯示小數(shù)點(diǎn)及“—”、“A”等特殊字符,在顯示班級(jí)和計(jì)時(shí)時(shí)應(yīng)采用不同的顯示子程序。</p><p>  定時(shí)器T0中斷服務(wù)程序</p><p>  定時(shí)器T0用于時(shí)間計(jì)時(shí)。定時(shí)溢出中

17、斷周期設(shè)為50ms,中斷進(jìn)入后先進(jìn)行定時(shí)中斷初值校正,當(dāng)中斷累計(jì)20次時(shí),對(duì)秒計(jì)數(shù)單元進(jìn)行加1操作。時(shí)鐘計(jì)數(shù)單元地址分別在70H~71H(秒)、76H~77H(分)、78H~79H(時(shí))中,最大計(jì)時(shí)值為23時(shí)59分59秒。7AH單元內(nèi)存放“熄滅符”數(shù)據(jù)(#0AH),用于時(shí)間調(diào)整時(shí)的閃爍功能。在計(jì)數(shù)單元中,采用十進(jìn)制BCD碼計(jì)數(shù),滿10進(jìn)位。T0中斷計(jì)時(shí)程序流程圖如圖2.4所示。</p><p>  圖4-2 T

18、0中斷計(jì)時(shí)程序流程圖</p><p>  定時(shí)器T1中斷服務(wù)程序 </p><p>  T1中斷程序用于指示時(shí)間調(diào)整單元數(shù)字的閃爍或秒表計(jì)數(shù),在時(shí)間調(diào)整狀態(tài)下,每過(guò)0.3s左右,將對(duì)應(yīng)調(diào)整單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(#0AH).這樣,在調(diào)整時(shí)間時(shí),對(duì)應(yīng)調(diào)整單元的顯示數(shù)據(jù)會(huì)間隔閃亮。在做秒表計(jì)時(shí)時(shí),每10ms中斷一次,計(jì)數(shù)單元加1,每100次為1s.秒表計(jì)數(shù)單元地址在60H~61H(

19、10毫秒)、62H~63H(秒)、64H~65H(分)中,最大計(jì)數(shù)值為99分59.99秒。T1中斷服務(wù)程序流程圖如圖2.5所示。</p><p>  圖4-3 T1中斷服務(wù)程序流程圖</p><p><b>  調(diào)時(shí)功能程序</b></p><p>  調(diào)時(shí)功能程序的設(shè)計(jì)方法是:按下P1.0口按鍵,若按下時(shí)間小于1s,則進(jìn)入省電狀態(tài)(數(shù)碼管

20、不亮,時(shí)鐘不停);否則進(jìn)入調(diào)分狀態(tài),等待操作,此時(shí)計(jì)時(shí)器停止走動(dòng)。當(dāng)再按下P1.0口按鍵時(shí),若按下時(shí)間小于0.5s,則時(shí)間加1分鐘;若按下時(shí)間大于0.5s,則進(jìn)入小時(shí)狀態(tài)。按下P1.1口按鍵時(shí),可進(jìn)行減1調(diào)整。在消失調(diào)整狀態(tài)下,當(dāng)按鍵按下的時(shí)間大于0.5s時(shí),退出時(shí)間調(diào)整狀態(tài),時(shí)鐘從0s開(kāi)始計(jì)時(shí)。</p><p><b>  秒表功能程序</b></p><p>  

21、在正常時(shí)鐘狀態(tài)下,若按下P1.1口按鍵,則進(jìn)行時(shí)鐘/秒表顯示功能的轉(zhuǎn)換,秒表中斷計(jì)時(shí)程序啟動(dòng),顯示首地址改為60H,LED將顯示秒表計(jì)時(shí)單元60H-65H中的數(shù)據(jù)。按下P1.2口的按鍵開(kāi)關(guān),可實(shí)現(xiàn)秒表清0、秒表啟動(dòng)、秒表暫停功能;當(dāng)再按下P1.1口按鍵時(shí),關(guān)閉T1秒表中斷計(jì)時(shí),顯示首址又改為70H,恢復(fù)正常時(shí)間的顯示功能。</p><p>  鬧鐘時(shí)間設(shè)定功能程序</p><p>  在正

22、常時(shí)鐘狀態(tài)下,若按下P1.3口的按鍵開(kāi)關(guān),則進(jìn)入這頂鬧時(shí)調(diào)分狀態(tài),顯示首地址改為50H。LED將顯示50H-55H中的鬧鐘設(shè)定時(shí)間,顯示式樣為00:00—,其中高2位代表時(shí),低2位代表分,在定時(shí)鬧鈴時(shí)精確到分。按P1.2鍵,分加1;按P1.0鍵,分減1.若再按P1.3鍵,則進(jìn)入時(shí)調(diào)整狀態(tài),顯示式樣為00:00:—,再按P1.2鍵,時(shí)加1,按P1.0鍵,時(shí)減1.按P1.1鍵,鬧鈴有效,顯示式樣變?yōu)?0:00:-0;再按P1.1鍵,鬧鈴無(wú)效

23、,顯示式樣又變?yōu)?0:00:—。再按P1.3鍵,調(diào)整鬧鐘時(shí)間結(jié)束,回復(fù)正常時(shí)間的顯示。在鬧鈴時(shí),可按一下P1.3口的按鍵開(kāi)關(guān)使蜂鳴停止,不按則蜂鳴器將鳴叫1min后自行停止。在設(shè)定鬧鐘后,若要取消鬧時(shí)功能,則可按下P1.3鍵,當(dāng)聽(tīng)到“滴”的一聲時(shí)表明已取消了鬧鈴功能。 </p><p><b>  調(diào)試及性能分析</b></p><p><b>  硬件調(diào)試

24、</b></p><p>  在上電前先對(duì)照硬件電路原理圖檢查電路板的焊接情況,看有沒(méi)有虛焊及漏焊的地方,檢查的方式是用萬(wàn)用表歐姆檔對(duì)照電路原理圖一塊塊的檢查,最主要的是對(duì)數(shù)碼管之間連接的檢查,這一塊接線較多,檢查時(shí)一定要每一個(gè)管腳都對(duì)應(yīng)上,比如a腳對(duì)a腳,b腳對(duì)b腳,按此順序一步步檢查。接著就是列驅(qū)動(dòng)電路的檢查也就是三極管的檢查,先要弄清三極管的每個(gè)腳對(duì)應(yīng)的是哪個(gè)極,然后再按線路檢查。最后是單片機(jī)的

25、檢查,先要檢查是否接入正負(fù)極,其次要檢查晶振是否接上,后再檢查其他部位。待所有都檢查完后再上電,此時(shí)一般都沒(méi)什么問(wèn)題,都能得出實(shí)驗(yàn)現(xiàn)象。我在調(diào)試時(shí)主要問(wèn)題是晶振沒(méi)有接入,所以剛開(kāi)始只是顯示0而沒(méi)其他現(xiàn)象,后來(lái)接入后就好了。</p><p><b>  軟件調(diào)試 </b></p><p>  軟件調(diào)試是在Keil C51編譯器下進(jìn)行的,主要改的地方是日期顯示地方。在提供

26、的匯編源程序中,顯示日期和學(xué)號(hào)的子程序中將STAB表,啟動(dòng)時(shí)顯示2006年12月23日、C04-2-28(學(xué)號(hào))用</p><p>  STAB:DB0AH,0AH,0AH,0AH,0AH,0AH,08H,02H,0CH,02H,0CH,04H,00H,0BH,0AH,0AH</p><p>  DB03H,02H,0CH,02H,01H,0CH,06H,00H,00H,02H,0AH,0

27、AH,0AH,0AH,0AH,0AH</p><p><b>  改為</b></p><p>  STAB:DB0AH,0AH,0AH,0AH,0AH,01H,05H,00H,02H,02H,05H,03H,08H,00H,0AH,0AH</p><p>  DB00H,02H,0CH,05H,00H,0CH,01H,01H,00H,02H,

28、0AH,0AH,0AH,0AH,0AH,0AH</p><p>  通過(guò)編譯可以正確顯示學(xué)號(hào):083522051 日期:2011-5-20,然后通過(guò)下載工具將此程序燒到單片機(jī)內(nèi)。</p><p><b>  性能分析</b></p><p>  根據(jù)設(shè)計(jì)程序的分析可知,LED顯示器動(dòng)態(tài)掃描的頻率約為167Hz,實(shí)際使用觀察時(shí)完全沒(méi)有閃爍。由

29、于計(jì)時(shí)中斷中加了中斷延時(shí)誤差處理,所以實(shí)際計(jì)時(shí)精度很高,可滿足多種場(chǎng)合要求。根據(jù)設(shè)計(jì),可以設(shè)計(jì)一個(gè)滾動(dòng)顯示子程序,使制作日期,學(xué)號(hào)以一定速度滾動(dòng)顯示。</p><p><b>  設(shè)計(jì)總結(jié)</b></p><p>  通過(guò)此次的單片機(jī)課程設(shè)計(jì),使我學(xué)到了很多知識(shí),也提高了動(dòng)手實(shí)踐能力。在這次課程設(shè)計(jì)中,我們首先要進(jìn)行原理圖的設(shè)計(jì),然后把所有原件檢測(cè)和整理好,待所有的元

30、器件配齊后再進(jìn)行元件的布局,布局的好壞很重要,一方面它會(huì)影響到整體的美觀性,另一方面也影響焊接的難易程度及用線的數(shù)量。接著就是要對(duì)原理圖進(jìn)行分析,這是至關(guān)重要的環(huán)節(jié),原理是否弄懂直接關(guān)系到實(shí)驗(yàn)?zāi)懿荒艹晒?,原理圖的分析主要包括弄懂各芯片、各器件的功能,比如說(shuō)要清楚74LS244芯片的各引腳圖的功能,還要知道6位LED數(shù)碼管的引腳圖以及三極管的各個(gè)腳對(duì)應(yīng)的是哪個(gè)極等問(wèn)題。在這些都弄懂后接下來(lái)就是焊接了,,焊接時(shí)既要要焊的牢,又要焊的美觀,這

31、些都需要在焊接過(guò)程中十分注意。</p><p>  焊接工作完成后需要進(jìn)行調(diào)試,調(diào)試一般情況下都會(huì)出現(xiàn)各種各樣的問(wèn)題,幸運(yùn)的是,我第一次調(diào)試就成功了,從而證明了硬件沒(méi)問(wèn)題啦。剩下就是軟件的調(diào)試,軟件的調(diào)試比較簡(jiǎn)單,主要看懂程序的每一部分,并正確修改有錯(cuò)誤的地方就行啦。</p><p>  本次課程設(shè)計(jì)時(shí)間雖然不是很長(zhǎng),但它是一個(gè)很好的實(shí)踐機(jī)會(huì)。上學(xué)期我們對(duì)單片機(jī)的理論進(jìn)行了學(xué)習(xí),使我對(duì)單片

32、機(jī)有了初步的了解,通過(guò)本次的課程設(shè)計(jì)使我對(duì)單片機(jī)的理解更深刻了,許多的知識(shí)動(dòng)手后掌握的也更好。總之,通本次課程設(shè)計(jì),使我收獲很大,我也會(huì)在今后的學(xué)習(xí)中加強(qiáng)這方面知識(shí)的學(xué)習(xí)和掌握。</p><p>  附 錄A:匯編源程序</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;;

33、 AT89C52時(shí)鐘程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;*********************************************************************************************;</p>&l

34、t;p>  ;以下程序能用于24小時(shí)計(jì)時(shí),能作為秒表使用,能定時(shí)鬧鈴1分鐘(也可關(guān)).</p><p>  ;使用方法:開(kāi)機(jī)后在00:00:00起開(kāi)始計(jì)時(shí),(1)長(zhǎng)按P1.0進(jìn)入調(diào)分狀態(tài):分單元閃爍</p><p>  ;按P1.0加1,按P1.1減1.再長(zhǎng)按P1.0進(jìn)入時(shí)調(diào)整狀態(tài),時(shí)單元閃爍,加減調(diào)整同調(diào)分.</p><p>  ;按長(zhǎng)按退出調(diào)整狀態(tài). (

35、2)按下P1.1進(jìn)入秒表狀態(tài):按P1.2暫停,再按P1.2秒表清零,再按</p><p>  ;P1.2秒表又啟動(dòng),按P1.1退出秒表回到時(shí)鐘狀態(tài). (3)按P1.3進(jìn)入設(shè)定鬧時(shí)狀態(tài): 00:00: -,可進(jìn)</p><p>  ;行分設(shè)定,按P1.2分加1,再按P1.3為時(shí)調(diào)整,00:00:- ,按P1.2時(shí)加1,按P1.1鬧鈴有效,顯示為00:00:-0,再按</p>&

36、lt;p>  ;P1.1鬧鈴無(wú)效(顯示00:00:- ,),按P1.3調(diào)鬧鐘結(jié)束.在鬧鈴時(shí)可按P1.3停鬧,不按鬧鈴1分鐘.</p><p>  ;定時(shí)器T0、T1溢出周期為50MS,T0為秒計(jì)數(shù)用, T1為調(diào)整時(shí)閃爍及秒表定時(shí)用,</p><p>  ;P1.0、P1.1、P1.2、P1.3為調(diào)整按鈕,P0口為字符輸出口,P2為掃描口,P1.7為蜂嗚器口,采用共陽(yáng)顯示管。</

37、p><p>  ;50H-55H為鬧鐘定時(shí)單元,60H-65H為秒表計(jì)時(shí)單元,70H-75H為顯示時(shí)間單元,76H-79H為分時(shí)計(jì)時(shí)單元。</p><p>  ;03H標(biāo)志=0時(shí)鐘閃爍,=1秒表, 05H=0,不鬧鈴,=1要鬧鈴. 07H每秒改變一次,用作間隔嗚叫.</p><p>  ;***********************************

38、************************************************************;</p><p>  DISPFIRST EQU 30H ;顯示首址存放單元</p><p>  BELL EQU P1.7 ;小喇叭</p><p>  CONBS EQU 2FH ;存放報(bào)時(shí)

39、次數(shù)</p><p><b>  ;</b></p><p>  ;****************************************</p><p>  ;; 中斷入口程序 ;;</p><p>  ;*****************************

40、***********</p><p><b>  ;</b></p><p>  ORG 0000H ;程序執(zhí)行開(kāi)始地址</p><p>  LJMP START ;跳到標(biāo)號(hào)START執(zhí)行</p><p>  ORG 0003H ;外中斷0中斷程序入口</p>&l

41、t;p>  RETI ;外中斷0中斷返回</p><p>  ORG 000BH ;定時(shí)器T0中斷程序入口</p><p>  LJMP INTT0 ;跳至INTTO執(zhí)行</p><p>  ORG 0013H ;外中斷1中斷程序入口</p><p>  RETI

42、 ;外中斷1中斷返回</p><p>  ORG 001BH ;定時(shí)器T1中斷程序入口</p><p>  LJMP INTT1 ;跳至INTT1執(zhí)行</p><p>  ORG 0023H ;串行中斷程序入口地址</p><p>  RETI ;串行中斷程序返回&

43、lt;/p><p><b>  ;</b></p><p>  ;****************************************</p><p>  ;; 以下程序開(kāi)始 ;;</p><p>  ;******************************

44、**********</p><p><b>  ;整點(diǎn)報(bào)時(shí)用</b></p><p>  QQQQ : MOV A,#10H</p><p>  MOV B,79H</p><p><b>  MUL AB</b></p><p>  ADD

45、 A,78H</p><p>  MOV CONBS,A</p><p>  BSLOOP: LCALL DS20MS</p><p>  LCALL DL1S</p><p>  LCALL DL1S</p><p>  LCALL DL1S</p><p>  DJNZ CONBS,BSL

46、OOP</p><p>  CLR 08H ;清整點(diǎn)報(bào)時(shí)標(biāo)志</p><p>  AJMP START1</p><p><b>  ;</b></p><p>  ;****************************************</p><p>  ;;

47、 主程序開(kāi)始 ;;</p><p>  ;****************************************</p><p><b>  ;</b></p><p>  START: LCALL ST ;上電顯示年月日及班級(jí)學(xué)號(hào)</p><

48、;p>  MOV R0,#00H ;清00H-7FH內(nèi)存單元</p><p>  MOV R7,#80H ;</p><p>  CLEARDISP: MOV @R0,#00H ;</p><p>  INC R0 ;</p><p>  DJNZ R7,C

49、LEARDISP ;</p><p>  MOV 20H,#00H ;清20H(標(biāo)志用)</p><p>  MOV 7AH,#0AH ;放入"熄滅符"數(shù)據(jù)</p><p>  MOV TMOD,#11H ;設(shè)T0、T1為16位定時(shí)器</p><p>  MOV TL0,

50、#0B0H ;50MS定時(shí)初值(T0計(jì)時(shí)用)</p><p>  MOV TH0,#3CH ;50MS定時(shí)初值</p><p>  MOV TL1,#0B0H ;50MS定時(shí)初值(T1閃爍定時(shí)用)</p><p>  MOV TH1,#3CH ;50MS定時(shí)初值</p><p>  SETB EA

51、 ;總中斷開(kāi)放</p><p>  SETB ET0 ;允許T0中斷</p><p>  SETB TR0 ;開(kāi)啟T0定時(shí)器</p><p>  MOV R4,#14H ;1秒定時(shí)用計(jì)數(shù)值(50MS×20)</p><p>  MOV DISPF

52、IRST,#70H ;顯示單元為70-75H</p><p><b>  ;以下主程序循環(huán)</b></p><p>  START1: LCALL DISPLAY ;調(diào)用顯示子程序</p><p>  JNB P1.0,SETMM1 ;P1.0口為0時(shí)轉(zhuǎn)時(shí)間調(diào)整程序</p><p>  JNB

53、 P1.1,FUNSS ;秒表功能,P1.1按鍵調(diào)時(shí)時(shí)作減1加能</p><p>  JNB P1.2,FUNPT ;秒表STOP,PUSE,CLR</p><p>  JNB P1.3,TSFUN ;定時(shí)鬧鈴設(shè)定</p><p>  JB 08H, QQQQ</p><p>  AJMP START1

54、 ;P1.0口為1時(shí)跳回START1</p><p><b>  ;</b></p><p>  FUNPT: LJMP FUNPTT</p><p>  ;以下鬧鈴時(shí)間設(shè)定程序,按P1.3進(jìn)入設(shè)定</p><p>  TSFUN: LCALL DS20MS</p><p> 

55、 JB P1.3,START1 ;</p><p>  WAIT113: JNB P1.3,WAIT113 ;等待鍵釋放</p><p>  JB 05H,CLOSESP ;鬧鈴已開(kāi)的話,關(guān)鬧鈴</p><p>  MOV DISPFIRST,#50H ;進(jìn)入鬧鈴設(shè)定程序,顯示50-55H鬧鐘定時(shí)單元</p>

56、<p>  MOV 50H,#0CH ;"-" 鬧鈴設(shè)定時(shí)顯示格式00:00: -</p><p>  MOV 51H,#0AH ;"黑"</p><p><b>  ;</b></p><p>  DSWAIT: SETB EA</p&

57、gt;<p>  LCALL DISPLAY</p><p>  JNB P1.2,DSFINC ;分加1</p><p>  JNB P1.0,DSDEC ;分減1</p><p>  JNB P1.3,DSSFU ;進(jìn)入時(shí)調(diào)整</p><p>  AJMP DSWAIT</

58、p><p><b>  ;</b></p><p>  CLOSESP: CLR 05H ;關(guān)鬧鈴標(biāo)志</p><p><b>  CLR BELL</b></p><p>  AJMP START1</p><p>  DSSFU: LCALL

59、 DS20MS ;消抖</p><p>  JB P1.3, DSWAIT</p><p>  LJMP DSSFUNN ;進(jìn)入時(shí)調(diào)整</p><p><b>  ;</b></p><p>  SETMM1: LJMP SETMM ;轉(zhuǎn)到時(shí)間調(diào)整程序SETMM<

60、;/p><p><b>  ;</b></p><p>  DSFINC : LCALL DS20MS ;消抖</p><p>  JB P1.2, DSWAIT</p><p>  DSWAIT12: LCALL DISPLAY ;等鍵 釋放</p><p> 

61、 JNB P1.2, DSWAIT12</p><p><b>  CLR EA</b></p><p>  MOV R0,#53H ;</p><p>  LCALL ADD1 ;鬧鈴設(shè)定分加1</p><p>  MOV A,R3

62、 ;分?jǐn)?shù)據(jù)放入A</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  CJNE A,#60H,ADDHH22 ;</p><p>  ADDHH22: JC DSWAIT ;小于60分時(shí)返回</p><p>  ACALL CLR0

63、 ;大于或等于60分時(shí)分計(jì)時(shí)單元清0</p><p>  AJMP DSWAIT</p><p>  DSDEC : LCALL DS20MS ;消抖</p><p>  JB P1.0, DSWAIT</p><p>  DSWAITEE: LCALL DISPLAY ;等鍵 釋放</p&

64、gt;<p>  JNB P1.0, DSWAITEE</p><p><b>  CLR EA</b></p><p>  MOV R0,#53H ;</p><p>  LCALL sub1 ;鬧鈴設(shè)定分減1</p><p>  LJMP D

65、SWAIT</p><p>  ;以下秒表功能/時(shí)鐘轉(zhuǎn)換程序</p><p>  ;按下P1.1 可進(jìn)行功能轉(zhuǎn)換</p><p>  FUNSS: LCALL DS20MS</p><p>  JB P1.1,START11</p><p>  WAIT11: JNB P1.1,WAIT11</p&

66、gt;<p><b>  CPL 03H</b></p><p>  JNB 03H,TIMFUN</p><p>  MOV DISPFIRST,#60H ;顯示秒表數(shù)據(jù)單元</p><p>  MOV 60H,#00H</p><p>  MOV 61H,#00H</p>

67、;<p>  MOV 62H,#00H</p><p>  MOV 63H,#00H</p><p>  MOV 64H,#00H</p><p>  MOV 65H,#00H</p><p>  MOV TL1,#0F0H ;10MS定時(shí)初值()</p><p>  MOV

68、 TH1,#0D8H ;10MS定時(shí)初值</p><p><b>  SETB TR1</b></p><p><b>  SETB ET1</b></p><p>  START11: LJMP START1</p><p>  TIMFUN:MOV DISPFIRST,#70

69、H ;顯示時(shí)鐘數(shù)據(jù)單元</p><p><b>  CLR ET1</b></p><p><b>  CLR TR1</b></p><p>  START12: LJMP START1</p><p>  ;以下秒表暫停\清零功能程序</p><p> 

70、 ;按下P1.2暫?;蚯?,按下P1.1退出秒表回到時(shí)鐘計(jì)時(shí)</p><p>  FUNPTT: LCALL DS20MS</p><p>  JB P1.2,START12</p><p>  WAIT22: JNB P1.2,WAIT21</p><p><b>  CLR ET1</b></

71、p><p><b>  CLR TR1</b></p><p>  WAIT33: JNB P1.1,FUNSS</p><p>  JB P1.2,WAIT31</p><p>  LCALL DS20MS</p><p>  JB P1.2,WAIT33</p>

72、<p>  WAIT66: JNB P1.2,WAIT61</p><p>  MOV 60H,#00H</p><p>  MOV 61H,#00H</p><p>  MOV 62H,#00H</p><p>  MOV 63H,#00H</p><p>  MOV 64H,

73、#00H</p><p>  MOV 65H,#00H</p><p>  WAIT44: JNB P1.1,FUNSS</p><p>  JB P1.2,WAIT41</p><p>  LCALL DS20MS</p><p>  JB P1.2,WAIT44</p><

74、;p>  WAIT55: JNB P1.2,WAIT51</p><p><b>  SETB ET1</b></p><p><b>  SETB TR1</b></p><p>  AJMP START1</p><p>  ;以下鍵等待釋放時(shí)顯示不會(huì)熄滅用</p&

75、gt;<p>  WAIT21: LCALL DISPLAY</p><p>  AJMP WAIT22</p><p>  WAIT31: LCALL DISPLAY</p><p>  AJMP WAIT33</p><p>  WAIT41: LCALL DISPLAY<

76、/p><p>  AJMP WAIT44</p><p>  WAIT51: LCALL DISPLAY</p><p>  AJMP WAIT55</p><p>  WAIT61: LCALL DISPLAY</p><p>  AJMP WAIT66</p><p

77、><b>  ;</b></p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 1秒計(jì)時(shí)程序 ;;</p><p>  ;;;;;;

78、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;T0中斷服務(wù)程序</b></p><p>  INTT0: PUSH ACC ;累加器入棧保護(hù)</p><p>  PUSH PSW ;狀態(tài)字入棧保護(hù)</p><p>  CL

79、R ET0 ;關(guān)T0中斷允許</p><p>  CLR TR0 ;關(guān)閉定時(shí)器T0</p><p>  MOV A,#0B7H ;中斷響應(yīng)時(shí)間同步修正</p><p>  ADD A,TL0 ;低8位初值修正</p><p>  MOV TL0,A

80、 ;重裝初值(低8位修正值)</p><p>  MOV A,#3CH ;高8位初值修正</p><p>  ADDC A,TH0 ;</p><p>  MOV TH0,A ;重裝初值(高8位修正值)</p><p>  SETB TR0 ;開(kāi)啟定時(shí)器T0

81、</p><p>  DJNZ R4, OUTT0 ;20次中斷未到中斷退出</p><p>  ADDSS: MOV R4,#14H ;20次中斷到(1秒)重賦初值</p><p>  CPL 07H ;鬧鈴時(shí)間隔嗚叫用</p><p>  MOV R0,#71H

82、 ;指向秒計(jì)時(shí)單元(71H-72H)</p><p>  ACALL ADD1 ;調(diào)用加1程序(加1秒操作)</p><p>  MOV A,R3 ;秒數(shù)據(jù)放入A(R3為2位十進(jìn)制數(shù)組合)</p><p>  CLR C ;清進(jìn)位標(biāo)志</p>

83、<p>  CJNE A,#60H,ADDMM ;</p><p>  ADDMM: JC OUTT0 ;小于60秒時(shí)中斷退出</p><p>  ACALL CLR0 ;大于或等于60秒時(shí)對(duì)秒計(jì)時(shí)單元清0</p><p>  MOV R0,#77H ;指向分計(jì)時(shí)單

84、元(76H-77H)</p><p>  ACALL ADD1 ;分計(jì)時(shí)單元加1分鐘</p><p>  MOV A,R3 ;分?jǐn)?shù)據(jù)放入A</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  CJNE A,#60H,ADDHH

85、 ;</p><p>  ADDHH: JC OUTT0 ;小于60分時(shí)中斷退出</p><p>  ACALL CLR0 ;大于或等于60分時(shí)分計(jì)時(shí)單元清0</p><p>  LCALL DS20MS ;正點(diǎn)報(bào)時(shí)</p><p><b>  SETB

86、08H</b></p><p>  MOV R0,#79H ;指向小時(shí)計(jì)時(shí)單元(78H-79H)</p><p>  ACALL ADD1 ;小時(shí)計(jì)時(shí)單元加1小時(shí)</p><p>  MOV A,R3 ;時(shí)數(shù)據(jù)放入A</p><p>  CLR C

87、 ;清進(jìn)位標(biāo)志</p><p>  CJNE A,#24H,HOUR ;</p><p>  HOUR: JC OUTT0 ;小于24小時(shí)中斷退出</p><p>  ACALL CLR0 ;大于或等于24小時(shí)小時(shí)計(jì)時(shí)單元清0</p><p>

88、  OUTT0: MOV 72H,76H ;中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(shù)據(jù)移</p><p>  MOV 73H,77H ;入對(duì)應(yīng)顯示單元</p><p>  MOV 74H,78H ;</p><p>  MOV 75H,79H ;</p><p&g

89、t;  LCALL BAOJ</p><p>  POP PSW ;恢復(fù)狀態(tài)字(出棧)</p><p>  POP ACC ;恢復(fù)累加器</p><p>  SETB ET0 ;開(kāi)放T0中斷</p><p>  RETI

90、 ;中斷返回</p><p><b>  ;</b></p><p>  ;****************************************</p><p>  ;; 閃動(dòng)調(diào)時(shí)程序\秒表功能程序 ;;</p><p>  ;**************************

91、**************</p><p>  ;T1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示或秒表計(jì)時(shí)</p><p>  INTT1: PUSH ACC ;中斷現(xiàn)場(chǎng)保護(hù)</p><p>  PUSH PSW ;</p><p>  JB

92、 03H, MMFUN ;=1時(shí)秒表</p><p>  MOV TL1, #0B0H ;裝定時(shí)器T1定時(shí)初值</p><p>  MOV TH1, #3CH ;</p><p>  DJNZ R2,INTT1OUT ;0.3秒未到退出中斷(50MS中斷6次)</p><

93、p>  MOV R2,#06H ;重裝0.3秒定時(shí)用初值</p><p>  CPL 02H ;0.3秒定時(shí)到對(duì)閃爍標(biāo)志取反</p><p>  JB 02H,FLASH1 ;02H位為1時(shí)顯示單元"熄滅"</p><p>  MOV 72H,76H

94、 ;02H位為0時(shí)正常顯示</p><p>  MOV 73H,77H ;</p><p>  MOV 74H,78H ;</p><p>  MOV 75H,79H ;</p><p>  INTT1OUT: POP PSW ;恢復(fù)現(xiàn)場(chǎng)&l

95、t;/p><p>  POP ACC ;</p><p>  RETI ;中斷退出</p><p>  FLASH1: JB 01H,FLASH2 ;01H位為1時(shí),轉(zhuǎn)小時(shí)熄滅控制</p><p>  MOV 72H,7AH ;01H

96、位為0時(shí),"熄滅符"數(shù)據(jù)放入分</p><p>  MOV 73H,7AH ;顯示單元(72H-73H),將不顯示分?jǐn)?shù)據(jù)</p><p>  MOV 74H,78H ;</p><p>  MOV 75H,79H ;</p><p>  AJMP INTT1

97、OUT ;轉(zhuǎn)中斷退出</p><p>  FLASH2: MOV 72H,76H ;01H位為1時(shí),"熄滅符"數(shù)據(jù)放入小時(shí)</p><p>  MOV 73H,77H ;顯示單元(74H-75H),小時(shí)數(shù)據(jù)將不顯示</p><p>  MOV 74H,7AH ;

98、</p><p>  MOV 75H,7AH ;</p><p>  AJMP INTT1OUT ;轉(zhuǎn)中斷退出</p><p><b>  ;</b></p><p>  MMFUN : CLR TR1</p><p>  MOV A

99、,#0F7H ;中斷響應(yīng)時(shí)間同步修正,重裝初值(10ms)</p><p>  ADD A,TL1 ;低8位初值修正</p><p>  MOV TL1,A ;重裝初值(低8位修正值)</p><p>  MOV A,#0D8H ;高8位初值修正</p><p>  ADD

100、C A,TH1 ;</p><p>  MOV TH1,A ;重裝初值(高8位修正值)</p><p>  SETB TR1 ;開(kāi)啟定時(shí)器T0</p><p>  MOV R0,#61H ;指向秒計(jì)時(shí)單元(71H-72H)</p><p>  ACALL AD

101、D1 ;調(diào)用加1程序(加1秒操作)</p><p>  CLR C ;</p><p>  MOV A,R3 ;</p><p>  JZ FSS1 ;加1后為00,C=0</p><p>  AJMP OUTT01

102、 ;加1后不為00,C=1</p><p>  FSS1: ACALL CLR0 ;大于或等于60秒時(shí)對(duì)秒計(jì)時(shí)單元清0</p><p>  MOV R0,#63H ;指向分計(jì)時(shí)單元(76H-77H)</p><p>  ACALL ADD1 ;分計(jì)時(shí)單

103、元加1分鐘</p><p>  MOV A,R3 ;分?jǐn)?shù)據(jù)放入A</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  CJNE A,#60H,ADDHH1 ;</p><p>  ADDHH1: JC OUTT01 ;小于60

104、分時(shí)中斷退出</p><p>  LCALL CLR0 ;大于或等于60分時(shí)分計(jì)時(shí)單元清0</p><p>  MOV R0,#65H ;指向小時(shí)計(jì)時(shí)單元(78H-79H)</p><p>  ACALL ADD1 ;小時(shí)計(jì)時(shí)單元加1小時(shí)</p><p><b&g

105、t;  OUTT01:</b></p><p>  POP PSW ;恢復(fù)狀態(tài)字(出棧)</p><p>  POP ACC ;恢復(fù)累加器</p><p>  RETI ;中斷返回 ;</p><p>  ;

106、****************************************</p><p>  ;; 加1子 程 序 ;;</p><p>  ;****************************************</p><p><b>  ;</b></p>&l

107、t;p><b>  ;</b></p><p>  ADD1: MOV A,@R0 ;取當(dāng)前計(jì)時(shí)單元數(shù)據(jù)到A</p><p>  DEC R0 ;指向前一地址</p><p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p>  ORL A,

108、@R0 ;前一地址中數(shù)據(jù)放入A中低四位</p><p>  ADD A,#01H ;A加1操作</p><p>  DA A ;十進(jìn)制調(diào)整</p><p>  MOV R3,A ;移入R3寄存器</p><p>  ANL A,#0FH ;高四位變0</p&

109、gt;<p>  MOV @R0,A ;放回前一地址單元</p><p>  MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p>  INC R0 ;指向當(dāng)前地址單元</p><p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p>  

110、ANL A,#0FH ;高四位變0</p><p>  MOV @R0,A ;數(shù)據(jù)放入當(dāng)削地址單元中</p><p>  RET ;子程序返回</p><p><b>  ;</b></p><p>  ;***************************

111、*************</p><p>  ;; 分減1子 程 序 ;;</p><p>  ;****************************************</p><p><b>  ;</b></p><p>  SUB1: MOV A,@R0

112、 ;取當(dāng)前計(jì)時(shí)單元數(shù)據(jù)到A</p><p>  DEC R0 ;指向前一地址</p><p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p>  ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位</p><p>  JZ SUB11</p>

113、<p>  DEC A ;A減1操作</p><p>  SUB111: MOV R3,A ;移入R3寄存器</p><p>  ANL A,#0FH ;高四位變0</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  SUBB A,#0A

114、H</p><p>  SUB1111: JC SUB1110</p><p>  MOV @R0,#09H ;大于等于0AH,為9</p><p>  SUB110: MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p>  INC R0 ;指向當(dāng)前地址單元</p>&l

115、t;p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p>  ANL A,#0FH ;高四位變0</p><p>  MOV @R0,A ;數(shù)據(jù)放入當(dāng)削地址單元中</p><p>  RET ;子程序返回</p><p><b>  ;

116、</b></p><p>  SUB11: MOV A,#59H</p><p>  AJMP SUB111</p><p>  SUB1110:MOV A,R3 ;移入R3寄存器</p><p>  ANL A,#0FH ;高四位變0</p><p>  MOV

117、@R0,A</p><p>  AJMP SUB110</p><p>  ;****************************************</p><p>  ;; 時(shí)減1子 程 序 ;;</p><p>  ;*********************************

118、*******</p><p><b>  ;</b></p><p>  SUBB1:MOV A,@R0 ;取當(dāng)前計(jì)時(shí)單元數(shù)據(jù)到A</p><p>  DEC R0 ;指向前一地址</p><p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p>

119、<p>  ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位</p><p>  JZ SUBB11 ;00減1為23(小時(shí))</p><p>  DEC A ;A減1操作</p><p>  SUBB111:MOV R3,A ;移入R3寄存器</p><p&

120、gt;  ANL A,#0FH ;高四位變0</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  SUBB A,#0AH ;時(shí)個(gè)位大于9為9</p><p>  SUBB1111: JC SUBB1110 ;</p><p>  MOV @R0,#09H ;大

121、于等于0AH,為9</p><p>  SUBB110: MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p>  INC R0 ;指向當(dāng)前地址單元</p><p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p>  ANL A,#0FH ;高四位變0&

122、lt;/p><p>  MOV @R0,A ;時(shí)十位數(shù)數(shù)據(jù)放入</p><p>  RET ;子程序返回</p><p><b>  ;</b></p><p>  SUBB11: MOV A,#23H</p><p>  AJMP SUBB111<

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論