基于单片机的十字路口交通灯的设计及仿真
2018-09-25郭玉秀
郭玉秀
(铜陵学院,铜陵 244000)
1 系统设计
本模拟控制系统的控制要求:正常情况下,东西绿灯放行时间为80s,南北绿灯放行时间为60s,期间黄灯过渡时间为3s,如此循环执行;如果有意外发生,则东西南北方向红灯全亮。
根据以上控制要求,本设计采用51单片机作为系统的主控制器,放行、等待和过渡时间等都是通过LED数码管进行倒计时显示,如果有交通事故等意外发生就会产生禁止通行中断,所有红灯全亮。如图1所示为红黄绿灯规则的状态图。正常情况下,十字路口交通灯以图1所示的S1、S2、S3、S4这四种状态为一个周期,循环往复执行。
图1 十字路口交通灯状态图
1.2 总体方案
本系统设计主要由单片机基本的复位电路和晶振电路,以及主控制电路、LED显示电路、数码管显示电路等组成。根据控制要求本系统采用一片51单片机作为主控制器控制十字路口交通灯的亮灭。具体的系统框图如图2所示。
图2 系统框图
根据设计要求确定系统软件流程,如图3所示。
图3 软件流程图
1.2 硬件设计
系统设计的主控制器采用的是应用广泛的AT89C51单片机,该款单片机是一种带4K字节闪存、低电压、高性能CMOS 8位微处理器,能够满足十字路口交通灯控制的需求。
基本的晶振电路设计采用12MHz晶振与两个30pF电容并联构成外部时钟振荡电路。复位电路则由10k电阻、1kΩ电阻、10uF电解电容和按键构成。当电容放电时间大于2倍的时钟周期时,即可实现可靠复位。
数码管驱动器件则选取MAX7219芯片,这是一款串行输入、并行输出的共阴极数码管显示驱动芯片,可驱动8位八段数码管,能够满足设计中驱动四位数码管的控制要求。
1.3 程序设计
根据软件流程图,该系统的软件设计由主模块、MAX7219模块和定时器模块等核心模块组成。
定时器在使用时首先要先对定时器T1的初始化,利用定时器T1每50ms产生一次中断,则每产生20次中断刚好为1s的时间;可以用于控制显示十字路口两个方向的红、绿、黄灯的剩余时间;而一个方向的红灯时间为另一个方向的绿灯时间与黄灯缓冲时间的和。具体的MAX7219模块的子函数和定时器T1中断函数如图4所示。
主模块的数据定义。第一,定义全局变量,second用于记录剩余时间;timer用于记录中断次数;a、b、c、d用于控制数码管显示0~9;flag用于判断东西通车还是南北通车,当flag为奇数时东西通车,flag为偶数时南北通车。第二,定义P3.0为MAX7219串行数据输入端,P3.1为MAX7219数据锁存端,P3.2为MAX7219时钟输入端。第三,定义中断强行标志。
设置调用定时器T1初始化函数,秒单元second初始值为64,红绿灯初始为全部红色,中断次数计数单元timer初始值为0,总中断为允许,外部中断1为打开,选择外部中断1方式为跳沿触发,开始无尽循环。至此,已完成十字路口交通灯的软件程序设计。
图4 MAX7219模块的子函数和定时器T1中断函数
2 十字路口交通灯控制系统仿真
2.1 系统整合
2.1.1 电路图整合
完成十字路口交通灯硬件模块的设计之后,将各元器件根据接线特点进行手动布局,整合成完整的系统原理图,如图5所示。
图5 十字路口交通灯总电路图(路口显示电路及单片机控制电路)
2.2 仿真测试
将所需元器件在Proteus软件中找到并布局连好线后,在Keil编程软件中编写程序生成hex文件后导入至Proteus的AT89C51单片机中,建模完成,进行仿真。
当开启交通灯仿真时,初始化显示为全部红灯,数码管全0。运行后,交通灯现实为南北绿灯通行,东西红灯等待,因为缓冲3秒,因此,东西总共等待63秒。当南北通行时间结束,则转为黄灯缓冲3秒,东西方向继续等待3秒,缓冲结束后,东西方向绿灯通行80秒。当发生意外情况时,启动中断按钮,则交通灯停止计时,全部改为红灯静止通车。具体仿真过程如图6仿真测试图所示。
通过建模仿真测试发现该系统能够满足十东西通行时间为80s,南北通行时间为60s,缓冲时间为3s的设计要求,且能够在此基础上实现交通事故等情况的静止通行功能,较好地模拟了交通路面的控制。
图6 仿真测试图
3 小结
本文设计的十字路口交通灯控制器,用51单片机控制LED数码管进行模拟显示。模拟实际的十字路口交通灯控制情况,放行和禁止通行的时间设置是由交通灯实际所处的地理位置、车流量等情况所决定的,如果有需要系统也可以根据实际情况进行时间调整或功能的扩充。十字路口交通灯系统的设计可以通过信号灯对路面状况进行智能控制,能够在一定程度上解决交通路口堵塞、车辆停车等待时间不合理等问题。而且,采用单片机作为主控制器系统的主要优势体现在:结构简单、可靠性高、成本低等,应用前景较好。