十字路口智能交通灯的控制方案_第1页
十字路口智能交通灯的控制方案_第2页
十字路口智能交通灯的控制方案_第3页
十字路口智能交通灯的控制方案_第4页
十字路口智能交通灯的控制方案_第5页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本设计由STC89C52单片机电路+LED灯指示电路+红外避障传感器电路+LCD1602显示+电源电路组成。1、道路为东西南北走向的十字路口,每条马路各有2套红绿灯,即红、黄、绿。2、系统正常模式下,均为红灯亮10秒,然后黄灯亮3秒,然后绿灯亮10秒,并依次循环。(同一时刻,每套红绿灯系统只有1个灯亮)3、在南北方向的马路增加1路红外避障检测,如果南北绿灯情况下,检测到车辆过多以5个位例,达到5个,绿灯延时10s,对应东西红灯相应延时10s。保证南北绿灯时间延长,通车多,防止堵车。4、在东西方向的马路增加1路红外避障检测,如果东西绿灯情况下,检测到车辆过多以5个位例,达到5个,绿灯延时10s,对应南北红灯相应延时10s。保证东西绿灯时间延长,通车多,防止堵车。5、每次绿灯,人数过多只能延时一次,否则影响另一方向车道行驶,延时10s后,继续正常红绿灯处理。6、增加1602显示东西南北灯显示参数,以及车流量参数。程序如下:#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; //运行阶段计数unsignedchardisFlag=1;//显示标志unsignedlongtime20ms=0;//定时时间unsignedintPluNum1=0; //脉冲量unsignedintPluNum2=0; //脉冲量bitfirstAdd_ns=0; //加时标志bitfirstAdd_ew=0;chardis0[16]; //显示更新暂存voidInit_Timer0(void); //喊数声明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);//延时有助于稳定 LCD_Clear();//清屏 sprintf(dis0,"|R%02dY%02dG%02dl%02d",ns_red_Num,ns_yel_Num,ns_gre_Num,PluNum1);//打印数据 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; //交通灯第一步南北绿灯东西红灯数据填充 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)//主循环 { if(disFlag==1) { sprintf(dis0,"|R%02dY%02dG%02dl%02d",ns_red_Num,ns_yel_Num,ns_gre_Num,PluNum1);//打印数据 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); //显示 disFlag=0; } if(ns_gre_Num>0)//任何灯指示数据和指示灯匹配显示 {ns_GREEN1=0;} else { ns_GREEN1=1; PluNum1=0;//非南北红绿灯时不计数 } if(ns_yel_Num>0)//任何灯指示数据和指示灯匹配显示 {ns_YELLOW1=0;} else {ns_YELLOW1=1;} if(ns_red_Num>0)//任何灯指示数据和指示灯匹配显示 {ns_RED1=0;} else {ns_RED1=1;} if(ew_gre_Num>0)//任何灯指示数据和指示灯匹配显示 {ew_GREEN=0;} else {ew_GREEN=1;PluNum2=0;} if(ew_yel_Num>0) //任何灯指示数据和指示灯匹配显示 {ew_YELLOW=0;} else {ew_YELLOW=1;} if(ew_red_Num>0)//任何灯指示数据和指示灯匹配显示 {ew_RED=0;} else {ew_RED=1;} }}voidISR_Key(void)interrupt0using1{ if(ns_gre_Num>0) { PluNum1++; if((PluNum1>5)&&(firstAdd_ns==0)) //南北绿灯时检测数量超过5 { ns_gre_Num=ns_gre_Num+10; //相应参数+10 ew_red_Num=ew_red_Num+10; firstAdd_ns=1; //一个循环只允许进来一次 } } }voidint1()interrupt2{ if(ew_gre_Num>0) { PluNum2++; if((PluNum2>5)&&(firstAdd_ew==0)) //南北绿灯时检测数量超过5 { ns_red_Num=ns_red_Num+10; //相应参数+10 ew_gre_Num=ew_gre_Num+10; firstAdd_ew=1; //一个循环只允许进来一次 } }}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) //交通灯第二步南北指示灯东西指示灯数据填充 { 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) //交通灯第三步南北指示灯东西指示灯数据填充 { 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)//交通灯第三步南北指示灯东西指示灯数据填充 { 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论