畢業(yè)設計-基于單片機的交通信號燈模擬控制系統(tǒng)設計_第1頁
畢業(yè)設計-基于單片機的交通信號燈模擬控制系統(tǒng)設計_第2頁
畢業(yè)設計-基于單片機的交通信號燈模擬控制系統(tǒng)設計_第3頁
畢業(yè)設計-基于單片機的交通信號燈模擬控制系統(tǒng)設計_第4頁
畢業(yè)設計-基于單片機的交通信號燈模擬控制系統(tǒng)設計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機應用設計 交通信號燈模擬控制系統(tǒng)設計參賽學生季策 控制科學與工程學院沙躍 控制科學與工程學院黃佳敏 控制科學與工程學院亢延哲 控制科學與工程學院陳志恒 控制科學與工程學院2012年11月12日目 錄1、摘要32、方案論證比較 3 2.1、電源提供方案 3 2.2、數(shù)碼管驅動方案 3 2.3、顯示界面方案 32.4、按鍵輸入方案 43、 系統(tǒng)總體設計 4 3.1芯片的選擇 4 3.2系統(tǒng)設計與結構框圖 4 3.3電路設計 5 3.3.1時間顯示電路5 3.3.2交通燈電路 6 3.3.3按鍵控制電路74、 工作原理及軟件設計 75、 proteus仿真測試結果 86、 附錄(程序)101、

2、 摘要: 本系統(tǒng)由STC89C52單片機為控制器,以74hc595移位寄存器通過串行轉并行驅動兩個兩位數(shù)碼管顯示倒計時。系統(tǒng)包括紅、綠、黃燈顯示功能、LED數(shù)碼管顯示時間功能、控制與調時開關、通過鍵盤設置時間功能。 在車輛通行繁忙的十字交叉路口設置的交通燈控制系統(tǒng),其特點是:道路較窄而車流量較大,主干道,支干道的車輛通行時間不等,同時設有道路應急控制。具體的情況是:在正常的情況下,東西干道通行時間為40秒,南北干道通行時間為60秒,每個方向在綠燈轉為紅燈時,要求黃燈先亮5秒鐘,才能變換運行車道。由于各道路車流量不等,能通過手動按鍵控制各燈顯示時間。二、方案論證比較 2.1、電源提供方案 為使模

3、塊穩(wěn)定工作,須有可靠電源。我們考慮了兩種電源方案方案一:采用獨立的穩(wěn)壓電源。這個可以由8705組成的電源電路直接提供5V電壓,此方案的優(yōu)點是穩(wěn)定可靠,且有各種成熟電路可供選用;缺點是各模塊都采用獨立電源,會使系統(tǒng)復雜,且可能影響電路電平。方案二:采用單片機控制模塊提供電源。改方案的優(yōu)點是系統(tǒng)簡明扼要,節(jié)約成本;缺點是輸出功率不高。綜上所述,我們選擇第二種方案。2.2、數(shù)碼管驅動方案數(shù)碼管需要完成倒計時功能,分為東西和南北方向的倒計時,需要占用較多I/O口,為提高I/O口利用率,提出以下三種方案:方案一:用MAX7219串行轉并行,一個芯片即可控制兩個兩位數(shù)碼管,優(yōu)點是占有I/O口少,硬件連接簡

4、單,但是價格比較昂貴。方案二:數(shù)碼管段選和位選分別直接連接I/O口,優(yōu)點是電路簡單,很容易實現(xiàn)編程控制,缺點是占用過多I/O口,且電流過小,數(shù)碼管顯示不清晰。方案三:用74HC595移位寄存器驅動數(shù)碼管,優(yōu)點是以前接觸過,使用較方便,也能夠實現(xiàn)串行轉并行,占用I/O口也比較少。綜合自己的經(jīng)驗和學習情況,我們選擇了方案三。2.3 、顯示界面方案該系統(tǒng)要求完成倒計時、狀態(tài)燈等功能。方案一:完全采用數(shù)碼管顯示。這種方案只顯示有限的符號和數(shù)碼字苻,無法勝任題目要求。方案二:完全采用點陣式LED 顯示。這種方案實現(xiàn)復雜,且須完成大量的軟件工作;但功能強大,可方便的顯示各種英文字符,漢字,圖形等。方案三:

5、采用數(shù)碼管與點陣LED 相結合的方法因為設計既要求倒計時數(shù)字輸出,又要求有狀態(tài)燈輸出等,為方便觀看并考慮到現(xiàn)實情況,用數(shù)碼管與LED燈分別顯示時間與提示信息。這種方案既滿足系統(tǒng)功能要求,又減少了系統(tǒng)實現(xiàn)的復雜度。權衡利弊,第三種方案可互補一二方案的優(yōu)缺,我們決定采用方案三以實現(xiàn)系統(tǒng)的顯示功能。2.4、按鍵輸入方案題目要求系統(tǒng)能手動設燈亮時間,我們討論了兩種方案:方案一:使用矩陣鍵盤,可以在有限的I/O口上能夠由更多的按鍵控制,可以實現(xiàn)更多功能,但本設計不需要過多按鍵。方案二: 直接在IO口線上接上獨立按鍵開關。因為設計時精簡和優(yōu)化了電路,所以剩余的口資源還比較多,我們使用四個按鍵,分別是K1、

