單片機的電子時鐘方案設(shè)計書_第1頁
單片機的電子時鐘方案設(shè)計書_第2頁
單片機的電子時鐘方案設(shè)計書_第3頁
單片機的電子時鐘方案設(shè)計書_第4頁
單片機的電子時鐘方案設(shè)計書_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、單片機應(yīng)用系統(tǒng)設(shè)計課程設(shè)計報告標題: 基于單片機的電子時鐘設(shè)計學生姓名: XXX XXXXXXXX ( ) 1 11.1 DS1302+22.12.22.333.1 513.23.33.43.5 LCD3.644.14.2 CPURAMROM DS1302STC89C51DS13021602SCT89C511方案選擇1.1 DS1302+1602LCD液晶屏DS1302是 DALLAS公司推出的涓流充電時鐘芯片內(nèi)含有一個實時時鐘/ 日歷和31 字節(jié)靜態(tài)RAM通過簡單的串行接口與單片機進行通信實時時鐘/ 日歷電路提供秒分時日日期月年的信息每月的天數(shù)和閏年的天數(shù)可自動調(diào)整時鐘操作可通過AM/PM

2、指示決定采用24 或 12 小時格式DS1302與單片機之間能簡單地采用同步串行的方式進行通信僅需用到三個口線1 RES復位2I/O數(shù)據(jù)線3 SCLK串行時鐘時鐘/RAM 的讀 / 寫數(shù)據(jù)以一個字節(jié)或多達31 個字節(jié)的字符組方式通信DS1302 工作時功耗很低保持數(shù)據(jù)和時鐘信息時功率小于1mW。1602LCD 液晶屏為顯示器。程序控制DS1302時鐘芯片實現(xiàn)小時、分鐘、秒和年、月、日的計時,并在1602LCD 液晶屏上顯示出來。通過按鍵對12 小時 /24小時顯示模式切換。當時間走到程序設(shè)定的時間時,蜂鳴器響起,起到鬧鈴功能。2 設(shè)計方框圖2.1 電路的總體設(shè)計框圖輸入部分輸出部分單片機晶振和

3、復位2.2 整體設(shè)計思路熟透硬件,了解引腳功能完成整體電路圖綜合各程序進行仿真仿真成功2.3 程序設(shè)計框圖設(shè)計各部分電路組合電路調(diào)試程序并進行修改用 Proteus 畫了電路圖軟硬件結(jié)合,完成要初始化顯示按下 1鍵判斷按鍵調(diào)時調(diào)鬧鐘顯示所調(diào)時間顯示鬧鈴時間調(diào)整時限到或有其他輸入3 硬件電路設(shè)計若無鍵按下按下 3鍵調(diào)定時顯示定時時間3.1 51 單片機最小系統(tǒng)設(shè)計單片機最小系統(tǒng)如下圖3-1 所示:以 SCT89C51單片機為核心,選用 12MHZ的晶振,由于晶振的頻率越高,單片機的運行速度就越快,但考慮到單片機的運行速度快會導致對存儲器的要求就會變高,所以12MHZ晶振為最佳選擇。外接電容的值雖

4、然沒有嚴格要求,但它的大小會影響振蕩器頻率的高低、穩(wěn)定性和起振的快速性,因此選用 30PF 的電容作為起振電容。復位電路為按鍵高電平復位。3.2電源供電電路設(shè)計電源供電電路如下圖3-2 所示:我們采用外接USB端口的方式為單片機供電,LOPW1為電源顯示燈,當按鍵S5 按下,顯示燈亮,表示單片機供+5V 電壓。3.3串口通信電路設(shè)計串口通信如下圖3-3 所示:圖中通過MAX232進行TTL 電平和232 電平轉(zhuǎn)換,從而單片機和上位機之間通信提供通道。通信電路的目的就是讓通信雙發(fā)的匹配,單片機用的是TTL 電平,上位機的串口用的是232 電平。3.4時鐘芯片電路設(shè)計DS1302 時鐘芯片是本系統(tǒng)

5、實現(xiàn)高精度計時的關(guān)鍵。利用DS1302 時鐘芯片獨立于單片機來計時,在提高計時進度的同時也提高了整個系統(tǒng)的抗干擾能力。DS1302 通過SCLK 、 I/O 、 RES端口和單片機 STC89C51 進行通信。 SCLK 接到單片機相應(yīng)的時鐘脈沖; I/O 接到 P3.5 口用來傳送所有的數(shù)據(jù);時鐘芯片間的數(shù)據(jù)傳送的開始與結(jié)束。P1.7 口,在讀寫操作時給DS1302 提供RES 接到 P1.6 口上用來控制單片機與3.5 LCD 顯示電路設(shè)計1602LCD 液晶屏顯示電路如下圖3-5 所示:1602LCD 液晶屏為 5V 電壓驅(qū)動,帶背光,可顯示2 行,每行16 個字符。液晶1, 2端為電源

