版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于51單片機(jī)的燈光控制系統(tǒng)</p><p> 摘 要:本設(shè)計(jì)主要以ATMEL公司生產(chǎn)的AT89C52為核心處理器,利用其內(nèi)部的定時(shí)器進(jìn)行精確定時(shí),并通過(guò)74HC573鎖存器做驅(qū)動(dòng)通過(guò)I/O口在數(shù)碼管顯示時(shí)間,通過(guò)CPU檢測(cè)程序設(shè)定的時(shí)間,控制5v繼電器的通斷已達(dá)到控制照明器件的通斷。本系統(tǒng)還具有外部可調(diào)時(shí)間部分以便対誤差進(jìn)行修正,以及備用電源防止停電造成單片機(jī)復(fù)位,使下次來(lái)電時(shí)不能對(duì)程序
2、設(shè)定的時(shí)間進(jìn)行準(zhǔn)確響應(yīng)。本試驗(yàn)通過(guò)在研展YZ200單片實(shí)驗(yàn)箱上進(jìn)行硬件調(diào)試,用Keil uVision3進(jìn)行軟件的調(diào)試。通過(guò)調(diào)試仿真是單片機(jī)能精確地控制電源的通斷時(shí)間即照明設(shè)備的通斷時(shí)間,調(diào)試之后定時(shí)可以精確到秒。</p><p> 關(guān)鍵詞:AT89C52 定時(shí)器 仿真調(diào)試</p><p> 1 方案比較,設(shè)計(jì)與論證</p><p> 方案一:通過(guò)單片機(jī)內(nèi)部定
3、時(shí),不接外部顯示設(shè)備(數(shù)碼管)以及外部調(diào)整設(shè)備(獨(dú)立鍵盤)。只要單片機(jī)內(nèi)部定時(shí)器到程序設(shè)定的時(shí)間就控制繼電器的通斷,以達(dá)到控制照明設(shè)備通斷的目的,但存在誤差不能修正</p><p> 方案二:通過(guò)單片機(jī)控制數(shù)碼管把單片機(jī)內(nèi)部程序控制時(shí)間直觀的在數(shù)碼管上顯示出來(lái),在用三個(gè)獨(dú)立鍵盤來(lái)控制時(shí)間即便是出現(xiàn)誤差也可以通過(guò)鍵盤來(lái)調(diào)整,是誤差始終在容許范圍之內(nèi)已實(shí)現(xiàn)精確的定時(shí)。</p><p> 方
4、案一:不能直觀的顯示單片機(jī)內(nèi)部情況,而且對(duì)系統(tǒng)產(chǎn)生的誤差時(shí)間不能修正,雖說(shuō)可以通過(guò)仿真調(diào)試減小誤差短時(shí)間內(nèi)影響不是很大但是長(zhǎng)時(shí)間使用的話誤差還是很大的。 </p><p> 方案二:不但直觀地顯示了單片機(jī)內(nèi)部的情況,而且對(duì)系統(tǒng)經(jīng)過(guò)時(shí)間累積產(chǎn)生的誤差進(jìn)行修正,再加上仿真調(diào)試減小誤差,以達(dá)到定時(shí)精確到秒的要求。</p><p> 2 理論分析系統(tǒng)設(shè)計(jì)</p><p>
5、;<b> 2.1定時(shí)顯示模塊</b></p><p> 單片機(jī)時(shí)鐘產(chǎn)生方式有兩種,一是內(nèi)部時(shí)鐘方式(圖a),二是外部時(shí)鐘方式(圖b) ,內(nèi)部時(shí)鐘方式要在單片機(jī)的XTAL1和XTAL2引腳外接晶振即可。圖中電容器CI和C2的作用是穩(wěn)定頻率和快速起振,電容值在5~30pF,典型值為30pF。晶振CYS的振蕩頻率要小于12MHz,典型值為6MHz,12MHz或11.05926MHz。<
6、/p><p> 外部時(shí)鐘方式是把外部已有的時(shí)鐘信號(hào)引如單片機(jī)內(nèi),此方式多用于多片80C51單片機(jī)同時(shí)工作,并要求各單片機(jī)同步運(yùn)行的場(chǎng)所。本實(shí)驗(yàn)因?yàn)槭嵌〞r(shí)所以采用12MHz晶振。 </p><p> 圖a 圖b</p><p> 晶振周期為最小的時(shí)序單位,晶振信號(hào)經(jīng)分頻后形成兩相錯(cuò)開的信號(hào)P
7、1和P2。P1和P2的周期也稱為S狀態(tài),他是晶振周期的2倍,即一個(gè)S狀態(tài)包含2個(gè)晶振周期。在每個(gè)S狀態(tài)的前半周期,相位1(P1)信號(hào)有效;在每個(gè)S狀態(tài)的前后半周期,相位2(P2)信號(hào)有效;每個(gè)S狀態(tài)有兩個(gè)節(jié)拍(相),P1和P2,CPU以P1和P2為基本節(jié)拍指揮各個(gè)部件協(xié)調(diào)工作。晶振信號(hào)12分頻后形成機(jī)器周期,即一個(gè)機(jī)器周期包含12個(gè)晶蕩周期。</p><p> 這樣以來(lái)采用12MHZ晶振則機(jī)器周期為1us,本設(shè)
8、計(jì)用定時(shí)器0的定時(shí)方式1,即十六位,設(shè)定</p><p> ?。裕停希?0x01 </p><p> ?。裕龋?(65536-50000)/256</p><p> TL0=(65536-50000)%256 </p><p> 這樣定時(shí)時(shí)間為50ms,計(jì)數(shù)200次就是一秒。滿60秒則分鐘加1而秒清零,滿60分鐘時(shí)小時(shí)數(shù)加1分鐘清零,把
9、時(shí)分秒分成兩位分別在數(shù)碼管上顯示,顯示電路如下: </p><p> 本設(shè)計(jì)選用的數(shù)碼管是共陽(yáng)極的及圖中所示的com1到com4,而P00到P07則控制相應(yīng)的各段及圖中二極管的a,b,c,d,e,f,dp.分別送十六進(jìn)制顯示碼是不同的二極管發(fā)光已達(dá)到顯示不同數(shù)的目地,如要左邊第一個(gè)顯示顯示‘1’其他不顯示,則P1口要送0x80而P0口要送0xf9以此類推就可以顯示各數(shù)字了。本設(shè)計(jì)鎖存器74HC573主
10、要做驅(qū)動(dòng)使數(shù)碼管發(fā)光因?yàn)閱纹瑱C(jī)的驅(qū)動(dòng)能力很弱不能驅(qū)動(dòng)數(shù)碼管顯示,而顯示原理是數(shù)碼管動(dòng)態(tài)顯示原理,分別給每個(gè)數(shù)碼管送十六進(jìn)制顯示編碼,然后延時(shí)在給下一個(gè)數(shù)碼管送十六進(jìn)制顯示編碼,以此類推給八位送完后循環(huán)再送新的一組十六進(jìn)制編碼,使數(shù)碼掛動(dòng)態(tài)顯示時(shí)間。值得注意的是要在顯示過(guò)程中消隱,及送完一位后要給P0口送0xff,使數(shù)碼管短時(shí)熄滅(小于5ms),再給下一位送數(shù)顯示,以不影響下一位的顯示。使顯示更清晰以防出現(xiàn)亂碼。</p>&
11、lt;p><b> 2.2 鍵盤模塊</b></p><p> 本設(shè)計(jì)再用三個(gè)獨(dú)立鍵盤來(lái)控制數(shù)碼管的時(shí)分秒顯示,相應(yīng)按鍵按下后時(shí)分秒相對(duì)應(yīng)的加1,已達(dá)到調(diào)整時(shí)間的目的,更可以對(duì)內(nèi)部程序的時(shí)間進(jìn)行修正。使系統(tǒng)誤差也得到修正,這樣單片機(jī)就能更準(zhǔn)確地定時(shí)。但需要注意的是,按鍵按下時(shí)由于機(jī)械接觸點(diǎn)的彈性作用,按鍵在閉合時(shí)不會(huì)馬上接通,在斷開時(shí)也不會(huì)一下斷開。所以在閉合瞬間伴有一連串的抖動(dòng)
12、,抖動(dòng)時(shí)間長(zhǎng)短由按鍵的機(jī)械性及操作人員按鍵動(dòng)作決定,一般為5到20毫秒,按鍵穩(wěn)定閉合時(shí)間的長(zhǎng)短是有操作人員按鍵按壓時(shí)間長(zhǎng)短決定的,一般為零點(diǎn)幾秒至數(shù)秒不等。所以在程序中要用程序進(jìn)行延時(shí)消抖。</p><p> 按鍵原理是單片機(jī)上電后所有的IO口都是高電平,而當(dāng)按鍵按下后是單片機(jī)的IO口接地這樣一相應(yīng)的IO口就變成了低電平,只要通過(guò)單片機(jī)檢測(cè)接鍵盤的哪個(gè)IO口變成低電平就知道哪個(gè)鍵按下了,再通過(guò)相應(yīng)的程序控制顯示
13、時(shí)間達(dá)到修正時(shí)間的目的,本設(shè)計(jì)是當(dāng)按鍵按下時(shí),對(duì)應(yīng)的時(shí)分秒各自加1,使時(shí)間得到調(diào)整保持精確這樣定時(shí)時(shí)間就更加準(zhǔn)確,之所以加這個(gè)顯示電路和控制電路是因?yàn)閱纹瑱C(jī)自身執(zhí)行程序時(shí)要消耗時(shí)間,即便是經(jīng)過(guò)精確的調(diào)試修改延時(shí)等手段這個(gè)時(shí)間誤差總是存在的,隨所短時(shí)間內(nèi)影響不大但長(zhǎng)時(shí)間的工作后日積月累這個(gè)誤差當(dāng)然就不可忽視了。加這個(gè)電路后當(dāng)發(fā)現(xiàn)時(shí)間誤差在秒上時(shí)就可以修正了,讓時(shí)間更加精確,還有當(dāng)長(zhǎng)時(shí)間停電時(shí)備用電池電量耗完,如果沒(méi)這個(gè)電路當(dāng)再次來(lái)電時(shí)內(nèi)部
14、程序復(fù)位這樣定時(shí)就亂了,而加上這的電路后當(dāng)點(diǎn)來(lái)時(shí)就可以人工調(diào)整時(shí)間,時(shí)使用更加方便,定時(shí)更加精確。</p><p><b> 獨(dú)立鍵盤原理圖</b></p><p><b> 2.3繼電器模塊</b></p><p> 本設(shè)計(jì)采用的繼電器是5V繼電器,有電路圖可知當(dāng)通電時(shí)LED2點(diǎn)亮說(shuō)明繼電器模塊電源正常反之則沒(méi)有電
15、,而LED1的作用是當(dāng)開關(guān)三極管導(dǎo)通也就是說(shuō)繼電器工作時(shí)它點(diǎn)亮,而二極管D1的作用是當(dāng)繼電器斷電后,防止繼電器內(nèi)部的電磁感應(yīng)現(xiàn)象所產(chǎn)生的反向電動(dòng)勢(shì),對(duì)發(fā)光極管等造成損害。因?yàn)槠綍r(shí)D1是不導(dǎo)通的而當(dāng)繼電器產(chǎn)生反向電動(dòng)勢(shì)時(shí),產(chǎn)生的電動(dòng)勢(shì)就會(huì)經(jīng)過(guò)二極管形和繼電器本身形成通路,這樣就保護(hù)了整個(gè)電路中的器件。當(dāng)單片機(jī)輸出一個(gè)低電平時(shí)三極管導(dǎo)通,繼電器通電內(nèi)部就產(chǎn)生了磁場(chǎng)把開關(guān)K1通過(guò)磁力吸下使其與3閉合這樣使外部設(shè)備的電路接通達(dá)到了用低電壓控制高
16、壓的的目的。</p><p><b> 3 軟件設(shè)計(jì)</b></p><p><b> 程序如下:</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p>
17、uchar shi,shi1,shi2,fen,fen1,fen2,miao,miao1,miao2,num,tt,h,h1,h2,f,f1,f2,m,m1,m2;</p><p> uchar code table[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p> void display();</
18、p><p> void display1();</p><p> void keyscan1();</p><p> sbit s1=P3^0;</p><p> sbit s2=P3^1;</p><p> sbit s3=P3^2;</p><p> sbit s4=P3^3;<
19、;/p><p> sbit relay=P3^5;</p><p> void delay(uchar z)</p><p><b> {</b></p><p> uchar x,y;</p><p> for(x=z;x>0;x--)</p><p> f
20、or(y=110;y>0;y--);</p><p><b> }</b></p><p> void init()</p><p><b> {</b></p><p><b> shi=0;</b></p><p><b>
21、 fen=0;</b></p><p><b> miao=0;</b></p><p><b> tt=0;</b></p><p> TMOD=0x01;</p><p> TH0=(65536-49990)/256</p><p> TL0=(65
22、536-49990)%256</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> P3=0xff;</b></p>&
23、lt;p><b> }</b></p><p> void keyscan()</p><p><b> { </b></p><p><b> if(s1==0)</b></p><p><b> { </b><
24、/p><p> delay(5) ;</p><p><b> if(s1==0)</b></p><p><b> { </b></p><p><b> TR0=0;</b></p><p><b> shi++;</b
25、></p><p> if(shi==24)</p><p><b> shi=0;</b></p><p> while(!s1);</p><p><b> TR0=1;</b></p><p><b> }</b></p>
26、;<p> else display();</p><p> } </p><p><b> if(s2==0)</b></p><p><b> { </b></p><p><b> delay(5);</b></p&
27、gt;<p><b> if(s2==0)</b></p><p><b> {</b></p><p><b> TR0=0;</b></p><p><b> fen++;</b></p><p> if(fen==60)<
28、;/p><p><b> fen=0;</b></p><p> while(!s2);</p><p><b> TR0=1;</b></p><p><b> }</b></p><p> else display();</p>
29、<p><b> }</b></p><p><b> if(s3==0)</b></p><p><b> { </b></p><p><b> delay(5);</b></p><p><b> if(s3==0)&l
30、t;/b></p><p><b> {</b></p><p><b> EA=0;</b></p><p> TH0=(65536-49990)/256</p><p> TL0=(65536-49990)%256</p><p><b> mi
31、ao++;</b></p><p> if(miao==60)</p><p><b> miao=0;</b></p><p> while(!s3);</p><p><b> EA=1;</b></p><p><b> }</b&
32、gt;</p><p> else display();</p><p><b> }</b></p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><
33、p><b> init();</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> shi2=shi/10;</p><p> shi1=shi%10;</p><p>
34、fen2=fen/10;</p><p> fen1=fen%10;</p><p> miao2=miao/10;</p><p> miao1=miao%10;</p><p> keyscan();</p><p> display();</p><p><b> }
35、</b></p><p><b> }</b></p><p> void time() interrupt 1</p><p><b> { </b></p><p> TH0=(65536-49990)/256</p><p> TL0=(65536
36、-49990)%256</p><p><b> tt++;</b></p><p> if(tt==20)</p><p><b> {</b></p><p><b> tt=0; </b></p><p><b> miao
37、++;</b></p><p> if((shi==1)&(fen==1)&(miao==3))</p><p><b> relay=0;</b></p><p> if((shi==1)&(fen==1)&(miao==9))</p><p><b> r
38、elay=1;</b></p><p> if(miao==60)</p><p><b> {</b></p><p><b> miao=0;</b></p><p><b> fen++;</b></p><p> if(fe
39、n==60)</p><p><b> {</b></p><p><b> fen=0;</b></p><p><b> shi++;</b></p><p> if(shi==24)</p><p><b> shi=0;<
40、;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void display()<
41、/p><p><b> {</b></p><p><b> P1=0x01;</b></p><p> P0=table[miao1];</p><p><b> delay(5);</b></p><p><b> P0=0xff;&
42、lt;/b></p><p><b> P1=0x02;</b></p><p> P0=table[miao2];</p><p><b> delay(5);</b></p><p><b> P0=0xff;</b></p><p>
43、<b> P1=0x04;</b></p><p> P0=0xbf; //送間隔符</p><p><b> delay(5);</b></p><p><b> P0=0xff;</b></p><p><b> P1=0x08;</b>
44、;</p><p> P0=table[fen1];</p><p><b> delay(5);</b></p><p><b> P0=0xff;</b></p><p><b> P1=0x10;</b></p><p> P0=tabl
45、e[fen2];</p><p><b> delay(5);</b></p><p><b> P0=0xff;</b></p><p><b> P1=0x20;</b></p><p> P0=0xbf; //送間隔符</p><p&g
46、t;<b> delay(5);</b></p><p><b> P0=0xff;</b></p><p><b> P1=0x40;</b></p><p> P0=table[shi1];</p><p><b> delay(5);</b>
47、;</p><p><b> P0=0xff;</b></p><p><b> P1=0x80;</b></p><p> P0=table[shi2];</p><p><b> delay(5);</b></p><p><b>
48、 P0=0xff;</b></p><p><b> }</b></p><p><b> 4仿真調(diào)試</b></p><p> 本設(shè)計(jì)主要通過(guò)對(duì)定時(shí)時(shí)間進(jìn)行調(diào)試,已達(dá)到精確定時(shí)的目的。仿真工具是Keil uVision3,當(dāng)給定時(shí)器T0分別裝TH0=(65536-50000)/256, TH0=(65
49、536-50000)%256;調(diào)試結(jié)果如下圖:</p><p> 則每分鐘的誤差=0.01289400秒; 每小時(shí)誤差=0.74915800秒;</p><p> 24小時(shí)誤差= 24*0.7491588=17.9798112秒; </p><p> 最終調(diào)試后當(dāng)給TH0=(65536-49983)/256; TL0=(65536-49983)%256
50、;</p><p> 則每分鐘的誤差=0.000113秒; 每小時(shí)誤差=0.031233秒;</p><p> 24小時(shí)誤差=224*0.031233=0.749592秒;</p><p><b> 如下圖所示:</b></p><p><b> 參考文獻(xiàn):</b></p>&
51、lt;p> 李全利,單片機(jī)原理及接口技術(shù)【M】2版。高等教育出版社,2009.</p><p> 孫煥名,趙會(huì)成,王金,51單片機(jī)C程序應(yīng)用實(shí)例詳解【M】。北京航空航天大學(xué)出版社,2011.3</p><p> 趙建領(lǐng),薛圓圓,零基礎(chǔ)學(xué)單片機(jī)C語(yǔ)言程序設(shè)計(jì)【M】。機(jī)械工業(yè)出版社,2009.4</p><p> 郭天祥,新概念51單片機(jī)C語(yǔ)言教程 ——入
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)控制的遙控?zé)艄饪刂葡到y(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于at89s51單片機(jī)的教室燈光智能控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----基于at89s51單片機(jī)的教室燈光智能控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)基于51單片機(jī)的定時(shí)控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89s51單片機(jī)的教室燈光智能控制系統(tǒng)設(shè)計(jì)
- 基于51單片機(jī)的模擬電梯控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于at89s51單片機(jī)的教室燈光智能控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)(論文)
- 畢業(yè)設(shè)計(jì)---基于80c51單片機(jī)水箱控制系統(tǒng)
- 基于51單片機(jī)的簡(jiǎn)易汽車防撞控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- mcs51單片機(jī)溫度控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)路燈控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--mcs-51單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于at89c51單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89s51單片機(jī)的教室燈光智能控制
- 畢業(yè)設(shè)計(jì)-基于51單片機(jī)的紅外遙控電風(fēng)扇控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)51單片機(jī)溫度測(cè)量與控制系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89s51單片機(jī)的教室燈光智能控制
評(píng)論
0/150
提交評(píng)論