十字路口智能交通燈的控制方案_第1頁
十字路口智能交通燈的控制方案_第2頁
十字路口智能交通燈的控制方案_第3頁
十字路口智能交通燈的控制方案_第4頁
十字路口智能交通燈的控制方案_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本設計由STC89C52單片機電路+LED燈指示電路+紅外避障傳感器電路+LCD1602顯示+電源電路組成。1、道路為東西南北走向的十字路口,每條馬路各有2套紅綠燈,即紅、黃、綠。2、系統(tǒng)正常模式下,均為紅燈亮10秒,然后黃燈亮3秒,然后綠燈亮10秒,并依次循環(huán)。(同一時刻,每套紅綠燈系統(tǒng)只有1個燈亮)3、在南北方向的馬路增加1路紅外避障檢測,如果南北綠燈情況下,檢測到車輛過多以5個位例,達到5個,綠燈延時10s,對應東西紅燈相應延時10s。保證南北綠燈時間延長,通車多,防止堵車。4、在東西方向的馬路增加1路紅外避障檢測,如果東西綠燈情況下,檢測到車輛過多以5個位例,達到5個,綠燈延時10s,對應南北紅燈相應延時10s。保證東西綠燈時間延長,通車多,防止堵車。5、每次綠燈,人數(shù)過多只能延時一次,否則影響另一方向車道行駛,延時10s后,繼續(xù)正常紅綠燈處理。6、增加1602顯示東西南北燈顯示參數(shù),以及車流量參數(shù)。程序如下:#include<reg52.h>//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#include<stdio.h>#include"1602.h"#include"delay.h"sbitew_GREEN=P1^0; //管腳定義sbitew_YELLOW=P1^1;sbitew_RED=P1^2;sbitns_GREEN1=P1^3;sbitns_YELLOW1=P1^4;sbitns_RED1=P1^5;unsignedintns_gre_Num=10;//南北綠燈時間unsignedintns_yel_Num=0;//南北黃燈時間unsignedintns_red_Num=0;//南北紅燈時間unsignedintew_gre_Num=0; //東西綠燈時間unsignedintew_yel_Num=0; //東西黃燈時間unsignedintew_red_Num=13; //東西紅燈時間unsignedcharstep=1; //運行階段計數(shù)unsignedchardisFlag=1;//顯示標志unsignedlongtime20ms=0;//定時時間unsignedintPluNum1=0; //脈沖量unsignedintPluNum2=0; //脈沖量bitfirstAdd_ns=0; //加時標志bitfirstAdd_ew=0;chardis0[16]; //顯示更新暫存voidInit_Timer0(void); //喊數(shù)聲明voiddealLed(void);voidmain(void){ EX0=1; //允許外部中斷0中斷 EX1=1; //允許外部中斷0中斷 IT0=1; //外部中斷0負跳變中斷 IT1=1; //外部中斷0負跳變中斷 EA=1; //開總中斷 ew_GREEN=0; //初始化燈亮一下方便檢測 ew_YELLOW=0; ew_RED=0; ns_GREEN1=0; ns_YELLOW1=0; ns_RED1=0; DelayMs(200); ew_GREEN=1; //初始化燈亮一下方便檢測 ew_YELLOW=1; ew_RED=1; ns_GREEN1=1; ns_YELLOW1=1; ns_RED1=1; Init_Timer0();//定時器0初始化 LCD_Init();//初始化液晶 DelayMs(20);//延時有助于穩(wěn)定 LCD_Clear();//清屏 sprintf(dis0,"|R%02dY%02dG%02dl%02d",ns_red_Num,ns_yel_Num,ns_gre_Num,PluNum1);//打印數(shù)據(jù) LCD_Write_String(0,0,dis0); //顯示 sprintf(dis0,"-R%02dY%02dG%02dr%02d",ew_red_Num,ew_yel_Num,ew_gre_Num,PluNum2); LCD_Write_String(0,1,dis0); //顯示 step=1; //交通燈第一步南北綠燈東西紅燈數(shù)據(jù)填充 ns_gre_Num=10; ns_yel_Num=0; ns_red_Num=0; ew_gre_Num=0; ew_yel_Num=0; ew_red_Num=13; firstAdd_ns=0;firstAdd_ew=0;//加時標志 while(1)//主循環(huán) { if(disFlag==1) { sprintf(dis0,"|R%02dY%02dG%02dl%02d",ns_red_Num,ns_yel_Num,ns_gre_Num,PluNum1);//打印數(shù)據(jù) LCD_Write_String(0,0,dis0); //顯示 sprintf(dis0,"-R%02dY%02dG%02dr%02d",ew_red_Num,ew_yel_Num,ew_gre_Num,PluNum2);//打印數(shù)據(jù) LCD_Write_String(0,1,dis0); //顯示 disFlag=0; } if(ns_gre_Num>0)//任何燈指示數(shù)據(jù)和指示燈匹配顯示 {ns_GREEN1=0;} else { ns_GREEN1=1; PluNum1=0;//非南北紅綠燈時不計數(shù) } if(ns_yel_Num>0)//任何燈指示數(shù)據(jù)和指示燈匹配顯示 {ns_YELLOW1=0;} else {ns_YELLOW1=1;} if(ns_red_Num>0)//任何燈指示數(shù)據(jù)和指示燈匹配顯示 {ns_RED1=0;} else {ns_RED1=1;} if(ew_gre_Num>0)//任何燈指示數(shù)據(jù)和指示燈匹配顯示 {ew_GREEN=0;} else {ew_GREEN=1;PluNum2=0;} if(ew_yel_Num>0) //任何燈指示數(shù)據(jù)和指示燈匹配顯示 {ew_YELLOW=0;} else {ew_YELLOW=1;} if(ew_red_Num>0)//任何燈指示數(shù)據(jù)和指示燈匹配顯示 {ew_RED=0;} else {ew_RED=1;} }}voidISR_Key(void)interrupt0using1{ if(ns_gre_Num>0) { PluNum1++; if((PluNum1>5)&&(firstAdd_ns==0)) //南北綠燈時檢測數(shù)量超過5 { ns_gre_Num=ns_gre_Num+10; //相應參數(shù)+10 ew_red_Num=ew_red_Num+10; firstAdd_ns=1; //一個循環(huán)只允許進來一次 } } }voidint1()interrupt2{ if(ew_gre_Num>0) { PluNum2++; if((PluNum2>5)&&(firstAdd_ew==0)) //南北綠燈時檢測數(shù)量超過5 { ns_red_Num=ns_red_Num+10; //相應參數(shù)+10 ew_gre_Num=ew_gre_Num+10; firstAdd_ew=1; //一個循環(huán)只允許進來一次 } }}voidInit_Timer0(void){ TMOD|=0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響 TH0=(65536-20000)/256; //重新賦值20ms TL0=(65536-20000)%256; EA=1;//總中斷打開 ET0=1;//定時器中斷打開 TR0=1;//定時器開關打開}voidTimer0_isr(void)interrupt1{ TH0=(65536-20000)/256; //重新賦值20ms TL0=(65536-20000)%256; time20ms++; if(time20ms%10==0) {disFlag=1;} if(time20ms%50==0) { if(step==1) { if(ns_gre_Num>0)//交通燈第一步南北指示燈東西指示燈時間處理 { ns_gre_Num--; ew_red_Num--; } if(ns_gre_Num==0) //交通燈第二步南北指示燈東西指示燈數(shù)據(jù)填充 { step=2; ns_gre_Num=0; ns_yel_Num=3; ns_red_Num=0; } } elseif(step==2) { if(ns_yel_Num>0)//交通燈第二步南北指示燈東西指示燈時間處理 { ns_yel_Num--; ew_red_Num--; } if(ns_yel_Num==0) //交通燈第三步南北指示燈東西指示燈數(shù)據(jù)填充 { step=3; ns_gre_Num=0; ns_yel_Num=0; ns_red_Num=13; ew_gre_Num=10; ew_yel_Num=0; ew_red_Num=0; firstAdd_ew=0; } } elseif(step==3) { if(ew_gre_Num>0) { ew_gre_Num--; ns_red_Num--; } if(ew_gre_Num==0)//交通燈第三步南北指示燈東西指示燈數(shù)據(jù)填充 { step=4; ew_gre_Num=0; ew_yel_Num=3; ew_red_Num=0; } } elseif(step==4) { if(ew_yel_Num>0) {

溫馨提示

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

評論

0/150

提交評論