




免費(fèi)預(yù)覽已結(jié)束,剩余8頁(yè)可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Proteus 仿真大賽電子時(shí)鐘仿真 第一章 電子時(shí)鐘總體設(shè)計(jì)1.1電子時(shí)鐘簡(jiǎn)介 電子鐘是一種利用數(shù)字電路來顯示秒、分、時(shí)的計(jì)時(shí)裝置,與傳統(tǒng)的機(jī)械鐘相比,它具有走時(shí)準(zhǔn)確、顯示直觀、無機(jī)械傳動(dòng)裝置等優(yōu)點(diǎn),因而得到廣泛應(yīng)用。隨著人們生活環(huán)境的不斷改善和美化,在許多場(chǎng)合都用到電子時(shí)鐘。很多單片機(jī)產(chǎn)品具有實(shí)時(shí)時(shí)鐘的功能,例如智能化儀器儀表、工業(yè)過程系統(tǒng)及家用電器等。這里要求實(shí)現(xiàn)一個(gè)具有實(shí)時(shí)時(shí)鐘顯示和鬧鐘控制功能的數(shù)字鐘。通過數(shù)字鐘的設(shè)計(jì)與制作,將前面所學(xué)的單片機(jī)內(nèi)部定時(shí)資源、I/O端口、鍵盤和顯示接口等知識(shí)融會(huì)貫通,鍛煉獨(dú)立設(shè)計(jì)、制作和調(diào)試應(yīng)用系統(tǒng)的能力,深入領(lǐng)會(huì)單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)、模塊化程序設(shè)計(jì)及軟硬件調(diào)試方法等,并掌握單片機(jī)應(yīng)用系統(tǒng)的開發(fā)過程。1.2電子鐘設(shè)計(jì)要求設(shè)計(jì)并制作具有如下功能的數(shù)字鐘:(1) 自動(dòng)計(jì)時(shí),由6位LED先四起顯示時(shí)、分、秒。(2) 具備校準(zhǔn)功能,可以設(shè)置當(dāng)前時(shí)間。(3) 具備定時(shí)啟動(dòng)功能,可以設(shè)置鬧鐘時(shí)間,啟鬧10s后自動(dòng)關(guān)閉鬧鈴。1.3電子鐘計(jì)時(shí)方案(1)采用實(shí)時(shí)時(shí)鐘芯片。針對(duì)應(yīng)用系統(tǒng)對(duì)實(shí)時(shí)功能的普遍需求,各大芯片生產(chǎn)廠家陸續(xù)推出了一系列實(shí)時(shí)時(shí)鐘集成電路,如DS1287、DS12887、DS1302、PCF8563、S35190等。這些實(shí)時(shí)時(shí)鐘芯片具備年、月、日、時(shí)、分、秒、計(jì)時(shí)功能和多點(diǎn)定時(shí)功能,計(jì)時(shí)數(shù)據(jù)每秒自動(dòng)更新一次,不需程序干預(yù)。單片機(jī)可通過中斷或查詢方式讀取計(jì)時(shí)數(shù)據(jù)。實(shí)時(shí)時(shí)鐘芯片的計(jì)時(shí)功能無須占用CPU時(shí)間,功能完善,精度高,軟件程序設(shè)計(jì)相對(duì)簡(jiǎn)單,在實(shí)時(shí)工業(yè)測(cè)控系統(tǒng)中多采用這一類專用芯片來實(shí)現(xiàn)。(2)軟件控制。利用AT89S51內(nèi)部定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)、分、秒的計(jì)時(shí)。該方案節(jié)省硬件成本,且能夠使讀者對(duì)前面所學(xué)知識(shí)進(jìn)行綜合運(yùn)用,因此,本系統(tǒng)設(shè)計(jì)采用這一方案。1.4電子鐘顯示方案(1)利用串行口擴(kuò)展LED,實(shí)現(xiàn)LED靜態(tài)顯示。該方案占用單片機(jī)資源少,且靜態(tài)顯示亮度高,但硬件開銷大,電路復(fù)雜,信息刷新速度慢,比適用于單片機(jī)并行口資源較少的場(chǎng)合。(2)利用單片機(jī)并行I/O端口,實(shí)現(xiàn)LED動(dòng)態(tài)顯示。該方案直接使用單片機(jī)并行口作為顯示接口,無須外擴(kuò)接口芯片,但占用資源較多,且動(dòng)態(tài)掃描顯示方式需占用CPU時(shí)間。在非實(shí)時(shí)測(cè)控或單片機(jī)具有足夠并行口資源的情況下可以采用。這里采用動(dòng)態(tài)顯示方案。第二章 硬件描述及系統(tǒng)設(shè)計(jì)構(gòu)思2.1電子時(shí)鐘功能模塊主程序函數(shù)LED顯示函數(shù)鍵盤檢測(cè)函數(shù)查值函數(shù)加1修改功能函數(shù)鬧鐘設(shè)置函數(shù)時(shí)鐘設(shè)置函數(shù)定時(shí)器中 斷函數(shù)鬧鐘判斷啟動(dòng)函數(shù)2.2系統(tǒng)硬件描述1 控制器用AT89S51 , 12M晶振2 數(shù)碼管動(dòng)態(tài)掃描驅(qū)動(dòng)P2口3 數(shù)碼管段碼驅(qū)動(dòng)P1口4 鬧鈴驅(qū)動(dòng)P1.05 調(diào)整鍵K1P3.2(外部中斷0, 正常、調(diào)時(shí)、調(diào)分、調(diào)秒)6 定時(shí)/正常切換鍵K2P3.37 時(shí)間參數(shù)低位加1鍵K3P3.48 時(shí)間參數(shù)高位加1鍵K4P3.52.3系統(tǒng)設(shè)計(jì)構(gòu)思1主流程是取時(shí)間參數(shù),顯示時(shí)間參數(shù)。2利用T0中斷來完成計(jì)時(shí)、比較定時(shí)時(shí)間、驅(qū)動(dòng)鬧鈴。3利用T1中斷完成動(dòng)態(tài)顯示中,調(diào)整時(shí)間閃爍效果的定時(shí)。4利用外部中斷0來完成調(diào)整選擇功能。5利用外部中斷1完成定時(shí)顯示,當(dāng)前時(shí)間顯示的切換6K3、K4鍵完成時(shí)間參數(shù)的循環(huán)加1操作2.4電子時(shí)鐘電路原理圖 如圖為電子時(shí)鐘電路原理圖第三章 電子鐘硬件介紹3.1 單片機(jī)的介紹單片機(jī)也被稱為微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。 單片機(jī)芯片單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,這是別的器件需要費(fèi)很大力氣才能做到的,有些則是花大力氣也很難做到的。一個(gè)不是很復(fù)雜的功能要是用美國(guó)50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國(guó)70年代成功投放市場(chǎng)的系列單片機(jī),結(jié)果就會(huì)有天壤之別!只因?yàn)閱纹瑱C(jī)的通過你編寫的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性! 3.2 數(shù)碼管的工作原理a.七段數(shù)碼管分共陽(yáng)管和共陰管,使用時(shí)要注意區(qū)分,本項(xiàng)目使用共陽(yáng)數(shù)碼管。即公共端接正極。數(shù)碼管引腳示意圖如下:b.該電路使用芯片74LS244來驅(qū)動(dòng)發(fā)光兩極管,74LS244芯片說明書如下,使用時(shí)注意判斷芯片的引腳號(hào),引腳示意圖如下:c.人眼的視覺暫停時(shí)間大約是0.02秒,當(dāng)畫面每秒變化超過24幀時(shí),人眼會(huì)將這些快速變動(dòng)的畫面視作連續(xù)畫面。數(shù)碼管動(dòng)態(tài)顯示正是利用了人的這一特性。第四章 控制系統(tǒng)的軟件設(shè)計(jì)4.1 程序設(shè)計(jì)本系統(tǒng)的軟件系統(tǒng)主要可分為主程序、定時(shí)計(jì)數(shù)中斷程序、時(shí)間調(diào)整程序、鬧鐘設(shè)置程序四大模塊。在程序設(shè)計(jì)過程中,加強(qiáng)了部分軟件抗干擾措施,下面對(duì)部分模塊作介紹。/*數(shù)字鐘程序*/#include #define uchar unsigned charsbit buzzer=P27; /定義蜂鳴器控制端口/*函數(shù)聲明*/void display(uchar *p);uchar keyscan(); /掃描鍵盤有無鍵按下uchar search(); /按鍵識(shí)別void alarm(); /鬧鐘判斷啟動(dòng)void ftion0(); /時(shí)鐘修改void ftion1(); /鬧鐘修改void cum(); /加1修改/*全局變量定義*/uchar clockbuf3=0,0,0;/存放時(shí)鐘時(shí)分秒的十進(jìn)制數(shù)uchar bellbuf3=0,0,0;/存放鬧鐘時(shí)分秒的十進(jìn)制數(shù)uchar msec1; /10ms中斷次數(shù)uchar msec2; /1s循環(huán)次數(shù)uchar timdata,rtimdata;/時(shí)鐘和鬧鐘修改位置標(biāo)志uchar count;/鬧鐘啟動(dòng)后10s計(jì)時(shí)單元uchar *dis_p;/顯示緩沖區(qū)指針bit armbit;/鬧鐘標(biāo)志,為0鬧鐘未設(shè)定,為1已設(shè)定bit rtimbit;/鬧鐘是否啟動(dòng)標(biāo)志,為1已啟動(dòng)bit rhourbit;/鬧鐘小時(shí)修改標(biāo)志,為1正在修改鬧鐘小時(shí)bit rminbit;/鬧鐘分修改標(biāo)志,為1正在修改鬧鐘分bit hourbit;/時(shí)鐘小時(shí)修改標(biāo)志,為1正在修改時(shí)鐘小時(shí)bit minbit;/時(shí)鐘分修改標(biāo)志,為1正在修改時(shí)鐘分bit secbit;/時(shí)鐘秒修改標(biāo)志,為1正在修改時(shí)鐘秒/*主函數(shù)*/void main()uchar a;armbit=0; /清零鬧鐘標(biāo)志位msec1=0; /設(shè)置10ms中斷次數(shù)初值msec2=0; /設(shè)置1s中斷次數(shù)初值timdata=0; /時(shí)鐘內(nèi)容修改位置記憶單元清零rtimdata=0;/鬧鐘內(nèi)容修改位置記憶單元清零count=0; /鬧鐘啟動(dòng)后保持10s計(jì)時(shí)單元清零TMOD=0x02; /定時(shí)器T0為工作方式2TL0=0x06; /定時(shí)初始值為250usTH0=0x06;EA=1; /中斷總允許位開啟ET0=1; /定時(shí)器1開中斷TR0=1; /啟動(dòng)定時(shí)器T0dis_p=clockbuf;/將時(shí)鐘值所在地址送入顯示指針P1=0x00;buzzer=0;while(1)a=keyscan(); /調(diào)用鍵盤掃描子程序if(a=0x07)display(dis_p);/無鍵輸入調(diào)用顯示程序if(armbit=1)alarm();/判斷鬧鐘設(shè)定否,若設(shè)定則調(diào)用鬧鐘啟動(dòng)函數(shù)elsedisplay(dis_p);/調(diào)用顯示子函數(shù)作為延時(shí)去抖動(dòng)a=keyscan();if(a!=0x07) /沒有抖動(dòng),表示有鍵按下a=search();/調(diào)用查鍵值子函數(shù)switch(a)case 0x00:ftion0();break;/是時(shí)鐘參數(shù)修改功能鍵,調(diào)用時(shí)鐘設(shè)置子函數(shù)case 0x01:ftion1();break;/是鬧鐘參數(shù)修改功能鍵,調(diào)用鬧鐘設(shè)置子函數(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;buffer0=p0/10;buffer1=p0%10;buffer2=p1/10;buffer3=p1%10;buffer4=p2/10;buffer5=p2%10;for(k=0;k2;k+)temp=0x01;for(i=0;i6;i+)j=bufferi;P0=temp;P1=ledj; /P1送斷碼temp=1;for(m=0;m100;m+);/每一位顯示延時(shí)P1=0x00; /關(guān)顯示/*鍵盤掃描函數(shù)*/uchar keyscan()uchar c;P0=0xf0;c=P2;c=c&0x07;/按鍵行輸入為P2.0-P2.2,屏蔽無關(guān)位return(c);/*查鍵值函數(shù)*/uchar search()uchar a,b,c,d,e;/P2=0xfe;c=0xfe; /首列掃描字送變量ca=0; /首列號(hào)送awhile(1)P0=c; /列掃描字送P0口d=P2; /讀入P2口的行狀態(tài)if(d&0x01)=0)b=0;break;/第0行有鍵按下,第0行行首號(hào)送belse if(d&0x02)=0)b=4;break;/第1行有鍵按下,第1行行首號(hào)送belse if(d&0x04)=0)b=8;break;/第2行有鍵按下,第2行行首號(hào)送ba+; /掃描列號(hào)加1c=1; /修改列掃描字,掃描下一列e=a+b; /將行首號(hào)與列號(hào)相加,求鍵號(hào)dodisplay(dis_p);while(d=keyscan()!=0x07);/等待釋放按鍵return(e);/*鬧鐘判斷啟動(dòng)函數(shù)*/void alarm()if(clockbuf0=bellbuf0)&(clockbuf1=bellbuf1)buzzer=1;rtimbit=1;/設(shè)置鬧鐘計(jì)時(shí)標(biāo)志,時(shí)鐘將進(jìn)行10s計(jì)時(shí)標(biāo)志if(count=10)/判斷鬧鐘保持10s時(shí)間到否 count=0;/清除鬧鐘保持10s計(jì)時(shí) buzzer=0;/清除鬧鐘 armbit=0;/清鬧鐘標(biāo)志,否則鬧鐘設(shè)置將繼續(xù)有效 rtimbit=0;/*時(shí)鐘設(shè)置函數(shù)*/void ftion0()if(rhourbit=1|rtimbit=1|rtimdata=1)secbit=0;minbit=0;hourbit=0;timdata=0;else TR0=0; /關(guān)定時(shí)器dis_p=clockbuf;/將時(shí)鐘緩沖區(qū)首地址送顯示指針timdata+; /將時(shí)鐘修改記錄值加1switch(timdata)case 0x01:secbit=1;break;/記錄值為1,則將時(shí)鐘秒修改標(biāo)志置1case 0x02:secbit=0;minbit=1;break;/記錄值為2,則將時(shí)鐘分修改標(biāo)志置1case 0x03:minbit=0;hourbit=1;break;/記錄值3,則將時(shí)鐘時(shí)修改標(biāo)志置1case 0x04:timdata=0;hourbit=0;TR0=1;break;/按4次則清時(shí)鐘單元修改位置 /記錄,定時(shí)器重新開啟default:break; /*鬧鐘設(shè)置函數(shù)*/void ftion1()if(secbit=1|minbit=1|hourbit=1|timdata=1)rhourbit=0;rtimbit=0;rtimdata=0;elsedis_p=bellbuf;/設(shè)置鬧鐘顯示標(biāo)志rtimdata+;/將鬧鐘修改記錄值加1switch(rtimdata)case 0x01:rminbit=1;break;/記錄值為1,將鬧鐘分修改標(biāo)志置1case 0x02:rminbit=0;rhourbit=1;break; /記錄值為2,將時(shí)鐘分修改標(biāo)志置1case 0x03:rtimdata=0;rhourbit=0;/按3次則清鬧鐘單元修改位置記錄armbit=1; /設(shè)置鬧鐘已設(shè)置標(biāo)志位dis_p=clockbuf;/恢復(fù)時(shí)鐘顯示標(biāo)志break;default:break;/*加1修改功能函數(shù)*/void cum() if(secbit=1) /時(shí)鐘秒修改標(biāo)志為1,秒單元內(nèi)容加1if(clockbuf2=59) clockbuf2=0;else clockbuf2+;else if(minbit=1)/時(shí)鐘分修改標(biāo)志為1,分單元內(nèi)容加1if(clockbuf1=59) clockbuf1=0;else clockbuf1+;else if(hourbit=1) /時(shí)鐘小時(shí)修改標(biāo)志為1,小時(shí)單元內(nèi)容加1if(clockbuf0=23) cl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Delphi實(shí)例編程的實(shí)踐探討試題及答案
- C++應(yīng)用性能監(jiān)控的試題及答案
- 2025年江蘇省職業(yè)資格類考試導(dǎo)游資格證試題及答案解析
- 2025年財(cái)務(wù)成本管理備考要點(diǎn)試題及答案
- 2025年廣告設(shè)計(jì)師中級(jí)考試模擬:平面廣告創(chuàng)意與制作創(chuàng)新設(shè)計(jì)試題
- 2025年考研英語(yǔ)(一)翻譯長(zhǎng)難句專項(xiàng)提升卷(含答案與技巧)
- 2025年浙江省杭州市高中地理選修六單元綜合試卷
- 2025年小學(xué)教師資格教育教學(xué)知識(shí)與能力模擬試卷(含教育改革趨勢(shì))
- 護(hù)理臨床日記應(yīng)用與管理
- 秋冬養(yǎng)生護(hù)理宣教
- 視頻監(jiān)控介紹課件
- 2025年軟件測(cè)試工程師考試題及答案
- 血管內(nèi)導(dǎo)管相關(guān)性血流感染預(yù)防與診治指南(2025)解讀課件
- 2025年高考數(shù)學(xué)考前最后一課
- 茶葉加工考試題及答案
- 跨學(xué)科實(shí)踐制作微型密度計(jì)人教版物理八年級(jí)下學(xué)期
- 2025屆高考語(yǔ)文作文備考之審題立意30道選擇題訓(xùn)練(附答案)
- 21. 三黑和土地 課件
- 挖掘機(jī)理論試題及答案
- 2025年銀行從業(yè)資格考試個(gè)人理財(cái)真題卷權(quán)威解讀
- 興安盟2025年興安盟事業(yè)單位春季專項(xiàng)人才引進(jìn)30人筆試歷年參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論