




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選文檔Proteus 仿真大賽電子時鐘仿真 第一章 電子時鐘總體設計1.1電子時鐘簡介 電子鐘是一種利用數(shù)字電路來顯示秒、分、時的計時裝置,與傳統(tǒng)的機械鐘相比,它具有走時精確、顯示直觀、無機械傳動裝置等優(yōu)點,因而得到廣泛應用。隨著人們生活環(huán)境的不斷改善和美化,在很多場合都用到電子時鐘。很多單片機產(chǎn)品具有實時時鐘的功能,例如智能化儀器儀表、工業(yè)過程系統(tǒng)及家用電器等。這里要求實現(xiàn)一個具有實時時鐘顯示和鬧鐘把握功能的數(shù)字鐘。通過數(shù)字鐘的設計與制作,將前面所學的單片機內(nèi)部定時資源、I/O端口、鍵盤和顯示接口等學問融會貫穿,熬煉獨立設計、制作和調(diào)試應用系統(tǒng)的力量,深化領悟單片機應用系統(tǒng)的硬件設計、模塊
2、化程序設計及軟硬件調(diào)試方法等,并把握單片機應用系統(tǒng)的開發(fā)過程。1.2電子鐘設計要求設計并制作具有如下功能的數(shù)字鐘:(1) 自動計時,由6位LED先四起顯示時、分、秒。(2) 具備校準功能,可以設置當前時間。(3) 具備定時啟動功能,可以設置鬧鐘時間,啟鬧10s后自動關閉鬧鈴。1.3電子鐘計時方案(1)接受實時時鐘芯片。針對應用系統(tǒng)對實時功能的普遍需求,各大芯片生產(chǎn)廠家間續(xù)推出了一系列實時時鐘集成電路,如DS1287、DS12887、DS1302、PCF8563、S35190等。這些實時時鐘芯片具備年、月、日、時、分、秒、計時功能和多點定時功能,計時數(shù)據(jù)每秒自動更新一次,不需程序干預。單片機可通
3、過中斷或查詢方式讀取計時數(shù)據(jù)。實時時鐘芯片的計時功能無須占用CPU時間,功能完善,精度高,軟件程序設計相對簡潔,在實時工業(yè)測控系統(tǒng)中多接受這一類專用芯片來實現(xiàn)。(2)軟件把握。利用AT89S51內(nèi)部定時/計數(shù)器進行中斷定時,協(xié)作軟件延時、分、秒的計時。該方案節(jié)省硬件成本,且能夠使讀者對前面所學學問進行綜合運用,因此,本系統(tǒng)設計接受這一方案。1.4電子鐘顯示方案(1)利用串行口擴展LED,實現(xiàn)LED靜態(tài)顯示。該方案占用單片機資源少,且靜態(tài)顯示亮度高,但硬件開銷大,電路簡單,信息刷新速度慢,比適用于單片機并行口資源較少的場合。(2)利用單片機并行I/O端口,實現(xiàn)LED動態(tài)顯示。該方案直接使用單片機
4、并行口作為顯示接口,無須外擴接口芯片,但占用資源較多,且動態(tài)掃描顯示方式需占用CPU時間。在非實時測控或單片機具有足夠并行口資源的狀況下可以接受。這里接受動態(tài)顯示方案。其次章 硬件描述及系統(tǒng)設計構思2.1電子時鐘功能模塊主程序函數(shù)LED顯示函數(shù)鍵盤檢測函數(shù)查值函數(shù)加1修改功能函數(shù)鬧鐘設置函數(shù)時鐘設置函數(shù)定時器中 斷函數(shù)鬧鐘推斷啟動函數(shù)2.2系統(tǒng)硬件描述1 把握器用AT89S51 , 12M晶振2 數(shù)碼管動態(tài)掃描驅(qū)動P2口3 數(shù)碼管段碼驅(qū)動P1口4 鬧鈴驅(qū)動P1.05 調(diào)整鍵K1P3.2(外部中斷0, 正常、調(diào)時、調(diào)分、調(diào)秒)6 定時/正常切換鍵K2P3.37 時間參數(shù)低位加1鍵K3P3.48
5、時間參數(shù)高位加1鍵K4P3.52.3系統(tǒng)設計構思1主流程是取時間參數(shù),顯示時間參數(shù)。2利用T0中斷來完成計時、比較定時時間、驅(qū)動鬧鈴。3利用T1中斷完成動態(tài)顯示中,調(diào)整時間閃爍效果的定時。4利用外部中斷0來完成調(diào)整選擇功能。5利用外部中斷1完成定時顯示,當前時間顯示的切換6K3、K4鍵完成時間參數(shù)的循環(huán)加1操作2.4電子時鐘電路原理圖 如圖為電子時鐘電路原理圖第三章 電子鐘硬件介紹3.1 單片機的介紹單片機也被稱為微把握器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機,它最早是被用在工業(yè)把握領域。它不是完成某一個規(guī)律功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯
6、片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格廉價、為學習、應用和開發(fā)供應了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。 單片機芯片單片機是靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很簡單的功能要是用美國50年月開發(fā)的74系列,或者60年月的CD4000系列這些純硬件來搞定的話,電路肯定是一塊大PCB板!但是假如要是用美國70年月成功投放市場的系列單片機,結果就會有天壤之別
7、!只由于單片機的通過你編寫的程序可以實現(xiàn)高智能,高效率,以及高牢靠性! 3.2 數(shù)碼管的工作原理a.七段數(shù)碼管分共陽管和共陰管,使用時要留意區(qū)分,本項目使用共陽數(shù)碼管。即公共端接正極。數(shù)碼管引腳示意圖如下:b.該電路使用芯片74LS244來驅(qū)動發(fā)光兩極管,74LS244芯片說明書如下,使用時留意推斷芯片的引腳號,引腳示意圖如下:c.人眼的視覺暫停時間大約是0.02秒,當畫面每秒變化超過24幀時,人眼會將這些快速變動的畫面視作連續(xù)畫面。數(shù)碼管動態(tài)顯示正是利用了人的這一特性。第四章 把握系統(tǒng)的軟件設計4.1 程序設計本系統(tǒng)的軟件系統(tǒng)主要可分為主程序、定時計數(shù)中斷程序、時間調(diào)整程序、鬧鐘設置程序四大
8、模塊。在程序設計過程中,加強了部分軟件抗干擾措施,下面對部分模塊作介紹。/*數(shù)字鐘程序*/#include <reg51.h>#define uchar unsigned charsbit buzzer=P27; /定義蜂鳴器把握端口/*函數(shù)聲明*/void display(uchar *p);uchar keyscan(); /掃描鍵盤有無鍵按下uchar search(); /按鍵識別void alarm(); /鬧鐘推斷啟動void ftion0(); /時鐘修改void ftion1(); /鬧鐘修改void cum(); /加1修改/*全局變量定義*/uchar cloc
9、kbuf3=0,0,0;/存放時鐘時分秒的十進制數(shù)uchar bellbuf3=0,0,0;/存放鬧鐘時分秒的十進制數(shù)uchar msec1; /10ms中斷次數(shù)uchar msec2; /1s循環(huán)次數(shù)uchar timdata,rtimdata;/時鐘和鬧鐘修改位置標志uchar count;/鬧鐘啟動后10s計時單元uchar *dis_p;/顯示緩沖區(qū)指針bit armbit;/鬧鐘標志,為0鬧鐘未設定,為1已設定bit rtimbit;/鬧鐘是否啟動標志,為1已啟動bit rhourbit;/鬧鐘小時修改標志,為1正在修改鬧鐘小時bit rminbit;/鬧鐘分修改標志,為1正在修改鬧
10、鐘分bit hourbit;/時鐘小時修改標志,為1正在修改時鐘小時bit minbit;/時鐘分修改標志,為1正在修改時鐘分bit secbit;/時鐘秒修改標志,為1正在修改時鐘秒/*主函數(shù)*/void main()uchar a;armbit=0; /清零鬧鐘標志位msec1=0; /設置10ms中斷次數(shù)初值msec2=0; /設置1s中斷次數(shù)初值timdata=0; /時鐘內(nèi)容修改位置記憶單元清零rtimdata=0;/鬧鐘內(nèi)容修改位置記憶單元清零count=0; /鬧鐘啟動后保持10s計時單元清零TMOD=0x02; /定時器T0為工作方式2TL0=0x06; /定時初始值為250u
11、sTH0=0x06;EA=1; /中斷總允許位開啟ET0=1; /定時器1開中斷TR0=1; /啟動定時器T0dis_p=clockbuf;/將時鐘值所在地址送入顯示指針P1=0x00;buzzer=0;while(1)a=keyscan(); /調(diào)用鍵盤掃描子程序if(a=0x07)display(dis_p);/無鍵輸入調(diào)用顯示程序if(armbit=1)alarm();/推斷鬧鐘設定否,若設定則調(diào)用鬧鐘啟動函數(shù)elsedisplay(dis_p);/調(diào)用顯示子函數(shù)作為延時去抖動a=keyscan();if(a!=0x07) /沒有抖動,表示有鍵按下a=search();/調(diào)用查鍵值子函數(shù)
12、switch(a)case 0x00:ftion0();break;/是時鐘參數(shù)修改功能鍵,調(diào)用時鐘設置子函數(shù)case 0x01:ftion1();break;/是鬧鐘參數(shù)修改功能鍵,調(diào)用鬧鐘設置子函數(shù)case 0x02:cum();break;/是加1功能鍵,調(diào)用加1修改功能子函數(shù)default:break;/*6位LED顯示函數(shù)*/void display(uchar *p) uchar buffer6=0,0,0,0,0,0;uchar k,i,j,m,temp;uchar led=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;buf
13、fer0=p0/10;buffer1=p0%10;buffer2=p1/10;buffer3=p1%10;buffer4=p2/10;buffer5=p2%10;for(k=0;k<2;k+)temp=0x01;for(i=0;i<6;i+)j=bufferi;P0=temp;P1=ledj; /P1送斷碼temp<<=1;for(m=0;m<100;m+);/每一位顯示延時P1=0x00; /關顯示/*鍵盤掃描函數(shù)*/uchar keyscan()uchar c;P0=0xf0;c=P2;c=c&0x07;/按鍵行輸入為P2.0-P2.2,屏蔽無關位re
14、turn(c);/*查鍵值函數(shù)*/uchar search()uchar a,b,c,d,e;/P2=0xfe;c=0xfe; /首列掃描字送變量ca=0; /首列號送awhile(1)P0=c; /列掃描字送P0口d=P2; /讀入P2口的行狀態(tài)if(d&0x01)=0)b=0;break;/第0行有鍵按下,第0行行首號送belse if(d&0x02)=0)b=4;break;/第1行有鍵按下,第1行行首號送belse if(d&0x04)=0)b=8;break;/第2行有鍵按下,第2行行首號送ba+; /掃描列號加1c<<=1; /修改列掃描字,掃描
15、下一列e=a+b; /將行首號與列號相加,求鍵號dodisplay(dis_p);while(d=keyscan()!=0x07);/等待釋放按鍵return(e);/*鬧鐘推斷啟動函數(shù)*/void alarm()if(clockbuf0=bellbuf0)&&(clockbuf1=bellbuf1)buzzer=1;rtimbit=1;/設置鬧鐘計時標志,時鐘將進行10s計時標志if(count=10)/推斷鬧鐘保持10s時間到否 count=0;/清除鬧鐘保持10s計時 buzzer=0;/清除鬧鐘 armbit=0;/清鬧鐘標志,否則鬧鐘設置將連續(xù)有效 rtimbit=0
16、;/*時鐘設置函數(shù)*/void ftion0()if(rhourbit=1|rtimbit=1|rtimdata=1)secbit=0;minbit=0;hourbit=0;timdata=0;else TR0=0; /關定時器dis_p=clockbuf;/將時鐘緩沖區(qū)首地址送顯示指針timdata+; /將時鐘修改記錄值加1switch(timdata)case 0x01:secbit=1;break;/記錄值為1,則將時鐘秒修改標志置1case 0x02:secbit=0;minbit=1;break;/記錄值為2,則將時鐘分修改標志置1case 0x03:minbit=0;hourbi
17、t=1;break;/記錄值3,則將時鐘時修改標志置1case 0x04:timdata=0;hourbit=0;TR0=1;break;/按4次則清時鐘單元修改位置 /記錄,定時器重新開啟default:break; /*鬧鐘設置函數(shù)*/void ftion1()if(secbit=1|minbit=1|hourbit=1|timdata=1)rhourbit=0;rtimbit=0;rtimdata=0;elsedis_p=bellbuf;/設置鬧鐘顯示標志rtimdata+;/將鬧鐘修改記錄值加1switch(rtimdata)case 0x01:rminbit=1;break;/記錄值
18、為1,將鬧鐘分修改標志置1case 0x02:rminbit=0;rhourbit=1;break; /記錄值為2,將時鐘分修改標志置1case 0x03:rtimdata=0;rhourbit=0;/按3次則清鬧鐘單元修改位置記錄armbit=1; /設置鬧鐘已設置標志位dis_p=clockbuf;/恢復時鐘顯示標志break;default:break;/*加1修改功能函數(shù)*/void cum() if(secbit=1) /時鐘秒修改標志為1,秒單元內(nèi)容加1if(clockbuf2=59) clockbuf2=0;else clockbuf2+;else if(minbit=1)/時鐘分修改標志為1,分單元內(nèi)容加1if(clockbuf1=59) clockbuf1=0;else clockbuf1+;else if(hourbit=1) /時鐘小時修改標志為1,小時單元內(nèi)容加1if(clockbuf0=2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 起重平臺維修合同協(xié)議
- 解除商鋪轉(zhuǎn)讓合同協(xié)議
- 貨運物流租賃合同協(xié)議
- 豆皮代加工合同協(xié)議
- 豆腐經(jīng)銷代理合同協(xié)議
- 購房合同轉(zhuǎn)讓合同協(xié)議
- 講課合作協(xié)議合同協(xié)議
- 貼牌加工合同合同協(xié)議
- cdr考試試題及答案2015
- 2025年大學物理動態(tài)反思試題及答案
- 2025年導游從業(yè)資格通關秘籍
- 中國法院知識產(chǎn)權司法保護狀況2024
- 啤酒采購合同協(xié)議書模板
- 外賣配送員工作流程總結
- 新式茶飲產(chǎn)業(yè)的技術發(fā)展現(xiàn)狀與未來創(chuàng)新趨勢
- 【國浩律師事務所】2025中國企業(yè)出海戰(zhàn)略與法律支持需求調(diào)研報告
- 中醫(yī)把脈入門培訓課件
- 高血糖癥的急救與護理
- 成人失禁性皮炎的預防與護理
- 2025中國低空經(jīng)濟城市發(fā)展指數(shù)報告
- 湖南省長沙市岳麓區(qū)湖南師范大學附中2025屆高三下學期第六次檢測化學試卷含解析
評論
0/150
提交評論