定時鬧鐘設(shè)計課程設(shè)計報告[共39頁]

上傳人:gfy****yf 文檔編號:42979604 上傳時間:2021-11-29 格式:DOC 頁數(shù):39 大小:524.08KB
收藏 版權(quán)申訴 舉報 下載
定時鬧鐘設(shè)計課程設(shè)計報告[共39頁]_第1頁
第1頁 / 共39頁
定時鬧鐘設(shè)計課程設(shè)計報告[共39頁]_第2頁
第2頁 / 共39頁
定時鬧鐘設(shè)計課程設(shè)計報告[共39頁]_第3頁
第3頁 / 共39頁

下載文檔到電腦,查找使用更方便

12 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《定時鬧鐘設(shè)計課程設(shè)計報告[共39頁]》由會員分享,可在線閱讀,更多相關(guān)《定時鬧鐘設(shè)計課程設(shè)計報告[共39頁](39頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、西安文理學(xué)院課程設(shè)計報告 定時鬧鐘設(shè)計 摘要: 本設(shè)計目的是利用單片機(jī)設(shè)計制作一個簡易的定時鬧鈴時鐘,可以放在宿舍或教室使用,在夜晚或黑暗的場合也可以使用??梢栽O(shè)置現(xiàn)在的時間以及鬧鈴的時間并且顯示出來,若時間到則發(fā)出一陣聲響。 本次設(shè)計的定時鬧鐘在硬件方面就采用了AT89C52芯片,用6位LED數(shù)碼管進(jìn)行顯示。LED用P0口進(jìn)行驅(qū)動,采用的是動態(tài)掃描顯示,能夠比較準(zhǔn)確顯示時時—分分—秒秒。通過五個功能按鍵可以實現(xiàn)對時間的修改、定時和鬧鈴終止,鬧鐘設(shè)置的時間到時蜂鳴器可以發(fā)出聲響。在軟件方面用C51編程。整個定時鬧鐘系統(tǒng)能完成時間的顯示,調(diào)時和設(shè)置鬧鐘、停止響鈴等功能,并經(jīng)

2、過系統(tǒng)仿真后得到了正確的結(jié)果。 關(guān)鍵詞:定時鬧鐘;蜂鳴器;AT89C52;74HC245; 目錄 第1章 緒論 1 1.1設(shè)計目的 1 1.2設(shè)計要求和任務(wù) 1 1.2.1設(shè)計要求: 1 1.2.2設(shè)計任務(wù): 1 1.3論文主要內(nèi)容 1 第2章 系統(tǒng)總體設(shè)計 2 2.1系統(tǒng)設(shè)計需求 2 2.2總體設(shè)計方案 2 2.3系統(tǒng)軟件 3 2.4系統(tǒng)硬件 3 第3章 系統(tǒng)硬件設(shè)計 4 3.1系統(tǒng)硬件模塊及功能 4 3.2主控模塊 4 3.2.1主芯片AT89C52 4 3.2.2時鐘電路設(shè)計 7 3.2.3 74HC245芯片 7 3.3 LED顯示模塊 9

3、3.4 按鍵模塊 9 3.5警報模塊 10 第4章 系統(tǒng)軟件設(shè)計 11 4.1系統(tǒng)軟件設(shè)計概述 11 4.2主程序設(shè)計 11 4.3單片機(jī)的中斷系統(tǒng) 11 4.3.1中斷源 11 4.3.2中斷的優(yōu)先級別 12 4.4主程序 12 第5章 系統(tǒng)測試 13 5.1測試內(nèi)容 13 5.2測試環(huán)境 13 5.3測試步驟 13 5.3.1測試環(huán)境的構(gòu)建 13 5.3.2測試內(nèi)容 14 5.4測試結(jié)果 14 第 2 頁 結(jié)論 15 致謝 16 參考文獻(xiàn) 17 附錄 18 第 2 頁 第1章 緒論 1.1設(shè)計

4、目的 本次課程設(shè)計的主題是定時鬧鐘,其基礎(chǔ)部分是一個數(shù)字鐘。電路系統(tǒng)由秒信號發(fā)生器、“時、分、秒”計數(shù)器、顯示器組成。其中秒信號產(chǎn)生器是整個系統(tǒng)的時基信號,它直接決定計時系統(tǒng)的精度,這里用51單片機(jī)的定時器來實現(xiàn)。利用定時器獲得每一秒的時刻,然后在程序中,我們就可以給秒進(jìn)行逐秒賦值,滿60秒則進(jìn)位為1分,滿60分則進(jìn)位為1小時,滿24小時則時間重置實現(xiàn)一天24小時的循環(huán)。譯碼顯示電路將“時”、“分”、“秒”計數(shù)器的輸出狀態(tài)送到七段顯示譯碼器譯碼,通過一個六位八段數(shù)碼管顯示出來。 這里利用51單片機(jī)的相關(guān)知識,來實現(xiàn)電子鬧鐘的相關(guān)功能。實驗使用了AT89C52、74HC245等芯片,通過單片

5、機(jī)的P0、P3管腳來驅(qū)動數(shù)碼管顯示出相應(yīng)的時刻。本文將講述AT89C52、74HC245等芯片的基本功能原理,并重點介紹該電子鬧鐘的設(shè)計。 1.2設(shè)計要求和任務(wù) 1.2.1設(shè)計要求: 使用6位七段LED顯示器來顯示現(xiàn)在的時間;顯示格式為“時時分分秒秒”;具有4個按鍵來做功能設(shè)置,可以設(shè)置現(xiàn)在的時間及顯示鬧鈴設(shè)置時間;時間到則發(fā)出一陣聲響,可通過按鍵復(fù)位;對單片機(jī)系統(tǒng)設(shè)計的過程進(jìn)行總結(jié),認(rèn)真書寫課程設(shè)計報告并按時上交。 1.2.2設(shè)計任務(wù): 利用51單片機(jī)結(jié)合七段LED顯示器設(shè)計一個簡易的定時鬧鈴時鐘,可以放在宿舍或教室使用,由于用七段LED顯示器顯示數(shù)據(jù),在夜晚或黑暗的場合也

6、可以使用??梢栽O(shè)置現(xiàn)在的時間及顯示鬧鈴設(shè)置時間,若時間到則發(fā)出一陣聲響。 1.3論文主要內(nèi)容 論文分別敘述從硬件和軟件上實現(xiàn)該設(shè)計的過程。第2章為總體設(shè)計方案。第3章主要介紹設(shè)計實現(xiàn)需要解決的硬件問題。依次介紹所使用的各種硬件的使用方法,并附上仿真電路圖和文字說明。第4章從軟件的角度說明實現(xiàn)該設(shè)計需要解決的問題。 第2章 系統(tǒng)總體設(shè)計 2.1系統(tǒng)設(shè)計需求 系統(tǒng)要求實現(xiàn)以下功能: 1.當(dāng)電源接通時,系統(tǒng)能正確顯示當(dāng)前時間。 2.當(dāng)前時間與實時時間有誤差時,可以通過鍵盤調(diào)整當(dāng)前時間。 3.系統(tǒng)允許進(jìn)行鬧鐘設(shè)置,開啟鬧鐘功能時,當(dāng)設(shè)置的鬧鐘時間與當(dāng)前時間一致的時候,系統(tǒng)通過蜂鳴器發(fā)

7、出警報聲并且可以通過按鍵停止。 2.2總體設(shè)計方案 功能組成: 本次設(shè)計中的計時功能很容易實現(xiàn),難點在于時鐘功能和鬧鐘功能的切換和時間的設(shè)置。 該電子鬧鐘設(shè)計對51單片機(jī)定時器0裝初值,使其初值對應(yīng)50ms,定時器0的中斷次數(shù)達(dá)到20次就剛好為1s,當(dāng)秒部分計數(shù)到60時置零,并向分部分進(jìn)一;當(dāng)分部分計數(shù)到60時置零,并向時部分進(jìn)一,當(dāng)時部分計數(shù)到24時置零,從而滿足時鐘的正常工作。 在設(shè)計過程中,我發(fā)現(xiàn)通過4個按鍵來完成一個鬧鐘的基礎(chǔ)功能雖然可以實現(xiàn),但是用戶用起來就會很麻煩,因為有的鍵必須有多種功能和不同的觸發(fā)方式,我認(rèn)為可以增加少許按鍵來方便用戶快速了解到我們的鬧鐘是如何進(jìn)行

8、控制的。所以本次設(shè)計設(shè)置5個鍵依次對其進(jìn)行“時間校準(zhǔn)”、“鬧鐘設(shè)置”、“秒分時切換/終止警報”、“加1按鈕”、“減1按鈕”?!懊敕謺r切換/終止報警”鍵在調(diào)時狀態(tài)中,起時分秒切換的作用,在非調(diào)試狀態(tài)下,起鬧鐘終止的作用。 當(dāng)用戶按下“時間校準(zhǔn)”的按鈕后,程序會關(guān)閉T0定時器,之后時鐘停止工作,此時數(shù)碼管會顯示當(dāng)前靜止的時間,說明已經(jīng)進(jìn)入時間校準(zhǔn)的界面了。在完成時間校準(zhǔn)后,打開T0定時器,時鐘會在設(shè)置好的時間上繼續(xù)工作走秒。 當(dāng)用戶按下“鬧鐘設(shè)置”按鈕后,會將當(dāng)前時間復(fù)制出來提供給定時界面,注意此時我們的時鐘仍然在繼續(xù)工作,只是數(shù)碼管顯示的是定時模式的靜止時間。當(dāng)設(shè)置好后,此時用戶設(shè)置的時間只

9、要沒有觸發(fā)過鬧鈴,再次按“鬧鐘設(shè)置”按鈕就能查看并修改,即鬧鐘會保存下用戶最后一次未被觸發(fā)的鬧鐘時間。 當(dāng)正常工作的時鐘時刻到達(dá)了預(yù)設(shè)的鬧鈴時刻,蜂鳴器發(fā)出警報聲,屏幕會閃爍并顯示當(dāng)前時間??紤]到用戶可能已經(jīng)被提醒而不想繼續(xù)被鬧鈴聲干擾,還提供了一個能夠終止鬧鈴的功能,此功能與“時分秒切換”功能共用同一按鍵,按下后時鐘繼續(xù)正常工作,且鬧鐘功能又可以重新設(shè)置。 2.3系統(tǒng)軟件 本設(shè)計在Keil編程環(huán)境下,使用C語言進(jìn)行編程的編輯。編輯成功后,通過仿真軟件Proteus進(jìn)行仿真測試。 2.4系統(tǒng)硬件 LED顯示屏×1 主控芯片:AT89C52 鬧鐘提示:蜂鳴器 人機(jī)交互:

