基于51单片机的交通信号灯系统设计说明.docx

上传人:b****3 文档编号:5531047 上传时间:2023-05-08 格式:DOCX 页数:26 大小:277.56KB
下载 相关 举报
基于51单片机的交通信号灯系统设计说明.docx_第1页
第1页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第2页
第2页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第3页
第3页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第4页
第4页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第5页
第5页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第6页
第6页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第7页
第7页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第8页
第8页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第9页
第9页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第10页
第10页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第11页
第11页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第12页
第12页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第13页
第13页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第14页
第14页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第15页
第15页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第16页
第16页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第17页
第17页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第18页
第18页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第19页
第19页 / 共26页
基于51单片机的交通信号灯系统设计说明.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的交通信号灯系统设计说明.docx

《基于51单片机的交通信号灯系统设计说明.docx》由会员分享,可在线阅读,更多相关《基于51单片机的交通信号灯系统设计说明.docx(26页珍藏版)》请在冰点文库上搜索。

基于51单片机的交通信号灯系统设计说明.docx

基于基于51单片机的交通信号灯系统设计说明单片机的交通信号灯系统设计说明毕业设计基于单片机的交通信号的灯控制系统一综合实训的主要容1.设计任务设计一单片机控制的交通信号灯系统,模拟城市十字路口交通信号灯功能。

2.基本功能要求2.1交通信号控制直行车道红黄绿灯控制、左行车道绿灯控制、人行横道红绿灯控制。

2.2通行时间显示数码管倒计时显示通行时间。

2.3时间参数设置存储按键实现通行时间的设置,并存储到EEPROM(24C02)芯片中。

二硬件方案设计与论证1.显示模块设计1.1倒计时时间显示设计思想:

由于该系统要求完成倒计时显示通行时间的功能,且考虑到实际的交通系统中车辆与行人通行时间不会超过一分钟,基于以上原因,我们考虑完全采用数码管显示,四个路口分别采用一个二位共阴极数码管进行显示。

(其实物图见附录1图5.3)图2.1数码管原理图原理图分析:

为了显示数字或字符,必须对数字或字符进行编码。

七段数码管(a,b,c,d,e,f,g)加上一个小数点(dp),共计8段,构成一个字节,通过对这八段给予高低平使二极管导通或截止,从而显示不同的数字或字符。

系统中所使用的是2位共阴数码管(实物图见附录),其管脚从左上方起顺时针依次为1,a,b,e,d,2,g,f,dp,c。

1.2状态灯显示设计思想:

由于该系统要求完成状态灯显示的功能,我们把各个路口的红灯和黄灯设成直行和左拐两个通行方式所共有,也就是说,一个路口只需四个状态灯,一个直行通行的绿灯,一个左拐通行的绿灯,一个共有的红灯,一个共有的黄灯,人行横道采用红绿灯控制,综上所述,我们共使用16个LED绿灯,12个LED红灯,4个LED黄灯来完成状态灯显示功能。

2.控制模块设计2.1设计思想由于本系统结构简单,实现较容易,不需要大量的外围扩展,所以我们采用STC89C51单片机作为主控制器,STC89C51单片机具有体积小,功耗低,控制能力强,价格低、扩展灵活,使用方便等特点,其最小系统由振荡电路、复位电路构成。

2.2最小系统原理图图2.2单片机最小系统原理图原理图分析:

51单片机最小系统由复位电路,振荡电路组成。

振荡电路使用11.0592Mz高精度晶振,振荡电容选择30pF瓷片电容;复位电路采用RC电路。

3.存储模块3.1设计思想:

系统掉电存储模块采用串行E2PROM,它是基于IIC总线的存储器件,遵循二线制协议,其具有接口方便,体积小,数据掉电不丢失等特点。

3.224C02芯片原理图管脚描述:

A0A1A2引脚器件地址选择SDA引脚串行数据/地址SCL引脚串行时钟WP写保护VCC电源1.86VVSS地4系统理论分析4.1交通灯显示时序的理论分析依次循环共分4种状态:

南北方向直行通行、南北方向左拐通行、东西方向直行通行,东西方向左拐通行。

南北方向直行:

