畢業(yè)論文--基于單片機(jī)電子時(shí)鐘的設(shè)計(jì)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(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>  專 科 畢 業(yè) 大 作 業(yè)</p><p><b>  二○一二年五月八日</b></p><p><b>  內(nèi)容摘要:</b></p><p>  本次設(shè)計(jì)主要是利用AT89C51單片機(jī)完成,其中AT89C51是核心元件同時(shí)采用數(shù)碼管動(dòng)態(tài)顯示“時(shí)”、“分”、“秒”的現(xiàn)代計(jì)時(shí)裝置。與傳統(tǒng)機(jī)械表相比,

2、它具有走時(shí)精確,顯示直觀等特點(diǎn)。它的計(jì)時(shí)周期為24小時(shí),顯示滿刻度為“23時(shí)59分59秒”,另外具有校時(shí)功能、整點(diǎn)報(bào)時(shí)功能、鬧鈴功能、斷電后有記憶功能、恢復(fù)供電時(shí)可實(shí)現(xiàn)計(jì)時(shí)同步等特點(diǎn)。</p><p>  本文主要介紹用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)數(shù)字顯示計(jì)時(shí)系統(tǒng)的方法,本設(shè)計(jì)硬件由單片機(jī)AT89C51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個(gè)單片機(jī)數(shù)字顯示計(jì)時(shí)(鬧鐘)顯示系統(tǒng),硬件電路仿真由Prot

3、eus仿真軟件完成,軟件由偉福(WAVE)編程完成。</p><p>  關(guān)鍵詞:AT89C51 LED 鬧鈴 整點(diǎn)報(bào)時(shí) </p><p><b>  目錄</b></p><p>  引言……………………………………………………………3</p><p><b>  第一章 概述</b

4、></p><p>  1.1 課題簡(jiǎn)介…………………………………………………4</p><p>  1.2 設(shè)計(jì)的主要原理…………………………………………4</p><p>  1.3方案論證…………………………………………………4</p><p>  1.4設(shè)計(jì)的目的及要求………………………………………5</p>&l

5、t;p><b>  第二章 硬件設(shè)計(jì)</b></p><p>  2.1 硬件部分框圖……………………………………………6</p><p>  2.2 使用芯片介紹……………………………………………6</p><p>  2.3 分電路設(shè)計(jì)………………………………………………9</p><p><b>

6、  第三章 軟件設(shè)計(jì)</b></p><p>  3.1 單元分配………………………………………………14</p><p>  3.2 程序框圖與匯編程序…………………………………14</p><p><b>  第四章 調(diào)試</b></p><p>  4.1 軟件調(diào)試……………………………………………

7、…22</p><p>  4.2 protues仿真軟件的應(yīng)用………………………………22</p><p>  4.3性能分析…………………………………………………23</p><p>  小結(jié)……………………………………………………………24</p><p>  參考文獻(xiàn)…………………………………………………………………25</p&

8、gt;<p>  附錄A 源程序…………………………………………………………26</p><p>  附錄B 電路原理圖……………………………………………………36 附錄C 元件清單………………………………………………………37</p><p><b>  引言</b></p><p>  時(shí)鐘,自從它發(fā)明的那天起,就成為人

9、類的朋友,但隨著時(shí)間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)時(shí)間計(jì)量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時(shí)鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計(jì)出新型時(shí)鐘。</p><p>  現(xiàn)今,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯

10、示器代替顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。</p><p>  時(shí)鐘電路在計(jì)算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào),主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘,即定時(shí)時(shí)間,

11、它通常有兩種實(shí)現(xiàn)方法:一是用軟件實(shí)現(xiàn),即用單片機(jī)內(nèi)部的可編程定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn),但誤差很大,主要用在對(duì)時(shí)間精度要求不高的場(chǎng)合;二是用專門的時(shí)鐘芯片實(shí)現(xiàn),在對(duì)時(shí)間精度要求很高的情況下,通常采用這種方法,典型的時(shí)鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。</p><p>  本文主要介紹用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)電子時(shí)鐘的方法,本設(shè)計(jì)由單片機(jī)AT89S51芯片和LED數(shù)碼管為核

12、心,輔以必要的電路,構(gòu)成了一個(gè)單片機(jī)電</p><p><b>  子時(shí)鐘。</b></p><p><b>  第一章 概述</b></p><p><b>  1.1 課題簡(jiǎn)介</b></p><p>  數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比

13、具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長(zhǎng)的使用壽命,已得到廣泛的使用。數(shù)字鐘的設(shè)計(jì)方法有許多種,例如,可用中小規(guī)模集成電路組成電子鐘;也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘;還可以利用單片機(jī)來實(shí)現(xiàn)電子鐘等等。這些方法都各有其特點(diǎn),其中利用單片機(jī)實(shí)現(xiàn)的電子鐘具有編程靈活,并便于功能的擴(kuò)展。</p><p>  單片機(jī)應(yīng)用的重要意義在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)

14、計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在已能用單片機(jī)通過軟件方法來實(shí)現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。</p><p>  本次設(shè)計(jì)以AT89C51單片機(jī)為核心來控制時(shí)鐘電路、按鍵電路、復(fù)位電路、LED顯示器段碼驅(qū)動(dòng)電路、LED顯示器碼驅(qū)動(dòng)電路、6位LED顯示器電路以及蜂鳴器,以達(dá)到對(duì)“時(shí)”“分”“秒”精確的控制和顯示。</p><p

15、>  1.2 設(shè)計(jì)的主要原理</p><p>  電路工作原理:該電路以AT89C51為核心。顯示器用七段共陽LED數(shù)碼管顯示器,顯示小時(shí)、分鐘以及秒,從P0口接入4個(gè)按鈕開關(guān),作為輸入電路,進(jìn)行手動(dòng)設(shè)置調(diào)時(shí)、調(diào)分和調(diào)秒,通過P2,P1口來實(shí)現(xiàn)對(duì)顯示的實(shí)時(shí)控制。</p><p>  1.3 設(shè)計(jì)的目的及要求</p><p>  1. 設(shè) 計(jì) 目 的</p

16、><p>  (1)熟悉集成電路的引腳安排;</p><p> ?。?)熟悉并掌握80C51的結(jié)構(gòu)原理及應(yīng)用;</p><p> ?。?)了解電路板結(jié)構(gòu)及其接線方法;</p><p> ?。?)了解數(shù)字鐘的組成及工作原理;</p><p> ?。?)掌握芯片的邏輯功能及使用方法;</p><p> 