10、按鍵×5 晶振:12KHz×1 排阻:RESPACK-8×1 電容:10nf×2 總線收發(fā)器:74HC245×2 第3章 系統(tǒng)硬件設(shè)計 3.1系統(tǒng)硬件模塊及功能 系統(tǒng)硬件模塊主要分為以下幾個模塊: 1.主控模塊:控制其他子模塊。 2.時鐘模塊:為系統(tǒng)提供實時時間。 3.顯示模塊:顯示系統(tǒng)時間信息。 4.按鍵模塊:用戶通過按鍵進(jìn)行人機(jī)交互,修改實時時間、設(shè)置鬧鐘時間和終止鬧鐘報警。 5.鬧鐘模塊:在所設(shè)鬧鐘時間發(fā)出警報聲。 3.2主控模塊 3.2.1主芯片AT89C52 (1).A

11、T89C52簡介 AT89C52是一個低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。 AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2 個讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器

12、和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash存儲器可有效地降低開發(fā)成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。 AT89C52引腳圖如圖3.2.1: 圖 3.2.1 (2).工作原理 AT89C52為8 位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會聚調(diào)整時的功能控制。功能包括對會聚主IC 內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會聚調(diào)整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19 腳)和XT

13、AL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負(fù)端。P0~P3 為可編程通用I/O 腳,其功能用途由軟件定義,在本設(shè)計中,P0 端口(32~39 腳)被定義為N1 功能控制端口,分別與N1的相應(yīng)功能管腳相連接,13 腳定義為IR輸入端,10 腳和11腳定義為I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12 腳、27 腳及28 腳定義為握手信號功能端口,連接主板CPU 的相應(yīng)功能端,用于當(dāng)前制式的檢測及會聚調(diào)整