南北段直行通行(绿灯)、东西段禁止(红灯),,此时,南北段人行道通行(绿灯),东西段人行道禁止(红灯),同时南北段和东西段方向的数码管分别从20s和30s(加上南北段左拐时间)开始倒计时,至最后5s时南北段绿灯变成黄灯闪烁;此后南北段左拐(左拐绿灯亮)通行、东西段禁止(红灯)10s,南北段、东西段人行道都禁止(红灯),同时南北段和东西段方向的数码管都从10s开始倒计时,至最后5s时南北段左拐灯变成黄灯闪烁;再后东西段直行通行(绿灯)、南北段禁止(红灯),东西段人行道通行(绿灯),南北段人行道禁止(红灯),同时东西段和南北段方向的数码管分别从20s和30s开始倒计时,至最后5s时东西段绿灯变成黄灯闪烁;最后东西段左拐(左拐灯亮)通行、南北段禁止(红灯)10s,东西段、南北段人行道都禁止(红灯),同时东西段和南北段方向的数码管都从10s开始倒计时,至最后5s时东西段左拐灯变成黄灯闪烁,即完成一次循环。

4.2状态切换系统中共设置了四种模式,分别为开始模式、延长通行时间模式、减少左拐时间模式、急停模式,这几种模式分别通过相应的按键进行切换。

开始模式:

直行20s,左拐10s;延长通行时间模式:

直行40s,左拐20s;减少左拐时间模式:

直行40s,左拐10s急停模式:

当有紧急事故发生时,所有指示灯全变成红灯,禁止通行,数码管显示00.4.3倒计时显示的具体实现利用定时器中断,设置TH0=TH1(65536-50000)/256,即每0.05秒中断一次。

每到第20次中断即过了20*0.05秒1秒时,使时间的计数值减1,便实现了倒计时的功能。

4.4状态灯显示的实现方法黄灯闪烁利用定时器中断。

每到第10次中断即过了10*0.05秒0.5秒时,使黄灯标志位反置,即可让黄灯1秒闪烁一次。

4.5状态切换的实现方法状态切换在定时器中实现,定时器每0.05秒中断一次,完全可以检测按键的发生。

考虑到实际的交通系统不可能立即切换状态,程序一个周期检测两次状态,若在南北左拐前按键修改状态,则南北左拐结束后切换状态,若在南北左拐后修改状态,则在东西左拐后切换状态。

三软件编程1.程序流程图图3.1主程序流程图图3.2定时0中断流程图2.程序#include#include24C02.h/*端口定义*/sbitEW_ShuMa2=P23;/EW方向低位数码管控制位sbitEW_ShuMa1=P22;/EW方向高位数码管控制位sbitSN_ShuMa2=P21;/SN方向低位数码管控制位sbitSN_ShuMa1=P20;/SN方向高位数码管控制位sbitSN_Yellow=P11;/SN黄灯sbitEW_Yellow=P15;/EW黄灯sbitEW_ManGreen=P27;/EW人行道绿灯sbitSN_ManGreen=P24;/SN人行道绿灯sbitEW_ManRed=P26;/EW人行道红灯sbitSN_ManRed=P25;/SN人行道红灯sbitEW_Red=P16;/EW直行道红灯sbitSN_Red=P12;/SN直行道红灯sbitshezhi1=P30;/模式设置键sbitshezhi2=P31;/模式设置键sbitstop1=P37;/紧急情况键bitFlag_SN_Yellow;/SN黄灯标志位bitFlag_EW_Yellow;/EW黄灯标志位charTime_EW;/东西方向倒计时单元charTime_SN;/南北方向倒计时单元ucharEW=30,SN=20,EWL=9,SNL=9;/程序初始化赋值,正常模式ucharEW1=30,SN1=20,EWL1=9,SNL1=9;ucharcodetable10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/0-9段选码ucharcodeState8=0xBE,0xBD,0xB7,0xBD,0xEB,0xDB,0x7B,0xDB;/*函数声明*/voidDelay_ms(uintz);voidShuMa_Display();voidtimer0_init();voidstate1();voidstate2();voidstate3();voidstate4();/*主函数*/voidmain()timer0_init();/定时器初始化EW1=read(10);/24c02读操作SN1=read(11);EWL1=read(12);SNL1=read(13);EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;/Int_init();while