17、?。?)熟悉數(shù)字鐘的設(shè)計(jì)與制作。</p><p>  2. 設(shè) 計(jì) 要 求</p><p> ?。?)報(bào)時(shí)用中斷方式計(jì)時(shí);</p><p> ?。?)到整時(shí)時(shí)能夠準(zhǔn)時(shí);</p><p> ?。?)由晶振提供標(biāo)準(zhǔn)時(shí)間基準(zhǔn)信號(hào);</p><p>  (4)自動(dòng)計(jì)時(shí)并具備校調(diào)功能??梢詥为?dú)對(duì)每一位校調(diào);</p>

18、<p> ?。?)設(shè)置四個(gè)按鍵SET,RET,ALM和+1鍵,對(duì)時(shí),分,秒進(jìn)行調(diào)整;</p><p>  (6)通過軟件編程的方法實(shí)現(xiàn)以24小時(shí)為一個(gè)周期同時(shí)顯示小時(shí),分鐘和秒。</p><p><b>  1.4方案論證</b></p><p><b>  方案一:</b></p><p

19、>  采用實(shí)時(shí)時(shí)鐘芯片設(shè)計(jì):</p><p>  針對(duì)計(jì)算機(jī)系統(tǒng)對(duì)實(shí)時(shí)時(shí)鐘功能的普遍需求,各大芯片生產(chǎn)廠家陸續(xù)推出了一系列的實(shí)時(shí)時(shí)鐘集成芯片,如DS1287,DS12887等,這些實(shí)時(shí)時(shí)鐘芯片具備年月日,時(shí)分秒計(jì)時(shí)功能和多點(diǎn)定時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更新每秒進(jìn)行一次,不需程序干預(yù)。計(jì)算機(jī)間程序簡(jiǎn)單。此外,實(shí)時(shí)時(shí)鐘芯片多數(shù)帶有鋰電池做后備電池具備永不停止的計(jì)時(shí)功能,具有可編程方波輸出功能,可用做實(shí)時(shí)測(cè)控系統(tǒng)的采樣信

20、號(hào)等;有的實(shí)時(shí)時(shí)鐘芯片內(nèi)部還帶有非易失性RAM,可用來存放需長(zhǎng)期保存的但有時(shí)也需變更的數(shù)據(jù)。</p><p><b>  方案二:</b></p><p>  采用單片機(jī)軟件控制技術(shù):</p><p>  利用AT89C51內(nèi)部的16位定時(shí)/計(jì)數(shù)器進(jìn)行中斷服務(wù),配合軟件延時(shí)實(shí)現(xiàn)計(jì)時(shí)計(jì)時(shí)及控制全部采用軟件控制,并配合外圍顯示及鍵盤電路,從而實(shí)現(xiàn)電

21、子時(shí)鐘的各項(xiàng)功能。</p><p>  比較上述兩種方案:方案一雖然功能強(qiáng)大,性能較好但所用芯片較貴、外圍邏輯電路復(fù)雜,且靈活性較低,不利于各種功能的擴(kuò)展;方案二此系統(tǒng)硬件簡(jiǎn)單,將復(fù)雜的硬件功能用軟件實(shí)現(xiàn),因此系統(tǒng)控制靈活,能很好的滿足基本需求,且能夠使人在定時(shí)/計(jì)數(shù)器的使用、中斷及程序設(shè)計(jì)方面得到鍛煉與提高,因此本次設(shè)計(jì)采用方案二。</p><p><b>  第二章 硬件設(shè)計(jì)

22、</b></p><p>  2.1 硬件部分框圖</p><p>  圖2-1為該系統(tǒng)設(shè)計(jì)方案的硬件電路設(shè)計(jì)框圖。該數(shù)字顯示計(jì)時(shí)系統(tǒng)的硬件電路是由單片機(jī)、時(shí)鐘電路、按鍵電路、復(fù)位電路、LED顯示器段碼驅(qū)動(dòng)電路、LED顯示器碼驅(qū)動(dòng)電路、6位LED顯示器電路。</p><p>  圖2-1硬件電路框圖</p><p>  在圖2-1

23、中,以AT89C51單片機(jī)為核心,LED數(shù)碼管顯示內(nèi)容通過P1口從單片機(jī)傳送到數(shù)碼管。P2口是數(shù)碼管位選控制端口。形成一個(gè)可以顯示時(shí),分,秒的數(shù)字顯示計(jì)時(shí)系統(tǒng)。</p><p>  在這一系統(tǒng)中當(dāng)時(shí)間調(diào)整設(shè)置鍵(SET)被按下時(shí),系統(tǒng)進(jìn)入時(shí)間調(diào)整輸入功能狀態(tài);當(dāng)定時(shí)時(shí)間設(shè)置鍵(ALM)被按下時(shí),系統(tǒng)進(jìn)入定時(shí)(鬧鐘)時(shí)間輸入功能狀態(tài);當(dāng)+1調(diào)整鍵被按下時(shí),被調(diào)整位加一;當(dāng)確認(rèn)鍵(RET)被按下時(shí),指向下一個(gè)要調(diào)整的

24、位。4個(gè)按鍵開關(guān)通過不同的組合實(shí)現(xiàn)外部控制程序狀態(tài)</p><p>  2.2 使用芯片介紹</p><p>  AT89C51 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8

25、 位CPU 和在系統(tǒng)可編程Flash,使得AT89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89 c51具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89C51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM

26、、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p>  AT89C51是單片機(jī)中的典型產(chǎn)品,AT89C51單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,如圖2.1所示。</p><

27、;p>  圖2.1 單片機(jī)內(nèi)部結(jié)構(gòu)示意圖</p><p><b>  現(xiàn)分別加以說明:</b></p><p><b>  1、中央處理器</b></p><p>  中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成

28、運(yùn)算和控制輸入輸出功能等操作。</p><p>  2、數(shù)據(jù)存儲(chǔ)器(RAM)</p><p>  AT89C51內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。</p><p&g

29、t;  3、程序存儲(chǔ)器(ROM)</p><p>  AT89C51共有4KB掩膜ROM,最大可擴(kuò)展64K字節(jié),用于存放用戶程序,原始數(shù)據(jù)或表格。</p><p><b>  4、定時(shí)/計(jì)數(shù)器:</b></p><p>  AT89C51有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。</p><