14、狀態(tài)進(jìn)入的控制功能。 P0 口: P0 口是一組8 位漏極開路型雙向I/O 口, 也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的 方式驅(qū)動8 個TTL邏輯門電路,對端口P0 寫“1”時,可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。 在Flash編程時,P0 口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。 P1 口: P1 是一個帶內(nèi)部上拉電阻的8 位雙向I/O 口, P1 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL 邏輯門電路。對端口寫“1”,通過內(nèi)

15、部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時/計數(shù)器2 的外部計數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),F(xiàn)lash 編程和程序校驗期間,P1 接收低8 位地址。 P2 口: P2 是一個帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL 邏輯門電路。對端口P2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號

16、拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16 位地數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR 指令)時,P2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI 指令)時,P2 口輸出P2鎖存器的內(nèi)容。Flash編程或校驗時,P2亦接收高位地址和一些控制信號。 P3 口: P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL 邏輯門電路。對P3 口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。P3 口除了作為一般的I/O 口線外,

17、更重要的用途是它的第二功能P3 口還接收一些用于Flash閃速存儲器編程和程序校驗的控制信號。 RST: 復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上高電平將使單片機(jī)復(fù)位。 ALE/PROG: 當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ALE 仍以時鐘振蕩頻率的1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE 脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D

18、0 位置位,可禁止ALE 操作。該位置位后,只有一條MOVX 和MOVC指令才能將ALE 激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE 禁止位無效。 PSEN: 程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C52 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次PSEN 有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 EA/VPP: 外部訪問允許。欲使CPU 僅訪問外部程序存儲器(地址為0000H—FFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1 被編程,復(fù)位時內(nèi)部會鎖存EA端狀

19、態(tài)。如EA端為高電平(接Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲器中的指令。Flash存儲器編程時,該引腳加上+12V 的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。 XTAL1: 振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。 XTAL2: 振蕩器反相放大器的輸出端。 3.2.2時鐘電路設(shè)計 利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2的引腳上外接定時元件,內(nèi)部振蕩器便能產(chǎn)生自激振蕩。定時元件可以采用石英晶體和電容組成的并聯(lián)諧振電路,如圖3.2.2所示。 晶振可以在1.2~12MHZ之間任選,甚至可以達(dá)到24MHz,但是頻率越高功耗也就越大。和晶振并聯(lián)的電容

20、C1、C2的大小對振蕩頻率有微小影響,可以起到頻率微調(diào)作用。 時鐘電路如圖3.2.2: 圖3.2.2 3.2.3 74HC245芯片 電路中用74HC245芯片充當(dāng)總線收發(fā)器,作用是放大信號,它具有典型的CMOS型三態(tài)緩沖門電路。由于單片機(jī)或CPU的數(shù)據(jù)/地址/控制總線端口都有一定的負(fù)載能力,如果負(fù)載超過其負(fù)載能力,一般應(yīng)加驅(qū)動器。 引腳定義: 1引腳DIR:未輸入輸出端口轉(zhuǎn)換用,當(dāng)它為高電平“1”時,信號由“A”端口輸入“B”端口輸出;當(dāng)它為低電平“0”時,信號由“B”端口輸入“A”端口輸出。 2-9引腳: “A”端口輸入輸出端,每個端口與“B”端口對應(yīng)。 11-18引腳

21、:“B”端口輸入輸出端,每個端口與“A”端口對應(yīng)。 10引腳:GUD,電源地。 20引腳:VCC,電源正極。 74HC245引腳圖如圖3.2.3(1) : 圖3.2.3(1) 仿真電路圖如圖3.2.3(2): 圖3.2.3(2) 3.3 LED顯示模塊 本次課程設(shè)計采用了6位數(shù)碼管顯示電路。在6位LED顯示時,為了簡化電路,降低成本,采用動態(tài)顯示的方式, 6個LED顯示器共用一個8位的I/O, 6位LED數(shù)碼管的位選線分別由相應(yīng)的P2. 0~P2. 5控制,而將其相應(yīng)的段選線并聯(lián)在一起,由一個8位的I/O口控制,即P0口。譯碼

22、顯示電路將“時”、“分”、“秒”計數(shù)器的輸出狀態(tài)經(jīng)七段顯示譯碼器譯碼,通過6位LED七段顯示器顯示出來。到達(dá)定時電路時根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生脈沖信號,然后去觸發(fā)音頻發(fā)生器實現(xiàn)鬧鈴。校時電路時用來對“時”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整的。 LED仿真電路圖如圖3.3: 圖 3.3 3.4 按鍵模塊 按鍵模塊共設(shè)置了五個按鍵,功能分別如下: (1).時間校準(zhǔn)鍵“CLOCK”: 自鎖開關(guān),按下后進(jìn)入校準(zhǔn)設(shè)置,再次按下后退出。 (2).鬧鐘設(shè)置鍵“ALARM CLOCK”: 自鎖開關(guān),按下后進(jìn)入鬧鐘設(shè)置,再次按下后退出。 另外可供用戶對已經(jīng)設(shè)置的鬧鐘時間進(jìn)行查看或修改。

23、(3). 秒分時切換/終止報警鍵“SWITCH/STOP”: 按鈕開關(guān),在按下“CLOCK”或“ALARM CLOCK”鍵時,為時分秒切換功能,默認(rèn)是“秒”,再次按下是“分”,然后是“時”之后是“秒”,以此類推。在“CLOCK”或“ALARM CLOCK”鍵未按下時,為終止報警功能。 (4).時間增加鍵“+”:按鈕開關(guān),可以在進(jìn)入校準(zhǔn)設(shè)置和鬧鐘設(shè)置后,進(jìn)行加一操作。 (5).時間減少鍵“-”: 按鈕開關(guān),可以在進(jìn)入校準(zhǔn)設(shè)置和鬧鐘設(shè)置后,進(jìn)行減一操作。 按鍵模塊仿真電路圖如圖3.4: 圖 3.4 3.5警報模塊 鬧鈴指示設(shè)置有聲和光兩種形式。聲音形式的關(guān)鍵元件是蜂鳴器。蜂鳴器有

24、無源和有源兩種,前者需要輸入聲音頻率信號才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,本次設(shè)計我們使用的是后者。鬧鐘電路是用比較器來比較計時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài),如果計時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個脈沖信號,再和一個高頻信號混合,送到放大電路驅(qū)動揚(yáng)聲器發(fā)聲,從而實現(xiàn)定時鬧響的功能。 蜂鳴器仿真電路圖如圖3.5: 圖 3.5 第4章 系統(tǒng)軟件設(shè)計 4.1系統(tǒng)軟件設(shè)計概述 該部分主要分為實時時鐘模塊、LED顯示模塊、鍵盤中斷模塊、鬧鐘模塊。實時時鐘部分主要包括實時時間的讀寫,時間的修改。LED顯示模塊主要包括顯示屏的初始化,顯示的命令字。鍵盤中斷模塊包括

25、各鍵的定義和作用,按鍵的消抖,各按鍵跳轉(zhuǎn)的子程序分配。鬧鐘模塊包括鬧鐘時間的設(shè)置,以及對蜂鳴器啟動和停止條件的設(shè)置和處理。 4.2主程序設(shè)計 主程序包含三個部分。一是主函數(shù)部分,負(fù)責(zé)系統(tǒng)的初始化操作;從中斷服務(wù)取得實時時間;判斷鬧鐘時間是否與實時時間相等并在相等時發(fā)出警報聲。第二部分是定時中斷部分,分兩種情況:負(fù)責(zé)處理從中斷服務(wù)獲得的時間數(shù)據(jù)并送至LED顯示緩沖顯示,或者顯示鬧鐘設(shè)置界面并顯示鬧鐘時間的設(shè)置過程。第三部分是外部中斷,主要定義5個按鍵的作用,分配每一個按鍵跳轉(zhuǎn)的子程序。第三部分負(fù)責(zé)時間和日期的修改,鬧鐘時間的設(shè)置,停止蜂鳴器鳴叫的功能。 4.3單片機(jī)的中斷系統(tǒng) 斷系統(tǒng)在單

26、片機(jī)應(yīng)用系統(tǒng)中起著十分重要的作用,是現(xiàn)代嵌入式控制系統(tǒng)廣泛采用的一種適時控制技術(shù),能對突發(fā)事件進(jìn)行及時處理,從而大大提高系統(tǒng)對外部事件的處理能力。正是有了中斷技術(shù),單片機(jī)才得以能夠普及。因此,中斷技術(shù)是單片機(jī)的一項重要技術(shù),掌握中斷技術(shù)能開發(fā)出靈活、高效的單機(jī)片應(yīng)用系統(tǒng)。 4.3.1中斷源 要讓單機(jī)片停止當(dāng)前的程序去執(zhí)行其他程序,需要向它發(fā)出請求信號,CPU接收到中斷請求信號后才能產(chǎn)生中斷。讓CPU產(chǎn)生中斷的信號稱為中斷源(又稱中斷請求源)。單片機(jī)提供5個中斷源,其中兩個為外部中斷請求源INT0(P3.2)和INT1(P3.3),兩個片內(nèi)定時器/計數(shù)器T0和T1的溢出請求中斷源TF0和TF

27、1,1個片內(nèi)串行口發(fā)送或接收中斷請求源T1和R1。 4.3.2中斷的優(yōu)先級別 單片機(jī)內(nèi)的CPU工作時,如果一個中斷源向它發(fā)出中斷請求信號,它就會產(chǎn)生中斷。但是,如果同時有兩個中斷源發(fā)出中斷請求信號,CPU就會優(yōu)先接收級別高的中斷請求源,然后再接收優(yōu)先級別低的中斷請求。表4.3.2列出5個獨立中斷請求源由其硬件結(jié)構(gòu)決定的自然優(yōu)先級排列順序。 中斷源 自然優(yōu)先級 中斷入口地址 中斷編號 外部中斷INT0 高 ↓ 低 0003H 0 定時器T0 000BH 1 外部中斷INT1 0013H 2 定時器T1 001BH 3 串行口通信中斷R1或T1 0

28、023H 4 表4.3.2 單片機(jī)中斷源的自然優(yōu)先級、入口地址及中斷編號 對應(yīng)于單片機(jī)的5個獨立中斷源,應(yīng)有相應(yīng)的中斷服務(wù)程序。這些中斷服務(wù)程序有專門規(guī)定的存放位置,即表4.3.2的中斷入口地址。當(dāng)有了中斷請求后,CPU可以根據(jù)入口地址迅速找到中斷服務(wù)程序并開始執(zhí)行,大大提高執(zhí)行效率。 4.4主程序 主程序見附錄。 第5章 系統(tǒng)測試 5.1測試內(nèi)容 1.顯示部分 2.按鍵部分 5.2測試環(huán)境 Proteus仿真模擬軟件。 5.3測試步驟 5.3.1測試環(huán)境的構(gòu)建 (1).在Proteus軟件中繪制好定時鬧鐘仿真模擬電路圖。 (2).將Keil編譯器生成的

29、.hex文件載入AT89C52芯片。 圖5.3.1(2)載入.hex文件 (3).在Proteus軟件中,點擊左下角的“play”按鈕啟動定時鬧鐘。如下圖,“play”按鈕在第一個。 圖5.3.1(3)仿真電路運行控制按鈕 5.3.2測試內(nèi)容 詳細(xì)測試內(nèi)容如下: 定時鬧鐘是否能正確顯示時間;是否能正確顯示鬧鐘設(shè)置時的界面;是否能正確顯示時間調(diào)整時的界面。 (1).顯示時間 點擊“play”鍵之后,時鐘系統(tǒng)開始走時,如圖5.5.2(1): 圖5.3.2(1) 經(jīng)測試,顯示結(jié)果達(dá)到預(yù)期要求。 (2).時間調(diào)整測試 如果用戶發(fā)現(xiàn)時間運行不對,要對時間進(jìn)行修改和調(diào)整

30、,就需要進(jìn)入時間修改的界面。預(yù)期可以對時、分、秒進(jìn)行調(diào)整和修改。系統(tǒng)能正確顯示時間修改的界面。用戶可以完成時間的修改。 經(jīng)測試,該部分運行正常。 (3).鬧鐘設(shè)置測試 在系統(tǒng)能正確顯示時間之后,用戶若想設(shè)置鬧鐘,可以通過按鍵完成鬧鐘時間的設(shè)置。設(shè)置時間到后蜂鳴器報警,按下“STOP”鍵后警報停止 經(jīng)測試,該部分能正常運行。 結(jié)論:通過以上對仿真項目的全面測試,可知仿真部分運行正常。 5.4測試結(jié)果 通過以上測試,證明本設(shè)計基本實現(xiàn)系統(tǒng)所有要求,即能夠正確顯示時間信息,能夠?qū)Ξ?dāng)前時間進(jìn)行調(diào)整和修改,并且能夠設(shè)定鬧鐘并在所設(shè)置的鬧鐘時間發(fā)出警報聲,通過按鍵可以停止警報。 結(jié)論