(1)state1();state2();state3();state4();/*延时函数*/*voidDelay_ms(uintz)uintx,y;for(x=120;x0;x-)for(y=z;y0;y-);*/*数码管显示函数*/voidShuMa_Display()ucharH,L;H=Time_EW/10;L=Time_EW%10;P0=tableL;EW_ShuMa2=0;/点亮EW_LED2Delay_ms

(1);EW_ShuMa2=1;/熄灭EW_LED2P0=tableH;EW_ShuMa1=0;/点亮EW_LED1Delay_ms

(1);EW_ShuMa1=1;H=Time_SN/10;L=Time_SN%10;P0=tableL;SN_ShuMa2=0;/点亮SN_LED2Delay_ms

(1);SN_ShuMa2=1;P0=tableH;SN_ShuMa1=0;/点亮SN_LED1Delay_ms

(1);SN_ShuMa1=1;/*模式函数*/voidstate1()/*SN通行SW禁止*/SN_ManRed=1;SN_ManGreen=0;/SN人行道通行EW_ManRed=0;/EW人行道禁止EW_ManGreen=1;Flag_SN_Yellow=0;/SN关黄灯显示信号Flag_EW_Yellow=0;/EW关黄灯显示信号Time_EW=EW;Time_SN=SN;while(Time_SN=5)P1=State0;/SN绿灯,EW红灯ShuMa_Display();P1=0xff;/关闭P1口所有灯while(Time_SN=0)Flag_SN_Yellow=1;/SN开黄灯信号位EW_Red=0;/P1=P1|0XB0;/保持EW红灯ShuMa_Display();voidstate2()/*SN方向左拐状态*/SN_ManRed=0;/SN人行道禁止SN_ManGreen=1;EW_ManRed=0;/EW人行道禁止EW_ManGreen=1;Flag_SN_Yellow=0;/SN关黄灯显示信号Flag_EW_Yellow=0;/EW关黄灯显示信号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开黄灯信号位Flag_EW_Yellow=1;ShuMa_Display();voidstate3()/*赋值*/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;/*SN禁止,EW通行状态*/SN_ManRed=0;/SN人行道禁止SN_ManGreen=1;EW_ManRed=1;EW_ManGreen=0;/EW人行道通行Flag_SN_Yellow=0;/SN关黄灯显示信号Flag_EW_Yellow=0;/EW关黄灯显示信号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开黄灯信号位SN_Red=0;/P1=P1|0x0B;/保持SN红灯ShuMa_Display();voidstate4()/*EW方向左拐状态*/SN_ManRed=0;/SN人行道禁止SN_ManGreen=1;EW_ManRed=0;/EW人行道禁止EW_ManGreen=1;Flag_SN_Yellow=0;/SN关黄灯显示信号Flag_EW_Yellow=0;/EW关黄灯显示信号Time_EW=EWL;while(Time_EW=5)P1=State6;/EW左拐绿灯亮,SN红灯ShuMa_Display();P1=0Xff;while(Time_EW=0)Flag_EW_Yellow=1;/EN开黄灯信号位Flag_SN_Yellow=1;ShuMa_Display();/*赋值*/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;/*定时器0初始化函数*/voidtimer0_init()TMOD=0x01;/定时器0工作方式1TH0=(65536-10000)/256;/装初值TL0=(65536-10000)%256;EA=1;/开总中断ET0=1;/开定时器0中断TR0=1;/启动定时器/*定时器0服务中断函数*/voidtimer()interrupt1uchart;TH0=(65536-50000)/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_ShuMa1=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)/测试南北黄灯标志位SN_Yellow=SN_Yellow;if(Flag_EW_Yellow=1)/测试东西黄灯标志位EW_Yellow=EW_Yellow;if(t=20)Time_EW-;Time_SN-;if(Flag_SN_Yellow=1)/测试南北黄灯标志位SN_Yellow=SN_Yellow;if(Flag_EW_Yellow=1)/测试东西黄灯标志位EW_Yellow=EW_Yellow;t=0;24c02的.h程序#defineucharunsignedchar#defineuintunsignedintsbitSCL=P35;sbitSDA=P36;/*函数声明*/voiddelay();voidDelay_ms(uintz);voidinit(void);voidstart();voidstop();voidack();voidnoack();voidwrite_byte(uchardat);ucharread_byte(void);voidwrite(ucharadd,uchardat);ucharread(ucharadd);voiddelay()/短延时,大约5us;voidDelay_ms(uintz)uintx,y;for(y=z;y0;y-)for(x=120;x0;x-);voidinit(void)SDA=1;SCL=1;voidstart()/启动信号SDA=1;delay();SCL=1;delay();/下降沿到来SDA=0;delay();voidstop()/停止信号SDA=0;delay();SCL=1;delay();SDA=1;/上升沿到来delay();voidack()/应答信号uchari;SCL=1;delay();while(SDA=1)&(i250)/等待应答,用与语句防止一直不应答i+;SCL=0;/若不应答,也将时钟拉低delay();voidnoack()SDA=1;delay();SCL=1;delay();SCL=0;delay();voidwrite_byte(uchardat)/写字节uchari;SCL=0;for(i=0;i8;i+)if(dat&0x80)SDA=1;elseSDA=0;dat=dat1;delay();SCL=1;delay();SCL=0;/为下一次写数据做准备delay();SDA=1;/释放总线delay();ucharread_byte(void)/读一个字节uchari,dat;SCL=0;delay();SDA=1;/释放一次总线delay();for(i=0;i8;i+)SCL=1;delay();dat=dat1;if(SDA)dat+;SCL=0;delay();returndat;voidwrite(ucharadd,uchardat)/在一个地址写一个字节init();start();write_byte(0xa0);/写器件地址ack();write_byte(add);/单片机芯片地址ack();write_byte(dat);ack();stop();Delay_ms(30);ucharread(ucharadd)/在一个地址读一个字节uchara;start();write_byte(0xa0);/写器件地址ack();write_byte(add);ack();start();write_byte(0xa1);/写器件地址ack();a=read_byte();noack();stop();returna;四总结通过本次实训,对已有知识有了更进一步的理解和认识,在实训过程中,虽然碰到了很多的问题,但通过查阅相关书籍、资料以与和周围同学交流后都得以一一解决。

