定時(shí)鬧鐘設(shè)計(jì)課程設(shè)計(jì)報(bào)告[共39頁]
《定時(shí)鬧鐘設(shè)計(jì)課程設(shè)計(jì)報(bào)告[共39頁]》由會員分享,可在線閱讀,更多相關(guān)《定時(shí)鬧鐘設(shè)計(jì)課程設(shè)計(jì)報(bào)告[共39頁](39頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、西安文理學(xué)院課程設(shè)計(jì)報(bào)告 定時(shí)鬧鐘設(shè)計(jì) 摘要: 本設(shè)計(jì)目的是利用單片機(jī)設(shè)計(jì)制作一個(gè)簡易的定時(shí)鬧鈴時(shí)鐘,可以放在宿舍或教室使用,在夜晚或黑暗的場合也可以使用??梢栽O(shè)置現(xiàn)在的時(shí)間以及鬧鈴的時(shí)間并且顯示出來,若時(shí)間到則發(fā)出一陣聲響。 本次設(shè)計(jì)的定時(shí)鬧鐘在硬件方面就采用了AT89C52芯片,用6位LED數(shù)碼管進(jìn)行顯示。LED用P0口進(jìn)行驅(qū)動,采用的是動態(tài)掃描顯示,能夠比較準(zhǔn)確顯示時(shí)時(shí)—分分—秒秒。通過五個(gè)功能按鍵可以實(shí)現(xiàn)對時(shí)間的修改、定時(shí)和鬧鈴終止,鬧鐘設(shè)置的時(shí)間到時(shí)蜂鳴器可以發(fā)出聲響。在軟件方面用C51編程。整個(gè)定時(shí)鬧鐘系統(tǒng)能完成時(shí)間的顯示,調(diào)時(shí)和設(shè)置鬧鐘、停止響鈴等功能,并經(jīng)
2、過系統(tǒng)仿真后得到了正確的結(jié)果。 關(guān)鍵詞:定時(shí)鬧鐘;蜂鳴器;AT89C52;74HC245; 目錄 第1章 緒論 1 1.1設(shè)計(jì)目的 1 1.2設(shè)計(jì)要求和任務(wù) 1 1.2.1設(shè)計(jì)要求: 1 1.2.2設(shè)計(jì)任務(wù): 1 1.3論文主要內(nèi)容 1 第2章 系統(tǒng)總體設(shè)計(jì) 2 2.1系統(tǒng)設(shè)計(jì)需求 2 2.2總體設(shè)計(jì)方案 2 2.3系統(tǒng)軟件 3 2.4系統(tǒng)硬件 3 第3章 系統(tǒng)硬件設(shè)計(jì) 4 3.1系統(tǒng)硬件模塊及功能 4 3.2主控模塊 4 3.2.1主芯片AT89C52 4 3.2.2時(shí)鐘電路設(shè)計(jì) 7 3.2.3 74HC245芯片 7 3.3 LED顯示模塊 9
3、3.4 按鍵模塊 9 3.5警報(bào)模塊 10 第4章 系統(tǒng)軟件設(shè)計(jì) 11 4.1系統(tǒng)軟件設(shè)計(jì)概述 11 4.2主程序設(shè)計(jì) 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è)計(jì)
4、目的 本次課程設(shè)計(jì)的主題是定時(shí)鬧鐘,其基礎(chǔ)部分是一個(gè)數(shù)字鐘。電路系統(tǒng)由秒信號發(fā)生器、“時(shí)、分、秒”計(jì)數(shù)器、顯示器組成。其中秒信號產(chǎn)生器是整個(gè)系統(tǒng)的時(shí)基信號,它直接決定計(jì)時(shí)系統(tǒng)的精度,這里用51單片機(jī)的定時(shí)器來實(shí)現(xiàn)。利用定時(shí)器獲得每一秒的時(shí)刻,然后在程序中,我們就可以給秒進(jìn)行逐秒賦值,滿60秒則進(jìn)位為1分,滿60分則進(jìn)位為1小時(shí),滿24小時(shí)則時(shí)間重置實(shí)現(xiàn)一天24小時(shí)的循環(huán)。譯碼顯示電路將“時(shí)”、“分”、“秒”計(jì)數(shù)器的輸出狀態(tài)送到七段顯示譯碼器譯碼,通過一個(gè)六位八段數(shù)碼管顯示出來。 這里利用51單片機(jī)的相關(guān)知識,來實(shí)現(xiàn)電子鬧鐘的相關(guān)功能。實(shí)驗(yàn)使用了AT89C52、74HC245等芯片,通過單片
5、機(jī)的P0、P3管腳來驅(qū)動數(shù)碼管顯示出相應(yīng)的時(shí)刻。本文將講述AT89C52、74HC245等芯片的基本功能原理,并重點(diǎn)介紹該電子鬧鐘的設(shè)計(jì)。 1.2設(shè)計(jì)要求和任務(wù) 1.2.1設(shè)計(jì)要求: 使用6位七段LED顯示器來顯示現(xiàn)在的時(shí)間;顯示格式為“時(shí)時(shí)分分秒秒”;具有4個(gè)按鍵來做功能設(shè)置,可以設(shè)置現(xiàn)在的時(shí)間及顯示鬧鈴設(shè)置時(shí)間;時(shí)間到則發(fā)出一陣聲響,可通過按鍵復(fù)位;對單片機(jī)系統(tǒng)設(shè)計(jì)的過程進(jìn)行總結(jié),認(rèn)真書寫課程設(shè)計(jì)報(bào)告并按時(shí)上交。 1.2.2設(shè)計(jì)任務(wù): 利用51單片機(jī)結(jié)合七段LED顯示器設(shè)計(jì)一個(gè)簡易的定時(shí)鬧鈴時(shí)鐘,可以放在宿舍或教室使用,由于用七段LED顯示器顯示數(shù)據(jù),在夜晚或黑暗的場合也
6、可以使用??梢栽O(shè)置現(xiàn)在的時(shí)間及顯示鬧鈴設(shè)置時(shí)間,若時(shí)間到則發(fā)出一陣聲響。 1.3論文主要內(nèi)容 論文分別敘述從硬件和軟件上實(shí)現(xiàn)該設(shè)計(jì)的過程。第2章為總體設(shè)計(jì)方案。第3章主要介紹設(shè)計(jì)實(shí)現(xiàn)需要解決的硬件問題。依次介紹所使用的各種硬件的使用方法,并附上仿真電路圖和文字說明。第4章從軟件的角度說明實(shí)現(xiàn)該設(shè)計(jì)需要解決的問題。 第2章 系統(tǒng)總體設(shè)計(jì) 2.1系統(tǒng)設(shè)計(jì)需求 系統(tǒng)要求實(shí)現(xiàn)以下功能: 1.當(dāng)電源接通時(shí),系統(tǒng)能正確顯示當(dāng)前時(shí)間。 2.當(dāng)前時(shí)間與實(shí)時(shí)時(shí)間有誤差時(shí),可以通過鍵盤調(diào)整當(dāng)前時(shí)間。 3.系統(tǒng)允許進(jìn)行鬧鐘設(shè)置,開啟鬧鐘功能時(shí),當(dāng)設(shè)置的鬧鐘時(shí)間與當(dāng)前時(shí)間一致的時(shí)候,系統(tǒng)通過蜂鳴器發(fā)
7、出警報(bào)聲并且可以通過按鍵停止。 2.2總體設(shè)計(jì)方案 功能組成: 本次設(shè)計(jì)中的計(jì)時(shí)功能很容易實(shí)現(xiàn),難點(diǎn)在于時(shí)鐘功能和鬧鐘功能的切換和時(shí)間的設(shè)置。 該電子鬧鐘設(shè)計(jì)對51單片機(jī)定時(shí)器0裝初值,使其初值對應(yīng)50ms,定時(shí)器0的中斷次數(shù)達(dá)到20次就剛好為1s,當(dāng)秒部分計(jì)數(shù)到60時(shí)置零,并向分部分進(jìn)一;當(dāng)分部分計(jì)數(shù)到60時(shí)置零,并向時(shí)部分進(jìn)一,當(dāng)時(shí)部分計(jì)數(shù)到24時(shí)置零,從而滿足時(shí)鐘的正常工作。 在設(shè)計(jì)過程中,我發(fā)現(xiàn)通過4個(gè)按鍵來完成一個(gè)鬧鐘的基礎(chǔ)功能雖然可以實(shí)現(xiàn),但是用戶用起來就會很麻煩,因?yàn)橛械逆I必須有多種功能和不同的觸發(fā)方式,我認(rèn)為可以增加少許按鍵來方便用戶快速了解到我們的鬧鐘是如何進(jìn)行
8、控制的。所以本次設(shè)計(jì)設(shè)置5個(gè)鍵依次對其進(jìn)行“時(shí)間校準(zhǔn)”、“鬧鐘設(shè)置”、“秒分時(shí)切換/終止警報(bào)”、“加1按鈕”、“減1按鈕”?!懊敕謺r(shí)切換/終止報(bào)警”鍵在調(diào)時(shí)狀態(tài)中,起時(shí)分秒切換的作用,在非調(diào)試狀態(tài)下,起鬧鐘終止的作用。 當(dāng)用戶按下“時(shí)間校準(zhǔn)”的按鈕后,程序會關(guān)閉T0定時(shí)器,之后時(shí)鐘停止工作,此時(shí)數(shù)碼管會顯示當(dāng)前靜止的時(shí)間,說明已經(jīng)進(jìn)入時(shí)間校準(zhǔn)的界面了。在完成時(shí)間校準(zhǔn)后,打開T0定時(shí)器,時(shí)鐘會在設(shè)置好的時(shí)間上繼續(xù)工作走秒。 當(dāng)用戶按下“鬧鐘設(shè)置”按鈕后,會將當(dāng)前時(shí)間復(fù)制出來提供給定時(shí)界面,注意此時(shí)我們的時(shí)鐘仍然在繼續(xù)工作,只是數(shù)碼管顯示的是定時(shí)模式的靜止時(shí)間。當(dāng)設(shè)置好后,此時(shí)用戶設(shè)置的時(shí)間只
9、要沒有觸發(fā)過鬧鈴,再次按“鬧鐘設(shè)置”按鈕就能查看并修改,即鬧鐘會保存下用戶最后一次未被觸發(fā)的鬧鐘時(shí)間。 當(dāng)正常工作的時(shí)鐘時(shí)刻到達(dá)了預(yù)設(shè)的鬧鈴時(shí)刻,蜂鳴器發(fā)出警報(bào)聲,屏幕會閃爍并顯示當(dāng)前時(shí)間??紤]到用戶可能已經(jīng)被提醒而不想繼續(xù)被鬧鈴聲干擾,還提供了一個(gè)能夠終止鬧鈴的功能,此功能與“時(shí)分秒切換”功能共用同一按鍵,按下后時(shí)鐘繼續(xù)正常工作,且鬧鐘功能又可以重新設(shè)置。 2.3系統(tǒng)軟件 本設(shè)計(jì)在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è)計(jì) 3.1系統(tǒng)硬件模塊及功能 系統(tǒng)硬件模塊主要分為以下幾個(gè)模塊: 1.主控模塊:控制其他子模塊。 2.時(shí)鐘模塊:為系統(tǒng)提供實(shí)時(shí)時(shí)間。 3.顯示模塊:顯示系統(tǒng)時(shí)間信息。 4.按鍵模塊:用戶通過按鍵進(jìn)行人機(jī)交互,修改實(shí)時(shí)時(shí)間、設(shè)置鬧鐘時(shí)間和終止鬧鐘報(bào)警。 5.鬧鐘模塊:在所設(shè)鬧鐘時(shí)間發(fā)出警報(bào)聲。 3.2主控模塊 3.2.1主芯片AT89C52 (1).A
11、T89C52簡介 AT89C52是一個(gè)低電壓,高性能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個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2 個(gè)讀寫口線,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)整時(shí)的功能控制。功能包括對會聚主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è)計(jì)中,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ù)用口。作為輸出口用時(shí),每位能吸收電流的 方式驅(qū)動8 個(gè)TTL邏輯門電路,對端口P0 寫“1”時(shí),可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。 在Flash編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。 P1 口: P1 是一個(gè)帶內(nèi)部上拉電阻的8 位雙向I/O 口, P1 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對端口寫“1”,通過內(nèi)
15、部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會輸出一個(gè)電流(IIL)。與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),F(xiàn)lash 編程和程序校驗(yàn)期間,P1 接收低8 位地址。 P2 口: P2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對端口P2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號
16、拉低時(shí)會輸出一個(gè)電流(IIL)。在訪問外部程序存儲器或16 位地?cái)?shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR 指令)時(shí),P2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI 指令)時(shí),P2 口輸出P2鎖存器的內(nèi)容。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號。 P3 口: P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對P3 口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。P3 口除了作為一般的I/O 口線外,
17、更重要的用途是它的第二功能P3 口還接收一些用于Flash閃速存儲器編程和程序校驗(yàn)的控制信號。 RST: 復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。 ALE/PROG: 當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ALE 仍以時(shí)鐘振蕩頻率的1/6 輸出固定的脈沖信號,因此它可對外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時(shí)將跳過一個(gè)ALE 脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D
18、0 位置位,可禁止ALE 操作。該位置位后,只有一條MOVX 和MOVC指令才能將ALE 激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE 禁止位無效。 PSEN: 程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C52 由外部程序存儲器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 EA/VPP: 外部訪問允許。欲使CPU 僅訪問外部程序存儲器(地址為0000H—FFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1 被編程,復(fù)位時(shí)內(nèi)部會鎖存EA端狀
19、態(tài)。如EA端為高電平(接Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲器中的指令。Flash存儲器編程時(shí),該引腳加上+12V 的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。 XTAL1: 振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 XTAL2: 振蕩器反相放大器的輸出端。 3.2.2時(shí)鐘電路設(shè)計(jì) 利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2的引腳上外接定時(shí)元件,內(nèi)部振蕩器便能產(chǎn)生自激振蕩。定時(shí)元件可以采用石英晶體和電容組成的并聯(lián)諧振電路,如圖3.2.2所示。 晶振可以在1.2~12MHZ之間任選,甚至可以達(dá)到24MHz,但是頻率越高功耗也就越大。和晶振并聯(lián)的電容
20、C1、C2的大小對振蕩頻率有微小影響,可以起到頻率微調(diào)作用。 時(shí)鐘電路如圖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”時(shí),信號由“A”端口輸入“B”端口輸出;當(dāng)它為低電平“0”時(shí),信號由“B”端口輸入“A”端口輸出。 2-9引腳: “A”端口輸入輸出端,每個(gè)端口與“B”端口對應(yīng)。 11-18引腳
21、:“B”端口輸入輸出端,每個(gè)端口與“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è)計(jì)采用了6位數(shù)碼管顯示電路。在6位LED顯示時(shí),為了簡化電路,降低成本,采用動態(tài)顯示的方式, 6個(gè)LED顯示器共用一個(gè)8位的I/O, 6位LED數(shù)碼管的位選線分別由相應(yīng)的P2. 0~P2. 5控制,而將其相應(yīng)的段選線并聯(lián)在一起,由一個(gè)8位的I/O口控制,即P0口。譯碼
22、顯示電路將“時(shí)”、“分”、“秒”計(jì)數(shù)器的輸出狀態(tài)經(jīng)七段顯示譯碼器譯碼,通過6位LED七段顯示器顯示出來。到達(dá)定時(shí)電路時(shí)根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生脈沖信號,然后去觸發(fā)音頻發(fā)生器實(shí)現(xiàn)鬧鈴。校時(shí)電路時(shí)用來對“時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整的。 LED仿真電路圖如圖3.3: 圖 3.3 3.4 按鍵模塊 按鍵模塊共設(shè)置了五個(gè)按鍵,功能分別如下: (1).時(shí)間校準(zhǔn)鍵“CLOCK”: 自鎖開關(guān),按下后進(jìn)入校準(zhǔn)設(shè)置,再次按下后退出。 (2).鬧鐘設(shè)置鍵“ALARM CLOCK”: 自鎖開關(guān),按下后進(jìn)入鬧鐘設(shè)置,再次按下后退出。 另外可供用戶對已經(jīng)設(shè)置的鬧鐘時(shí)間進(jìn)行查看或修改。
23、(3). 秒分時(shí)切換/終止報(bào)警鍵“SWITCH/STOP”: 按鈕開關(guān),在按下“CLOCK”或“ALARM CLOCK”鍵時(shí),為時(shí)分秒切換功能,默認(rèn)是“秒”,再次按下是“分”,然后是“時(shí)”之后是“秒”,以此類推。在“CLOCK”或“ALARM CLOCK”鍵未按下時(shí),為終止報(bào)警功能。 (4).時(shí)間增加鍵“+”:按鈕開關(guān),可以在進(jìn)入校準(zhǔn)設(shè)置和鬧鐘設(shè)置后,進(jìn)行加一操作。 (5).時(shí)間減少鍵“-”: 按鈕開關(guān),可以在進(jìn)入校準(zhǔn)設(shè)置和鬧鐘設(shè)置后,進(jìn)行減一操作。 按鍵模塊仿真電路圖如圖3.4: 圖 3.4 3.5警報(bào)模塊 鬧鈴指示設(shè)置有聲和光兩種形式。聲音形式的關(guān)鍵元件是蜂鳴器。蜂鳴器有
24、無源和有源兩種,前者需要輸入聲音頻率信號才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,本次設(shè)計(jì)我們使用的是后者。鬧鐘電路是用比較器來比較計(jì)時(shí)系統(tǒng)和定時(shí)系統(tǒng)的輸出狀態(tài),如果計(jì)時(shí)系統(tǒng)和定時(shí)系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個(gè)脈沖信號,再和一個(gè)高頻信號混合,送到放大電路驅(qū)動揚(yáng)聲器發(fā)聲,從而實(shí)現(xiàn)定時(shí)鬧響的功能。 蜂鳴器仿真電路圖如圖3.5: 圖 3.5 第4章 系統(tǒng)軟件設(shè)計(jì) 4.1系統(tǒng)軟件設(shè)計(jì)概述 該部分主要分為實(shí)時(shí)時(shí)鐘模塊、LED顯示模塊、鍵盤中斷模塊、鬧鐘模塊。實(shí)時(shí)時(shí)鐘部分主要包括實(shí)時(shí)時(shí)間的讀寫,時(shí)間的修改。LED顯示模塊主要包括顯示屏的初始化,顯示的命令字。鍵盤中斷模塊包括
25、各鍵的定義和作用,按鍵的消抖,各按鍵跳轉(zhuǎn)的子程序分配。鬧鐘模塊包括鬧鐘時(shí)間的設(shè)置,以及對蜂鳴器啟動和停止條件的設(shè)置和處理。 4.2主程序設(shè)計(jì) 主程序包含三個(gè)部分。一是主函數(shù)部分,負(fù)責(zé)系統(tǒng)的初始化操作;從中斷服務(wù)取得實(shí)時(shí)時(shí)間;判斷鬧鐘時(shí)間是否與實(shí)時(shí)時(shí)間相等并在相等時(shí)發(fā)出警報(bào)聲。第二部分是定時(shí)中斷部分,分兩種情況:負(fù)責(zé)處理從中斷服務(wù)獲得的時(shí)間數(shù)據(jù)并送至LED顯示緩沖顯示,或者顯示鬧鐘設(shè)置界面并顯示鬧鐘時(shí)間的設(shè)置過程。第三部分是外部中斷,主要定義5個(gè)按鍵的作用,分配每一個(gè)按鍵跳轉(zhuǎn)的子程序。第三部分負(fù)責(zé)時(shí)間和日期的修改,鬧鐘時(shí)間的設(shè)置,停止蜂鳴器鳴叫的功能。 4.3單片機(jī)的中斷系統(tǒng) 斷系統(tǒng)在單
26、片機(jī)應(yīng)用系統(tǒng)中起著十分重要的作用,是現(xiàn)代嵌入式控制系統(tǒng)廣泛采用的一種適時(shí)控制技術(shù),能對突發(fā)事件進(jìn)行及時(shí)處理,從而大大提高系統(tǒng)對外部事件的處理能力。正是有了中斷技術(shù),單片機(jī)才得以能夠普及。因此,中斷技術(shù)是單片機(jī)的一項(xiàng)重要技術(shù),掌握中斷技術(shù)能開發(fā)出靈活、高效的單機(jī)片應(yīng)用系統(tǒng)。 4.3.1中斷源 要讓單機(jī)片停止當(dāng)前的程序去執(zhí)行其他程序,需要向它發(fā)出請求信號,CPU接收到中斷請求信號后才能產(chǎn)生中斷。讓CPU產(chǎn)生中斷的信號稱為中斷源(又稱中斷請求源)。單片機(jī)提供5個(gè)中斷源,其中兩個(gè)為外部中斷請求源INT0(P3.2)和INT1(P3.3),兩個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器T0和T1的溢出請求中斷源TF0和TF
27、1,1個(gè)片內(nèi)串行口發(fā)送或接收中斷請求源T1和R1。 4.3.2中斷的優(yōu)先級別 單片機(jī)內(nèi)的CPU工作時(shí),如果一個(gè)中斷源向它發(fā)出中斷請求信號,它就會產(chǎn)生中斷。但是,如果同時(shí)有兩個(gè)中斷源發(fā)出中斷請求信號,CPU就會優(yōu)先接收級別高的中斷請求源,然后再接收優(yōu)先級別低的中斷請求。表4.3.2列出5個(gè)獨(dú)立中斷請求源由其硬件結(jié)構(gòu)決定的自然優(yōu)先級排列順序。 中斷源 自然優(yōu)先級 中斷入口地址 中斷編號 外部中斷INT0 高 ↓ 低 0003H 0 定時(shí)器T0 000BH 1 外部中斷INT1 0013H 2 定時(shí)器T1 001BH 3 串行口通信中斷R1或T1 0
28、023H 4 表4.3.2 單片機(jī)中斷源的自然優(yōu)先級、入口地址及中斷編號 對應(yīng)于單片機(jī)的5個(gè)獨(dú)立中斷源,應(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軟件中繪制好定時(shí)鬧鐘仿真模擬電路圖。 (2).將Keil編譯器生成的
29、.hex文件載入AT89C52芯片。 圖5.3.1(2)載入.hex文件 (3).在Proteus軟件中,點(diǎn)擊左下角的“play”按鈕啟動定時(shí)鬧鐘。如下圖,“play”按鈕在第一個(gè)。 圖5.3.1(3)仿真電路運(yùn)行控制按鈕 5.3.2測試內(nèi)容 詳細(xì)測試內(nèi)容如下: 定時(shí)鬧鐘是否能正確顯示時(shí)間;是否能正確顯示鬧鐘設(shè)置時(shí)的界面;是否能正確顯示時(shí)間調(diào)整時(shí)的界面。 (1).顯示時(shí)間 點(diǎn)擊“play”鍵之后,時(shí)鐘系統(tǒng)開始走時(shí),如圖5.5.2(1): 圖5.3.2(1) 經(jīng)測試,顯示結(jié)果達(dá)到預(yù)期要求。 (2).時(shí)間調(diào)整測試 如果用戶發(fā)現(xiàn)時(shí)間運(yùn)行不對,要對時(shí)間進(jìn)行修改和調(diào)整
30、,就需要進(jìn)入時(shí)間修改的界面。預(yù)期可以對時(shí)、分、秒進(jìn)行調(diào)整和修改。系統(tǒng)能正確顯示時(shí)間修改的界面。用戶可以完成時(shí)間的修改。 經(jīng)測試,該部分運(yùn)行正常。 (3).鬧鐘設(shè)置測試 在系統(tǒng)能正確顯示時(shí)間之后,用戶若想設(shè)置鬧鐘,可以通過按鍵完成鬧鐘時(shí)間的設(shè)置。設(shè)置時(shí)間到后蜂鳴器報(bào)警,按下“STOP”鍵后警報(bào)停止 經(jīng)測試,該部分能正常運(yùn)行。 結(jié)論:通過以上對仿真項(xiàng)目的全面測試,可知仿真部分運(yùn)行正常。 5.4測試結(jié)果 通過以上測試,證明本設(shè)計(jì)基本實(shí)現(xiàn)系統(tǒng)所有要求,即能夠正確顯示時(shí)間信息,能夠?qū)Ξ?dāng)前時(shí)間進(jìn)行調(diào)整和修改,并且能夠設(shè)定鬧鐘并在所設(shè)置的鬧鐘時(shí)間發(fā)出警報(bào)聲,通過按鍵可以停止警報(bào)。 結(jié)論
31、 該系統(tǒng)采用單機(jī)片AT89C52作為核心芯片,結(jié)合一些其他外圍設(shè)備,一起構(gòu)成了一款能夠顯示時(shí)間并且能夠?qū)ζ溥M(jìn)行修改和設(shè)置定時(shí)鬧鐘的定時(shí)鬧鐘系統(tǒng)。 該系統(tǒng)采用數(shù)碼管顯示屏,能夠清晰顯示時(shí)間信息,并且能夠友好的引導(dǎo)用戶進(jìn)行時(shí)間的修改以及鬧鐘的設(shè)置??梢酝ㄟ^各個(gè)寄存地址對時(shí)間進(jìn)行讀寫操作,即讀取時(shí)間和修改時(shí)間。利用蜂鳴器為用戶提供鬧鈴功能,能夠在設(shè)定時(shí)間發(fā)出警報(bào)聲提醒用戶。采用按鍵較少的獨(dú)立式鍵盤供人機(jī)交互,操作簡單方便??梢酝ㄟ^鍵盤修改時(shí)間,也可以設(shè)置鬧鈴時(shí)間和修改鬧鈴時(shí)間,另外,在鬧鈴時(shí)間與系統(tǒng)時(shí)間一致,蜂鳴器鳴叫時(shí),可以通過按鍵中斷警報(bào)聲??傊?,該定時(shí)鬧鐘系統(tǒng)完成了市場上一般鬧鐘應(yīng)有的功能
32、,能夠顯示時(shí)間和設(shè)置鬧鐘,可以給用戶提供時(shí)間信息。 該設(shè)計(jì)也存在一些缺點(diǎn),就是實(shí)際生產(chǎn)時(shí)投入資金會比市場上一般鬧鐘價(jià)格昂貴,如果進(jìn)行包裝,價(jià)格還會上升一些。另外,外觀不如市場銷售的鬧鐘美觀。 致謝 衷心感謝雷俊紅老師的指導(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é)報(bào)(自然科學(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è)計(jì)指導(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險(xiǎn)源安全管理制度
- 安全培訓(xùn)資料:典型建筑火災(zāi)的防治基本原則與救援技術(shù)
- 企業(yè)雙重預(yù)防體系應(yīng)知應(yīng)會知識問答
- 8 各種煤礦安全考試試題
- 9 危險(xiǎn)化學(xué)品經(jīng)營單位安全生產(chǎn)管理人員模擬考試題庫試卷附答案
- 加壓過濾機(jī)司機(jī)技術(shù)操作規(guī)程
- 樹脂砂混砂工藝知識總結(jié)
- XXXXX現(xiàn)場安全應(yīng)急處置預(yù)案
- 某公司消防安全檢查制度總結(jié)
- 1 煤礦安全檢查工(中級)職業(yè)技能理論知識考核試題含答案
- 4.燃?xì)獍踩a(chǎn)企業(yè)主要負(fù)責(zé)人模擬考試題庫試卷含答案
- 工段(班組)級安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫試卷含答案-4
- 建筑起重司索信號工安全操作要點(diǎn)
- 實(shí)驗(yàn)室計(jì)量常見的30個(gè)問問答題含解析