30、p>  5、并行輸入輸出(I/O)口:</p><p>  AT89C51共有4組8位I/O口(P0、 P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。</p><p><b>  6、中斷系統(tǒng)</b></p><p>  AT89C51具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并具有2級(jí)的優(yōu)

31、先級(jí)別選擇。</p><p>  7、AT89C51的引腳介紹</p><p>  AT89C51單片機(jī)內(nèi)部總線是單總線結(jié)構(gòu),即數(shù)據(jù)總線和地址總線是公用的. AT89C51有40條引腳, 這40條引腳可分為I/O接口線、電源線、控制線、外接晶體線4部分。 AT89C51單片機(jī)為雙列直插式封裝結(jié)構(gòu), 如圖2.2所示。</p><p>  圖2.2 AT89C51引腳分

32、配圖</p><p>  AT89C51單片機(jī)的電源線有以下兩種:</p><p> ?。?)VCC:+5V電源線。 </p><p> ?。?)GND:接地線。</p><p>  AT89C51單片機(jī)的外接晶體引腳有以下兩種: </p><p> ?。?)XTAL1:片內(nèi)振蕩器反相放大器的輸入端和內(nèi)部時(shí)鐘工作的輸

33、入端。采用內(nèi)部振蕩器時(shí),它接外部石英晶體和微調(diào)電容的一個(gè)引腳。</p><p>  (2)XTAL2:片內(nèi)振蕩器反相放大器的輸出端,接外部石英晶體和微調(diào)電容的另一端。采用外部振蕩器時(shí),該引腳懸空。外接晶體引腳。</p><p>  控制線 AT89C51單片機(jī)的控制線有以下幾種:</p><p> ?。?)RST:復(fù)位輸入端,高電平有效。</p>&

34、lt;p> ?。?)ALE/PROG:地址鎖存允許/編程線。</p><p>  (3)PSEN:外部程序存儲(chǔ)器的讀選通線。</p><p> ?。?)EA/Vpp:片外ROM允許訪問端/編程電源端。 </p><p><b>  2.3 分電路設(shè)計(jì)</b></p><p>  1.按鍵電路設(shè)計(jì)與器件選擇<

35、/p><p>  具備隨時(shí)對(duì)當(dāng)前時(shí)間進(jìn)行調(diào)整的基本功能,由于并不需要經(jīng)常修改時(shí)間且按鍵少可以接入獨(dú)立式鍵盤輸入電路。獨(dú)立式鍵盤結(jié)構(gòu)電路是由按鍵和4個(gè)電阻組成,按鍵分別命名為 SET.ALM.RET和+1,按鍵可以采用輕觸開關(guān),電阻采用并腳排電阻(4*10K)如圖2-4所示:</p><p><b>  圖2-4 鍵盤結(jié)構(gòu)</b></p><p> 

36、 在圖2- 4中4個(gè)按鍵的功能的具體說明: </p><p>  ①RET確認(rèn)鍵的功能:</p><p>  確認(rèn),即對(duì) +1 調(diào)整位進(jìn)行確認(rèn),該鍵按下時(shí)說明被調(diào)整位的值已經(jīng)確定,轉(zhuǎn)去調(diào)整下一位。</p><p> ?、?1鍵調(diào)整鍵的功能:</p><p>  分別對(duì)時(shí)間值的小時(shí)十位、小時(shí)個(gè)位、分的十位、分的個(gè)位、秒的十位、秒的個(gè)位進(jìn)行+1調(diào)

37、整,即該鍵每按下一次,對(duì)應(yīng)的時(shí)間調(diào)整位+1。</p><p><b> ?、跘LM鍵功能:</b></p><p>  設(shè)置定時(shí)(鬧鐘)時(shí)間,即當(dāng)需要電子時(shí)鐘進(jìn)行定時(shí)(鬧鐘)服務(wù)時(shí),可以通過該鍵的功能來輸入定時(shí)(鬧鐘)時(shí)間,使用ALM 鍵與 +1鍵RET 鍵配合來完成這一功能。④SET鍵功能:</p><p>  設(shè)置當(dāng)前時(shí)間,即當(dāng)電子時(shí)鐘的時(shí)

38、間有誤差時(shí),需要隨時(shí)對(duì)它進(jìn)調(diào)整,使用SET 鍵與+1 鍵RET 鍵配合來完成這一功能。</p><p>  鍵盤的硬件電路設(shè)計(jì)只能保證4個(gè)按鍵信號(hào)的可靠進(jìn)入,要想完成鍵盤的輸入功能,還要靠軟件編程來具體實(shí)現(xiàn)的。</p><p>  當(dāng)用手按下一個(gè)鍵時(shí),如圖2-5所示,往往按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個(gè)鍵時(shí),也回會(huì)出現(xiàn)類似的情況。這就是抖動(dòng)。抖動(dòng)的持續(xù)時(shí)

39、間隨鍵盤材料和操作員而異,不過通??偸遣淮笥?0ms。很容易想到,抖動(dòng)問題不解決就會(huì)引起對(duì)閉合鍵的識(shí)別。用軟件方法可以很容易地解決抖動(dòng)問題,這就是通過延遲10ms來等待抖動(dòng)消失,這之后,在讀入鍵盤碼。</p><p>  圖2-5 按鍵抖動(dòng)信號(hào)波形</p><p>  2. LED顯示電路選擇</p><p>  在單片機(jī)的應(yīng)用系統(tǒng)中,通常需要進(jìn)行人機(jī)對(duì)話。這包括人

40、對(duì)應(yīng)用系統(tǒng)的狀態(tài)干預(yù)與數(shù)據(jù)輸入,以及應(yīng)用系統(tǒng)向人們顯示運(yùn)行狀態(tài)與運(yùn)行結(jié)果等。顯示器、鍵盤電路就是用來完成人-機(jī)對(duì)話活動(dòng)的人-機(jī)通道。</p><p>  LED顯示器的驅(qū)動(dòng)是一個(gè)非常重要的問題,由系統(tǒng)硬件設(shè)計(jì)框圖可知顯示電路由LED顯示器、段驅(qū)動(dòng)電路和位驅(qū)動(dòng)電路組成。在本次設(shè)計(jì)中運(yùn)用LED數(shù)碼顯示器、采用PNP管以及單片機(jī)的P2口來組成顯示電路。LED顯示器由7個(gè)發(fā)光二極管組成,也稱為7段LED顯示器,排列形狀如

41、圖2-3a所示。</p><p>  LED顯示器的發(fā)光二極管有共陰極和共陽極兩種連接方法.圖2-3b為共陰極接法,各發(fā)光二極管的陰極連在一起并接地,當(dāng)某一發(fā)光二極管的陽極輸入高電平時(shí),則該段發(fā)光;圖2-3c為共陽極接法,各發(fā)光二極管的陽極連在一起并接+5V,當(dāng)陰極輸入法低電平時(shí),該段發(fā)光二極管發(fā)光。</p><p>  使用LED顯示器時(shí),要注意區(qū)分兩種不同的接法。為了顯示數(shù)字或符號(hào),要

