基于单片机的交通灯系统设计仿真
2020-04-09赵正阳梁一锋张雨帅
赵正阳 梁一锋 张雨帅
摘 要:随着私家车的不断增加,传统的交通控制系统已经不能满足路口交通的需要,因此,交通控制系统正朝着智能化、低成本化方向不断发展。文章完成了以STC89C51单片机为控制核心的十字路口交通控制系统,该系统相比于传统交通系统,除了包括车辆信号灯指示模块、人行道通行指示灯模块、计时模块以外,还包括了紧急按键模块、通行时间加减模块、红外遥控模块、行人闯红灯报警模块。除了能简洁、直观地显示十字路口的通行规则,提高车辆和行人的通行效率外,系统还具有一定的可扩展性,将进一步提高十字路口的交通安全和通行效率。
关键词:交通控制;单片机;人行道;计时
我国修建道路的水平越来越高,路也越修越多,道路交通早已与每一个个体休憩相关,人们的日常生活、工作、学习都离不开交通这一活力动脉。随着道路的建设,道路拥堵问题也逐渐成为城市发展的桎梏,限制了城市经济发展[1],所以道路交通控制系统的发展势在必行。进入21世纪,信号灯系统已经将车辆、行人,甚至一些地面轨道交通整合。人们对交通出行效率的要求越来越高,因此交通控制系统的发展仍然不可或缺。在电气化时代,一些微型控制系统的出现极大地促进了交通系统的发展。交通系统正朝着数字化、功率化、多样化的方向发展,根据道路现状车流分析进行通行策略的制定,是交通史上的重大变革,所以在交通系统中嵌入智能管理系统具有很强的现实意义[2]。
1 设计方案
本嵌入式交通控制系统在十字路口各个不同的方向分别设置交通灯,用红灯代表禁止通行、黄灯代表等待、绿灯代表允许通行。除了直行信号灯外,在东南西北4个方向还各设置左拐信号灯一个(共4个)。4个两位一体共阴极数码管来分别显示不同个方向的左拐、禁止、允许通过时间。正常工作时一个工作周期分为8个状态。其中状态0到状态3与状态4到状态7过程一致,将南北方向定义为方向1,东西方向定义为方向2,下面给出状态0到状态3。
状态 0 时:方向1的车辆和行人可以直行,方向2的车辆禁止通行;
状态 1 时:方向1黄灯开始亮起,方向2禁止通行;
状态 2 时:方向1允许车辆左转,两个方向均禁止直行;
状态 3 时:方向1黄灯开始亮起,方向2禁止通行。
人行道的通行状态与相同方向的车辆直行方向通行状态相一致。当某一方向车辆允许直行时,那么相同方向(由南向北或者由北向南)的两条人行道也允许通行,否则该向人行道禁止通行。当检测到行人闯红灯时,设置行人闯红灯警示灯闪烁。正常情况下,交通灯从状态0渐渐的向状态7转移循环,构成了交通灯的正常工作模式。可以对当前数码管显示的时间进行加减。紧急模式的开启有两种方式,一种是通过交警手中的红外遥控器紧急按键按下后车辆和行人都禁止通行[3-4],或者在十字路口中心的交通指挥亭中设置紧急模式按键。交通系统示意如图1所示。
2 系统硬件设计
本系统硬件电路为了设置车辆的直行、左转的信号灯与倒计时显示,设置人行道上的通行信号,设置紧急模块、通行时间加减模块、红外遥控模块、行人闯红灯报警模块[5],采用模块化设计思想将系统分为主控模块、车辆信号灯模块、人行道信号灯模块、驱动电路、按键模块等。在同一时间上东西、南北两组方向只能有一组方向允许通行。车辆指示模块由16个发光二极管构成,行人通行指示模块由16个发光二极管来显示通行、禁止。倒计时模块由4个8位数码管来显示等待或者通行时间。4个按键分别来控制复位操作、紧急模式操作、数码管时间加减。行人闯红灯报警模块通过设置在人行道道口的对射式红外传感器进行检测,并且通过警报灯显示是否有人闯红灯。单片机交通控制系统的组成模块如图2所示。
3 软件设计
3.1 程序流程
程序的好坏主要體现在其功能性和逻辑性上。能完整、准确地实现要求的功能是最基本的要求。逻辑性同样重要,一个逻辑清楚的程序在编写、调试、修改时都能起到事半功倍的作用。程序易于调试和修改,能够降低软件故障率、提高软件的可靠性[6]。在程序编写完成后使用Keil软件来进行编译修改,最后进行仿真。首先进行单片机初始化,初始化定时器T0,将各LED置低电平。其次,判断是否有人闯红灯,然后扫描红外遥控器和交通指挥亭中的紧急按键。如果按下就进入紧急模式,如果未按下就保持正常模式。在紧急模式中判断复位按键是否按下,如果按下则进入正常模式,否则一直保持紧急模式,程序的流程图如图3所示。
3.2 相关子程序
3.2.1 单片机初始化子程序
软件延时和定时器都可以用来定时,但是单片机内部的定时器要比软件延时要精准得多。所以在通常情况下软件延时一般用于对时间精准度不高的地方,其作用相当于NOP延时函数用来给程序执行反应时间。考虑到本系统需要高精度定时,因此使用了设定为工作方式1的定时器来定时。
定时器的设定与几个寄存器相关,在EA中开启中断允许包括总中断和定时器中断。然后设定定时器的初值,最后打开中断允许。以上操作是在程序初始化中设置,器的初值的两种表示方式如下:
(1)t=(216-初值X)×机器周期(求X后换算成16进制)。
(2)或者直接将(216-时间)的值进行求商和余数。
3.2.2 数码管显示程序
将这4位数码管的控制端与P2相连来决定哪一位亮。在宏定义中已经将对应数字的段选码放入了数组当中。所以将数字对10的商就是十位数字的下标,通过下标在数组里找出对应的数字来赋值给数码管。同理将倒计时的数字对10的余数,就是个位时间的下标。
3.2.3 中断函数
在本设计中用到了一个定时中断源,为该中断设置一个初值t秒,所以每记满t秒就会调用一次中断子程序。在中段子程序中实现的功能有两个,分别是使车辆通行黄灯亮时黄灯能够闪烁并且是数码管显示倒计时时间每隔1 s减1。在实现两个功能时最重要的是要在定时器溢出之后,在中断子程序中对t0重新赋值。以count来计算中断次数在中断函数中每次中断执行count++操作,来累加初值t秒。在中断函数中判断当时间为0.5 s时执行黄灯取反,当计时为1 s时执行数码管减一,并且将count清0。
3.2.4 按键子程序
使用者和单片机的直接交流除了代码的修改之外就是通过硬件电路里的按键了。用户按下按键后,单片机系统就会获得相应的键值,并执行相应的命令程序。按键部分的软件设计主要是对51单片机进行编程,从而能够成功地读取按键,实现相应功能。在正常模式按键按下后要将初值重新赋值给各数码管,并且可以通过按键来改变东西、南北方向允许通行的时间减少拥堵[7-8]。
紧急模式下,考虑到事故车辆的通过。在紧急按键按下时,各个方向均亮红灯包括人行道,方便处理事故,或者让救护车、救火车等车辆快速通过。
4 软件仿真
在Proteus中选择完合适的元器件之后,将其按设计进行引脚连接。在连接完成后,将.hex文件添加到芯片中进行仿真。整个过程分为8个状态,且前4个与后4个状态相似,正常模式的前4个状态如图4所示。
当遥控器或者交通指挥亭中紧急按键按下,紧急模式如图5所示。
5 结语
本设计简单高效、低成本,可以很好地指挥路口交通。随着嵌入式的高速发展,人们的生活变得越来越方便、高效。未来的交通灯将变得更加智能,自我学习的人工智能也将逐渐地加入到交通控制系统当中。将人工智能与车流量计算、安全警告相结合,将使得道路安全问题得到解决。