6、; 15, 16 為背光電源。液晶3 端為液晶對比度調(diào)節(jié)端。液晶4 端為向液晶控制器寫數(shù)據(jù)端。液晶 5 端為讀 /寫選擇端。液晶6 端為使能信號,是操作時必須的信號,接單片機的P3.4口。3.5報警電路設(shè)計蜂鳴器鬧鈴電路如下圖3-5 所示:蜂鳴器電路接在單片機的P2.3 引腳上,當給該引腳一個低電平,三極管導通,蜂鳴器發(fā)出聲音作為鬧鈴。4 軟件設(shè)計4.1 系統(tǒng)程序流程圖設(shè)計實驗主程序流程圖如下圖4-1.1 所示:主程序開始顯示 /定時判斷 /開定時中斷調(diào)用程序條件中斷 T0與設(shè)定時間 t接$B4?接 $B0?進入定時中斷程序中斷 0中斷 1秒分時日月對應(yīng) P0.3/P0.4轉(zhuǎn)換顯示設(shè)定定時調(diào)整

7、時間定時中斷程序流程圖如下圖4-1.2 所示:定時中斷重裝定時常數(shù)T0 100ms整秒調(diào)整秒單元整分調(diào)整分單元整時調(diào)整時單元整日調(diào)整日單元整月月判斷調(diào)整月單元整年調(diào)整年單元調(diào)時功能流程圖如下圖4-1.3 所示:按SB1調(diào)整 2路按SB1調(diào)整 3路按SB1中斷開始按鍵掃描開始進入 1按SB2年單元按SB3單元加 1調(diào)整年單按SB1月單元按SB2單元加 1調(diào)整月單元按SB1調(diào)整日單元按SB1按SB3按SB2日單元按SB3按SB2時單元按SB3單元加 1單元加 1調(diào)整時單按SB1分單元按SB2單元加 1調(diào)整分單按SB1調(diào)整秒單按SB1按SB3 按SB2開關(guān)定時中斷返回設(shè)計小結(jié)本系統(tǒng)實現(xiàn)了人機交互功能

8、,有夏時令制以及萬年歷功能??蓪δ?、月、日、時、分、秒進行設(shè)定,鬧鐘設(shè)定,具有整點報時功能,模式切換。本系統(tǒng)采用 1602LCD 顯示信息,比其它電子時鐘顯示信息更豐富,可同時時間、日期、星期等。秒表功能精確到毫秒??稍O(shè)置多組鬧鐘。系統(tǒng)具有斷最保護功能,芯片可以保存斷電時的信息并繼續(xù)工作。通過這次的設(shè)計使我認識到對單片機的知識知道的太少了,書本上的很多知識不能靈活運用,尤其是不能充分理解程序的含義,導致編程過于復雜。但也提高了我的動手能力,讓我享受到電子時鐘設(shè)計的快樂,讓我開闊了視野,豐富了經(jīng)驗。知道了如何把理論運用到實際中去,把理論與實際相結(jié)合。這次電子時鐘的設(shè)計給我奠定了一個基礎(chǔ),我會在以

9、后的學習、生活中鍛煉自己。參考文獻1王建校 . 51 系列單片機及 C51程序設(shè)計 M. 北京:科學出版社, 20022康華光主編 .電子技術(shù)基礎(chǔ) M,第 4 版 .北京高等教育出版社,19913李維繢 .液晶顯示器件應(yīng)用技術(shù)M. 北京:北京郵電學院出版社,19934范志新 .液晶顯示及其用應(yīng) J. 國際光電與顯示, 20015鮑宏亞等編 MCS-51 系列單片機應(yīng)用系統(tǒng)設(shè)計及實用技術(shù)中國宇航出版社20056楊文龍 .單片機原理及應(yīng)用 M. 西安電子科技大學出版社20007趙文博,劉文濤 .單片機語言 C51 程序設(shè)計 M. 人民郵電出版社20068李朝青編 單片機原理及接口應(yīng)用技術(shù)(第三版)

10、北京航空航天大學出版社2008附錄:主要程序清單/* 包含器件配置文件*/#define uchar unsigned char#define uint unsigned intchar DATA_7SEG10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, 。 /*09 的數(shù)碼管段碼*/uchar hour=0,min=0,sec=0 。/* 時、分、秒單元清零*/uchar deda=0。/*5mS 計數(shù)單元清零*/uchar t_hour=0,t_min=0 。/* 鬧時時、分單元清零*/bit d_05s=0 。/*0.5 秒標志

11、*/bit o_f=0 。/* 鬧時啟 /停標志 */uchar set=0。/* 模式設(shè)定標志*/uchar m=0 。uchar flag=0 。/*RAM掉電標志 */void delay(uint k) 。/* 延時子函數(shù) */void conv() 。/* 走時單元轉(zhuǎn)換*/void p_out() 。/* 判別鬧時到否子函數(shù)*/void dirve() 。/* 走時時間輸出驅(qū)動子函數(shù)*/void t_dirve() 。/* 鬧時時間輸出驅(qū)動子函數(shù)*/* 鬧時啟 /停子函數(shù) */void time1_of()uchar m 。if(P3_7=0)delay(1) 。if(P3_7=0)

