- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
本设计由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显示东西南北灯显示参数,以及车流量参数。
程序如下:
#includereg52.h//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#includestdio.h
#include1602.h
#includedelay.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;
文档评论(0)