42、為L(zhǎng)ED顯示器提供代碼(字形碼),在兩種接法中字形碼是不同的。</p><p>  圖2-3 7(8)段LED顯示器</p><p>  7段發(fā)光二極管再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,提供給LED顯示器的字形碼正好1B,各字形對(duì)應(yīng)關(guān)系如下:</p><p>  用LED顯示器顯示十六進(jìn)制數(shù)的字形碼見表2-2。</p><p>  表2-2 十六

43、進(jìn)制數(shù)字形代碼表</p><p>  3. 蜂鳴器電路的設(shè)計(jì)</p><p>  鬧鈴指示可以有聲或光兩種形式,本系統(tǒng)采用聲音指示。關(guān)鍵元件是蜂鳴器。蜂鳴器有無源和有源兩種,前者需要輸入聲音頻率信號(hào)才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可;元件內(nèi)部已經(jīng)封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場(chǎng)上的有源蜂鳴器分為3V、5V、6V等系列,以適應(yīng)不同的應(yīng)用需要。其中PNP小功率三極

44、管采用9012。其最大集電極電流為800mA。完全滿足蜂鳴器驅(qū)動(dòng)的需要。適當(dāng)調(diào)節(jié)基極電阻可改變蜂鳴器的發(fā)聲功率。</p><p><b>  圖2-7蜂鳴器電路</b></p><p>  在圖2-7中,當(dāng)P3.7=0時(shí),VT1導(dǎo)通時(shí),使蜂鳴器的兩個(gè)引腳間獲得將近5V的直流電壓,蜂鳴器中有電流通過,而產(chǎn)生蜂鳴音。當(dāng)P3.7=1時(shí),VT1截止時(shí),蜂鳴器的兩引腳間的直流電

45、壓接近0V,蜂鳴器不發(fā)聲。</p><p>  4. 單 片 機(jī) 的 復(fù) 位 方 式 與 電路選擇</p><p>  復(fù)位就是通過某種方式,使單片機(jī)內(nèi)各寄存器的值變?yōu)槌跏蓟癄顟B(tài)的操作。AT89C51單片機(jī)在時(shí)鐘電路工作以后,在RESET端持續(xù)給出2個(gè)機(jī)器周期的高電平就可以完成復(fù)位操作。復(fù)位分為上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種方式。</p><p>  本系統(tǒng)采用上電復(fù)

46、位方式。上電復(fù)位是在單片機(jī)接通電源時(shí),對(duì)單片機(jī)的復(fù)位。在上電瞬間RST端與VCC電位相同,隨著電容上電壓的逐漸上升,RST端電位逐漸下降。上電復(fù)位所需要的最短時(shí)間是振蕩器建立時(shí)間加2個(gè)機(jī)器周期</p><p>  3種方式復(fù)位電路圖:</p><p>  注:一般情況下圖中電容C1和C2取30PF左右,晶體的振蕩頻率范圍是1.2~12MHZ。晶體振蕩頻率越高,則系統(tǒng)的時(shí)鐘頻率越高,單片機(jī)運(yùn)

47、行速度也越快。一般情況下,單片機(jī)使用的振蕩頻率為6MHZ或者說12MHZ。</p><p>  5.相關(guān)電路參數(shù)的計(jì)算</p><p> ?。?)PNP三極管與P2口之間的電阻選擇:</p><p>  選取三極管9012的放大倍數(shù)為100,選通一個(gè)LED數(shù)碼管所需電流即三極管的集電極電流為:Ic=15mA*7=105mA,則它的基極電流Ib=105mA/100=1

48、.05mA,取1mA,三極管壓降為0.7V,則電阻阻值為:R=(5-0.7)V/1mA=4.3K,實(shí)際取4.7K</p><p>  (2)LED數(shù)碼管與P1口之間的電阻選擇:</p><p>  由于LED數(shù)碼管是由七段發(fā)光二極管組成。每個(gè)二極管所需電壓為2V,電阻的峰值電流取10mA,又由于P1的壓降為,則電阻上所需電壓為5-2-0.3=2.7V</p><p>

49、;  則電阻上的阻值為2.7V/10mA=270,實(shí)際取300</p><p> ?。?)開關(guān)與P0口之間的電阻選擇:</p><p>  由于開關(guān)端的電阻接+5電源,導(dǎo)線本身的電流是非常微小的,所以我選擇了10K的電阻來完成硬件電路的連接。</p><p> ?。?)I端口分配及連接:</p><p>  P1.0-P1.7:LED數(shù)碼管顯

50、示內(nèi)容通過P0口從單片機(jī)傳送到數(shù)碼管。</p><p>  P2.0-P2.5:數(shù)碼管位選控制端口。</p><p>  P0.0- P0.3:分別連接開關(guān),SET、 ALM 、+1和 RET鍵,通過不同的組合實(shí)現(xiàn)外部控制程序狀態(tài)。</p><p><b>  第三章 軟件設(shè)計(jì)</b></p><p><b>

51、  3.1單元分配</b></p><p>  在AT89C51單片機(jī)的內(nèi)部00H-1FH為工作寄存器區(qū),20H-2FH為位尋址區(qū),30H-7FH為數(shù)據(jù)緩沖區(qū)。堆棧的先進(jìn)后出的特點(diǎn)。</p><p>  1.堆棧區(qū) 70H-7FH</p><p>  2.段碼顯示緩沖區(qū) 45H-40H</p><p>  3.當(dāng)前時(shí)間的二進(jìn)制存儲(chǔ)

52、單元30H-32H</p><p>  4.鬧鈴時(shí)間的二進(jìn)制存儲(chǔ)單元33H-35H</p><p>  5.閃爍顯示單元 20H</p><p>  3.2程序框圖與匯編程序</p><p>  主程序框圖如圖3-1所示:</p><p><b>  圖3-1主程序框圖</b></p>

53、;<p><b>  1 主程序</b></p><p>  主程序的內(nèi)容的一般包括:主程序的起始地址,中斷服務(wù)程序的起始地址,有關(guān)內(nèi)存單元及相關(guān)部件的初始化和一些子程序的調(diào)用等內(nèi)容。</p><p>  設(shè)置中斷入口地址、設(shè)置主程序的起始地址(開始),為了保護(hù)現(xiàn)場(chǎng)設(shè)置堆棧指針,為了保證顯示的正確性要進(jìn)行T0的初始化和顯示緩沖區(qū)與計(jì)時(shí)有關(guān)的寄存器的清零。

