【正文】
畢業(yè)設計(論文)題目:基于單片機的數字鐘的設計學院:自動化學院 專業(yè):自動化起止時間:2010年 3月 21日至2010年 6月 25日摘要這次畢業(yè)設計通過對單片機的學習、應用,以AT89S51芯片為核心,輔以必要的電路,設計了一個簡易的電子時鐘,它主要通過DP51PROC單片機綜合仿真實驗儀實現,通過數碼管能夠準確顯示時間,調整時間,它的計時周期為24小時,從而到達學習、設計、開發(fā)軟、硬件的能力。主要實現功能為顯示時間,時間校準調時(采用手動按鍵調時),鬧鈴功能(設置定時時間,到點后鬧鈴發(fā)出響聲)。通過鍵盤可以進行校時、定時。鬧鈴功能使用I/O 口定時翻轉電平驅動的無源蜂鳴器。本文主要介紹了工作原理及調試過程。關鍵詞:單片機 電子時鐘 單片機綜合仿真實驗儀AbstractThe MCU through graduation learning applications to AT89S51 chip as the core, supplemented by the necessary circuitry to design a simple electronic clock, it is mainly through the DP51PROC Single Chip Experimental Device to achieve, through the digital control can be accurately show time, adjustment time, it39。s time period is 24 hours, so get to learn, design, development hardware and software capabilities. Main achieved function to show time, the time when calibration transfer (using the manual button adjustment time), alarm clock (set the regular time, the point to issue after the alarm sound). When the keyboard can be school, regularly. Alarm clock using the I / O port level drivers regularly turn passive buzzer. This paper describes the working principle and the debugging process.Keywords:MCU electronics clock DP51PROC目 錄摘 要 2Abstract 3第一章 概述 5第二章 方案論證與比較 6 6 6…………………………………………………………………………………………6 ......................................................................................................................................7第三章 系統(tǒng)設計 7 7 7 7 8 8 8 9 9 10 ………………………………………………………………………………………………………….11第四章 原理 12 ……………………………………………………………………………………………………12…………………………………………………………………………………………………………………………….…13 …………………………………………………………………………………………14 ……………………………………………………………………………………………………………………14第五章 軟件設計 15 15 16………………………………………………………………………………………………………………………………..16第六章 調試過程………………………………………………………………………………………………………………………….23 ………………………………………………………………………………………………………..23 ……………………………………………………………………………………………………………………………….25 uVision3編寫程序…………………………………………………………………………………………………26 ………………………………………………………………………………………….......……………………………..32第七章 總結 20 48結束語 49參考文獻 50第一章 概述本論文主要介紹用單片機內部的定時/計數器來實現電子時鐘的方法,本設計由單片機AT89S51芯片和LED數碼管為核心,輔以蜂鳴器電路,構成了一個單片機電子時鐘。由于單片機芯片上引腳數目有限,為了解決實際引腳數和需要的信號線的矛盾,采用了引腳功能復用的方法,引腳處于何種功能,可由指令來設置或由機器狀態(tài)來區(qū)分。顯示時間功能:顯示時,分,秒。具有校時功能: 能對時、分、秒按實際時間進行手動校正。鬧鈴功能:到時播放音樂。我使用的是DP51PROC單片機綜合仿真實驗儀。我將先介紹一下顯示電路、鬧鈴電路的內部工作原理,及本次設計中51單片機是如何實現任務要求的,主要有設計思路,設計框圖,設計過程。最后我將介紹使用DP51PROC單片機綜合仿真實驗儀及電腦實現任務要求的過程及成果。 主要內容包括方案論證與比較、系統(tǒng)設計、設計原理、軟件設計、調試過程。第二章 方案論證與比較 數字時鐘是本設計的最主要的部分。根據需要,可利用兩種方案實現。方案一:本方案采用Dallas公司的專用時鐘芯片DS12887A。該芯片內部采用石英晶體振蕩器,其芯片精度不大于10ms/年,且具有完備的時鐘鬧鐘功能,因此,可直接對其以用于顯示或設置,使得軟件編程相對簡單。為保證時鐘在電網電壓不足或突然掉電等突發(fā)情況下仍能正常工作,芯片內部包含鋰電池。當電網電壓不足或突然掉電時,系統(tǒng)自動轉換到內部鋰電池供電系統(tǒng)。而且即使系統(tǒng)不上電,程序不執(zhí)行時,鋰電池也能保證芯片的正常運行,以備隨時提供正確的時間。方案二:本方案完全用軟件實現數字時鐘。原理為:在單片機內部存儲器設三個字節(jié)分別存放時鐘的時、分、秒信息。利用定時器與軟件結合實現1秒定時中斷,每產生一次中斷,存儲器內相應的秒值加1;若秒值達到60,則將其清零,并將相應的分字節(jié)值加1;若分值達到60,則清零分字節(jié),并將時字節(jié)值加1;若時值達到24,則將十字節(jié)清零。該方案具有硬件電路簡單的特點。但由于每次執(zhí)行程序時,定時器都要重新賦初值,所以該時鐘精度不高。而且,由于是軟件實現,當單片機不上電,程序不執(zhí)行時,時鐘將不工作。基于硬件電路的考慮,本設計采用方案二完成數字時鐘的功能。方案一:靜態(tài)顯示。所謂靜態(tài)顯示,就是當顯示器顯示某一字符時,相應的發(fā)光二極管恒定的導通或截止。該方式每一位都需要一個8 位輸出口控制。靜態(tài)顯示時較小的電流能獲得較高的亮度,且字符不閃爍。但當所顯示的位數較多時,靜態(tài)顯示所需的I/O口太多,造成了資源的浪費。方案二:動態(tài)顯示。所謂動態(tài)顯示就是一位一位的輪流點亮各個位,對于顯示器的每一位來說,每隔一段時間點亮一次。利用人的視覺暫留功能可以看到整個顯示,但必須保證掃描速度足夠快,字符才不閃爍。顯示器的亮度既與導通電流有關,也于點亮時間與間隔時間的比例有關。調整參數可以實現較高穩(wěn)定度的顯示。動態(tài)顯示節(jié)省了I/O口,降低了能耗。從節(jié)省I/O口和降低能耗出發(fā),本設計采用方案二。使用共陰極七段數碼顯示管。使用74SL48作為 BCD7段數碼管顯示譯碼器方案一:蜂鳴器,一個交流蜂鳴器及其驅動電路,能夠演奏音樂?!》桨付呼[鈴芯片因為單片機有定時器所以使用蜂鳴器就可以了,不必使用鬧鈴芯片了,很浪費單片機功能。所以選擇方案一蜂鳴器.1驅動選擇方案一:PWM 輸出口直接驅動蜂鳴器 。PWM 輸出口直接驅動蜂鳴器方式。由于PWM 只控制固定頻率的蜂鳴器,所以可以在程序的系統(tǒng)初始化時就對PWM 的輸出波形進行設置。 首先根據PWM 輸出的周期寬度是10 位數據來選擇PWM 時鐘。系統(tǒng)使用4MHz 的晶振作為主振蕩器,一個tosc ,若是將PWM 的時鐘設置為tosc 的話, 則蜂鳴器要求的波形周期500μs 的計數值為500μs/=(2000)10=(7D0)16,7D0H 為11 位的數據,而SH69P43 的PWM 輸出周期寬度只是10 位數據,所以選擇PWM 的時鐘為tosc 是不能實現蜂鳴器所要的驅動波形的。 這里我們將PWM 的時鐘設置為4tosc,這樣一個PWM 的時鐘周期就是1μs 了,由此可以算出500μs 對應的計數值為500μs/1μs=(500)10=(1F4)16,即分別在周期寄存器的高2 位、中4 位和低4 位三個寄存器中填入F 和4,就完成了對輸出周期的設置。再來設置占空比寄存器,在PWM 輸出中占空比的實現是 通過設定一個周期內電平的寬度來實現的。當輸出模式選擇為普通模式時,占空比寄存器是用來設置高電平的寬度。250μs 的寬度計數值為250μs/1μs=(250)10=(0FA)16。只需要在占空比寄存器的高2 位、中4 位和低4 位中分別填入0、F 和A 就可以完成對占空比的設置了,設置占空比為1/2duty。 以后只需要打開PWM 輸出,PWM 輸出口自然就能輸出頻率為2000Hz、占空比為1/2duty 的方波。方案二: I/O 口定時翻轉電平驅動蜂鳴器。使用I/O 口定時翻轉電平驅動蜂鳴器方式的設置比較簡單,只需要對波形分析一下。由于驅動的信號剛好為周期500μs,占空比為1/2duty 的方波,只需要每250μs 進行一次電平翻轉,就可以得到驅動蜂鳴器的方波信號。在程序上,可以使用TIMER0 來定時,將TIMER0 的預分頻設置為/1,選擇TIMER0 的始終為系統(tǒng)時鐘(主振蕩器時鐘/4),在TIMER0 的載入/計數寄存器的高4 位和低4 位分別寫入00H 和06H,就能將TIMER0 的中斷設置為250μs。當需要I/O 口驅動的蜂鳴器鳴叫時,只需要在進入TIMER0 中斷的時候對該 I/O 口的電平進行翻轉一次,直到蜂鳴器不需要鳴叫的時候,將I/O 口的電平設置為低電平即可。不鳴叫時將I/O 口的輸出電平設置為低電平是為了防止漏電。[因為此次設計是基于51單片機驅動I/O 口的,所以選擇方案二I/O 口定時翻轉電平驅動蜂鳴器。方案一:有源蜂鳴器 即通電就可以發(fā)聲。方案二: 無源蜂鳴器 即要有驅動的音頻電流才能發(fā)聲。因為此次設計是基于51單片機驅動的,所以選擇方案二無源蜂鳴器。采用手動按鍵調時。用四個按鍵,一個是進入調時,一個是沒按一次秒加一,六十以后變零,一個是沒按一次分加一,六十以后變零,一個是沒按一次時加一,二十四以后變零。第三章 系統(tǒng)設計本次設計時鐘電路,使用了AT89C51單片機芯片控制電路,單片機控制電路簡單且省去了很多復雜的線路,使得電路簡明易懂,使用鍵盤鍵上的按鍵來調整時鐘的時、分、秒,用一揚聲器來進行定時提醒,同時使用C語言程序來控制整個時鐘顯示,使得編程變得更容易,這樣通過四個模塊:鍵盤、芯片、揚聲器、顯示屏即可滿足設計要求單片機從外部引入VCC 5V的直流電,為單片機、復位電路提供電源,GND接地。圖31復位電路如圖31所示,復位電路主要由型號為1N4148的二極管,型號為10UF/16V的電解電容,型號為104的瓷片電容,10K的電阻以及按鍵S1構成,S1接芯片的相應引腳RST,當開關按下時引腳RST為高電平1,斷開時引腳為低電平0。 圖32 程序下載電路如圖32所示,由AT89S ISP構成的兩排十針下載口,板圖上有一個小方框,為1號引角;下載線的凸口為正方向,凸口的右側邊的第一個插孔為1號引角。選電路為三極管的集電極接數碼管的公共端,當P2口對應的引腳輸出高電平時三極管導通,對應的數碼管顯示數據。這樣,在同一時刻,6位LED中只有選通的那1位顯示出字符,而其他5位則是熄滅的。同樣,在下一時刻,只讓下一位的位選線處于選通狀態(tài),而其他個位的位選線處于關閉狀態(tài),在段碼線上輸出將要顯示字符的段碼,則同一時刻,只有選通位顯示出相應的字符,而其他各位則是熄滅的。如此循環(huán)下去,就可以使各位顯示出將要顯示的字符。雖然這些字符是在不同時刻出現的,而在同一時刻,只有一位顯示,其他各位熄滅,但由于LED的余輝和人眼的視覺暫留作用,只要每位顯示間隔足夠短,則可以造成多位同時亮的假象,達到同時顯示的效果。