此外,我还明白了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。

作为一名电气工程与其自动化专业的学生,基于单片机的实训是很有意义的。

更重要的是如何把自己平时所学的东西应用到实际中去。

本次实训反映的是一个从理论到实际应用的过程,但是更远一点可以联系到毕业之后从学校转到踏上社会的一个过程。

同学之间的配合相处,以与自身的动脑和努力,都是以后工作中需要的。

当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在单片机编程这方面有一个大的发展。

五附录附录11整体电路原理图图5.1整体电路原理图2.系统整体实物图图5.2系统整体实物图3.2位数码管实物图图5.32位数码管实物图附录2实验结果1首先,时南北段绿灯亮、东西段红灯亮,南北段人行道绿灯亮,东西段人行道红灯亮,同时南北段和东西段方向的数码管分别从20s和30s开始倒计时。

215秒后,南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯亮,人行道灯不变。

35秒闪烁后,南北方向左拐灯亮,东西方向红灯亮,东西和南北人行道全部红灯亮,同时南北段和东西段方向的数码管分别从10秒开始倒计时。

410秒后,南北方向的黄灯闪烁5秒,此时东西方向仍维持红灯亮,人行道灯不变。

55秒闪烁后,东西段绿灯亮、南北段红灯亮,东西段人行道绿灯亮,南北段人行道红灯亮,同时南北段和东西段方向的数码管分别从30s和20s开始倒计时。

6.15秒后,东西方向的黄灯闪烁5秒钟,此时南北方向仍维持红灯亮,人行道灯不变。

75秒后,东西方向左拐灯亮,南北方向红灯亮,东西和南北人行道全部红灯亮,同时南北段和东西段方向的数码管分别从10秒开始倒计时。

8之后,东西方向的黄灯闪烁5秒,此时南北方向仍维持红灯亮,人行道灯不变。

9.按下“按键1(左)”,所有指示灯全变成红灯,禁止通行,数码管显示00。

按下“按键2(中)”,直行40s,左拐10s。

按下“按键1(右)”,直行40s,左拐20s。

附录3元件清单名称数量单位STC89C52单片机1个2位数码管4个24C02芯片1片按键4个LED灯33个电阻36个瓷片电容(30Pf)2个导线若干个电解电容(10uF)1个排阻(8)1个插针若干个电路板1个铜柱4个

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2