54、啟動(dòng)T0調(diào)用顯示程序顯示當(dāng)前時(shí)間,根據(jù)需要可以進(jìn)行按鍵處理,一旦鬧鐘時(shí)間到,發(fā)出報(bào)警,報(bào)警時(shí)間過后,調(diào)用顯示程序繼續(xù)正常的時(shí)間顯示。</p><p><b>  主程序清單如下:</b></p><p>  ORG 0000H ;中斷入口地址</p><p><b>  AJMP MAIN</b></p&

55、gt;<p>  ORG 000BH ;T0中斷</p><p>  AJMP T0INT</p><p>  MAIN: MOV SP,#70H ;設(shè)置堆棧指針</p><p>  MOV R6,#06H ;顯示緩沖區(qū)清零</p><p>  MOV R1,#45H</p>&l

56、t;p>  S0:MOV @R1,#00H</p><p><b>  DEC R1</b></p><p>  DJNZ R6,S0</p><p>  MOV TMOD,#01H ;T0為工作方式1</p><p>  MOV TH0,#0BH ;設(shè)T0計(jì)數(shù)初值</p><p>  

57、MOV TL0,#0DCH</p><p>  SETB RS0 ;選擇工作區(qū)1</p><p>  MOV R2,#00H ;相關(guān)寄存器清零</p><p>  MOV R3,#00H</p><p>  MOV R4,#00H</p><p>  MOV R5,#00H</p>&l

58、t;p>  CLR RS0 ;選擇工作區(qū)0</p><p>  MOV R1,#45H ;顯緩區(qū)首指針?biāo)蚏1</p><p>  SETB TR0 ;開T0</p><p>  SS1: LCALL DISP ;調(diào)用顯示程序</p><p>  LCALL KEYBOARD

59、 ;調(diào)用按鍵處理程序</p><p>  MOV R2, 35H ;判斷是否有定時(shí)時(shí)間</p><p>  CJNE R2, #0, NT</p><p>  MOV R2, 34H</p><p>  CJNE R2, #0, NT</p><p>  MOV R2, 33H</p><

60、;p>  CJNE R2, #0, NT</p><p><b>  SJMP BB</b></p><p>  NT: MOV A, 35H</p><p>  CJNE A, 32H, BB ;判斷定時(shí)時(shí)間到否</p><p>  MOV A, 34H</p><p>  C

61、JNE A, 31H, BB</p><p>  MOV A, 33H</p><p>  CJNE A, 30H, BB</p><p>  CLR P3.7 ;時(shí)間到發(fā)出報(bào)警</p><p>  MOV R7,#15</p><p><b>  SJMP SS1</b>&l

62、t;/p><p>  BB: SETB P3.7</p><p><b>  SJMP SS1</b></p><p><b>  2 中斷系統(tǒng)的介紹</b></p><p>  如果在執(zhí)行主程序時(shí)只有一個(gè)中斷請(qǐng)求源請(qǐng)求中斷,而這時(shí)CPU又是對(duì)中斷開放的那么這個(gè)中斷立即得到響應(yīng)。然而由于中斷是

63、隨機(jī)產(chǎn)生的,中斷源又不止1個(gè),因此往往會(huì)出現(xiàn)這樣的情況:幾個(gè)中斷源同時(shí)請(qǐng)求中斷,或者當(dāng)某一個(gè)中斷正在響應(yīng)中,又有其他中斷源請(qǐng)求中斷,這時(shí)中斷一般會(huì)按如下原則進(jìn)行處理:</p><p>  不同級(jí)的中斷源同時(shí)請(qǐng)求中斷時(shí)——先高后低</p><p>  同級(jí)的中斷源同時(shí)申請(qǐng)中斷時(shí)——事先規(guī)定</p><p>  處理低級(jí)中斷又收到高級(jí)中斷請(qǐng)求時(shí)——停低轉(zhuǎn)高</p&

64、gt;<p>  處理高級(jí)中斷又收到低級(jí)中斷請(qǐng)求時(shí)——高不理低</p><p>  AT89C51單片機(jī)的中斷系統(tǒng)對(duì)優(yōu)先級(jí)的控制比較簡(jiǎn)單,只規(guī)定了兩個(gè)中斷優(yōu)先級(jí),對(duì)于每一個(gè)中斷源均可編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷。在同一個(gè)優(yōu)先級(jí)中,五個(gè)中斷優(yōu)先級(jí)的次序如下:</p><p>  外部中斷0(IE0)</p><p>  定時(shí)器/計(jì)數(shù)器T0溢出中斷(T

65、F0)</p><p>  外部中斷1(IE1)</p><p>  定時(shí)器/計(jì)數(shù)器T1溢出中斷(TF1)</p><p>  串行口中斷(RI+TI)</p><p>  AT89C51單片機(jī)有1個(gè)中斷優(yōu)先級(jí)寄存器IP,字節(jié)地址為B8H。對(duì)于每一個(gè)中斷源,均可通過IP的設(shè)置來確定優(yōu)先等級(jí),置1為高優(yōu)先級(jí),反之為低。</p>&

66、lt;p><b>  3 時(shí)鐘計(jì)時(shí)程序</b></p><p>  數(shù)字顯示計(jì)時(shí)系統(tǒng)的主要任務(wù)是:采用單片機(jī)為核心的器件產(chǎn)生24小時(shí)時(shí)間,并用LED顯示器將它顯示出來。在本次設(shè)計(jì)中所用的晶振為6MHz,定時(shí)器最長(zhǎng)的定時(shí)時(shí)間為131.72ms,要產(chǎn)生24h的時(shí)間值,故我們采用定時(shí)器T0方式1。</p><p> ?。?)24小時(shí)的產(chǎn)生:</p>&l

67、t;p>  選擇定時(shí)器T0 方式1,定時(shí)125ms中斷一次,利用R2寄存器加1,8次為1s,再利用寄存器R3計(jì)數(shù)60s,依次類推,累計(jì)24的時(shí)間值,并需設(shè)置以下幾個(gè)寄存器:</p><p>  R2:累計(jì)1s時(shí)間寄存器。T0每中斷一次R2=R2+1,計(jì)數(shù)八次向R3進(jìn)位,并將R2清零</p><p>  R3:累計(jì)60s時(shí)間寄存器。當(dāng)R3=60s,向R4進(jìn)位,并使R3=0。</p

68、><p>  R4:累計(jì)60min時(shí)間寄存器。當(dāng)R4=60min向R5進(jìn)位,并使R4=0。</p><p>  R5:累計(jì)24h時(shí)間寄存器。當(dāng)R5=24h,正好是晝夜的時(shí)間,并使R5=0。</p><p>  (2)定時(shí)器的初值:</p><p>  F=6MHZ, Tp=2us X=65536-125ms/2us=0BD

