交通灯的原理.docx
《交通灯的原理.docx》由会员分享,可在线阅读,更多相关《交通灯的原理.docx(30页珍藏版)》请在冰豆网上搜索。
![交通灯的原理.docx](https://file1.bdocx.com/fileroot1/2023-1/23/d01ffb87-8e70-44b7-92c9-01a284cac6a8/d01ffb87-8e70-44b7-92c9-01a284cac6a81.gif)
交通灯的原理
智能交通灯设计与实现
[摘要]本文介绍了一个基于PROTEUS的智能交通灯控制系统的设计与仿真,系统能够根据十字路口双车道车流量的情况控制交通信号灯按特定的规律变化。
本文首先对智能交通灯的研究意义和智能交通灯的研究现状进行了分析,指出了现状交通灯存在的缺点,并提出了改进方法。
智能交通灯控制系统通常要实现自动控制和在紧急情况下能够手动切换信号灯让特殊车辆优先通行。
本文还对AT89S51单片机的结构特点和重要引脚功能进行了介绍,同时对智能交通灯控制系统的设计进行了详细的分析。
最后介绍了PROTEUS嵌入式系统仿真与开发平台的使用方法,利用Proteus软件对交通灯控制系统进行了仿真,仿真结果表明系统工作性能良好。
关键词:
单片机,智能交通灯控制系统,PROTEUS仿真
一.引言:
智能的交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行.交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化.
本文为了实现交通道路的管理,力求交通管理先进性、科学化.分析应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地疏导交通,提高交通路口的通行能力.
二.技术指标
1)设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行,两个方向能根据车流量大小自动调节通行时间,车流量大,通行时间长,车流量小,通行时间短。
2)每次绿灯变红灯时,要求黄灯先亮5S,才能变换运行车辆.
3)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用数码管显示器进行显示(采用倒计时的方法)。
4)同步设置人行横道红、绿灯指示。
5)考虑到特殊车辆情况,设置紧急转换开头。
三.智能交通灯的方案选择
1)智能交通灯的研究现状
目前设计交通灯的方案有很多,有应用CPLD设计实现交通信号灯控制器方法;有应用PLC实现对交通灯控制系统的设计;有应用单片机实现对交通信号灯设计的方法。
目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。
加上一个倒计时的显示计时器来控制行车。
对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:
1.两车道的车辆轮流放行时间相同且固定,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。
2.没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。
2)智能交通灯的设计方案及改进措施
针对道路交通拥挤,交叉路口经常出现拥堵的情况。
利用单片机控制技术.提出了软件和硬件
设计方案及两点改进措施:
1、根据各道路路口车流量的大小自动调节通行时间。
2、考虑特殊车辆通行情况,设计紧急切换开关。
由于AT89S51单片机自单带有2计数器,6个中断源,能满足系统的设计要求。
用单片机设计不但设计简单,而且成本低,用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯,系统构图如图1所示:
图1系统结构框图
3)AT89S51单片机的主要性能参数和主要引脚
对交通灯控制系统的设计,首先应对交通灯的核心控制芯片的基本结构和特征以及主要引脚有比较详细的了解。
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
Ⅰ、主要性能参数
·与MCS-51产品指令系统完全兼容
·4k字节在系统编程(ISP)Flash闪速存储器
·1000次擦写周期
·4.0-5.5V的工作电压范围
·全静态工作模式:
0Hz-33MHz
·三级程序加密锁
·128×8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器
·6个中断源
·全双工串行UART通道
·低功耗空闲和掉电模式
·看门狗(WDT)及双数据指针
·掉电标识和快速编程特性
·灵活的在系统编程(ISP字节或页写模式)
Ⅱ、主要引脚功能
·VCC:
电源电压
·GND:
地
·P0口:
P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
·P1口:
Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,Pl接收低8位地址。
表1具有第二功能的P1口引脚
端口引脚
第二功能:
P1.5
MOSI(用于ISP编程)
P1.6
MOSI(用于ISP编程)
P1.7
MOSI(用于ISP编程)
·P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
·P3口:
P3口是一组带有内部上拉电阻的8位双向I/0口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:
表2具有第二功能的P1口引脚
端口引脚
第二功能:
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外中断0)
P3.3
/INT1(外中断1)
P3.4
T0(定时/计数器0外部输入)
P3.5
T1(定时/计数器1外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD外部数据存储器读选通)
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
·ALE/
:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
·
程序储存允许(
)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次
有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的
信号。
·
/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。
·XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
·XTAL2:
振荡器反相放大器的输出端[2]。
四.智能交通灯方案的实现
根据设计任务和要求,可画出该控制器的原理框图,为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。
其中红灯(R)亮,表示禁止通行;黄灯(Y)亮表示暂停;绿灯(G)亮表示允许通行。
1)控制器的系统框图如图2所示。
图2交通灯控制器系统框图
2)电路图
智能交通灯电路图如图3所示。
图3智能交通灯电路图
3)智能交通灯系统的组成
交通灯系统由四部分组成:
车检测电路,信号灯电路,时间显示电路,紧急转换开关。
4)工作原理
大家都明白,绿灯的放行时间与车辆通过数量不成正比。
比如说20秒内每车道可以通过20辆车,40秒内每车道却可以通过45辆车。
因为这有一个起步的问题,还有一个黄灯等待问题。
也就是说,绿灯放行时间越长,单位时间通过车辆的数量就越多。
我们来计算一下,每车道通行20秒内可以通过20辆车,一个红绿灯循环是40秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要50秒,即50秒内通行的车辆为40辆。
通过一辆车的平均时间是1.25秒。
如果每次车辆通行的时间改为40秒,40秒内每车道可以通过45辆,一个红绿灯循环是80秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要90秒,即90秒内通行的车辆为90辆。
通过一辆车的平均时间只需1秒。
显然在车辆拥挤的情况下绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问题。
当然绿灯时间也不可能无限长,要考虑到让另一路口的等待时间不能过长。
人们总是希望在交通灯前等候的时间越短越好。
所以笔者设定了绿灯通行时间的上限为40秒。
在非拥挤时段绿灯的通行时间的下限为20秒,当交叉路口双方车辆较少时通行时间设为20秒,这样可以大大缩短车辆在红灯面前的等待时间。
当交叉路口双方车辆较多时通行时间设为40秒。
Ⅰ、车检测电路
用来判断各方向车辆状况,比如:
20秒内可以通过的车辆为20辆,当20秒内南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒,依此类推。
绿灯下限时间为20秒,上限值为40秒,初始时间为20秒。
这样检测,某次可能不准确,但下次肯定能弥补回来,累积计算是很准确的,这就是人们常说的“模糊控制”。
因为路上的车不可能突然增多,塞车都有一个累积过程。
这样控制可以把不断增多的车辆一步一步消化,虽然最后由于每个路口的绿灯放行时间延长而使等候的时间变长,但比塞车等候的时间短得多。
本系统的特点是成本低,控制准确。
十字路口车辆通行顺序如图4所示:
图4十字路口车辆通行顺序
由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就要加长东往西,西往东也一样,显示时间选择如表3.
表3显示时间选择
车辆情况
本次该方向通行时间
下次该方向通行时间
本次该方向通行时间
本次该方向通行时间
南往北少车,北往南少车
20秒
20秒
40秒
20秒
南往北少车,北往南多车
20秒
40秒
40秒
40秒
南往北多车,北往南少车
20秒
40秒
40秒
40秒
南往北多车,北往南多车
20秒
40秒
40秒
40秒
东往西少车,西往东少车
20秒
20秒
40秒
20秒
东往西少车,西往东多车
20秒
40秒
40秒
40秒
东往西多车,西往东少车
20秒
40秒
40秒
40秒
东往西多车,西往东多车
20秒
40秒
40秒
40秒
Ⅱ、信号灯电路
信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图5。
每个路口的信号的的转换顺序为:
绿——>黄——>红绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。
红灯表示禁止通行。
绿灯的最短时间为20秒,最长时间为40秒,红红最短时间为25秒,最长时间为45秒,黄灯时间为5秒。
红黄绿
绿黄红
红黄绿
绿黄红
绿黄红
红黄绿
红黄绿
红黄绿
红黄绿
绿黄红
绿黄红
红黄绿
绿黄红
绿黄红
红黄绿
红黄绿
图5交通信号灯运行状态
Ⅲ、时间显示电路
在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。
由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求,数码管连接方法如图6所示
图6数码管连接方法
下面我们用这种方法显示交通灯的时间,南北方向要显示20秒,东西方向要显示25秒,那么我们先给P0口送2的共阴极码即5BH,让第一位2要显示的位码GND段为低电平,其它三位的控制端都接高电平,那么第一位就显示2,其它三位不亮。
让其显示1MS后再给P0口送0的共阴极码即3FH,让第二位要显示0的位码GND段为低电平,其它三位的控制端都接高电平,那么第二位就显示0,其它三位不亮。
依此类推分别送完第一位2,第二位0,第三位2,第四位5,每一位点亮1MS一个扫描周期为4MS,一秒时间就要扫描250次其程序如下:
MOVR6,#250;显扫描次数
LOOP:
MOVP0,#5BH;送2的共阴极码
CLRP2.0;第一位显示2
ACALLD1MS;延时1MS
SETBP2.0;灭第一位
MOVP0,#3FH;送0的共阴极码
CLRP2.1;第二位显示0
ACALLD1MS;延时1MS
SETBP2.1;灭第二位
MOVP0,#5BH;送2的共阴极码
CLRP2.2;第三位显示2
ACALLD1MS;延时1MS
SETBP2.2;灭第三位
MOVP0,#6DH;送5的共阴极码
CLRP2.3;第四位显示5
ACALLD1MS;延时1MS
SETBP2.3;灭第四位
DJNZR7,LOOP;不够一秒,继续扫描
NEXTNUMBER;到一秒显示下一个数
D1MS:
;1MS延时程序
STAT1:
MOVR4,#2
MOVR3,#250
DJNZR3,$
DJNZR4,STAT1
RET
Ⅳ、紧急转换开关电路
一般情况下交通灯按照车流量大小合理分配通行时间,按一定规律变化,但考虑紧急车通行车况,设计紧急通行开关,下面简述单片机的中断原理。
ⅰ)Mcs—51的中断源
8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序入口地址如表4所示:
表4中断源程序入口
中断源的服务程序入口地址
中断源
入口地址
外中断0
0003H
定时/计数器0
000BH
外中断1
0013H
定时/计数器0
001BH
串行口中断
0023H
ⅱ)中断的处理流程
CPU响应中断请求后,就立即转入执行中断服务程序。
不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述:
(1)现场保护和现场恢复:
中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份——即保护现场。
我们举个例子,在看书时,电话玲响需传去接电话时,必须在书本上做个记号,以便在接完电话后回来看书时,知道从哪些内容继续往下看。
计算机的中断处理方法也如此,中断开始前需将有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。
中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。
如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会是程序运行紊乱,程序跑飞,自然使单片机不能正常工作。
(2)中断打开和中断关闭:
在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。
(3)中断服务程序:
既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。
(4)中断返回:
执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。
在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。
ⅲ)交通灯中的中断处理流程
(1)现场保护和现场恢复:
有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。
(2)中断打开和中断关闭:
为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。
(3)中断服务程序:
有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:
即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。
(4) 中断返回:
执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。
Ⅴ、交通灯的软件设计流程图
智能交通灯的软件设计流程图如图7所示:
图7交通灯的软件设计流程图
五.智能交通灯方案的仿真
PROTEUS嵌入式系统仿真软件在设计时已经注意到和单片机各种编译程序的整合了,如它可以和Keil,Wave6000等编译模拟软件结合使用。
由于Wave6000使用方便,具备强大的软件仿真和硬件仿真功能。
把Proteus和Wave6000结合起来调试硬件就方便多了,这里笔者就是采用“Proteus+Wave6000”的仿真方法,具体步骤如下:
(1)首先运行PROTEUSVSM的ISIS,选择Source→DefineCodeGenerationTool菜单项,将出现如图8所示定义代码生成工具对话框。
图8定义代码生成工具对话框
在Tool下拉列表框中选择代码生成工具,在这一示例中,电路中的微处理器为8051系列单片机,因此选择ASEM51,单击Browse按钮,选取Wave6000的安装路径。
单击OK按钮,结束代码生成工具的定义。
选择Source→Add/RemoveSourceFile菜单项,将出现Add/RemoveSourceCodeFiles对话框,如图9所示:
图9添加/删除源文件对话框
在CodeGenerationTool选项区,单击下三角按钮,选择ASEM51工具。
(2)单击New按钮,将出现如图10所示对话框。
图10创建源代码对话框
选择用Wave6000创建好的AA.ASM文件,即完成了文件的创建。
就这样当用Wave6000对AA.ASM文件进行更改时每一次运行PROTEUSVSM的ISIS对电路进行仿真时Wave6000都会对AA.ASM进行编译,AA.HEX文件也会随时更新。
电路图绘制完成后,再添加AT89C51的应用程序。
将鼠标移至AT89C51上,单击鼠标右键使之处于选中状态,在该器件上单击左键,打开如图11所示的对话框。
在ProgramFile栏添加编译好的十六进制格式的程序文件AA.hex(可以接受3种格式的文件),给AT89C51输入晶振频率,此处默认为12MHZ,单击OK按钮完成程序添加工作,下面就可以进行系统仿真了。
单击主界面下方的按钮开始系统仿真。
PROTEUSVSM所进行的是一种交互式仿真,在仿真进行中可以对各控制按钮、开关等进行操作,系统对输入的响应会被真实的反映出来。
仿真结果如图12。
在这个例子里,开始仿
真后,开关,按钮通过鼠标单击来改变状态,所改变状态的状态会在LED和数码管显示出来。
由于篇幅所限,以上仅举一例简单介绍了PROTEUSVSM的使用,但其强大的系统仿真功能已经得到体现,用在单片机系统设计的教学方面,能起到良好的教学效果。
图11AT89C51添加程序文件
图12交通灯仿真界面
六.智能交通灯硬件的制作与调试
Ⅰ、智能交通灯电路板板图
智能交通灯电路板板图如图13所示:
图13智能交通灯电路板板图
Ⅱ、交通灯主电路的硬件制作
绘制完电路图并用PROTEUS软件进行仿真后证明了系统运行良好,然后根据仿真电路图制作硬件电路。
根据仿真电路图制作交通灯主电路硬件时要注意的有下面几点:
1、用PROTEUS仿真的电路图可以不加复位电路,不用外接晶振,只需要在为单片机添加程序文件时输入晶振频率就可以了。
但在制作硬件时必须焊接上复位电路和外接晶振电路。
2、用PROTEUS仿真的电路图单片机的
脚可以不用接高电平仿真就能正确运行,但制作硬件时我们必须串接一个电阻然后将
端连接到高电平,CPU才能则执行内部程序存储器中的指令。
3、实物LED灯与数码管的亮度和仿真电路有些区别,制作硬件时要通过与之串联的电阻来调节亮度。
注意了上述问题后制作的硬件电路运行稳定,图14为通