版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 緒 論</b></p><p><b> 摘要:</b></p><p> 單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器
2、等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。、</p><p> 電子鬧鐘是采用數(shù)字電路實(shí)現(xiàn)對.時(shí),分,秒.數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自
3、動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。數(shù)字鐘已成為人們?nèi)粘I钪校罕夭豢缮俚谋匦杵罚瑥V泛用于個(gè)人家庭以及車站、碼頭、劇場、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大的方便。由于數(shù)字集成電路技術(shù)的發(fā)展和采用了先進(jìn)的石英技術(shù),使數(shù)字鐘具有走時(shí)準(zhǔn)確、性能穩(wěn)定、攜帶方便等優(yōu)點(diǎn),它還用于計(jì)時(shí)自動(dòng)報(bào)時(shí)及自動(dòng)控制的領(lǐng)域。因此,研究數(shù)
4、字鐘及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實(shí)的意義。</p><p> 關(guān)鍵字:C52、單片機(jī)、定時(shí)鬧鐘、電子設(shè)計(jì)</p><p><b> 設(shè)計(jì)目的和要求</b></p><p> 1.1設(shè)計(jì)任務(wù):設(shè)計(jì)一個(gè)可控制的定時(shí)鬧鐘。</p><p><b> 1.2設(shè)計(jì)目的:</b></p>&l
5、t;p> 1.了解定時(shí)鬧鐘的組成及工作原理。</p><p> 2.進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)和工作原理。</p><p><b> 1.3設(shè)計(jì)要求:</b></p><p><b> A.基本要求:</b></p><p> 1).由晶振電路產(chǎn)生1HZ標(biāo)準(zhǔn)秒信號。</p&g
6、t;<p> 2).秒、分為00-59六十進(jìn)制計(jì)數(shù)器。</p><p> 3).時(shí)為00-23二十四進(jìn)制計(jì)數(shù)器。</p><p> 4).可手動(dòng)校正:能分別進(jìn)行秒、分、時(shí)的校正。只要將開關(guān)置于手動(dòng)位置,可分別對秒、分、時(shí)進(jìn)行連續(xù)脈沖輸入調(diào)整。</p><p> 5).當(dāng)時(shí)間到達(dá)鬧鐘設(shè)定時(shí)間時(shí),蜂鳴器發(fā)出報(bào)警聲。</p><p
7、><b> B.提高要求:</b></p><p> a).通過按鈕快速切換鬧鐘顯示。</p><p> b).通過計(jì)算機(jī)串口在PC上快速設(shè)定時(shí)間鬧鐘</p><p><b> c).整點(diǎn)報(bào)時(shí)。</b></p><p><b> 系統(tǒng)設(shè)計(jì)</b></p&g
8、t;<p><b> 2.1硬件系統(tǒng):</b></p><p> 2.1.1電源電路:</p><p> 電源是單片機(jī)系統(tǒng)的重要組成部分,它不僅為系統(tǒng)提供多路電壓源,還直接影響到系統(tǒng)的技術(shù)指標(biāo)和抗干擾性能。AT89C51單片機(jī)和一般的數(shù)字芯片一樣,都是5V電壓供電,所以可以共用一個(gè)5V電源。另外,為了提高電源的穩(wěn)定性,在離電源的最近處做好退耦處理,
9、即用一個(gè)47UF和一個(gè)10UF電容,以濾去干擾,保證電源的穩(wěn)定。</p><p> 2.1.2 AT89C51單片機(jī)</p><p> AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。</p><
10、;p> 使用時(shí)VCC接電源,GND接地。P0-P3可作為輸入或者輸出端口。RST接復(fù)位電路。</p><p><b> 2.1.3時(shí)鐘電路</b></p><p> 單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本系統(tǒng)中AT89C51單片機(jī)采用內(nèi)部時(shí)鐘方式。最常用的內(nèi)部時(shí)鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz~12
11、MHz之間。電容值無嚴(yán)格要求,但電容取值對振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF~100pF之間取值。</p><p><b> 單片機(jī)的時(shí)鐘產(chǎn)生</b></p><p><b> 、</b></p><p> 2.1.4數(shù)碼管顯示電路</p><p> 要
12、同時(shí)使得6個(gè)數(shù)碼管點(diǎn)亮,所需的IO口是很多的。為了節(jié)省單片機(jī)的IO口,通常采用動(dòng)態(tài)掃描的顯示方法,將每個(gè)數(shù)碼管的同名段連在一起,分6次向數(shù)碼管寫數(shù)據(jù),每次對6個(gè)數(shù)碼管寫相同的數(shù)據(jù),每次選通一個(gè)數(shù)碼管,完成掃描,通過調(diào)整、縮短掃描的時(shí)間,由于人眼的視覺暫留作用,使得人們看起來就像同時(shí)顯示一樣,以達(dá)到動(dòng)態(tài)顯示的目的.</p><p><b> 2.2設(shè)計(jì)原理</b></p>&l
13、t;p> 2.2.1 系統(tǒng)總體方案</p><p> 1)由于要顯示數(shù)字時(shí)間,所以需要6位數(shù)碼管。</p><p> 2)時(shí)間的定時(shí)用時(shí)鐘電路,修改時(shí)間和定時(shí)用手動(dòng)按鍵控制,報(bào)警聲通過喇叭發(fā)出。</p><p> 3)AT89S52單片機(jī)加上外圍器件(6個(gè)共陰數(shù)碼管,限流電阻和一個(gè)蜂鳴器)和應(yīng)用程序(KEIL編譯軟件),構(gòu)成相應(yīng)的應(yīng)用系統(tǒng)。</p
14、><p> 2.2.2 系統(tǒng)設(shè)計(jì)方框圖</p><p> 2.2.3 軟件設(shè)計(jì)流程</p><p><b> 實(shí)驗(yàn)結(jié)果和討論</b></p><p> 在確立了編程設(shè)計(jì)的基本思路后,我們開始查找相關(guān)的編程資料,然后采用C語言對軟件設(shè)計(jì)的要求進(jìn)行編譯。一開始進(jìn)展很慢,并且編程過程中出現(xiàn)個(gè)各種錯(cuò)誤,經(jīng)過大量時(shí)間的編譯與完
15、善,我們終于逐步完成定時(shí)鬧鐘的軟件設(shè)計(jì)過程。</p><p><b> 最終程序如下:</b></p><p> #include<reg51.h></p><p> #define uint unsigned int</p><p> #define uchar unsigned char</
16、p><p> uchar code shu[]={0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f}; //0~9</p><p> uchar code shu2[]={0xbf,0x86,0xdb,0xcf,</p&
17、gt;<p> 0xe6,0xed,0xfd,0x87,</p><p> 0xff,0xef}; //帶小數(shù)點(diǎn)0~9</p><p> uchar code wei[]={0xef,0xdf,0xbf,0x7f,0xf7,0xfb};//數(shù)碼管位選碼</p><p> uchar x[]={0,0,0,0};</p
18、><p> uchar y[]={0,0,0,0,0,0};</p><p> uint hour=12,min,sec,h=22,m=0;</p><p> uint a,s1=1,s2=1,s3=0,i=0,status=0,num=0,class=0;</p><p> bit flag=0;</p><p>
19、; sbit P3_7=P3^7;</p><p> void delay(uint t); </p><p> void keyprint(unsigned char key);</p><p> void display();</p><p> void timer0();</p><p> vo
20、id sint()interrupt 4 //串口中斷,實(shí)現(xiàn)PC上快速設(shè)定時(shí)間與鬧鐘</p><p><b> {</b></p><p><b> s3++;</b></p><p><b> s3=s3%4;</b></p><p> if(RI&&am
21、p;s3==1)</p><p><b> { </b></p><p><b> RI=0;</b></p><p> hour=SBUF;</p><p><b> }</b></p><p> if(RI&&s3==2)
22、</p><p><b> {</b></p><p><b> RI=0;</b></p><p><b> min=SBUF;</b></p><p><b> }</b></p><p> if(RI&&am
23、p;s3==3)</p><p><b> {</b></p><p><b> RI=0;</b></p><p><b> h=SBUF;</b></p><p><b> }</b></p><p> if(RI&a
24、mp;&s3==0)</p><p><b> {</b></p><p><b> RI=0;</b></p><p><b> m=SBUF;</b></p><p><b> }</b></p><p><
25、;b> if(!TI)</b></p><p><b> TI=0; </b></p><p><b> }</b></p><p> void delay(uint t) </p><p><b> {</b></p><
26、;p><b> uint i;</b></p><p> while(t--)</p><p> for(i=0;i<125;i++);</p><p><b> }</b></p><p> main() </p><p><b&
27、gt; { </b></p><p><b> uchar n;</b></p><p> uchar input;</p><p><b> n=0x0f;</b></p><p> TMOD=0x21; </p><p> TH0=(65
28、536-5000)/256; </p><p> TL0=(65536-5000)%256; </p><p><b> TH1=0xfd;</b></p><p><b> TL1=0xfd;</b></p><p> SCON=0x50; </p><p&
29、gt; PCON=0x00;</p><p><b> TR1=1;</b></p><p> IP=0x10; </p><p> TR0=1; </p><p> IE=0x92; //開定時(shí)器0,串口中斷</p><p> while(1)
30、 //鍵掃描程序 </p><p> { </p><p> input=P2&0x0f;</p><p> if(input!=0x0f&&s1==1) </p><p><b> { </b></p><p> d
31、elay(10);</p><p><b> s1=0;</b></p><p> if(input!=0x0f&&s2==1)</p><p><b> {</b></p><p> s2=0; //按住不放</p><p> n =
32、 input; //n用來暫時(shí)存放鍵值</p><p><b> }</b></p><p><b> }</b></p><p> if(input==0x0f&&s1==0)</p><p><b> {</b></p><
33、;p><b> s1=1; </b></p><p><b> s2=1;</b></p><p> keyprint(n);</p><p><b> n=0x0f;</b></p><p><b> }</b></p>&
34、lt;p> if((hour==h&&min==m)||(h!=0&&min==0)) </p><p><b> {</b></p><p> if(sec==0)</p><p><b> P3_7=0;</b></p><p> if(sec
35、==1)</p><p><b> P3_7=1;</b></p><p> if(sec==2)</p><p><b> P3_7=0;</b></p><p> if(sec==3)</p><p><b> P3_7=1;</b><
36、;/p><p> if(sec==4)</p><p><b> P3_7=0;</b></p><p> if(sec==5)</p><p><b> P3_7=1;</b></p><p><b> } </b></p>&
37、lt;p><b> else </b></p><p><b> P3_7=1;</b></p><p> if(h>=24) </p><p><b> h=0; </b></p><p> display();</p><p>
38、;<b> }</b></p><p><b> }</b></p><p> void keyprint(unsigned char key) //各個(gè)按鍵功能</p><p><b> { </b></p><p> if(key==0x0e)</p&g
39、t;<p><b> {</b></p><p><b> num++;</b></p><p> if(num==1) {class=1;}</p><p> if(num==2) {class=2;num=0;}</p><p><b> }</b&g
40、t;</p><p> if(key==0x0d)</p><p><b> {</b></p><p><b> status++;</b></p><p> if(status>=5)</p><p><b> status=0;</b&g
41、t;</p><p><b> }</b></p><p> if(key==0x0b)</p><p><b> {</b></p><p> if(status==1)</p><p><b> {</b></p><p
42、> if(min<59)min++;</p><p> else {min=0;hour++;}</p><p><b> }</b></p><p> if(status==2)</p><p><b> {</b></p><p> if(hou
43、r<23) hour++;</p><p> else hour=0;</p><p><b> }</b></p><p> if(status==3)</p><p><b> {</b></p><p> if(m<59)m++;</p&g
44、t;<p> else {m=0;h++;}</p><p><b> }</b></p><p> if(status==4)</p><p><b> {</b></p><p> if(h<23) h++;</p><p><b>
45、; else h=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void display() //數(shù)碼管數(shù)值顯示函數(shù)</p>
46、<p><b> {</b></p><p> uchar d=0;</p><p> if(class==1||class==0)</p><p><b> { </b></p><p> x[0]=hour/10; // 顯示時(shí)的十位</p>
47、<p> x[1]=hour%10; // 顯示時(shí)的個(gè)位</p><p> x[2]=min/10; // 顯示分的十位</p><p> x[3]=min%10; // 顯示分的個(gè)位</p><p> while(d<4)</p><p><b>
48、{</b></p><p> P2=wei[d];</p><p> P0=shu[x[d]];</p><p><b> delay(1);</b></p><p><b> d++;</b></p><p><b> }</b>
49、</p><p><b> }</b></p><p> else if(class==2)</p><p><b> {</b></p><p> y[0]=h/10; // 顯示時(shí)的十位</p><p> y[1]=h%10;
50、 // 顯示時(shí)的個(gè)位</p><p> y[2]=m/10; // 顯示分的十位</p><p> y[3]=m%10; // 顯示分的個(gè)位</p><p><b> d=0; </b></p><p> if(flag==0)// 每過0.5s小數(shù)
51、點(diǎn)閃爍一次</p><p><b> {</b></p><p> while(d<4)</p><p><b> {</b></p><p> P2=wei[d];</p><p> P0=shu2[y[d]];</p><p>&l
52、t;b> delay(1);</b></p><p><b> d++;</b></p><p><b> }</b></p><p><b> }</b></p><p> else if(flag==1)</p><p>
53、<b> {</b></p><p> while(d<4)</p><p><b> {</b></p><p> P2=wei[d];</p><p> P0=shu[y[d]];</p><p><b> delay(1);</b>
54、;</p><p><b> d++;</b></p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b
55、></p><p> void timer0() interrupt 1 //定時(shí)器0方式1中斷函數(shù)</p><p><b> { </b></p><p> uint count;</p><p> TH0=(65536-5000)/256; // 定時(shí)器0設(shè)置初始值1ms中斷初始值<
56、;/p><p> TL0=(65536-5000)%256; </p><p><b> TR0=1;</b></p><p> count++; //正常計(jì)時(shí)</p><p> if(count>=100) </p><p><b>
57、 {</b></p><p><b> flag=1;</b></p><p> if(count>=200) // 定時(shí) 1S 到,以下為時(shí)鐘的正常走鐘邏輯 </p><p><b> {</b></p><p><b> flag
58、=0;</b></p><p><b> count=0;</b></p><p><b> sec++;</b></p><p> if(sec>= 60)</p><p> { </p><p><b>
59、 sec=0;</b></p><p> min++; //秒到60分加一,秒清零</p><p><b> }</b></p><p> if(min>= 60) </p><p> { </p><p><b> min=0; &
60、lt;/b></p><p> hour++; //分到60時(shí)加一,分清零</p><p><b> }</b></p><p> if(hour>= 24) </p><p><b> { </b></p><p> hour=0; //時(shí)到
61、24立即變?yōu)?</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p><b> 結(jié)論</
62、b></p><p> 4.1本次課程設(shè)計(jì)的特點(diǎn):</p><p> 本次課程設(shè)計(jì)對單片機(jī)這么課程的知識原理要求比較高,具有一定的編程要求。設(shè)計(jì)出的定時(shí)鬧鐘比較貼近生活產(chǎn)品,實(shí)用性計(jì)較強(qiáng),因此達(dá)到了知識與實(shí)踐相結(jié)合,學(xué)以致用的目的。</p><p><b> 4.2主要貢獻(xiàn):</b></p><p> 讓我
63、們再一次深入了解了單片機(jī)的基本知識和原理,給予我們一定的單片機(jī)設(shè)計(jì)經(jīng)驗(yàn),強(qiáng)化了教學(xué)目標(biāo)。</p><p><b> 4.3心得與體會(huì):</b></p><p> 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。</p><p> 回顧起此次單片機(jī)課程設(shè)計(jì)
64、,我仍感慨頗多,學(xué)到了很多的東西。同時(shí)不僅鞏固了以前所學(xué)過的知識,而且還學(xué)到了很多在書本上所沒有學(xué)到過的知識。在實(shí)際設(shè)計(jì)中才發(fā)現(xiàn),書本上理論性的東西與在實(shí)際運(yùn)用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以前的錯(cuò)誤思維。一切問題必須要靠自己一點(diǎn)一滴的解決,而在解決的過程當(dāng)中你會(huì)發(fā)現(xiàn)自己在飛速的提升。對于單片機(jī)設(shè)計(jì),其硬件電路是比較簡單的,主要是解決程序設(shè)計(jì)中的問題,而程序設(shè)計(jì)是一個(gè)很靈活的東西,它反映了你解決問
65、題的邏輯思維和創(chuàng)新能力,它才是一個(gè)設(shè)計(jì)的靈魂所在。因此可以說單片機(jī)的設(shè)計(jì)是軟件和硬件的結(jié)合,二者是密不可分的。</p><p><b> 五.參考文獻(xiàn)</b></p><p> 【1】《C51單片機(jī)技術(shù)教程》 人民郵電出版社</p><p><b> ——田希輝、薛亮儒</b></p><p>
66、; 【2】《單片機(jī)應(yīng)用技術(shù)選編》 北京航空航天大學(xué)出版社</p><p><b> ——何立民</b></p><p><b> 六.附 錄:</b></p><p> 1.主要使用軟件:Keil C語言編寫軟件</p><p> Protues 仿真軟件</p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)定時(shí)鬧鐘課程設(shè)計(jì)
- 定時(shí)鬧鐘—單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)—定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)—定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--定時(shí)鬧鐘設(shè)計(jì)
- 課程設(shè)計(jì)--單片機(jī)定時(shí)鬧鐘設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)---定時(shí)鬧鐘的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——定時(shí)鬧鐘的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡單定時(shí)鬧鐘系統(tǒng)
- 基于單片機(jī)的定時(shí)鬧鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---- lcd電子定時(shí)鬧鐘設(shè)計(jì)
- c51單片機(jī)課程設(shè)計(jì)定時(shí)鬧鐘
- 單片機(jī)課程設(shè)計(jì)—帶有l(wèi)cd的定時(shí)鬧鐘
- 單片機(jī)課程設(shè)計(jì)--定時(shí)鬧鐘報(bào)告書
- 單片機(jī)課程設(shè)計(jì)--帶有l(wèi)cd顯示的定時(shí)鬧鐘
- 單片機(jī)課程設(shè)計(jì)(電子鬧鐘)
- 單片機(jī)定時(shí)鬧鐘論文
- 單片機(jī)課程設(shè)計(jì)--定時(shí)插座
評論
0/150
提交評論