31、 該系統(tǒng)采用單機(jī)片AT89C52作為核心芯片,結(jié)合一些其他外圍設(shè)備,一起構(gòu)成了一款能夠顯示時間并且能夠?qū)ζ溥M(jìn)行修改和設(shè)置定時鬧鐘的定時鬧鐘系統(tǒng)。 該系統(tǒng)采用數(shù)碼管顯示屏,能夠清晰顯示時間信息,并且能夠友好的引導(dǎo)用戶進(jìn)行時間的修改以及鬧鐘的設(shè)置??梢酝ㄟ^各個寄存地址對時間進(jìn)行讀寫操作,即讀取時間和修改時間。利用蜂鳴器為用戶提供鬧鈴功能,能夠在設(shè)定時間發(fā)出警報聲提醒用戶。采用按鍵較少的獨立式鍵盤供人機(jī)交互,操作簡單方便??梢酝ㄟ^鍵盤修改時間,也可以設(shè)置鬧鈴時間和修改鬧鈴時間,另外,在鬧鈴時間與系統(tǒng)時間一致,蜂鳴器鳴叫時,可以通過按鍵中斷警報聲。總之,該定時鬧鐘系統(tǒng)完成了市場上一般鬧鐘應(yīng)有的功能

32、,能夠顯示時間和設(shè)置鬧鐘,可以給用戶提供時間信息。 該設(shè)計也存在一些缺點,就是實際生產(chǎn)時投入資金會比市場上一般鬧鐘價格昂貴,如果進(jìn)行包裝,價格還會上升一些。另外,外觀不如市場銷售的鬧鐘美觀。 致謝 衷心感謝雷俊紅老師的指導(dǎo)。 參考文獻(xiàn) [1] 李強(qiáng),51系列單片機(jī)應(yīng)用軟件編程技術(shù)[M].北京:北京航空航天大學(xué)出版社,2009.4: 134-138. [2] 薛慧芳.MCS-51單機(jī)片串行口的一口多用[J].南京化工大學(xué)學(xué)報(自然科學(xué)版),1998,S1:84-86. [3] 王東鋒,王會良,董冠強(qiáng).單機(jī)片C語言應(yīng)用100例[M].北京:電子工業(yè)出版社,2