69、CH</p><p> ?。?)程序設(shè)計(jì)框圖:</p><p>  計(jì)時(shí)程序設(shè)計(jì)框圖如圖3-2所示</p><p>  圖 3-2計(jì)時(shí)程序設(shè)計(jì)框圖</p><p><b>  程序清單如下:</b></p><p>  T0定時(shí)器,每125ms中斷一次,中斷8次為1s。</p>&l

70、t;p>  T0INT: PUSH A ;T0計(jì)時(shí)中斷程序,保護(hù)現(xiàn)場(chǎng)</p><p><b>  CLR TR0</b></p><p>  MOV TH0,#0BH ;設(shè)T0計(jì)數(shù)初值</p><p>  MOV TL0,#0DCH</p><p>  

71、SETB TR0 ;開T0</p><p>  SETB RS0 ;選擇工作區(qū)1</p><p><b>  INC R2</b></p><p>  CJNE R2,#08H,JT0 ;1s到了嗎?沒到,轉(zhuǎn)JT0</p><p

72、>  MOV R2,#00H ;到了,R2清零</p><p>  INC R3 ;秒單元+1</p><p>  CJNE R3,#60,JT0 ;60s到了嗎?沒到,轉(zhuǎn)JT0</p><p>  MOV R3,#00H ;到了

73、,秒單元清零</p><p>  INC R4 ;分單元+1</p><p>  CJNE R4,#60,JT0 ;60min到了嗎?沒到,轉(zhuǎn)JT0</p><p>  MOV R4,#00H ;到了,分單元清零</p><p>  INC R

74、5 ;時(shí)單元+1</p><p>  CJNE R5,#24,JT0 ;24h到了嗎?沒到,轉(zhuǎn)JT0</p><p>  MOV R5,#00H ;時(shí)單元清零</p><p>  JT0: MOV 30H,R3</p><p>  MO

75、V 31H,R4</p><p>  MOV 32H,R5</p><p>  MOV R6,#03 ;二-十進(jìn)制轉(zhuǎn)換程序</p><p>  MOV R0,#32H</p><p>  MOV R1,#45H</p><p>  JT1:MOV B,#10</p><

76、;p><b>  MOV A,@R0</b></p><p><b>  DIV AB</b></p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p><p><b>  MOV A

77、,B</b></p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p><p><b>  DEC R0</b></p><p>  DJNZ R6,JT1</p><p><b&

78、gt;  CLR RS0</b></p><p>  POP A ;恢復(fù)現(xiàn)場(chǎng)</p><p>  RETI ;中斷返回</p><p>  DTOB: SETB RS0 ;十-二進(jìn)制轉(zhuǎn)換程序</p><p>

79、  MOV R6,#03</p><p>  MOV R0,#32H</p><p>  MOV R1,#45H</p><p>  JT2:MOV B,#10</p><p><b>  MOV A,@R1</b></p><p><b>  MUL AB</b></

80、p><p><b>  DEC R1</b></p><p><b>  ADD A,@R1</b></p><p><b>  MOV @R0,A</b></p><p><b>  DEC R1</b></p><p><b&

81、gt;  DEC R0</b></p><p>  DJNZ R6,JT2</p><p>  MOV R3,30H</p><p>  MOV R4,31H</p><p>  MOV R5,32H</p><p>  MOV R2,#00</p><p><b>  C

82、LR RS0</b></p><p><b>  RET</b></p><p>  TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0CFH</p><p><b>  END</b></p><p><b>

83、;  第四章 調(diào)試</b></p><p>  4.1 軟 件 調(diào) 試</p><p>  軟件調(diào)試的任務(wù)是利用應(yīng)用軟件(如WAVE軟件)進(jìn)行仿真調(diào)試,是通過對(duì)用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正的過程。程序運(yùn)行后編輯,查看程序是否有邏輯的錯(cuò)誤。</p><p>  運(yùn)用WAVE(偉福)軟件編譯自己設(shè)計(jì)的匯編程序

84、,檢驗(yàn)程序。發(fā)現(xiàn)程序中的語法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正。注意運(yùn)用WAVE軟件保存文件時(shí)的后綴名用(.ASM)。</p><p><b>  仿真結(jié)果如下:</b></p><p>  4.2 proteus 仿 真 軟 件 的 應(yīng) 用</p><p>  PROTEUS軟件是由英國Labcenter electronics公司開發(fā)的一款電子

85、設(shè)計(jì)軟件,它是目前能對(duì)CPU芯片及其外圍電路進(jìn)行完整仿真的計(jì)算機(jī)設(shè)計(jì)分析軟件。在使用Proteus進(jìn)行仿真調(diào)試時(shí),可以從實(shí)物的角度直接觀看電路運(yùn)行的結(jié)果(而不是某條語句或存儲(chǔ)器的內(nèi)容),從某種意義上講,proteus解決了理論設(shè)計(jì)與動(dòng)手制作相互脫節(jié)的重大問題。</p><p>  在本次設(shè)計(jì)中,正是由于這款軟件的使用,大大提高了設(shè)計(jì)的效率,縮短了設(shè)計(jì)的周期。Proteus仿真軟件無疑是單片機(jī)開發(fā)者掌握單片機(jī)開發(fā)技

86、術(shù)的絕好的入門工具。</p><p><b>  仿真結(jié)果</b></p><p>  數(shù)碼管能顯示“時(shí)”,“分”,“秒”,蜂鳴器也能響。系統(tǒng)初步達(dá)到了設(shè)計(jì)的要求。在仿真的過程中每個(gè)管腳旁邊會(huì)出現(xiàn)一個(gè)小方塊,紅色的方快表示高電平,藍(lán)色的表示低電平。通過方快顏色的變化可以很方便地知道每個(gè)管腳電平的變化,從而能對(duì)系統(tǒng)的運(yùn)行有更直觀的了解,這對(duì)程序的調(diào)試有很大的幫助<

87、/p><p>  Protues 仿真電路圖如下:</p><p><b>  4.3性能分析</b></p><p>  按照設(shè)計(jì)程序分析,LED顯示器動(dòng)態(tài)掃描頻率在實(shí)際觀察時(shí)沒有閃爍。由于即使中斷程序中加了中斷延時(shí)誤差處理,所以實(shí)際計(jì)時(shí)精度很高,可以滿足多種場(chǎng)合的應(yīng)用需要。</p><p><b>  小