12、o_f=1 。for(m=0 。 m<30。 m+)t_dirve() 。P1=DATA_7SEGt_min/10 。 P3=0xfd 。 delay(1) 。if(P3_1=0)if(o_f=1)P1_7=0。 else P1_7=1 。delay(1) 。if(P3_5=0)delay(1) 。if(P3_5=0)o_f=0 。for(m=0 。 m<30。 m+)t_dirve() 。P1=DATA_7SEGt_min/10 。 P3=0xfd 。 delay(1) 。if(P3_1=0)if(o_f=1)P1_7=0。 else P1_7=1。 delay(1) 。/* 走

13、時函數(shù) */void time()conv() 。/* 走時單元轉(zhuǎn)換*/dirve() 。/* 走時時間輸出驅(qū)動子函數(shù)*/p_out() 。/* 判別鬧時到否子函數(shù)*/* 定時器 T0 5mS 初始化 */void init_timer()TMOD=0x01 。TH0=-(4800/256) 。TL0=-(4800%256) 。IE=0x82 。TR0=1 。/* 掃描按鍵子函數(shù)*/void scan_key()delay(1) 。if(P3_4=0)set+ 。if(set>=4)set=0 。if(set=1)flag=0x55 。F0:if(P3_4=0)goto F0 。/* 按

14、鍵未釋放 ,在此等候 */* 延時子函數(shù) */void delay(uint k)uint i,j 。for(i=0 。 i< DIV> for(j=0。 j<121 。 j+) 。/*5mS 定時中斷服務(wù)子函數(shù) */ void zd(void) interrupt 1TH0=-(4800/256) 。TL0=-(4800%256) 。deda+。/* 調(diào)整走時時間*/void time_adj()uchar m 。if(P3_5=0)delay(1) 。if(P3_5=0)hour+ 。if(hour=24)hour=0 。for(m=0 。 m<30。 m+)dir

15、ve() 。if(P3_2=0)P1_7=0 。else P1_7=1。delay(1) 。if(P3_7=0)delay(1) 。if(P3_7=0)min+ 。if(min=60)min=0 。for(m=0 。 m<30。 m+)dirve() 。if(P3_2=0)P1_7=0 。else P1_7=1。delay(1) 。/* 調(diào)整鬧時時間*/void time1_adj()uchar m 。if(P3_5=0)delay(1) 。if(P3_5=0)t_hour+ 。if(t_hour=24)t_hour=0 。for(m=0 。 m<30。 m+)t_dirve()

16、。if(P3_7=0)delay(1) 。if(P3_7=0)t_min+ 。if(t_min=60)t_min=0。for(m=0 。 m<30。 m+)t_dirve() 。/* 時、分、秒單元及走時單元轉(zhuǎn)換*/void conv()if(deda<=100)d_05s=0 。else d_05s=1。if(deda>=200)sec+ 。 deda=0。 if(sec=60)min+ 。 sec=0。 if(min=60)hour+ if(hour=24)hour=0 。 min=0 。 /* 走時時間輸出驅(qū)動子函數(shù)*/void dirve()P1=DATA_7SEGh

17、our/10 。 P3=0xf7 。delay(1) 。P1=DATA_7SEGhour%10 。 P3=0xfb 。 delay(1) 。if(d_05s=1)if(P3_2=0)P1_7=0。else P1_7=1。 delay(1) 。P1=DATA_7SEGmin/10 。 P3=0xfd 。 delay(1) 。if(o_f=1)if(P3_1=0)P1_7=0 。 else P1_7=1。 delay(1) 。 P1=DATA_7SEGmin%10 。 P3=0xfe 。 delay(1) 。 /* 鬧時時間輸出驅(qū)動子函數(shù)*/void t_dirve()P1=DATA_7SEGt_

18、hour/10 。P3=0xf7 。 delay(1) 。if(P3_3=0)P1_7=0 。else P1_7=1。delay(1) 。P1=DATA_7SEGt_hour%10 。 P3=0xfb 。delay(1) 。P1=DATA_7SEGt_min/10 。 P3=0xfd 。 delay(1) 。P1=DATA_7SEGt_min%10 。 P3=0xfe。 delay(1)。/* 判別鬧時到否子函數(shù)*/void p_out()if(o_f=1)if(t_hour=hour)if(t_min=min)if(P3_0=0)P1_7=0 。 delay(1) 。 else P1_7=1。/* 主函數(shù) */void main()init_timer() 。/* 定時器 T0 初始化 */while(1)/* 無限循環(huán) */if(P3_4=0)scan_key() 。/* 有按鍵 ,調(diào)用按鍵掃描子函數(shù)*/switch(set)/* 根據(jù) set 鍵值散轉(zhuǎn) */case 0:time()。 break。/* 走時時間程序*/case 1:time1_adj() 。 break。/* 鬧時時間調(diào)整*/case 2:time_adj() 。 break。/* 走時時間調(diào)整*

溫馨提示

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

評論

0/150

提交評論