6、K2、K3、K4。由于該系統(tǒng)對于交通燈及數(shù)碼管的控制,只用單片機本身的I/O 口就可實現(xiàn),且本身的計數(shù)器及RAM已經(jīng)夠用,故選擇方案二3、 系統(tǒng)總體設計3.1芯片的選擇 我們選用的是AT89C51單片機,其包含中央處理器(CPU)、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線。 另外,我們在數(shù)碼管驅動方面選用了74595移位寄存器,大大的節(jié)省了I/O口,簡化了電路結構。3.2系統(tǒng)設計與結構框圖根據(jù)題目要求,本系統(tǒng)主要由數(shù)碼管顯示倒計時模塊、交通燈亮滅模塊,鍵盤控制模塊等構成南北方向 NS G Y R東西

7、方向 EW G Y R 系統(tǒng)控制電路 按鍵轉換3.3電路設計3.3.1時間顯示電路因為系統(tǒng)要求南北和東西方向的信號燈時間不一樣,所以就通過串轉并的移位寄存器74HC595輸出數(shù)據(jù)的段碼,位選信號用P2口送出,用動態(tài)掃描的方法顯示東西、南北的倒計時間。3.3.2交通燈電路本設計利用單片機的P1口來驅動和控制各種信號燈的燃亮和燃亮時間,在實際中,交通燈的信號燈需要用高電壓控制,在這里我們只是模擬一下它的控制信號,所以我們就只用單片機的信號引腳直接來控制發(fā)光二極管3.3.3按鍵控制電路按鍵電路設計共使用了4個獨立按鍵,其中有KEY3,KEY4分別連接在兩個外部中斷接口(INTO和INT1),按下按鍵

8、實現(xiàn)兩個外部中斷,用來處理緊急事故和切換到調節(jié)時間模式,另外兩個按鍵通過按下按鍵向I/O口輸送低電平,在調節(jié)時間模式實現(xiàn)時間的設置,在普通狀態(tài)下用來切換紅綠燈狀態(tài)。本設計通過外部中斷實現(xiàn)了一個按鍵兩種作用的功能。四、工作原理及軟件設計由軟件設置交通燈的初始時間,南北方向通行60秒,東西方向通行40秒,數(shù)碼管采用動態(tài)顯示,P2口送字位選通信號,通過74595實現(xiàn)段選控制,并通過單片機的P1口控制各種信號燈的燃亮與熄滅,采用中斷方式和按鍵掃描實現(xiàn)按鍵的功能。總體流程圖東西綠燈南北紅燈東西黃燈閃南北紅燈亮東西紅燈南北綠燈東西紅燈亮南北黃燈閃5、 proteus仿真測試結果為測試編程效果,我們利用pr

9、oteus軟件仿真效果如下:1.交通燈控制系統(tǒng)正常運行時仿真圖2交通燈控制系統(tǒng)緊急情況運行時仿真圖緊急情況下,數(shù)碼管顯示時間停止,所有方向的燈都顯示紅燈。3、仿真結果分析仿真實驗實現(xiàn)南北方向車道和東西方向車道兩條交叉道路的車輛交替運行,南北方向(主干道)每次通行時間設為30秒、東西方向通行時間設為20秒,時間可以在程序中修改。同時能夠實現(xiàn)紅燈、黃燈、綠燈狀態(tài)轉換,紅綠燈轉換時間為5秒,轉黃期間黃燈亮。可以準確顯示每個狀態(tài)所剩余的時間,按下禁行普通車輛鍵,東西南北方向都亮紅燈;按下南北放行鍵,南北綠燈亮,東西紅燈亮;按下東西放行鍵,東西綠燈亮,南北紅燈亮;任何時候按下返回鍵,此系統(tǒng)都將回到初始狀

10、態(tài),當緊急狀況出現(xiàn)時,按下緊急開關,可實現(xiàn)主干道和支干道全部禁止通行,允許緊急車輛安全通行。附:程序#include"reg51.h"#include"intrins.h"#define uchar unsigned char#define uint unsigned intvoid delay(uint z);void light(); /紅綠燈函數(shù)void keyscan();void smg();void send(uchar Data);/ 串行數(shù)據(jù)輸入void out(void); /并行輸出 uchar SN=10;WE=13;Y=3;SNg

11、=10;WEg=8;/SN為南北方向顯示時間,WE為東西方向顯示時間,WEg為東西綠燈時間 uchar num=0; state;/紅綠燈狀態(tài)標志uchar code lamp4=0xf3,0xeb,0xde,0xdd; /紅綠燈4種狀態(tài)uchar code duan10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; /LED編碼表uchar code wei4=0xfb,0xf7,0xfe,0xfd; /數(shù)碼管位選編碼sbit K1=P36; /開關K1接P36管腳sbit K3=P32; /開關K2接P33管腳,外部中斷0sbit K