88、結(jié)</b></p><p>  我在這一次數(shù)字電子鐘的設(shè)計(jì)過程中,很是受益匪淺。通過對(duì)自己在大學(xué)三年時(shí)間里所學(xué)的知識(shí)的回顧,并充分發(fā)揮對(duì)所學(xué)知識(shí)的理解和對(duì)畢業(yè)設(shè)計(jì)的思考及書面表達(dá)能力,最終完成了。這為自己今后進(jìn)一步深化學(xué)習(xí),積累了一定寶貴的經(jīng)驗(yàn)。撰寫論文的過程也是專業(yè)知識(shí)的學(xué)習(xí)過程,它使我運(yùn)用已有的專業(yè)基礎(chǔ)知識(shí),對(duì)其進(jìn)行設(shè)計(jì),分析和解決一個(gè)理論問題或?qū)嶋H問題,把知識(shí)轉(zhuǎn)化為能力的實(shí)際訓(xùn)練。培養(yǎng)了我運(yùn)用所

89、學(xué)知識(shí)解決實(shí)際問題的能力。</p><p>  通過這次數(shù)字鐘的設(shè)計(jì)制作,我們將從書本上學(xué)到的知識(shí)應(yīng)用于實(shí)踐,提高了一些電子電路仿真設(shè)計(jì)能力,雖然過程中遇到了一些困難,但是在解決這些問題的過程無疑也是對(duì)自己自身專業(yè)素質(zhì)的一種提高。當(dāng)最終調(diào)試成功的時(shí)候也是對(duì)自己的一種肯定。此次的設(shè)計(jì)作業(yè)不僅增強(qiáng)了自己在專業(yè)設(shè)計(jì)方面的信心,鼓舞了自己,更是一次興趣的培養(yǎng),為自己以后的學(xué)習(xí)方向的明確了重點(diǎn)</p><

90、;p>  我們的學(xué)習(xí)不但要立足于書本,以解決理論和實(shí)際教學(xué)中的實(shí)際問題為目的,還要以實(shí)踐相結(jié)合,理論問題即實(shí)踐課題,解決問題即課程研究,學(xué)生自己就是一個(gè)專家,通過自己的手來解決問題比用腦子解決問題更加深刻。學(xué)習(xí)就應(yīng)該采取理論與實(shí)踐結(jié)合的方式,理論的問題,也就是實(shí)踐性的課題。這種做法既有助于完成理論知識(shí)的鞏固,又有助于帶動(dòng)實(shí)踐,解決實(shí)際問題,加強(qiáng)我們的動(dòng)手能力和解決問題的能力。</p><p>  在這里感謝

91、學(xué)校三年來的培養(yǎng)和各科老師的悉心教導(dǎo),使我受益匪淺。感謝同學(xué)們和我一起度過珍貴而難忘的三年,并給與我生活上和學(xué)習(xí)上的幫助。感謝我的父母對(duì)我默默的支持和辛勤的付出。在此,謹(jǐn)向我的學(xué)校﹑我的各位老師和我的父母致以崇高的敬意和深深的感謝。</p><p><b>  參 考 文 獻(xiàn):</b></p><p>  [1]、李華,MCS-51系列單片機(jī)實(shí)用接口技術(shù)[M],北京:

92、北京航空航天大學(xué)出版社,1993.8。</p><p>  [2] 馬彪.單片機(jī)應(yīng)用技術(shù).鄭州.中國輕工業(yè)出版社,2006.4</p><p>  [3] 馬家辰,MCS-51單片機(jī)原理與接口技術(shù)[M],哈爾濱:哈爾濱工業(yè)大學(xué)出版社。</p><p>  [4]皮紅梅,李英順. 單片機(jī)開發(fā)中的定時(shí)方法. 沈陽:石油化工高等??茖W(xué)校學(xué)報(bào),2002年12月</p&

93、gt;<p>  [5] 黃慶華.單片機(jī)開發(fā)技術(shù)與實(shí)訓(xùn).北京.電子工業(yè)出版社,2006.7</p><p>  [6]夏繼強(qiáng),邢春香.單片機(jī)應(yīng)用設(shè)計(jì)培訓(xùn)教程——實(shí)踐篇.北京:北京航空航天大學(xué)出版社,2008</p><p><b>  附錄A 源程序</b></p><p><b>  主程序清單:</b>&

94、lt;/p><p>  ORG 0000H ;中斷入口地址</p><p><b>  AJMP MAIN</b></p><p>  ORG 000BH ;T0中斷</p><p>  AJMP T0INT</p><p>  MAIN: MOV SP,#70H ;設(shè)置堆棧指針&l

95、t;/p><p>  MOV R6,#06H ;顯示緩沖區(qū)清零</p><p>  MOV R1,#45H</p><p>  S0:MOV @R1,#00H</p><p><b>  DEC R1</b></p><p>  DJNZ R6,S0</p><p>  MO

96、V TMOD,#01H ;T0為工作方式1</p><p>  MOV TH0,#0BH ;設(shè)T0計(jì)數(shù)初值</p><p>  MOV TL0,#0DCH</p><p>  SETB RS0 ;選擇工作區(qū)1</p><p>  MOV R2,#00H ;相關(guān)寄存器清零</p><p>  MOV R

97、3,#00H</p><p>  MOV R4,#00H</p><p>  MOV R5,#00H</p><p>  CLR RS0 ;選擇工作區(qū)0</p><p>  MOV R1,#45H ;顯緩區(qū)首指針?biāo)蚏1</p><p>  SETB TR0 ;開T0</p>&l

98、t;p>  SS1: LCALL DISP ;調(diào)用顯示程序</p><p>  LCALL KEYBOARD ;調(diào)用按鍵處理程序</p><p>  MOV R2, 35H ;判斷是否有定時(shí)時(shí)間</p><p>  CJNE R2, #0, NT</p><p>  MOV R2, 34H</p>&

99、lt;p>  CJNE R2, #0, NT</p><p>  MOV R2, 33H</p><p>  CJNE R2, #0, NT</p><p><b>  SJMP BB</b></p><p>  NT: MOV A, 35H</p><p>  CJNE A, 32H

100、, BB ;判斷定時(shí)時(shí)間到否</p><p>  MOV A, 34H</p><p>  CJNE A, 31H, BB</p><p>  MOV A, 33H</p><p>  CJNE A, 30H, BB</p><p>  CLR P3.7 ;時(shí)間到發(fā)出報(bào)警</p>

101、<p><b>  SJMP SS1</b></p><p>  BB: SETB P3.7</p><p><b>  SJMP SS1</b></p><p>  按鍵處理(當(dāng)前)時(shí)間程序清單</p><p>  KEYBOARD: NOP</p><p

