




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)基于單片機(jī)的交通信號(hào)的燈控制系統(tǒng)一 綜合實(shí)訓(xùn)的主要內(nèi)容 1.設(shè)計(jì)任務(wù)設(shè)計(jì)一單片機(jī)控制的交通信號(hào)燈系統(tǒng),模擬城市十字路口交通信號(hào)燈功能。2.基本功能要求2.1 交通信號(hào)控制直行車道紅黃綠燈控制、左行車道綠燈控制、人行橫道紅綠燈控制。2.2 通行時(shí)間顯示數(shù)碼管倒計(jì)時(shí)顯示通行時(shí)間。2.3 時(shí)間參數(shù)設(shè)置存儲(chǔ)按鍵實(shí)現(xiàn)通行時(shí)間的設(shè)置,并存儲(chǔ)到eeprom(24c02)芯片中。二 硬件方案設(shè)計(jì)與論證1. 顯示模塊設(shè)計(jì)1.1倒計(jì)時(shí)時(shí)間顯示設(shè)計(jì)思想:由于該系統(tǒng)要求完成倒計(jì)時(shí)顯示通行時(shí)間的功能,且考慮到實(shí)際的交通系統(tǒng)中車輛及行人通行時(shí)間不會(huì)超過(guò)一分鐘,基于以上原因,我們考慮完全采用數(shù)碼管顯示,四個(gè)路口分別
2、采用一個(gè)二位共陰極數(shù)碼管進(jìn)行顯示。(其實(shí)物圖見附錄1圖5.3)共陰極共陽(yáng)極圖2.1 數(shù)碼管原理圖原理圖分析:為了顯示數(shù)字或字符,必須對(duì)數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管(a,b,c,d,e,f,g)加上一個(gè)小數(shù)點(diǎn)(dp),共計(jì)8段,構(gòu)成一個(gè)字節(jié),通過(guò)對(duì)這八段給予高低平使二極管導(dǎo)通或截止,從而顯示不同的數(shù)字或字符。系統(tǒng)中所使用的是2位共陰數(shù)碼管(實(shí)物圖見附錄),其管腳從左上方起順時(shí)針依次為1,a,b,e,d,2,g,f,dp,c。1.2 狀態(tài)燈顯示設(shè)計(jì)思想:由于該系統(tǒng)要求完成狀態(tài)燈顯示的功能,我們把各個(gè)路口的紅燈和黃燈設(shè)成直行和左拐兩個(gè)通行方式所共有,也就是說(shuō),一個(gè)路口只需四個(gè)狀態(tài)燈,一個(gè)直行通行的
3、綠燈,一個(gè)左拐通行的綠燈,一個(gè)共有的紅燈,一個(gè)共有的黃燈,人行橫道采用紅綠燈控制,綜上所述,我們共使用16個(gè)led綠燈,12個(gè)led紅燈,4個(gè)led黃燈來(lái)完成狀態(tài)燈顯示功能。2.控制模塊設(shè)計(jì)2.1 設(shè)計(jì)思想由于本系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)較容易,不需要大量的外圍擴(kuò)展,所以我們采用stc89c51單片機(jī)作為主控制器,stc89c51單片機(jī)具有體積小,功耗低,控制能力強(qiáng),價(jià)格低、擴(kuò)展靈活,使用方便等特點(diǎn),其最小系統(tǒng)由振蕩電路、復(fù)位電路構(gòu)成。2.2 最小系統(tǒng)原理圖圖2.2 單片機(jī)最小系統(tǒng)原理圖原理圖分析:51單片機(jī)最小系統(tǒng)由復(fù)位電路,振蕩電路組成。振蕩電路使用11.0592mz高精度晶振,振蕩電容選擇30p
4、f瓷片電容;復(fù)位電路采用rc電路。3.存儲(chǔ)模塊3.1 設(shè)計(jì)思想:系統(tǒng)掉電存儲(chǔ)模塊采用串行e2prom,它是基于iic總線的存儲(chǔ)器件,遵循二線制協(xié)議,其具有接口方便,體積小,數(shù)據(jù)掉電不丟失等特點(diǎn)。3.2 24c02芯片原理圖管腳描述 :a0a1a2引腳 器件地址選擇sda引腳 串行數(shù)據(jù)/地址scl引腳串行時(shí)鐘wp 寫保護(hù)vcc電源 1.86v vss 地4系統(tǒng)理論分析4.1交通燈顯示時(shí)序的理論分析依次循環(huán)共分4種狀態(tài):南北方向直行通行、南北方向左拐通行、東西方向直行通行,東西方向左拐通行。南北方向直行:南北段直行通行(綠燈)、東西段禁止(紅燈),,此時(shí),南北段人行道通行(綠燈),東西段人行道禁止
5、(紅燈),同時(shí)南北段和東西段方向的數(shù)碼管分別從20s和30s(加上南北段左拐時(shí)間)開始倒計(jì)時(shí),至最后5s時(shí)南北段綠燈變成黃燈閃爍;此后南北段左拐(左拐綠燈亮)通行、東西段禁止(紅燈)10s,南北段、東西段人行道都禁止(紅燈),同時(shí)南北段和東西段方向的數(shù)碼管都從10s開始倒計(jì)時(shí),至最后5s時(shí)南北段左拐燈變成黃燈閃爍;再后東西段直行通行(綠燈)、南北段禁止(紅燈),東西段人行道通行(綠燈),南北段人行道禁止(紅燈),同時(shí)東西段和南北段方向的數(shù)碼管分別從20s和30s開始倒計(jì)時(shí),至最后5s時(shí)東西段綠燈變成黃燈閃爍;最后東西段左拐(左拐燈亮)通行、南北段禁止(紅燈)10s,東西段、南北段人行道都禁止(
6、紅燈),同時(shí)東西段和南北段方向的數(shù)碼管都從10s開始倒計(jì)時(shí),至最后5s時(shí)東西段左拐燈變成黃燈閃爍,即完成一次循環(huán)。4.2 狀態(tài)切換系統(tǒng)中共設(shè)置了四種模式,分別為開始模式、延長(zhǎng)通行時(shí)間模式、減少左拐時(shí)間模式、急停模式,這幾種模式分別通過(guò)相應(yīng)的按鍵進(jìn)行切換。開始模式:直行20s,左拐10s;延長(zhǎng)通行時(shí)間模式:直行40s,左拐20s;減少左拐時(shí)間模式:直行40s,左拐10s急停模式:當(dāng)有緊急事故發(fā)生時(shí),所有指示燈全變成紅燈,禁止通行,數(shù)碼管顯示00.4.3倒計(jì)時(shí)顯示的具體實(shí)現(xiàn)利用定時(shí)器中斷,設(shè)置th0=th1(65536-50000)/256,即每0.05秒中斷一次。每到第20次中斷即過(guò)了20*0.
7、05秒1秒時(shí),使時(shí)間的計(jì)數(shù)值減1,便實(shí)現(xiàn)了倒計(jì)時(shí)的功能。4.4狀態(tài)燈顯示的實(shí)現(xiàn)方法黃燈閃爍利用定時(shí)器中斷。每到第10次中斷即過(guò)了10*0.05秒0.5秒時(shí),使黃燈標(biāo)志位反置,即可讓黃燈1秒閃爍一次。4.5 狀態(tài)切換的實(shí)現(xiàn)方法狀態(tài)切換在定時(shí)器中實(shí)現(xiàn),定時(shí)器每0.05秒中斷一次,完全可以檢測(cè)按鍵的發(fā)生??紤]到實(shí)際的交通系統(tǒng)不可能立即切換狀態(tài),程序一個(gè)周期內(nèi)檢測(cè)兩次狀態(tài),若在南北左拐前按鍵修改狀態(tài),則南北左拐結(jié)束后切換狀態(tài),若在南北左拐后修改狀態(tài),則在東西左拐后切換狀態(tài)。三 軟件編程1.程序流程圖開始南北直行通行東西禁止南北左拐通行東西禁止stc89c52初始化南北黃燈閃爍南北黃燈閃爍通行20秒yn
8、閃爍5秒yn通行10秒yn閃爍5秒yn東西黃燈閃爍東西直行通行南北禁止東西左拐通行南北禁止東西黃燈閃爍通行20秒yn閃爍5秒yn通行10秒yn閃爍5秒yn圖3.1 主程序流程圖t0響應(yīng)n南北黃燈標(biāo)志位為1n東西黃燈標(biāo)志位為1y0.5s到y(tǒng)1s到南北黃燈位置反團(tuán)里y東西黃燈位置反團(tuán)里y返回倒計(jì)時(shí)減1,計(jì)數(shù)值置0nn圖3.2 定時(shí)0中斷流程圖2.程序#include<reg52.h>#include"24c02.h"/*端口定義*/sbit ew_shuma2=p23; /ew方向低位數(shù)碼管控制位sbit ew_shuma1=p22; /ew方向高位數(shù)碼管控制位sb
9、it sn_shuma2=p21; /sn方向低位數(shù)碼管控制位sbit sn_shuma1=p20; /sn方向高位數(shù)碼管控制位sbit sn_yellow=p11; /sn黃燈sbit ew_yellow=p15; /ew黃燈sbit ew_mangreen=p27; /ew人行道綠燈sbit sn_mangreen=p24; /sn人行道綠燈sbit ew_manred=p26; /ew人行道紅燈sbit sn_manred=p25; /sn人行道紅燈sbit ew_red=p16; /ew直行道紅燈sbit sn_red=p12; /sn直行道紅燈sbit shezhi1=p30; /模
10、式設(shè)置鍵sbit shezhi2=p31; /模式設(shè)置鍵sbit stop1=p37; /緊急情況鍵bit flag_sn_yellow; /sn黃燈標(biāo)志位bit flag_ew_yellow; /ew黃燈標(biāo)志位char time_ew; /東西方向倒計(jì)時(shí)單元char time_sn; /南北方向倒計(jì)時(shí)單元uchar ew=30,sn=20,ewl=9,snl=9; /程序初始化賦值,正常模式uchar ew1=30,sn1=20,ewl1=9,snl1=9;uchar code table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
11、; /0-9段選碼uchar code state8=0xbe,0xbd,0xb7,0xbd,0xeb,0xdb,0x7b,0xdb;/*函數(shù)聲明*/void delay_ms(uint z);void shuma_display();void timer0_init();void state1();void state2();void state3();void state4();/*主函數(shù)*/void main()timer0_init();/定時(shí)器初始化ew1=read(10); /24c02讀操作sn1=read(11);ewl1=read(12);snl1=read(13);ew=e
12、w1;sn=sn1;ewl=ewl1;snl=snl1;/int_init();while(1) state1(); state2(); state3(); state4();/*延時(shí)函數(shù)*/*void delay_ms(uint z)uint x,y;for(x=120;x>0;x-)for(y=z;y>0;y-);*/*數(shù)碼管顯示函數(shù)*/ void shuma_display()uchar h,l;h=time_ew/10;l=time_ew%10; p0=tablel; ew_shuma2=0; /點(diǎn)亮ew_led2delay_ms(1);ew_shuma2=1; /熄滅ew
13、_led2p0=tableh;ew_shuma1=0; /點(diǎn)亮ew_led1delay_ms(1);ew_shuma1=1;h=time_sn/10;l=time_sn%10;p0=tablel;sn_shuma2=0; /點(diǎn)亮sn_led2delay_ms(1);sn_shuma2=1;p0=tableh;sn_shuma1=0; /點(diǎn)亮sn_led1delay_ms(1);sn_shuma1=1;/*模式函數(shù)*/void state1()/*sn通行sw禁止*/sn_manred=1;sn_mangreen=0; /sn人行道通行ew_manred=0;/ew人行道禁止ew_mangree
14、n=1;flag_sn_yellow=0; /sn關(guān)黃燈顯示信號(hào)flag_ew_yellow=0; /ew關(guān)黃燈顯示信號(hào)time_ew=ew;time_sn=sn;while(time_sn>=5) p1=state0;/sn綠燈,ew紅燈 shuma_display();p1=0xff;/關(guān)閉p1口所有燈while(time_sn>=0)flag_sn_yellow=1; /sn開黃燈信號(hào)位ew_red=0;/p1=p1 |0xb0; /保持ew紅燈shuma_display(); void state2() /*sn方向左拐狀態(tài)*/sn_manred=0; /sn人行道禁止sn
15、_mangreen=1;ew_manred=0; /ew人行道禁止ew_mangreen=1;flag_sn_yellow=0; /sn關(guān)黃燈顯示信號(hào)flag_ew_yellow=0; /ew關(guān)黃燈顯示信號(hào)time_sn=snl;time_ew=ewl;while(time_sn>=5)p1=state2; /sn左拐綠燈亮,ew紅燈shuma_display();p1=0xff; while(time_sn>=0)flag_sn_yellow=1;/sn開黃燈信號(hào)位 flag_ew_yellow=1; shuma_display(); void state3() /*賦值*/ew
16、=ew1;sn=sn1;ewl=ewl1;snl=snl1; /*sn禁止,ew通行狀態(tài)*/sn_manred=0; /sn人行道禁止sn_mangreen=1;ew_manred=1;ew_mangreen=0; /ew人行道通行flag_sn_yellow=0; /sn關(guān)黃燈顯示信號(hào)flag_ew_yellow=0;/ew關(guān)黃燈顯示信號(hào)time_ew=sn;time_sn=ew;while(time_ew>=5) p1=state4;/ew通行,sn紅燈 shuma_display();p1=0xff;while(time_ew>=0)flag_ew_yellow=1;/ew開
17、黃燈信號(hào)位sn_red=0;/p1=p1|0x0b; /保持sn紅燈shuma_display(); void state4() /*ew方向左拐狀態(tài)*/sn_manred=0; /sn人行道禁止sn_mangreen=1;ew_manred=0; /ew人行道禁止ew_mangreen=1;flag_sn_yellow=0; /sn關(guān)黃燈顯示信號(hào)flag_ew_yellow=0;/ew關(guān)黃燈顯示信號(hào)time_ew=ewl;while(time_ew>=5)p1=state6; /ew左拐綠燈亮,sn紅燈shuma_display();p1=0xff;while(time_ew>=
18、0)flag_ew_yellow=1; /en開黃燈信號(hào)位flag_sn_yellow=1;shuma_display();/*賦值*/ew=ew1;sn=sn1;ewl=ewl1;snl=snl1; /*定時(shí)器0初始化函數(shù)*/ void timer0_init()tmod=0x01; /定時(shí)器0工作方式1th0=(65536-10000)/256; /裝初值tl0=(65536-10000)%256;ea=1; /開總中斷et0=1;/開定時(shí)器0中斷tr0=1;/啟動(dòng)定時(shí)器/*定時(shí)器0服務(wù)中斷函數(shù)*/void timer() interrupt 1 uchar t; th0=(65536-5
19、0000)/256; tl0=(65536-50000)%256;t+;if(shezhi1=0)ew1=60;sn1=40;ewl1=19;snl1=19;write(10,60); /24c02寫操作write(11,40);write(12,19);write(13,19);if(shezhi2=0)ew1=50;sn1=40;ewl1=9;snl1=9;/write(10,60);/write(11,50);/write(12,9);/write(13,9);if(stop1=0)p0=table0;ew_shuma2=0;ew_shuma1=0;sn_shuma2=0;sn_shum
20、a1=0;p1=0xbb;ew_mangreen=1; sn_mangreen=1; ew_manred=0; sn_manred=0;while(1); if(t=10) if(flag_sn_yellow=1) /測(cè)試南北黃燈標(biāo)志位 sn_yellow=sn_yellow; if(flag_ew_yellow=1) /測(cè)試東西黃燈標(biāo)志位 ew_yellow=ew_yellow; if(t=20) time_ew-; time_sn-; if(flag_sn_yellow=1) /測(cè)試南北黃燈標(biāo)志位 sn_yellow=sn_yellow; if(flag_ew_yellow=1) /測(cè)試東
21、西黃燈標(biāo)志位 ew_yellow=ew_yellow; t=0;24c02的.h程序#defineuchar unsigned char#defineuint unsigned intsbit scl=p35;sbit sda=p36;/*函數(shù)聲明*/ void delay();void delay_ms(uint z);void init(void);void start();void stop();void ack();void noack();void write_byte(uchar dat);uchar read_byte(void);void write(uchar add,uch
22、ar dat);uchar read(uchar add);void delay()/短延時(shí),大約5us; ;void delay_ms(uint z)uint x,y;for(y=z;y>0;y-)for(x=120;x>0;x-);void init(void)sda=1;scl=1;void start() /啟動(dòng)信號(hào)sda=1;delay();scl=1;delay();/下降沿到來(lái)sda=0;delay();void stop() /停止信號(hào)sda=0;delay();scl=1;delay();sda=1;/上升沿到來(lái)delay();void ack() /應(yīng)答信號(hào)uc
23、har i;scl=1;delay();while(sda=1)&&(i<250) /等待應(yīng)答,用與語(yǔ)句防止一直不應(yīng)答 i+; scl=0; /若不應(yīng)答,也將時(shí)鐘拉低 delay();void noack()sda=1;delay();scl=1;delay();scl=0;delay();void write_byte(uchar dat)/寫字節(jié)uchar i;scl=0;for(i=0;i<8;i+)if(dat&0x80)sda=1;elsesda=0;dat=dat<<1;delay();scl=1;delay();scl=0;/為下一
24、次寫數(shù)據(jù)做準(zhǔn)備delay();sda=1; /釋放總線delay();uchar read_byte(void) /讀一個(gè)字節(jié)uchar i,dat;scl=0;delay(); sda=1;/釋放一次總線delay();for(i=0;i<8;i+) scl=1; delay(); dat=dat<<1; if(sda) dat+; scl=0; delay(); return dat;void write(uchar add,uchar dat) /在一個(gè)地址寫一個(gè)字節(jié)init();start();write_byte(0xa0);/寫器件地址ack();write_by
25、te(add);/單片機(jī)芯片地址ack();write_byte(dat);ack();stop(); delay_ms(30);uchar read(uchar add) /在一個(gè)地址讀一個(gè)字節(jié)uchar a;start();write_byte(0xa0);/寫器件地址ack();write_byte(add);ack();start();write_byte(0xa1);/寫器件地址ack();a=read_byte();noack();stop();return a;四 總結(jié)通過(guò)本次實(shí)訓(xùn),對(duì)已有知識(shí)有了更進(jìn)一步的理解和認(rèn)識(shí),在實(shí)訓(xùn)過(guò)程中,雖然碰到了很多的問(wèn)題,但通過(guò)查閱相關(guān)書籍、資料以及和周圍同學(xué)交流后都得以一一解決。此外,我還明白了學(xué)習(xí)的重要性,了解到理論知識(shí)與實(shí)踐相結(jié)合的重要意義,學(xué)會(huì)了堅(jiān)持、耐心和努力,這將為自己今后的學(xué)習(xí)和工作做出了最好的榜樣。作為一名電氣工程及其自動(dòng)化專業(yè)的學(xué)生,基于單片機(jī)的實(shí)訓(xùn)是很有意義的。更重要的是如何把自己平時(shí)所學(xué)的東西應(yīng)用到實(shí)際中去。本次實(shí)
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市托管班品牌授權(quán)與加盟合同
- 文化產(chǎn)品創(chuàng)意開發(fā)合同
- 工業(yè)管道清洗與維護(hù)預(yù)案
- 法律咨詢行業(yè)法律服務(wù)結(jié)果保證書
- 三農(nóng)行業(yè)三農(nóng)戶教育培訓(xùn)計(jì)劃
- 農(nóng)業(yè)種植養(yǎng)殖合同
- 智能圖書館管理系統(tǒng)供應(yīng)合同
- 大學(xué)語(yǔ)文辯論賽故事征文
- 高考語(yǔ)文復(fù)習(xí)-文言文專題訓(xùn)練《史記晉世家》
- 會(huì)議紀(jì)要與重要決策執(zhí)行情況跟蹤表
- 四川省建筑行業(yè)調(diào)研報(bào)告
- 北京市豐臺(tái)區(qū)2024-2025學(xué)年高三上學(xué)期期末英語(yǔ)試題
- 2025上海市嘉定工業(yè)區(qū)農(nóng)村青年干部招聘22人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025采購(gòu)部年度工作計(jì)劃
- 2024年度個(gè)人珠寶首飾分期購(gòu)買合同范本3篇
- 食為天:2024中國(guó)食品飲料行業(yè)白皮書
- 醫(yī)學(xué)倫理與醫(yī)患溝通技巧
- 2025年牛津譯林版英語(yǔ)七年級(jí)下冊(cè)全冊(cè)單元重點(diǎn)知識(shí)點(diǎn)與語(yǔ)法匯編
- 痔瘡中醫(yī)治療課件
- 污水處理設(shè)備的故障處理指南考核試卷
- 華東師范大學(xué)《社會(huì)研究方法》2023-2024學(xué)年第一學(xué)期期末試卷
評(píng)論
0/150
提交評(píng)論