




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、電子時(shí)鐘設(shè)計(jì)簡介該設(shè)計(jì)主要由單片機(jī)AT89C51和液晶顯示器組成,實(shí)現(xiàn)常用的實(shí)時(shí)電子鐘功能。利用可編程芯片AT89C51強(qiáng)大的功能,我們了實(shí)現(xiàn)日歷功能、時(shí)鐘功能。該時(shí)鐘使用液晶顯示器作為顯示模塊,使用3個(gè)彈性小按鍵作為輸入模塊,調(diào)節(jié)年、月、日、星期、時(shí)、分、秒。一方案比較與論證根據(jù)設(shè)計(jì)要求,該時(shí)鐘系統(tǒng)可分輸入部分、處理部分和顯示數(shù)據(jù)部分。其中輸入部分是鍵盤輸入數(shù)據(jù)調(diào)整要顯示的內(nèi)容,處理部分單片機(jī)接收并通過算法處理鍵盤輸入的信息變成顯示模塊所能接受的信息,顯示部分是用來實(shí)時(shí)顯示處理部分處理后的數(shù)據(jù)。 輸入模塊處理模塊顯示模塊 輸入模塊我們選用三個(gè)獨(dú)立彈性小按鍵來實(shí)現(xiàn),選用矩陣式鍵盤則太浪費(fèi)資處理
2、模塊我們選用了STC公司的STC89C52芯片來,與Atmel公司生產(chǎn)的AT89S52一樣,也是40腳雙列直插式封裝,這里芯片對(duì)剛學(xué)單片機(jī)的人來說容易入手,其功能也很強(qiáng)大,用來實(shí)現(xiàn)一個(gè)電子鐘完全足夠了。顯示部分我們可有兩種選擇:數(shù)碼管和1602液晶顯示器。實(shí)現(xiàn)一個(gè)電子鐘若用數(shù)碼管則需6個(gè),所占空間相對(duì)大了些,而且我們還要實(shí)現(xiàn)日歷的功能,需要更多的數(shù)碼管,所點(diǎn)空間翻倍,而且還會(huì)造成單片機(jī)I/O引腳濫用甚至不夠用,用液晶顯示器來實(shí)現(xiàn)則方便得多,界面也相對(duì)友好,但液晶顯示器有個(gè)缺點(diǎn)就是價(jià)格比較貴。因此我們最終選擇了1602液晶顯示器。另處獨(dú)立彈性小按鍵具有價(jià)格便宜、容易獲得、容易控制等特點(diǎn)。二系統(tǒng)理
3、論分析、計(jì)算與電路仿真1、定時(shí)器與中斷原理電子鐘主要是利用單片機(jī)的定時(shí)器/計(jì)數(shù)器和中斷來實(shí)現(xiàn)。定時(shí)器實(shí)際是加1計(jì)數(shù)器,單片機(jī)每運(yùn)行一個(gè)機(jī)器周期定時(shí)器就自動(dòng)加1,當(dāng)計(jì)到所定的數(shù)N時(shí),單片機(jī)就產(chǎn)生一次中斷,停下所做的工作,轉(zhuǎn)而去執(zhí)行中斷服務(wù)程序。單片機(jī)每個(gè)機(jī)器周期等于外部晶振的12個(gè)振蕩周期,當(dāng)外部晶振是12MHz時(shí),則每個(gè)機(jī)器周期的時(shí)間是Tcy = 121/12=1m(2-1)定數(shù)器設(shè)為N時(shí),即每計(jì)到N時(shí)產(chǎn)生一次中斷,而一次中斷的時(shí)間為:t = NTcym (2-2)當(dāng)產(chǎn)生X(x根據(jù)N來設(shè)置,兩者之積為1000000)次中斷后我就知道過了1s,再通過液晶顯示出來,這樣就達(dá)到了讓液晶每隔一秒跳一下
4、的目的了。2、proteus仿真結(jié)果3、液晶部分 圖4-3 液晶1、2端口分別是工作電源的負(fù)、正極,15、16是液晶背光燈電源正負(fù)極,R4起限流作用,避免電流過大燒壞背光燈。第3端口還可接一電位器,調(diào)節(jié)液晶顯示對(duì)比度。無標(biāo)號(hào)的8個(gè)端口是數(shù)據(jù)端,通過一上拉電阻接到單片機(jī)的P0口。三系統(tǒng)的軟件設(shè)計(jì)(如必要,含有流程圖)1、程序流程圖流程圖中的X表示液晶中秒、分、時(shí)、星期、年、月、日中的任一個(gè)。N按2直到X不閃爍Y液晶X閃爍X減1按鍵4被按下X加1按鍵3被按下按鍵2被按下 X閃爍液晶X閃爍NY初始化結(jié)束掃描鍵盤是否被按下的同時(shí)定時(shí)器是否到1秒往液晶送新數(shù)據(jù)YN開始不掉電掉電 圖5-1 主程序流程圖
5、圖5-2 掃描鍵盤的子程序流程四系統(tǒng)測試及結(jié)果測試結(jié)果總的來說很滿意,比預(yù)計(jì)的還要好。但由于中斷函數(shù)中代碼較長,故存在一定程度的誤差,用秒表測試大約為每5分鐘慢了一秒,這個(gè)問題是用單片機(jī)定時(shí)器來數(shù)時(shí)所無法解決的,中斷函數(shù)必定會(huì)較長,處理這一函數(shù)會(huì)花費(fèi)一定的時(shí)間這就無法做到讓時(shí)鐘走得很精確。解決方法是用一時(shí)鐘芯片來實(shí)現(xiàn),由于時(shí)鐘芯片不好買又比較貴(新的20幾塊一片),暫時(shí)就不考慮了,有機(jī)會(huì)再嘗試。1 源程序/主函數(shù)放在最后面#include #define uchar unsigned char#define uint unsigned intsbit rs=P24;/定義液晶數(shù)據(jù)命令選擇端sb
6、it lcden=P25;/液晶使能端sbit s1=P20;/按鍵1sbit s2=P21;/按鍵2sbit s3=P22;/按鍵3uchar count,s1num;char shi,fen,miao;/時(shí)、分、秒char year,month,day,week;/年月日星期void delay(uint x)/延時(shí)子程序uint j,k;for(j=x;j0;j-)for(k=110;k0;k-);/-液晶寫命令功能-void write_com(uchar com)rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;/-液晶寫數(shù)據(jù)
7、功能-void write_date(uchar date)rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;/-寫入時(shí)、分、秒-?void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);/-寫入年、月、日-void write_nyr(uchar add,uchar date)uchar shi,ge;shi=dat
8、e/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);/-寫入星期X-void write_week(uchar we)write_com(0x80+12);switch(we)case 1: write_date(M);delay(5);write_date(O);delay(5);write_date(N);break;case 2: write_date(T);delay(5);write_date(U);delay(5);write_date(E);break;case 3: write
9、_date(W);delay(5);write_date(E);delay(5);write_date(D);break;case 4: write_date(T);delay(5);write_date(H);delay(5);write_date(U);break;case 5: write_date(F);delay(5);write_date(R);delay(5);write_date(I);break;case 6: write_date(S);delay(5);write_date(A);delay(5);write_date(T);break;case 7: write_dat
10、e(S);delay(5);write_date(U);delay(5);write_date(N);break;/-實(shí)現(xiàn)初始化功能-void init()lcden=0;shi=1;fen=1;miao=1;day=1;month=1;year=1;week=1;count=0;s1num=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80+1);write_date(2);write_com(0x80+2);write_date(0);write_com(0x80+5);write
11、_date(-);write_com(0x80+8);write_date(-);write_nyr(9,day);write_nyr(6,month);write_nyr(3,year);write_week(week);write_com(0x80+0x40+6);write_date(:);write_com(0x80+0x40+9);write_date(:);write_sfm(10,miao);write_sfm(7,fen);write_sfm(4,shi);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET
12、0=1;TR0=1;/ -鍵盤掃描功能-void keyscan()if(s1=0)/鍵盤1是否被按下delay(5);/如果檢測到鍵盤被按下,延時(shí)約if(s1=0)/5毫秒看是否為鍵下,這樣可越過按 /鍵盤時(shí)的抖動(dòng)時(shí)間,防止誤判s1num+;while(!s1);if(s1num=1)TR0=0;write_com(0x80+0x40+10);write_com(0x0f);if(s1num=2)write_com(0x80+0x40+7);if(s1num=3)write_com(0x80+0x40+4);if(s1num=4)write_com(0x80+12);if(s1num=5)w
13、rite_com(0x80+9);if(s1num=6)write_com(0x80+6);if(s1num=7)write_com(0x80+3);if(s1num=8)s1num=0;write_com(0x0c);TR0=1;if(s1num!=0)/鍵盤2是否被按下if(s2=0)delay(5);if(s2=0)while(!s2);if(s1num=1)miao+;if(miao=60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);if(s1num=2)fen+;if(fen=60)fen=0;write_sfm(7,fen);
14、write_com(0x80+0x40+7);if(s1num=3)shi+;if(shi=24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);if(s1num=4)week+;if(week=8)week=1;write_week(week);write_com(0x80+12);if(s1num=5)day+;if(day=32)day=1;write_nyr(9,day);write_com(0x80+9);if(s1num=6)month+;if(month=13)month=1;write_nyr(6,month);write_com(0
15、x80+6);if(s1num=7)year+;if(year=100)year=0;write_nyr(3,year);write_com(0x80+3);if(s3=0)/鍵盤3是否被按下delay(5);if(s3=0)while(!s3);if(s1num=1)miao-;if(miao=-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);if(s1num=2)fen-;if(fen=-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);if(s1num=3)shi-;if(shi=-
16、1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4);if(s1num=4)week-;if(week=0)week=7;write_week(week);write_com(0x80+12);if(s1num=5)day-;if(day=0)day=31;write_nyr(9,day);write_com(0x80+9);if(s1num=6)month-;if(month=0)month=12;write_nyr(6,month);write_com(0x80+6);if(s1num=7)year-;if(year=-1)year=99;write_nyr(3,year);write_com(0x80+3);/-主函數(shù)-void main()init(); /初始化子函數(shù)while(1)keyscan();/-中斷服務(wù)子程序-void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=20)count=0;miao+;if(miao=60)miao=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)村特色農(nóng)業(yè)社區(qū)協(xié)議
- 環(huán)保技術(shù)服務(wù)合作協(xié)議書重點(diǎn)報(bào)告
- 退稅代收協(xié)議書模板
- 路面承包協(xié)議書范本
- 道路消防井采購合同協(xié)議
- 部隊(duì)食堂承包協(xié)議書模板
- 進(jìn)口小電梯訂購合同協(xié)議
- 無償漏水協(xié)議書
- 狂犬疫苗協(xié)議書
- 造紙?jiān)O(shè)備出售合同協(xié)議
- GB/T 45135-2024鈦合金板材超塑成形和擴(kuò)散連接件通用技術(shù)規(guī)范
- 臨床內(nèi)鏡下粘膜剝離術(shù)(ESD)護(hù)理要點(diǎn)及健康教育
- 【含聽力9英一模】合肥市蜀山區(qū)2024年中考一模英語
- 人有遠(yuǎn)近情有親疏-《差序格局》說課稿 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊(cè)
- 保利拍賣行合同模板
- 小學(xué)一年級(jí)數(shù)學(xué)計(jì)算題共10087題
- 開發(fā)綠色建筑材料的研究與應(yīng)用
- 國家建設(shè)部110號(hào)文件《住宅室內(nèi)裝飾裝修管理辦法》
- 第五課+弘揚(yáng)勞動(dòng)精神、勞模精神、工匠精神【中職專用】中職思想政治《職業(yè)道德與法治》高效課堂(高教版2023·基礎(chǔ)模塊)
- 無人機(jī)組裝與調(diào)試 課件 項(xiàng)目一 多旋翼無人機(jī)組裝調(diào)試
- 醫(yī)院捐贈(zèng)合同范例
評(píng)論
0/150
提交評(píng)論