102、>  KEY: MOV R4,#04H ;調(diào)顯示程序</p><p>  S1: LCALL DISP</p><p>  DJNZ R4,S1</p><p><b>  SETB P0.0</b></p><p>  JB P0.0,KEY ;P0.0(SET鍵

103、)為高電平嗎?是,轉(zhuǎn)KEY</p><p>  MOV R4,#0AH ;否,調(diào)顯示延時(shí)消抖</p><p>  S2: LCALL DISP</p><p>  DJNZ R4,S2</p><p><b>  SETB P0.0</b></p><p>  JB P0

104、.0,KEY ;P0.0為高電平嗎?是,轉(zhuǎn)KEY</p><p>  CLR TR0 ;否,關(guān)T0</p><p>  JNB P0.0,$ ;等待鍵釋放</p><p>  MOV 20H,R1 ;R1送閃爍顯示單元20H</p&

105、gt;<p>  MOV R2,#00 ;LED位數(shù)單元R2清零</p><p>  KEY1: LCALL DISP_2 ;調(diào)閃爍顯示程序</p><p>  MOV P0,#0FFH</p><p><b>  MOV A,P0</b></p><p><

106、;b>  CPL A</b></p><p><b>  JZ KEY1</b></p><p>  KEY2: JNB ACC.0,KEY3 ;P0.0(SET鍵)按下嗎?否,轉(zhuǎn)KEY3</p><p>  JNB P0.0,$ ;是,等待鍵釋放</p><p&

107、gt;  DEC R1 ;R1-1</p><p>  INC R2 ;R2+1</p><p>  CJNE R2,#06,L13 ;R2=6嗎?否,轉(zhuǎn)L13</p><p>  MOV R1,#45H ;是,重新開始調(diào)位</p&g

108、t;<p>  MOV R2,#00</p><p>  L13:MOV 20H,R1 ;R1送閃爍顯示單元20H</p><p><b>  SJMP KEY1</b></p><p>  KEY3: JNB ACC.2,KEY4 ;P0.2(+1鍵)按下嗎?否,轉(zhuǎn)KEY4</p>

109、<p>  JNB P0.2,$</p><p><b>  MOV A,@R1</b></p><p>  CJNE R1,#45H,L1 ;是小時(shí)的十位嗎?否,轉(zhuǎn)L1</p><p>  CJNE A,#02,LL ;十位為2嗎?否,轉(zhuǎn)LL</p><p>&

110、lt;b>  SJMP KEY5</b></p><p>  L1: CJNE R1,#44H,L2 ;是小時(shí)的個(gè)位嗎?否,轉(zhuǎn)L2</p><p>  MOV R4,45H</p><p>  CJNE R4,#02,L101 ;十位為2嗎?否,轉(zhuǎn)L101</p><p>  CJNE A,

111、#03,LL ;是,個(gè)位為3嗎?否,轉(zhuǎn)LL</p><p><b>  SJMP KEY5</b></p><p>  L101: CJNE A,#09,LL ;個(gè)位為9嗎?否,轉(zhuǎn)LL</p><p><b>  SJMP KEY5</b></p><p>

112、  L2: CJNE R1,#43H,L3 ;是分鐘的十位嗎?否,轉(zhuǎn)L3</p><p>  CJNE A,#05,LL ;是,十位為5嗎?否,轉(zhuǎn)LL</p><p><b>  SJMP KEY5</b></p><p>  L3: CJNE R1,#42H,L4 ;是分鐘的個(gè)位嗎?否,轉(zhuǎn)L4&

113、lt;/p><p>  CJNE A,#09,LL ;是,個(gè)位為9嗎?否,轉(zhuǎn)LL</p><p><b>  SJMP KEY5</b></p><p>  L4: CJNE R1,#41H,L5 ;是秒鐘的十位嗎?否,轉(zhuǎn)L5</p><p>  CJNE A,#05,LL

114、 ;是,十位為5嗎?否,轉(zhuǎn)LL</p><p><b>  SJMP KEY5</b></p><p>  L5: CJNE R1,#40H,L6 ;是秒鐘的個(gè)位嗎?否,轉(zhuǎn)L6</p><p>  CJNE A,#09,LL ;是,個(gè)位為9嗎?否,轉(zhuǎn)LL</p><p>  K

115、EY5: MOV @R1,#00H ;R1單元內(nèi)容清零</p><p><b>  SJMP KEY1</b></p><p>  LL: INC A ;做+1處理</p><p><b>  MOV @R1,A</b></p><p>  L6: SJMP

116、 KEY1</p><p>  KEY4: JNB ACC.3,L6 ;P0.3(RET鍵)按下嗎?否,轉(zhuǎn)L6</p><p>  JNB P0.3,$ ;是,等待鍵釋放</p><p>  MOV R1,#45H</p><p>  ACALL DTOB ;調(diào)十-二進(jìn)制轉(zhuǎn)換

117、程序</p><p>  SETB TR0 ;開T0</p><p><b>  LJMP KEY</b></p><p>  按鍵處理(鬧鐘)時(shí)間程序清單</p><p>  KEYBOARD: NOP</p><p>  KEY: MOV R4,#04H

118、 ;調(diào)顯示程序</p><p>  S1: LCALL DISP</p><p>  DJNZ R4,S1</p><p><b>  SETB P0.2</b></p><p>  JB P0.1,KEY ;P0.1(ALM鍵)為高電平嗎?是,轉(zhuǎn)KEY</p><

119、;p>  MOV R4,#0AH ;否,調(diào)顯示延時(shí)消抖</p><p>  S2: LCALL DISP</p><p>  DJNZ R4,S2</p><p><b>  SETB P0.1</b></p><p>  JB P0.1,KEY ;P0.1為高電

120、平嗎?是,轉(zhuǎn)KEY</p><p>  CLR TR0 ;否,關(guān)T0</p><p>  JNB P0.0,$ ;等待鍵釋放</p><p>  MOV 20H,R1 ;R1送閃爍顯示單元20H</p><p>  MOV R2,#00

121、 ;LED位數(shù)單元R2清零</p><p>  KEY1: LCALL DISP_2 ;調(diào)閃爍顯示程序</p><p>  MOV P0,#0FFH</p><p><b>  MOV A,P0</b></p><p><b>  CPL A</b></p><

122、p><b>  JZ KEY1</b></p><p>  KEY2: JNB ACC.1,KEY3 ;P0.1(ALM鍵)按下嗎?否,轉(zhuǎn)KEY3</p><p>  JNB P0.1,$ ;是,等待鍵釋放</p><p>  DEC R1 ;R1-1</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)論