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