12、2=P35; /開關K3接P35管腳sbit K4=P33; /開關K4接P32管腳,外部中斷1sbit w1=P24;/數(shù)碼管位選sbit w2=P25;sbit w3=P26;sbit w4=P27;sbit SEG=P20; /段選串行數(shù)據(jù)輸入sbit SHcp=P22; /移位時鐘脈沖sbit STcp=P23; /輸出鎖存器控制脈沖/*延時函數(shù)*/void delayms(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);/*數(shù)碼管顯示函數(shù)*/void smg() send(duanSN%10);w1=1;w2=0;w

13、3=1;w4=1;/顯示南北方向個位 delay(5); send(duanSN/10); w1=0;w2=1;w3=1;w4=1;/顯示南北方向十位*delay(5); send(duanWE%10);w1=1;w2=1;w3=1;w4=0;/顯示東西方向個位delay(5); send(duanWE/10);w1=1;w2=1;w3=0;w4=1;/顯示東西方向十位delay(5); /*74595接收數(shù)據(jù)函數(shù)*/void send(uchar Data) uchar i; for(i=0;i<8;i+) SHcp=0;SEG=Data&0x80;Data=Data<&

14、lt;1;SHcp=1; STcp=0; _nop_(); /短暫延時 _nop_(); /短暫延時 STcp=1; /*外部中斷0設置紅綠燈時間函數(shù) */void int0() interrupt 0 P1=0xeb;/紅綠燈東西南北都紅色 EA=0;/禁止相應一切中斷 while(1) send(duan(SNg+Y)%10); w1=1;w2=0;w3=1;w4=1;/顯示南北方向可通行時間個位 delay(5); send(duan(SNg+Y)/10);w1=0;w2=1;w3=1;w4=1;/顯示南北方向可通行時間十位delay(5); send(duan(WEg+Y)%10);w

15、1=1;w2=1;w3=1;w4=0;/顯示東西方向可通行時間個位delay(5); send(duan(WEg+Y)/10);w1=1;w2=1;w3=0;w4=1;/顯示東西方向可通行時間十位delay(5); /*設置南北方向通行時間*/ if(K1=0) delay(10); if(K1=0) while(!K1)/當松開K1開關時,跳出空循環(huán),執(zhí)行后面的程序 SNg+;/南北方向綠燈時間+1 if(SNg=100) SNg=0;/使用兩位數(shù)碼管,當南北方向綠燈時間加到100后清零 /*設置東西方向通行時間*/ if(K2=0) delay(10);/延時,把抖動的時間拋掉 if(K2

16、=0) while(!K2)/當松開K2開關時,跳出空循環(huán),執(zhí)行后面的程序 WEg+;/東西方向綠燈時間+1 if(WEg=100) WEg=0;/使用兩位數(shù)碼管,當東西方向綠燈時間加到100后清零 if(K3=0) delay(10);/延時,把抖動的時間拋掉 if(K3=0) while(!K3)/當松開K2開關時,跳出空循環(huán),執(zhí)行后面的程序 num=0; state=0; SN=SNg;WE=SNg+Y; smg(); /調用數(shù)碼管顯示函數(shù) light(); /調用紅綠燈函數(shù) EA=1; /開放總中斷 break; /跳出循環(huán) /*外部中斷1處理緊急情況(KEY4)*/void int1

17、() interrupt 2 P1=0xeb;/紅綠燈東西南北都紅色 EA=0;/禁止相應一切中斷 TR0=TR0; while(1) smg();if(K4=0) EA=1; TR0=TR0; break; /*鍵盤掃描函數(shù)*/void keyscan() / 通過按鍵人為控制紅綠燈切換 /* 切換到南北通行狀態(tài)*/ if(K1=0) delay(10); if(K1=0) while(!K1) /while中調用數(shù)碼管和紅綠燈函數(shù),保證在按鍵沒松開時交通燈照常工作 smg();/調用數(shù)碼管顯示函數(shù) light(); /調用紅綠燈函數(shù) num=0;/清零 state=0;/南北方向通車,東西

18、方向不通車狀態(tài) SN=SNg,WE=SNg+Y; /調整數(shù)碼管顯示時間 smg();/調用數(shù)碼管顯示函數(shù) light(); /調用紅綠燈函數(shù) /* 切換到東西通行狀態(tài)*/ if(K2=0) delay(10); if(K2=0) while(!K2) /while中調用數(shù)碼管和紅綠燈函數(shù),保證在按鍵沒松開時交通燈照常工作 smg();/調用數(shù)碼管顯示函數(shù) light(); /調用紅綠燈函數(shù) num=0;/清零 state=2;/東西方向通車狀態(tài) SN=WEg+Y;WE=WEg;/調整數(shù)碼管顯示時間 smg();/調用數(shù)碼管顯示函數(shù) light(); /調用紅綠燈函數(shù) /*初始化函數(shù)*/void init() TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; IT0=1;/外部中斷0為邊沿觸發(fā)方式 IT1=1;/外部中斷1為邊沿觸發(fā)方式 EA=0; ET1=1; ET0=1; TR0=1; EX0=1; EX1=1; P1=lamp1; void main()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論