定時(shí)鬧鐘設(shè)計(jì)課程設(shè)計(jì)報(bào)告
《定時(shí)鬧鐘設(shè)計(jì)課程設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《定時(shí)鬧鐘設(shè)計(jì)課程設(shè)計(jì)報(bào)告(34頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 真誠(chéng)為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請(qǐng)指正。 定時(shí)鬧鐘設(shè)計(jì) 摘要: 本設(shè)計(jì)目的是利用單片機(jī)設(shè)計(jì)制作一個(gè)簡(jiǎn)易的定時(shí)鬧鈴時(shí)鐘,可以放在宿舍或教室使用,在夜晚或黑暗的場(chǎng)合也可以使用??梢栽O(shè)置現(xiàn)在的時(shí)間以及鬧鈴的時(shí)間并且顯示出來(lái),若時(shí)間到則發(fā)出一陣聲響。 本次設(shè)計(jì)的定時(shí)鬧鐘在硬件方面就采用了AT89C52芯片,用6位LED數(shù)碼管進(jìn)行顯示。LED用P0口進(jìn)行驅(qū)動(dòng),采用的是動(dòng)態(tài)掃描顯示,能夠比較準(zhǔn)確顯示時(shí)時(shí)—分分—秒秒。通過(guò)五個(gè)功能按鍵可以實(shí)現(xiàn)對(duì)時(shí)間的修改、定時(shí)和鬧鈴終止,鬧鐘設(shè)置的時(shí)間到時(shí)蜂鳴器可以發(fā)出聲響。在軟件方面用C51編程。整個(gè)定時(shí)鬧鐘系統(tǒng)能完成時(shí)間的顯示,調(diào)時(shí)和設(shè)置鬧鐘
2、、停止響鈴等功能,并經(jīng)過(guò)系統(tǒng)仿真后得到了正確的結(jié)果。 關(guān)鍵詞:定時(shí)鬧鐘;蜂鳴器;AT89C52;74HC245; 30 / 34 目錄 第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芯
3、片 7 3.3 LED顯示模塊 9 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)先級(jí)別 12 4.4主程序 12 第5章 系統(tǒng)測(cè)試 13 5.1測(cè)試內(nèi)容 13 5.2測(cè)試環(huán)境 13 5.3測(cè)試步驟 13 5.3.1測(cè)試環(huán)境的構(gòu)建 13 5.3.2測(cè)試內(nèi)容 14 5.4測(cè)試結(jié)果 14 結(jié)論 15 致謝 16 參考文獻(xiàn) 17 附錄 18 第1章 緒論 1.1設(shè)計(jì)目的 本次課程設(shè)計(jì)的主題是定時(shí)鬧鐘,其
4、基礎(chǔ)部分是一個(gè)數(shù)字鐘。電路系統(tǒng)由秒信號(hào)發(fā)生器、“時(shí)、分、秒”計(jì)數(shù)器、顯示器組成。其中秒信號(hào)產(chǎn)生器是整個(gè)系統(tǒng)的時(shí)基信號(hào),它直接決定計(jì)時(shí)系統(tǒng)的精度,這里用51單片機(jī)的定時(shí)器來(lái)實(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)送到七段顯示譯碼器譯碼,通過(guò)一個(gè)六位八段數(shù)碼管顯示出來(lái)。 這里利用51單片機(jī)的相關(guān)知識(shí),來(lái)實(shí)現(xiàn)電子鬧鐘的相關(guān)功能。實(shí)驗(yàn)使用了AT89C52、74HC245等芯片,通過(guò)單片機(jī)的P0、P3管腳來(lái)驅(qū)動(dòng)數(shù)碼管顯示出相應(yīng)
5、的時(shí)刻。本文將講述AT89C52、74HC245等芯片的基本功能原理,并重點(diǎn)介紹該電子鬧鐘的設(shè)計(jì)。 1.2設(shè)計(jì)要求和任務(wù) 1.2.1設(shè)計(jì)要求: 使用6位七段LED顯示器來(lái)顯示現(xiàn)在的時(shí)間;顯示格式為“時(shí)時(shí)分分秒秒”;具有4個(gè)按鍵來(lái)做功能設(shè)置,可以設(shè)置現(xiàn)在的時(shí)間及顯示鬧鈴設(shè)置時(shí)間;時(shí)間到則發(fā)出一陣聲響,可通過(guò)按鍵復(fù)位;對(duì)單片機(jī)系統(tǒng)設(shè)計(jì)的過(guò)程進(jìn)行總結(jié),認(rèn)真書寫課程設(shè)計(jì)報(bào)告并按時(shí)上交。 1.2.2設(shè)計(jì)任務(wù): 利用51單片機(jī)結(jié)合七段LED顯示器設(shè)計(jì)一個(gè)簡(jiǎn)易的定時(shí)鬧鈴時(shí)鐘,可以放在宿舍或教室使用,由于用七段LED顯示器顯示數(shù)據(jù),在夜晚或黑暗的場(chǎng)合也可以使用??梢栽O(shè)置現(xiàn)在的時(shí)間及顯示鬧鈴設(shè)
6、置時(shí)間,若時(shí)間到則發(fā)出一陣聲響。 1.3論文主要內(nèi)容 論文分別敘述從硬件和軟件上實(shí)現(xiàn)該設(shè)計(jì)的過(guò)程。第2章為總體設(shè)計(jì)方案。第3章主要介紹設(shè)計(jì)實(shí)現(xiàn)需要解決的硬件問(wèn)題。依次介紹所使用的各種硬件的使用方法,并附上仿真電路圖和文字說(shuō)明。第4章從軟件的角度說(shuō)明實(shí)現(xiàn)該設(shè)計(jì)需要解決的問(wèn)題。 第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í),可以通過(guò)鍵盤調(diào)整當(dāng)前時(shí)間。 3.系統(tǒng)允許進(jìn)行鬧鐘設(shè)置,開啟鬧鐘功能時(shí),當(dāng)設(shè)置的鬧鐘時(shí)間與當(dāng)前時(shí)間一致的時(shí)候,系統(tǒng)通過(guò)蜂鳴器發(fā)出警報(bào)聲并且可以通過(guò)按鍵停止。 2.2
7、總體設(shè)計(jì)方案 功能組成: 本次設(shè)計(jì)中的計(jì)時(shí)功能很容易實(shí)現(xiàn),難點(diǎn)在于時(shí)鐘功能和鬧鐘功能的切換和時(shí)間的設(shè)置。 該電子鬧鐘設(shè)計(jì)對(duì)51單片機(jī)定時(shí)器0裝初值,使其初值對(duì)應(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ì)過(guò)程中,我發(fā)現(xiàn)通過(guò)4個(gè)按鍵來(lái)完成一個(gè)鬧鐘的基礎(chǔ)功能雖然可以實(shí)現(xiàn),但是用戶用起來(lái)就會(huì)很麻煩,因?yàn)橛械逆I必須有多種功能和不同的觸發(fā)方式,我認(rèn)為可以增加少許按鍵來(lái)方便用戶快速了解到我們的鬧鐘是如何進(jìn)行控制的。所以本次設(shè)計(jì)設(shè)置5個(gè)鍵依次對(duì)其進(jìn)
8、行“時(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)”的按鈕后,程序會(huì)關(guān)閉T0定時(shí)器,之后時(shí)鐘停止工作,此時(shí)數(shù)碼管會(huì)顯示當(dāng)前靜止的時(shí)間,說(shuō)明已經(jīng)進(jìn)入時(shí)間校準(zhǔn)的界面了。在完成時(shí)間校準(zhǔn)后,打開T0定時(shí)器,時(shí)鐘會(huì)在設(shè)置好的時(shí)間上繼續(xù)工作走秒。 當(dāng)用戶按下“鬧鐘設(shè)置”按鈕后,會(huì)將當(dāng)前時(shí)間復(fù)制出來(lái)提供給定時(shí)界面,注意此時(shí)我們的時(shí)鐘仍然在繼續(xù)工作,只是數(shù)碼管顯示的是定時(shí)模式的靜止時(shí)間。當(dāng)設(shè)置好后,此時(shí)用戶設(shè)置的時(shí)間只要沒(méi)有觸發(fā)過(guò)鬧鈴,再次按“鬧鐘設(shè)置”按鈕
9、就能查看并修改,即鬧鐘會(huì)保存下用戶最后一次未被觸發(fā)的鬧鐘時(shí)間。 當(dāng)正常工作的時(shí)鐘時(shí)刻到達(dá)了預(yù)設(shè)的鬧鈴時(shí)刻,蜂鳴器發(fā)出警報(bào)聲,屏幕會(huì)閃爍并顯示當(dāng)前時(shí)間??紤]到用戶可能已經(jīng)被提醒而不想繼續(xù)被鬧鈴聲干擾,還提供了一個(gè)能夠終止鬧鈴的功能,此功能與“時(shí)分秒切換”功能共用同一按鍵,按下后時(shí)鐘繼續(xù)正常工作,且鬧鐘功能又可以重新設(shè)置。 2.3系統(tǒng)軟件 本設(shè)計(jì)在Keil編程環(huán)境下,使用C語(yǔ)言進(jìn)行編程的編輯。編輯成功后,通過(guò)仿真軟件Proteus進(jìn)行仿真測(cè)試。 2.4系統(tǒng)硬件 LED顯示屏1 主控芯片:AT89C52 鬧鐘提示:蜂鳴器 人機(jī)交互:按鍵5 晶振:12KHz1 排阻:RESPACK
10、-81 電容:10nf2 總線收發(fā)器:74HC2452 第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.按鍵模塊:用戶通過(guò)按鍵進(jìn)行人機(jī)交互,修改實(shí)時(shí)時(shí)間、設(shè)置鬧鐘時(shí)間和終止鬧鐘報(bào)警。 5.鬧鐘模塊:在所設(shè)鬧鐘時(shí)間發(fā)出警報(bào)聲。 3.2主控模塊 3.2.1主芯片AT89C52 (1).AT89C52簡(jiǎn)介 AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Fla
11、sh只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,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)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash存儲(chǔ)器可有效地降低開發(fā)成本。AT89C52有PDIP、PQ
12、FP/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 相同,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。功能包括對(duì)會(huì)聚主IC 內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成
13、的復(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 腳定義為握手信號(hào)功能端口,連接主板CPU 的相應(yīng)功能端,用于當(dāng)前制式的檢測(cè)及會(huì)聚調(diào)整狀態(tài)進(jìn)入的控制功能。 P0 口: P0 口是一組8 位漏極開路型雙向I/O 口, 也即地址/數(shù)據(jù)總線復(fù)用口。作為輸
14、出口用時(shí),每位能吸收電流的 方式驅(qū)動(dòng)8 個(gè)TTL邏輯門電路,對(duì)端口P0 寫“1”時(shí),可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。 在Flash編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。 P1 口: P1 是一個(gè)帶內(nèi)部上拉電阻的8 位雙向I/O 口, P1 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對(duì)端口寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)
15、電流(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 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對(duì)端口P2 寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪問(wèn)外部程序存儲(chǔ)器或16 位地?cái)?shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR 指令)時(shí),P
16、2 口送出高8 位地址數(shù)據(jù)。在訪問(wèn)8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX@RI 指令)時(shí),P2 口輸出P2鎖存器的內(nèi)容。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。 P3 口: P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對(duì)P3 口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能P3 口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。 RST: 復(fù)位輸入
17、。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。 ALE/PROG: 當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ALE 仍以時(shí)鐘振蕩頻率的1/6 輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE 脈沖。對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條MOVX 和MOVC指令才能將ALE 激活。此外,該引腳會(huì)被微弱拉
18、高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE 禁止位無(wú)效。 PSEN: 程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52 由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。 EA/VPP: 外部訪問(wèn)允許。欲使CPU 僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H—FFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1 被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V
19、的編程允許電源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)的電容C1、C2的大小對(duì)振蕩頻率有微小影響,可以起到頻率微調(diào)作用。 時(shí)鐘電路如圖3.2.2: 圖3.2.2 3.2
20、.3 74HC245芯片 電路中用74HC245芯片充當(dāng)總線收發(fā)器,作用是放大信號(hào),它具有典型的CMOS型三態(tài)緩沖門電路。由于單片機(jī)或CPU的數(shù)據(jù)/地址/控制總線端口都有一定的負(fù)載能力,如果負(fù)載超過(guò)其負(fù)載能力,一般應(yīng)加驅(qū)動(dòng)器。 引腳定義: 1引腳DIR:未輸入輸出端口轉(zhuǎn)換用,當(dāng)它為高電平“1”時(shí),信號(hào)由“A”端口輸入“B”端口輸出;當(dāng)它為低電平“0”時(shí),信號(hào)由“B”端口輸入“A”端口輸出。 2-9引腳: “A”端口輸入輸出端,每個(gè)端口與“B”端口對(duì)應(yīng)。 11-18引腳:“B”端口輸入輸出端,每個(gè)端口與“A”端口對(duì)應(yīng)。 10引腳:GUD,電源地。 20引腳:VCC,電源正極。 7
21、4HC245引腳圖如圖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í),為了簡(jiǎn)化電路,降低成本,采用動(dòng)態(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口。譯碼顯示電路將“時(shí)”、“分”、“秒”計(jì)數(shù)器的輸出狀態(tài)經(jīng)七段顯示譯碼器譯碼,通過(guò)6位LED七段顯示器顯示出來(lái)。到達(dá)定時(shí)電路時(shí)根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生脈沖信號(hào),然后去觸發(fā)音頻發(fā)
22、生器實(shí)現(xiàn)鬧鈴。校時(shí)電路時(shí)用來(lái)對(duì)“時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對(duì)調(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è)置,再次按下后退出。 另外可供用戶對(duì)已經(jīng)設(shè)置的鬧鐘時(shí)間進(jìn)行查看或修改。 (3). 秒分時(shí)切換/終止報(bào)警鍵“SWITCH/STOP”: 按鈕開關(guān),在按下“CLOCK”或“ALARM CLOCK”鍵時(shí),為時(shí)分秒切換功能,默認(rèn)是“秒”,再次按下是“
23、分”,然后是“時(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)鍵元件是蜂鳴器。蜂鳴器有無(wú)源和有源兩種,前者需要輸入聲音頻率信號(hào)才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,本次設(shè)計(jì)我們使用的是后者。鬧鐘電路是用比較器來(lái)比較計(jì)時(shí)系統(tǒng)和定時(shí)系統(tǒng)的輸出狀態(tài),
24、如果計(jì)時(shí)系統(tǒng)和定時(shí)系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個(gè)脈沖信號(hào),再和一個(gè)高頻信號(hào)混合,送到放大電路驅(qū)動(dòng)揚(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顯示模塊主要包括顯示屏的初始化,顯示的命令字。鍵盤中斷模塊包括各鍵的定義和作用,按鍵的消抖,各按鍵跳轉(zhuǎn)的子程序分配。鬧鐘模塊包括鬧鐘時(shí)間的設(shè)置,以及對(duì)蜂鳴器啟動(dòng)和停止條件的設(shè)置和處理。 4.2主程序設(shè)計(jì) 主程序包含三個(gè)部分。一是主函數(shù)部分
25、,負(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è)置過(guò)程。第三部分是外部中斷,主要定義5個(gè)按鍵的作用,分配每一個(gè)按鍵跳轉(zhuǎn)的子程序。第三部分負(fù)責(zé)時(shí)間和日期的修改,鬧鐘時(shí)間的設(shè)置,停止蜂鳴器鳴叫的功能。 4.3單片機(jī)的中斷系統(tǒng) 斷系統(tǒng)在單片機(jī)應(yīng)用系統(tǒng)中起著十分重要的作用,是現(xiàn)代嵌入式控制系統(tǒng)廣泛采用的一種適時(shí)控制技術(shù),能對(duì)突發(fā)事件進(jìn)行及時(shí)處理,從而大大提高系統(tǒng)對(duì)外部事件的處理能力。正是有了中斷技術(shù),單片機(jī)才得以能夠
26、普及。因此,中斷技術(shù)是單片機(jī)的一項(xiàng)重要技術(shù),掌握中斷技術(shù)能開發(fā)出靈活、高效的單機(jī)片應(yīng)用系統(tǒng)。 4.3.1中斷源 要讓單機(jī)片停止當(dāng)前的程序去執(zhí)行其他程序,需要向它發(fā)出請(qǐng)求信號(hào),CPU接收到中斷請(qǐng)求信號(hào)后才能產(chǎn)生中斷。讓CPU產(chǎn)生中斷的信號(hào)稱為中斷源(又稱中斷請(qǐng)求源)。單片機(jī)提供5個(gè)中斷源,其中兩個(gè)為外部中斷請(qǐng)求源INT0(P3.2)和INT1(P3.3),兩個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器T0和T1的溢出請(qǐng)求中斷源TF0和TF1,1個(gè)片內(nèi)串行口發(fā)送或接收中斷請(qǐng)求源T1和R1。 4.3.2中斷的優(yōu)先級(jí)別 單片機(jī)內(nèi)的CPU工作時(shí),如果一個(gè)中斷源向它發(fā)出中斷請(qǐng)求信號(hào),它就會(huì)產(chǎn)生中斷。但是,如果同時(shí)有兩個(gè)中
27、斷源發(fā)出中斷請(qǐng)求信號(hào),CPU就會(huì)優(yōu)先接收級(jí)別高的中斷請(qǐng)求源,然后再接收優(yōu)先級(jí)別低的中斷請(qǐng)求。表4.3.2列出5個(gè)獨(dú)立中斷請(qǐng)求源由其硬件結(jié)構(gòu)決定的自然優(yōu)先級(jí)排列順序。 中斷源 自然優(yōu)先級(jí) 中斷入口地址 中斷編號(hào) 外部中斷INT0 高 ↓ 低 0003H 0 定時(shí)器T0 000BH 1 外部中斷INT1 0013H 2 定時(shí)器T1 001BH 3 串行口通信中斷R1或T1 0023H 4 表4.3.2 單片機(jī)中斷源的自然優(yōu)先級(jí)、入口地址及中斷編號(hào) 對(duì)應(yīng)于單片機(jī)的5個(gè)獨(dú)立中斷源,應(yīng)有相應(yīng)的中斷服務(wù)程序。這些中斷服務(wù)程序有專門規(guī)定的存放位置,即表4.3.
28、2的中斷入口地址。當(dāng)有了中斷請(qǐng)求后,CPU可以根據(jù)入口地址迅速找到中斷服務(wù)程序并開始執(zhí)行,大大提高執(zhí)行效率。 4.4主程序 主程序見附錄。 第5章 系統(tǒng)測(cè)試 5.1測(cè)試內(nèi)容 1.顯示部分 2.按鍵部分 5.2測(cè)試環(huán)境 Proteus仿真模擬軟件。 5.3測(cè)試步驟 5.3.1測(cè)試環(huán)境的構(gòu)建 (1).在Proteus軟件中繪制好定時(shí)鬧鐘仿真模擬電路圖。 (2).將Keil編譯器生成的.hex文件載入AT89C52芯片。 圖5.3.1(2)載入.hex文件 (3).在Proteus軟件中,點(diǎn)擊左下角的“play”按鈕啟動(dòng)定時(shí)鬧鐘。如下圖,“play”按鈕在第一個(gè)。
29、 圖5.3.1(3)仿真電路運(yùn)行控制按鈕 5.3.2測(cè)試內(nèi)容 詳細(xì)測(cè)試內(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)測(cè)試,顯示結(jié)果達(dá)到預(yù)期要求。 (2).時(shí)間調(diào)整測(cè)試 如果用戶發(fā)現(xiàn)時(shí)間運(yùn)行不對(duì),要對(duì)時(shí)間進(jìn)行修改和調(diào)整,就需要進(jìn)入時(shí)間修改的界面。預(yù)期可以對(duì)時(shí)、分、秒進(jìn)行調(diào)整和修改。系統(tǒng)能正確顯示時(shí)間修改的界面。用戶可以完成時(shí)間的修改。 經(jīng)測(cè)試,該部分運(yùn)行正常。 (3).鬧鐘設(shè)置測(cè)試 在系統(tǒng)能正確顯示時(shí)間
30、之后,用戶若想設(shè)置鬧鐘,可以通過(guò)按鍵完成鬧鐘時(shí)間的設(shè)置。設(shè)置時(shí)間到后蜂鳴器報(bào)警,按下“STOP”鍵后警報(bào)停止 經(jīng)測(cè)試,該部分能正常運(yùn)行。 結(jié)論:通過(guò)以上對(duì)仿真項(xiàng)目的全面測(cè)試,可知仿真部分運(yùn)行正常。 5.4測(cè)試結(jié)果 通過(guò)以上測(cè)試,證明本設(shè)計(jì)基本實(shí)現(xiàn)系統(tǒng)所有要求,即能夠正確顯示時(shí)間信息,能夠?qū)Ξ?dāng)前時(shí)間進(jìn)行調(diào)整和修改,并且能夠設(shè)定鬧鐘并在所設(shè)置的鬧鐘時(shí)間發(fā)出警報(bào)聲,通過(guò)按鍵可以停止警報(bào)。 結(jié)論 該系統(tǒng)采用單機(jī)片AT89C52作為核心芯片,結(jié)合一些其他外圍設(shè)備,一起構(gòu)成了一款能夠顯示時(shí)間并且能夠?qū)ζ溥M(jìn)行修改和設(shè)置定時(shí)鬧鐘的定時(shí)鬧鐘系統(tǒng)。 該系統(tǒng)采用數(shù)碼管顯示屏,能夠清晰顯示時(shí)間信息,并
31、且能夠友好的引導(dǎo)用戶進(jìn)行時(shí)間的修改以及鬧鐘的設(shè)置??梢酝ㄟ^(guò)各個(gè)寄存地址對(duì)時(shí)間進(jìn)行讀寫操作,即讀取時(shí)間和修改時(shí)間。利用蜂鳴器為用戶提供鬧鈴功能,能夠在設(shè)定時(shí)間發(fā)出警報(bào)聲提醒用戶。采用按鍵較少的獨(dú)立式鍵盤供人機(jī)交互,操作簡(jiǎn)單方便??梢酝ㄟ^(guò)鍵盤修改時(shí)間,也可以設(shè)置鬧鈴時(shí)間和修改鬧鈴時(shí)間,另外,在鬧鈴時(shí)間與系統(tǒng)時(shí)間一致,蜂鳴器鳴叫時(shí),可以通過(guò)按鍵中斷警報(bào)聲??傊?,該定時(shí)鬧鐘系統(tǒng)完成了市場(chǎng)上一般鬧鐘應(yīng)有的功能,能夠顯示時(shí)間和設(shè)置鬧鐘,可以給用戶提供時(shí)間信息。 該設(shè)計(jì)也存在一些缺點(diǎn),就是實(shí)際生產(chǎn)時(shí)投入資金會(huì)比市場(chǎng)上一般鬧鐘價(jià)格昂貴,如果進(jìn)行包裝,價(jià)格還會(huì)上升一些。另外,外觀不如市場(chǎng)銷售的鬧鐘美觀。 致
32、謝 衷心感謝雷俊紅老師的指導(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] 王東鋒,王會(huì)良,董冠強(qiáng).單機(jī)片C語(yǔ)言應(yīng)用100例[M].北京:電子工業(yè)出版社,2009.3:218-219,148-152. [4] 樓然苗,李光飛.單片機(jī)課程設(shè)計(jì)指導(dǎo)(第2版)[M].北京:北京航空航天大學(xué)出版社,2012.1:285-289. 附錄: 系統(tǒng)電路圖如下: 系統(tǒng)電路圖 系
33、統(tǒng)程序如下:
#include
34、; 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}; void delayMs(unsigned int k){ unsigned int i,j; for(i = k;i>0;i--) for(j = 110;j>0;j--); } void
35、timeChange(){ sec++; if(sec == 60){ sec = 0; min++; if(min == 60){ min = 0; hour++; if(hour == 24) hour = 0; } } } void showTime(unsigned char zs,unsigned char zm, unsigned char zh){ pin1 = 1; P0 = numbers[zh/10]; delayMs(5); pin1 = 0;
36、pin2 = 1; P0 = numbers[zh%10]&0x7f; delayMs(5); pin2 = 0; pin3 = 1; P0 = numbers[zm/10]; delayMs(5); pin3 = 0; pin4 = 1; P0 = numbers[zm%10]&0x7f; delayMs(5); pin4 = 0; pin5 = 1; P0 = numbers[zs/10]; delayMs(5); pin5 = 0;
37、 pin6 = 1; P0 = numbers[zs%10]; delayMs(5); pin6 = 0; } void setTime(){ unsigned char st,mt,ht; if(btnTime == 0){ delayMs(10); if(btnTime == 0){ st = sec,mt = min,ht = hour; TR0 = 0; while(btnTime == 0){ showTime(st,mt,ht);
38、 if(btnSwitch == 0){ delayMs(10); if(btnSwitch == 0){ while(!btnSwitch); count++; if(count == 3) count = 0; } } if(btnUp == 0){ delayMs(10); if(btnUp == 0){ while(!btnUp); switch(count){ case 0:st++;if(st == 60)st =
39、 0;break; case 1:mt++;if(mt == 60)mt = 0;break; case 2:ht++;if(ht == 24)ht = 0;break; default:; } } } if(btnDown == 0){ delayMs(10); if(btnDown == 0){ while(!btnDown); swi
40、tch(count){ case 0: if(st>0) st--; else st = 0; break; case 1: if(mt>0) mt--; else mt = 0; break; case 2: if(ht>0) ht--; else
41、 ht = 0; break; default : ; } } } } TR0 = 1; sec = st,min = mt,hour = ht;
42、 } } showTime(sec,min,hour); } void setClock(){ if(btnClock == 0){ delayMs(50); if(btnClock == 0){ if(flag == 0){ s = sec; m = min; h = hour; } flag = 1;
43、 while(btnClock == 0){ showTime(s,m,h); if(btnSwitch == 0){ delayMs(10); if(btnSwitch == 0){ while(!btnSwitch); count++; if(count == 3) count = 0; } } if(btnUp == 0){ delayMs(10); if(btnUp == 0){
44、while(!btnUp); switch(count){ case 0: s++; if(s == 60) s = 0; break; case 1: m++; if(m == 60) m = 0; break; case 2: h++; if(h == 24) h = 0; break;
45、 default:; } } } if(btnDown == 0){ delayMs(10); if(btnDown == 0){ while(!btnDown); switch(count){ case 0: if(s>0) s--; else s = 0;
46、 break; case 1: if(m>0) m--; else m = 0; break; case 2: if(h>0) h--; else h = 0; break; default:; } } } } } } } void buz
47、zer(){ if((hour == h)&&(min == m)&&(sec == s)){ int i; for(i = 1;i<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,
48、min,hour); } flag = 0; } } void init(){ TMOD = 0x01; 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: 本站所有資源如無(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. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 優(yōu)化工作流程提高工作效率
- 文化創(chuàng)新優(yōu)秀課件
- 急性白血病免疫分型ppt課件
- 圓錐曲線性質(zhì)的探討與幾何證明的簡(jiǎn)單應(yīng)用
- 材料作文寫作技巧
- 機(jī)械制圖螺紋畫法
- 低價(jià)中標(biāo)合理性的確定和約束機(jī)制的研究報(bào)告
- 綜合性學(xué)習(xí)的復(fù)習(xí)
- 函數(shù)的極值與最值
- 醫(yī)療衛(wèi)生類通用PPT模板
- 中國(guó)最美的100個(gè)地方
- 住院醫(yī)師規(guī)范化培訓(xùn)發(fā)展歷程
- 六年級(jí)數(shù)學(xué)上冊(cè)百分?jǐn)?shù)解決問(wèn)題
- 某工程有限公司項(xiàng)目入廠安全培訓(xùn)教材
- 液態(tài)光學(xué)膠應(yīng)用