




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、電子鐘設計摘 要本課程設計目的是設計一個可顯示年、月、日、星期、時、分、秒的電子鐘,并通過簡易的按鍵操作方便的更改顯示的時間。該電子鐘控制電路由STC89C51單片機實現,時鐘由DS1302時鐘芯片提供,顯示部分為1602液晶顯示模塊。本項目基本工作流程為:上電后單片機給DS1302時鐘芯片寫入一組初始時間,之后單片機定時向DS1302芯片讀取時間信息,并通過1602液晶顯示模塊顯示出來,當有控制按鍵按下后,單片機將更改的時間信號寫入DS1302芯片,由于單片機不停的從DS1302芯片中讀取信息顯示在1602液晶顯示模塊上,從而實現時間的調整。通過反復調試和改進完全實現了預期要求。關鍵字:單片
2、機 DS1302 液晶顯示一、設計目的:設計一個可顯示年、月、日、星期、時、分、秒的電子鐘,并通過簡易的按鍵操作方便的更改顯示的時間。二、設計中的問題及分析:1)時鐘信號的來源電子鐘的時鐘信號的來源一般有兩種:單片機提供和時鐘芯片提供。這兩種時鐘信號各有其利弊。采用單片機提供的方案電路結構簡單,程序編寫方便,但由于不同單片機工作的時鐘頻率不同程序的移植性不強,時鐘的精度不高,一般還需占據單片機的一兩個定時計數器,在系統(tǒng)設計時占用了寶貴資源。采用時鐘芯片提供的方案雖然電路復雜一些但具有很高的時鐘精度和程序的可移植性。通過比對本設計采用了時鐘芯片DS1302來提供時鐘信號。2)顯示方式的選擇顯示方
3、式也有兩種方案:數碼管顯示和液晶顯示,數碼管雖有其價格低廉的優(yōu)勢但其功耗大電路復雜,顯示穩(wěn)定度差。出于功耗和顯示質量的考慮在本設計中選用了1602液晶顯示模塊作為顯示部分。3)按鍵的設計按鍵的作用是用于實現時間信號的更改,可行的方案有兩種:數字鍵盤加功能鍵和只用功能鍵。數字鍵盤加功能鍵可以提供方便快捷的操作,但過多的按鍵數不適用本設計通過簡易的按鍵操作方便的更改顯示的時間的要求。最終本設計選擇了只用功能鍵的設計方案,通過一個按鍵循環(huán)選擇更改對象,通過另一個按鍵來循環(huán)增加時間值。三、硬件電路設計:1)電路如下所示:由于本人在開發(fā)板上完成該電子課程設計工作,電路圖取自DY500開發(fā)板說明書。圖1
4、單片機電路圖2 DS1302時鐘芯片電路圖3 1602液晶顯示電路圖4 晶振、復位、按鍵電路2)芯片及模塊說明1. DS1302時鐘芯片DS1302慢速充電時鐘芯片包括實時時鐘/日歷和31字節(jié)的靜態(tài)RAM。它經過一個簡單的串行接口與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月,月末的日期自動進行調整,還包括了閏年校正的功能。時鐘的運行可以采用24小時或帶AM(上午)/PM(下午)的12小時格式。使用同步串行通信,簡化了DS1302與微處理器的通信。與時鐘/RAM通信僅需三根線:(1)RST (復位)、(2)I/O(數據線)、和(3)SCLK(串行時鐘)。
5、數據可以以每次一個字節(jié)或多達31字節(jié)的多字節(jié)形式傳送至時鐘/RAM或從其中送出。DS1302設計成能在非常低的功耗下工作,消耗小于1微瓦的功率便能保存數據和時鐘信息。2. 1602液晶顯示模塊工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。(16列2行)1602液晶模塊內部的字符發(fā)生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。四、使用方法及其顯示結
6、果如圖4所示,有兩個按鍵S1和S2,其作用分別為:S1用于循環(huán)選擇調整對象,如年份,日期等,被選擇的對象所在位置光標閃爍用于指示位置。S2鍵用于循環(huán)增加被S1選中的信息,單片機控制被選信息的循環(huán)規(guī)律,如調整“月”的個位,當月的十位為零時,個位增加到9后才歸零,而當十位為一時,個位增加到2后就歸零,這樣顯示器上不會顯示與現實不符合的時間。當時間調整時時鐘會停止,直至一次調整完成才恢復運行。該時鐘復位時間為2000-00-00 DAY 00:00:00,依次為年、月、日、星期、時、分、秒,其中DAY表示星期通過調整可顯示星期的英文縮寫MON、TUE、WED、THU、FRI、SAT、SUN。液晶顯示
7、器右下角顯示的“鈴”形標志是本人用于在本電子鐘上附加鬧鈴功能而設計的,但因鬧鈴功能設計尚未完成,故不能完成該部分工作。圖5 單片機開發(fā)板 圖6 上電5S時圖7 調整年的各個位 圖8 調整星期由圖7和圖8可以看到被調整的時間項的所在位置光標閃爍,并且時鐘停止(兩圖時間顯示都為“00:00:43”)。圖9 調整的當前時間 圖10 運行8分鐘之后 由上所列圖片,可以看到本設計能完全大道設計要求。五程序/*電子鐘設計,顯示年、月、日、星期、時、分、秒設計時間2009-12-29 */#include<reg52.h>/完成顯示和變化值顯示#define uint unsigned int#
8、define uchar unsigned charuchar data time8=0;uchar data time18=0;uchar code t=0x04,0x0e,0x0e,0x1f,0x1f,0x00,0x04,0;/鬧鈴的代碼uchar code day="DAY MON TUE WED THU FRI SAT SUN"uchar key,n,n1;sbit SCK=P35;sbit SDA=P36;sbit RST = P37; / DS1302復位sbit rs=P22;sbit en=P24;sbit rw=P23;sbit k1=P30;sbit k
9、2=P31;sbit k3=P33;void delay(uchar c) /延時uchar a,b;for(a=0;a<c;a+)for(b=0;b<110;b+);void write1(uchar temp) /寫uchar i;for (i=0;i<8;i+) /循環(huán)8次 寫入數據 SCK=0;SDA=temp&0x01; /每次傳輸低字節(jié) temp>>=1;SCK=1;void write(uchar address,uchar dat ) /寫一位 RST=0;SCK=0;RST=1; /啟動write1(address); /發(fā)送地址writ
10、e1(dat);RST=0;void write_n() /寫日歷8位uchar m;RST=0;SCK=0;RST=1;write1(0xbe);for(m=0;m<8;m+) /發(fā)送數據 /右移一位 /恢復write1(timem);RST=0;uchar read1() /讀uchar i,tem;for (i=0;i<8;i+)tem>>=1;return(tem);uchar read( uchar address ) /讀一位 uchar temp=0x00;RST=0;SCK=0;RST=1;write1(address);temp=read1();RST
11、=0;SCK=0;SDA=1;return (temp); /返回 /以下為DS1302復位的穩(wěn)定時間 /每次傳輸低字節(jié) SCK=0; if(SDA) tem|=0x80; /右移一位 SCK=1; /循環(huán)8次 讀取數據void read_n() /讀日歷8位 uchar m;/liya_10 RST=0;SCK=0;RST=1;write1(0xbf);for(m=0;m<8;m+) timem=read1(); RST=0;SCK=0;SDA=1;void dsdate() /運算 uchar m;for(m=0;m<8;m+)time1m=timem>>4; fo
12、r(m=0;m<8;m+)timem&=0x0f;void delay1(uchar c) /延時 uint a,b;for(a=0;a<c;a+)for(b=0;b<11;b+);void write_add(uchar add) /1602寫指令 en=0;rs=0;rw=0;P0=add;en=1;en=0;P0=0xff;void write_date(uchar date)/1602寫數據 en=0;rs=1;rw=0;P0=date;en=1;en=0;P0=0xff;void chu() /1602初始化write_add(0x01);delay1(1)
13、;write_add(0x38); delay1(1);write_add(0x0c); delay1(1);write_add(0x06); delay1(1);void key2(uchar m) uchar t;if(k2=0)delay(10);while(k2=0); timem+;if(timem=n) timem=0;time1m<<=4;t=timem+time1m; if(t>=n1)t=0;m<<=1;m+=0x80;write(m,t);void key3(uchar m) uchar t;if(k2=0)delay(10);while(k2
14、=0); time1m+;if(time1m=n) time1m=0;time1m<<=4;t=timem+time1m; if(t>=n1)t=0;m<<=1;m+=0x80;write(m,t);void key1() /按鍵 uchar mao;if(k1=0)delay(10);while(k1=0); key+;if(key!=0)mao=read(0x81); mao|=0x80;write(0x80,mao);delay1(1);if(key=1)write_add(0x83);n=10;n1=0xa0;key3(6); if(key=2)write
15、_add(0x84);n=10;n1=0xa0;key2(6); if(key=3)write_add(0x86);n=2;n1=0x13;key3(4); if(key=4)write_add(0x87);n=10;n1=0x13;key2(4); if(key=5)write_add(0x89);n=4;n1=0x32;key3(3); if(key=6)write_add(0x8a);n=10;n1=0x32;key2(3); if(key=7)write_add(0x8d);n=8;n1=8;key2(5); if(key=8)write_add(0xc2);n=3;n1=0x24;k
16、ey3(2); if(key=9)write_add(0xc3);n=10;n1=0x24;key2(2); if(key=10)write_add(0xc5);n=6;n1=0x60;key3(1); if(key=11)write_add(0xc6);n=10;n1=0x60;key2(1); if(key=12)key=0;delay1(1);write_add(0x0F);delay1(1);delay(60);write_add(0x0c);mao&=0x7f;write(0x80,mao);void tu()uchar m;write_add(0x40);/自定義區(qū)入口地址
17、 for(m=0;m<8;m+)/寫代碼delay1(1);write_date(tm);void main()uchar k,d;key=0;write_n();/ mao=read(0x81);/ mao|=0x80;/write(0x80,0);chu();tu();delay1(2);while(1)read_n();dsdate();write_add(0x81); /顯示年 delay1(1);write_date('2');delay1(1);write_date('0');delay1(1);write_date(time16+0x30); delay1(1);write_date(time6+0x30); delay1(1);write_date('-');for(k=5;k>3;k-) /顯示年月日 delay1(1);write_date(time1k-1+0x30); delay1(1);write_date(timek-1+0x30); delay1(1);if(k=4)break;write_date('-');delay1(1);write_add(0x8d); /顯示星期 delay1(1);d=time5<<2;for(k=0;k<3;k+)wri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度藥店藥品零售連鎖品牌授權及供應鏈合同
- 二零二五年度涉及知識產權的方協(xié)議解約及糾紛解決合同
- 不動產買賣合同書及補充協(xié)議條款
- 英文短句記憶技巧教案
- 海底兩萬里觀后感體會
- 農業(yè)經濟政策解讀方案
- 傳媒廣告行業(yè)廣告效果數據分析與優(yōu)化方案
- 互聯(lián)網+健康產業(yè)服務協(xié)議
- 倉庫庫房租賃合同書
- 童話森林的故事解讀
- 幼兒園教師資格考試面試2024年下半年試題及解答
- HG∕T 3792-2014 交聯(lián)型氟樹脂涂料
- 《自貢市國土空間總體規(guī)劃(2021-2035年)》
- 人工智能訓練師考核模塊需求說明
- 跨文化管理案例
- 北師大版七年級上冊數學《基本平面圖形》單元作業(yè)設計
- 古村落鄉(xiāng)村文化旅游古鎮(zhèn)旅游外文文獻翻譯2014年
- 2024年臺州椒江中考二模英語試題含答案
- 四年級語文閱讀理解十篇(含答案)
- 加工中心操作規(guī)程培訓
- 大學英語四級考試高頻詞匯1500
評論
0/150
提交評論