智能交通灯作品Word格式.docx
《智能交通灯作品Word格式.docx》由会员分享,可在线阅读,更多相关《智能交通灯作品Word格式.docx(38页珍藏版)》请在冰豆网上搜索。
4.6倒计时时间切换14
4.7红绿灯显示15
4.8倒计时数码管显示16
4.9液晶屏显示17
五软硬件联合调试18
5.1传感器调试18
5.2.交通灯电路的调试18
5.3系统总调试18
5.4结果分析19
六结论19
参考文献20
附录Ⅰ作品外观图21
附录ⅠⅠ程序清单22
二.作品介绍
2.1引言
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近,红灯便变为绿灯;
另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
随着城市车流量的增加,原本单一模式的交通灯已经无法最大限度地调控车流量,人们迫切需要一款智能交通灯系统来适应现代的交通。
本系统就是基于单片机系统的智能交通灯系统。
2.2单片机概述
单片机是智能交通灯系统的核心部分,他在系统的控制与检测环节发挥了主要作用。
当系统要改变红绿灯状态时就是由单片机来检测状态和控制过程的。
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压低功耗。
2.3芯片简介
本次设计采用工业型STC89C52芯片。
(图1为引脚图图2为外部图)
STC9S52芯片简介
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑
操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
参数:
1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.[1]
2.工作电压:
5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
3.工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
4.用户应用程序空间为8K字节
5.片上集成512字节RAM
6.通用I/O口(32个),复位后为:
P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
8.具有EEPROM功能
9.具有看门狗功能
10.共3个16位定时器/计数器。
即定时器T0、T1、T2
11.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
12.通用异步串行口(UART),还可用定时器软件实现多个UART
13.工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)
14.PDIP封装
图1STC89C52管脚图图2外部框图
2.4功能描述
本系统由单片机系统,LED,LCD与数码管组成的交通灯系统,传感器采集系统三部分组成。
传感器采集系统安装在距离交通灯前适当一段路程(实际应用时推荐3--5分钟车程),通过统计车流量让系统提前感知车流量的变化(交叉路口车流量的差值)。
单片机系统作为主要的核心部分,实时地接收从传感器采集到的路面信息,经过处理后反馈给交通灯,并调节交通灯的时间分配(车流量较多的道路会给予更长时间的通过时间,反之亦然),从而达到实时根据路况来疏导交通,最大限度提高道路通行能力的功能。
2.5创新性声明
本系统设计时有在互联网上对比过市场上成型的同类智能交通灯系统,经相关论证,在互联网,科技杂志与市场上未出现与本系统雷同的产品。
特别声明:
本系统采用传感器系统提前预判路况,解决了现在市场上普遍智能交通灯系统反馈速度慢,未完全自动化需人工操控等缺点,实现了实时根据路况改变交通灯情况,确保道路实时都能实现最大通行力的功能。
下面为几则在网络上摘录下来的关于市场上其他类型智能交通灯系统的简述。
新闻报导一:
德国将采用新型智能交通灯
据德国媒体报导:
卡塞尔大学交通技术与运输物流系的研究人员正致力于交通灯与汽车的信息联通技术开发。
传统的交通灯是用探测器感知十字路口的车辆,该系统将升级为一种小型计算机,通过辅助设备让司机获知红绿灯的持续时间,让他们可根据停留的时间长短来决定何时重启汽车。
目前,该系统已经初步获得成功,即将进入实际应用阶段。
德国黑塞州南部打的贝格施特拉瑟区为第一个试点地区----来源中国智能交通网
新闻报导二:
成都年底或启动智能交通系统网上指挥交通灯
近日,记者在德阳交警支队体验了目前四川省最先进的智能交通系统。
这套系统包括交警指挥中心、城市智能交通管理平台、闯红灯抓拍、公路交通治安卡口等,对快速缓堵、交通违法、刑事侦查等问题都能起到关键性作用。
“彩虹桥路口目前车辆拥堵,立即调出天网画面。
”记者看到,在指挥中心大屏幕上,每条路均有色彩显示,绿色表示畅通,橙色是指正常,红色则是拥堵。
通过绿波带等感应设备的信息反馈,彩虹桥一线因拥堵变为红色,民警立即调出监控分析造堵原因。
依据现场情况,民警通过信号灯联网控制系统,控制该路段信号灯,对车辆进行分流。
----------来源成都晚报
三、设计方案
3.1电源提供方案
为了使模块稳定工作,需要有可靠的电源,我们考虑了三种方案:
方案一:
采用单片机控制模块提供电源。
此方案的优点是使模块简明扼要,缺点是功率太小,发光二极管不够亮。
方案二:
采用电池供电。
此方案的优点是模块简明扼要,缺点是电压不稳定,用了一段时间之后电压会减小。
方案三:
采用独立的稳压电源。
此方案的优点是电源稳定可靠,且有各种成熟电
路可以选择,缺点是使模块变得复杂。
综上所述,我们选择第三种方案,如下图3所示
图3系统电源部分原理图
3.2显示方案
该系统要求倒计时显示时间和状态灯的功能,我们自己增加了显示车流量灯的数量,我们考虑了两种方案:
采用两个四位的数码管显示,此方案的优点是能直观的把车流量数量和倒计时显示出来,此方案的缺点是数码管引脚复杂,使电路复杂,给布线带来困难。
采用两个两位数码管显示倒计时,直观方便。
车流量则采用1602LCD显示屏显示。
EW代表东西方向,SN代表南北方向。
此方案的优点是引脚少,电路简单,布线容易,显示内容丰富。
综合考虑,我们选择了第二种方案,显示方式多样,不单调。
3.3时钟方案
为了提供可靠的时间,我们考虑了两种方案
采用555定时器定时,此方案的优点是成本低,性能可靠,缺点是使电路变复杂,本组成员也不是很熟悉用法。
方案二;
采用一个12MHz的晶振和两个30pF电容组成的时钟电路。
此方案的优点是成本低,电路简单,性能可靠。
考虑到我们平时接触的是采用晶振和51单片机来实现自激振荡,所以我们选择了第二种方案。
3.4传感器的设计
方案一:
自己制作,用光敏三极管和发光二极管以及电阻组成一光电传感器,方案优点是成本低,体积小,使用简单方便。
方案二:
用一光电传感器成品,此方案优点是灵敏度高、稳定性好,缺点是成本高、体积相对较大。
综合考虑我们选择第一种方案。
3.5.硬件设计流程图4
图4系统硬件结构框图
3.5交通灯控制电路设计
交通灯的燃亮时序如图一。
本设计象征性的设置了两种路口模式,通过采集传感器检测的A,B车道流量控制两种模式的转换。
设置A车道车流量上限值M,系统开始运行后,A车道按绿、黄、红循环点亮,B车道按红、绿、黄依次点亮,同时传感器记录A车道在绿、黄灯亮时的车流量,当A、B车道交通灯完成一次循环时,比较记录流量与设置值M比较,若大于等于M则A、B车道自动切换到主从模式,反之则保持原来的普通模式。
红绿灯倒计时的上限分别为:
红灯42s,绿灯38s。
(如图5所示)
车道
模式
A方向
B方向
绿
黄
红
……..
黄
普通
24
4
28
………
主从
24+lastA-lastB
28-lastA+lastB
……
注:
lastA、lastB分别为A、B车道最终统计的车流量
图5交通灯燃亮时序图
系统初始化(即系统上电或系统复位)后,A方向和B方向分别为绿灯和红灯,表示A、B方向的数码管都是从28秒或24秒开始减。
A、B方向交通灯各自按下图顺序循环。
(如图6所示)
图6交通灯循环图
3.6倒计时显示电路设计
红绿灯倒计时部分采用两位共阳数码管显示,分别显示两个方向的倒计时时间。
数码管选用两个NPN型三极管驱动。
(如图7图8所示图9为电器连接)
图7数码管外部框图
引脚分布:
正面逆时针数依次是1、2、3、4、5、6、7、8、9、10
图8数码管引脚图
图9数码管电器连接图
3.7车流量数据显示模块设计
传感器接受到信号后,发送到单片机,经过单片机程序处理后,显示在1602LCD显示屏上。
EW表示东西方向的车流量,SN表示南北方向的车流量。
经过一分钟的车流量检测后,1602LCD显示屏将会显示最后的车流量------LCAR。
此时,交通灯的时间分配也会做出相应的改变。
(如图10)
图101602LCD显示屏仿真图
3.8系统工作原理
本系统通过传感器采集路面信息,输送到单片机P1,P3系列管口。
再由单片机进行处理运算,运算结果通过单片机P0.P2系列管口输出到交通灯系统中,从而控制交通灯红绿黄灯的亮灭和倒计时的时间,进而实现系统智能化根据实时路况调整交通灯的功能。
其中LCD显示屏显示的是两条道路上车流量的数量。
3.9交通灯硬件线路总图(图11)
图11交通灯硬件线路总图
四、软件部分
交通灯控制器的软件设计采用C语言编程实现,算法及程序结构主要有,子函数调用、程序初始化、程序的模块化、中断定时处理、按键检测判断、以及循环等。
4.1系统延时
系统延时通过软延时的方法,运用C语言的循环结构for语句,通过
调用延时子函数的方法产生约(1/12)*24*(N+110)us的延时,N为
延时函数参数值。
4.2主程序流程图(图12)
是
否
图12主程序流程图
4.3计数显示间隔1秒的精确定时
使用12M的晶振,所以一个机器周期为1μs。
设定每次中断为5000个机器周期即为5ms,每次中断变量MJS加1,当MJS加到200时就为一秒的时间。
具体程序如下:
TMOD=0x10;
//启动中断
TL1=0x78;
TH1=0xEC;
TR1=1;
ET1=1;
EA=1;
voidT0ISR(void)interrupt3//定时函数
{
TL1=0x78;
TH1=0xEC;
MJS++;
if(MJS==200)
{--DJSA;
--DJSB;
MJS=0;
}
}
4.4车流量统计
车流量的统计采用的是中断程序,当车辆压过最前面的传感器时产生低电平,促使主程序中断,执行中断程序。
中断程序里进行了判断,当短车经过时计数为1,中等车为2,长车为3。
IP=0x05;
IT0=1;
IT1=1;
EX0=1;
EX1=1;
voidISR0(void)interrupt0
{
if(ZDJS<
10000)
{if(AHWc==0)//统计A车道车流量
{NUMA3++;
elseif(AHWz==0)
{NUMA2++;
else
{NUMA1++;
numA=NUMA1+2*NUMA2+3*NUMA3;
}}
voidISR1(void)interrupt2
{if(BHWc==0)//统计B车道车流量
{NUMB3++;
elseif(BHWz==0)
{NUMB2++;
{NUMB1++;
numB=NUMB1+2*NUMB2+3*NUMB3;
4.5红绿灯倒计时的时间计算
红绿灯的时间是根据两条路车流量的差异进行调整的,正常情况下红灯为28秒、绿灯为24秒、黄灯为4秒。
用两条车道车流量的差值作为红绿灯时间调整的标准。
同时还为红绿灯的时间设置了上下限,当两条车道车流量相差超过15时,设定为固定数值。
if(ZDJS>
{lastA=numA;
lastB=numB;
green=24+lastA-lastB;
//计算倒计时时间
red=28-lastA+lastB;
if(green<
10)
{green=10;
red=42;
if(green>
38)
{green=38;
red=14;
lightA[0]=red;
lightA[1]=green;
lightA[2]=yellow;
lightB[0]=green+4;
lightB[1]=red-4;
lightB[2]=yellow;
4.6倒计时的时间切换
红黄绿三个灯倒计时的时间切换是以数组为载体进行的,当倒计时的时间为零时,变量w加1,实现倒计时的切换,具体程序如下:
intlightA[3],lightB[3];
lightA[0]=red;
lightB[0]=red;
lightB[1]=green;
if(DJSA>
0)//A车道倒计时
TempData[1]=dofly_DuanMa[(DJSA/10)];
TempData[0]=dofly_DuanMa[(DJSA%10)];
DisplayA();
//从第一位显示,共显示2位
else
if(wA==2)
{DJSA=lightA[0];
wA=0;
{wA++;
DJSA=lightA[wA];
if(DJSB>
0)//B车道倒计时
{
TempData[1]=dofly_DuanMa[(DJSB/10)];
TempData[0]=dofly_DuanMa[(DJSB%10)];
DisplayB();
if(wB==2)
{DJSB=lightB[0];
wB=0;
{wB++;
DJSB=lightB[wB];
4.7红绿黄灯的显示
根据三种灯倒计时的切换,A、B两车道红绿黄三种LED灯根据顺序同步的循环切换,具体程序如下:
if(wA==0)//A车道红绿灯
{Aledred=0;
Aledgreen=1;
ledyellowA=1;
}
elseif(wA==1)
{Aledred=1;
Aledgreen=0;
elseif(wA==2)
ledyellowA=0;
if(wB==0)//B车道红绿灯
{Bledred=0;
Bledgreen=1;
ledyellowB=1;
elseif(wB==1)
{Bledred=1;
Bledgreen=0;
elseif(wB==2)
ledyellowB=0;
4.8倒计时数码管的显示
数码管的显示采用循环扫描的方式,每隔一秒显示的秒数减少1,具体程序如下:
voidDisplayA()数码显示函数
{CH1=1;
CH2=0;
DataPort=TempData[0];
Delay(200);
CH1=0;
CH2=1;
DataPort=TempData[1];
CH1=1;
voidDisplayB()
{CH3=1;
CH4=0;
DataPor