33、009.3:218-219,148-152. [4] 樓然苗,李光飛.單片機(jī)課程設(shè)計指導(dǎo)(第2版)[M].北京:北京航空航天大學(xué)出版社,2012.1:285-289. 第 35 頁 附錄: 系統(tǒng)電路圖如下: 系統(tǒng)電路圖 系統(tǒng)程序如下: #include<reg52.h> sbit btnTime = P1^0; sbit btnClock = P1^1; sbit btnSwitch = P1^2; sbit btnUp = P1^3; sbit btnDown = P1^4; sbit pin1 = P2^

34、0; sbit pin2 = P2^1; sbit pin3 = P2^2; sbit pin4 = P2^3; sbit pin5 = P2^4; sbit pin6 = P2^5; sbit pinBuz = P2^6; unsigned char timer = 0,sec,min,hour,count = 0,s = 60,m = 60,h = 24,flag = 0; unsigned char code numbers[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}

35、; void delayMs(unsigned int k){ unsigned int i,j; for(i = k;i>0;i--) for(j = 110;j>0;j--); } void timeChange(){ sec++; if(sec == 60){ sec = 0; min++; if(min == 60){ min = 0; hour++; if(hour == 24) hour = 0; } } }

36、 void showTime(unsigned char zs,unsigned char zm, unsigned char zh){ pin1 = 1; P0 = numbers[zh/10]; delayMs(5); pin1 = 0; pin2 = 1; P0 = numbers[zh%10]&0x7f; delayMs(5); pin2 = 0; pin3 = 1; P0 = numbers[zm/10]; delayMs(5);

37、 pin3 = 0; pin4 = 1; P0 = numbers[zm%10]&0x7f; delayMs(5); pin4 = 0; pin5 = 1; P0 = numbers[zs/10]; delayMs(5); pin5 = 0; pin6 = 1; P0 = numbers[zs%10]; delayMs(5); pin6 = 0; } void setTime(){ unsigned char st,mt,ht;

38、if(btnTime == 0){ delayMs(10); if(btnTime == 0){ st = sec,mt = min,ht = hour; TR0 = 0; while(btnTime == 0){ showTime(st,mt,ht); if(btnSwitch == 0){ delayMs(10); if(btnSwitch == 0){ while(!btnSwitch); count++; if(coun

39、t == 3) count = 0; } } if(btnUp == 0){ delayMs(10); if(btnUp == 0){ while(!btnUp); switch(count){ case 0:st++;if(st == 60)st = 0;break; case 1:mt++;if(mt == 60)mt = 0;break; case 2:ht++;if(ht == 24)ht = 0;break;

40、 default:; } } } if(btnDown == 0){ delayMs(10); if(btnDown == 0){ while(!btnDown); switch(count){ case 0: if(st>0) st--; else st = 0; b

41、reak; case 1: if(mt>0) mt--; else mt = 0; break; case 2: if(ht>0) ht--; else ht = 0; break; default : ; }

42、 } } } TR0 = 1; sec = st,min = mt,hour = ht; } } showTime(sec,mi

43、n,hour); } void setClock(){ if(btnClock == 0){ delayMs(50); if(btnClock == 0){ if(flag == 0){ s = sec; m = min; h = hour; } flag = 1; while(btnClock == 0){ showTime(s,m,h); if(btnSwitch == 0){ delayMs(10); if(bt

44、nSwitch == 0){ while(!btnSwitch); count++; if(count == 3) count = 0; } } if(btnUp == 0){ delayMs(10); if(btnUp == 0){ while(!btnUp); switch(count){ case 0: s++; if(s == 60) s =

45、0; break; case 1: m++; if(m == 60) m = 0; break; case 2: h++; if(h == 24) h = 0; break; default:; } } } if(bt

46、nDown == 0){ delayMs(10); if(btnDown == 0){ while(!btnDown); switch(count){ case 0: if(s>0) s--; else s = 0; break; case 1: if(m>0) m--; else m = 0

47、; break; case 2: if(h>0) h--; else h = 0; break; default:; } } } } } } } void buzzer(){ if((hour == h)&&(min == m)&&(sec == s)){ int i; for(i = 1;i&

48、lt;30;i++){ if(btnSwitch == 0){ delayMs(20); if(btnSwitch == 0){ break; } } pinBuz = 1; delayMs(450); showTime(sec,min,hour); pinBuz = 0; delayMs(300); showTime(sec,min,hour); } flag = 0; } } void init(){ TMOD = 0x01;

49、 TH0 = (65536-45872)/256; TL0 = (65536-45872)%256; EA = 1; ET0 = 1; TR0 = 1; pinBuz = 0; } void main(){ init(); while(1){ setTime(); setClock(); buzzer(); } } void T0_ms() interrupt 1{ TH0 = (65536-45872)/256; TL0 = (65536-45872)%256; timer++; if(timer == 20){ timer = 0; timeChange(); } }

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!