基于Proteus的智能交通灯设计与仿真实现论文
交通灯有两种,给机动车看的叫机动车灯,通常指由红、黄、绿(绿为蓝绿)三种颜色灯组成用来指挥交通通行的信号灯。给行人看的叫人行横道灯,通常指由红、绿(绿为蓝绿)二种颜色灯组成用来指挥交通通行的信号灯,红灯停,绿灯行。下面是我为你带来的 基于Proteus的智能交通灯设计与仿真实现论文,欢迎阅读。
摘要:针对现实中越来越严重的城市交通拥堵现象,文章介绍了一种十字路口交通信号灯智能控制系统。该系统实现了正常时段交通信号灯的轮换,解决了十字路口车辆的正常行驶;并可通过外部中断或手动设置解决一些紧急事件或由于某方向车道车流量不均衡所造成的十字路口交通资源浪费或堵塞问题。通过在Proteus 仿真平台中运行,系统具有较强的可靠性。
关键词:Proteus;智能交通灯;仿真实验
随着现代化社会经济的快速发展,城市车辆大幅度增加,交通拥挤、道路阻塞、车辆通行缓慢等问题受到了人们极大的关注,特别是早晚交通高峰时的十字路口,因此智能交通控制就显得尤为重要。传统的交通灯控制,是根据一定时间段的各车道车流量的调查而分配出的相对合理的固定周期换灯的控制方式,不管是车流高峰还是低谷;也有一些交通灯能根据简单划分的时间段来调整时间,但控制起来不是很灵活,这使得城市车流的调节不能达到最优,经常出现通行时间与车流量不相适应的'情况,特别是特定时间的十字路口,会出现某一方向车辆早已通行完,而另一方向车辆排队等绿灯的情况[1]。本文介绍的是一种采用8086 CPU和8259中断控制器配以7段数码管设计实现的十字路口智能交通灯控制系统,其能根据实时车流量对路口的绿灯时间进行动态调节,大大加强了其灵活性和实时性,并通过Proteus仿真软件平台实现了仿真。
一、总体设计方案
本文以十字路口单行车辆通行为研究对象,东南西北四个方向对应路口都设绿、红、黄三色圆灯信号(东西为一向,南北为一向),正常工作状态见表1,具体控制思想如下:(1)车辆流量的采集;(2)分析计算停止车辆排队长度,计算车流量比值,以1为基值判断双方车流量大小;(3)车辆输出量确认,根据各个方向车辆排队长度给定每个路口的红、绿灯时间值;(4)根据比值,增减另一方向车辆红、绿灯时长;(5)以3秒钟为单位,最大变化不超过18秒;(6)检测采用每周期循环一次,从而实现对整个信号灯的智能控制。
按照此思想,系统主要包括6个模块,如图1所示。以8086 CPU为主控制器,控制其他模块协调工作。其中信号灯模块显示各车道的通行情况;数码管倒计时模块显示信号灯燃亮时间;闯红灯报警模块实时监测车辆违规行为;紧急通行模块用于处理非正常通行,以外部中断方式控制[2];时间手动设置模块以通过键盘进行手动设置,增加人为的可控性,用于在紧急状态下,通过设置所有灯变为红灯以避免自动故障和意外发生。
二、Proteus仿真设计
仿真平台简介。Proteus是英国Labcenter electronics公司研发的多功能EDA软件,其由ISIS原理图编辑与仿真软件包和ARES布线编辑软件包组成,是目前世界上唯一将电路仿真、PCB设计软件和虚拟模型仿真软件三合一的设计平台。Proteus SP3以上的版本中增加了对8086 CPU及相关接口芯片的仿真功能。另外,Proteus还提供有示波器、逻辑分析仪、信号发生器、交直流电压/电流表、数字图案发生器、定时器/计数器、逻辑探头、虚拟终端等很多虚拟仪器,是一个全开放性的仿真实验平台,相当于一个设备齐全的综合性实验室。本文介绍所使用的为Proteus 软件。Proteus本身未提供8086编译器,而是通过添加外部代码编译器,将编写好的源程序加入工程,编译并生成可执行程序。本文介绍的采用EMU8086提供的编译环境进行程序的编写和汇编。EMU8086是一可在Windows环境下运行的8086 CPU汇编真软件,其集成了文本编辑器、编译器、反编译器、真调试、虚拟设备和驱动器为一体。Proteus仅支持8086最小模式,8086模型可直接加载BIN、COM和EXE格式的文件到内部RAM中,不需要DOS,而且允许对Microsoft(Codeview)和Borland格式中包含了调试通过的程序可以进行源程序或反汇编后的调试,因此源码汇编和链接过程的参数相当重要[3]。
2.信号灯电路设计。信号灯组由红、黄、绿三色灯组成,4组共12盏灯,其亮灭及闪烁方式与十字路口的红、黄、绿灯同步,由8255A芯片的A口通过方式0控制6个开关量(12盏灯);七段数码管采用共阴极接法,由8255A芯片的B口通过方式0输出控制,其中低四位控制个位显示,高四位控制十位显示。8259中断控制器的IR0接8253的OUT2,实现对于紧急情况的外部中断处理。譬如控制红绿信号灯,实现相应车道通行、另一车道禁行,同时熄灭所有的数码管;或者遇有某方向路段忙时,信号灯的燃亮时间可根据车流量情况设置时间。
3.软件设计。程序主要包括“jjsj”和“zcsj”两个子程序。系统正常运行都在执行“zcsj”子程序,初始化十字路口的交通信号灯状态及燃亮时间,启动8253定时器数码管开始倒计时。在倒计时期间,当遇有某方向车辆特别多或遇忙等其他紧急情况时,通过外部中断请求执行“jjsj”子程序模块。绿灯倒计时完毕后,转换黄色信号灯,持续到规定时间后,东西和南北方向路口信号灯互换,如此一直循环运行[4]。程序设计流程如图2所示。
三、Proteus仿真实现
初始化。从图3所示的硬件原理图得知,8255A芯片的片选端连接在74HC154译码器的输出端,74HC154的4个引脚D、C、B、A分别与锁存器74LS273输出的A12、A11、A10、A9相连,当A12、A11、A10、A9=0001时8255A有效,所以8255A的4个端口地址分别为0200H、0202H、0204H、0206H;初始化方式选择控制字为89H(A、B口方式0输出,C口方式0输入)。
2.实际问题处理。①定时时间的动态调整。定时时间设计为倒计时,用两位七段数码管显示,倒计时小于等于5秒时黄灯每秒亮和灭切换一次,倒计时显示0秒时两个方向的红色灯和绿色灯切换。定时时间可以通过软件设计实现动态调整。方法为:将8253A计数器0工作在方式2,CLK0接2MHZ的时钟频率,设一计数初值(假设为2000),OUT0接CLK1,8253计数器1工作在方式0,设一计数初值(假设为500),则OUT1的输出频率为:2MHZ/2000/500=2HZ脉冲,相应周期为秒。根据实际路况,通过改变计数初值可调整倒计时间。②时间差异。Proteus中利用8253A表示的时间和真实时间有差异,设定的时间比实际时间要长很多。所以,在仿真实验中为了看到与实际相符的交通灯变化,本应是秒的时间需在源程序中将延时时间设置为秒,这样运行起来更贴近实际[5,6]。
3.仿真效果。如图4所示为东西路口绿灯燃亮,南北路口红灯燃亮倒计时运行在18秒时的仿真结果图。
本系统以8086 CPU为核心,程序调试阶段采用EMU86进行在线编程及修改,设计的交通灯可控制十字路口的车辆及行人的交通管理,采用3个7段数码管,可以直观地显示红绿灯的开放和关闭时间。实际交通中的每个路口不完全一样,所以交通灯显示也没有固定规则,通常会根据具体情况设置相应的程序。由于Proteus没有提供箭头标志,本系统按单行道设计,指示灯不是专门的箭头指向灯,只是红、黄、绿三色圆灯信号灯,所以系统只考虑并实现了简单的十字路口交通行驶,即红灯亮时不能直行也不能左转,但可以右转;绿灯亮时,直行、左转、右转都可以,当遇有某方向车辆多或其他紧急情况时,通过中断可加以灵活性控制[7]。另外,系统在实现了十字路口基本的交通灯控制基础上,还引用了外部中断技术和时间手动设置,这可避免因无序和抢行等无控制原因造成的不必要阻塞甚至瘫痪情况发生。Proteus从V8版本开始支持ARM/Cortex-M3,这样,将会给交通灯系统增添更多现代化功能。
参考文献:
[1]李萍.基于AT89S51的智能交通灯控制系统设计与仿真[J].电子设计工程,2014,22(01):190-193.
[2]王维松,等.十字路口智能交通灯控制系统的FPGA实现[J].电子科技,2012,25(9):37-39,44.
[3]顾晖,陈越,梁惺彦,等.微机原理与接口技术-基于8086和Proteus仿真[M].北京:电子工业出版社,2011:110-135
[4]周灵彬,任开杰.基于Proteus的电路与PCB设计[M].北京:电子工业出版社,2013:1-38.
[5]温志达,梁桂荣.基于车流量的智能交通灯控制系统[J].自动化技术与应用,2009,28(6):115-118.
[6]张晓荣,李永红.智能交通灯的设计及其FPGA的实现[D].传感器世界,2013,(12):27-30.
[7]赵金亮.自适应交通路口控制系统设计与实现[J].太原理工大学学报,2013,44(4):531-535.