1
控制/MCU
十字路口的交通干道为南北和东西两个方向,各路口均有红黄绿交通信号灯以及显示通行/停止倒计时时间的数码管。交通灯控制系统的功能如下:
1)信号灯和数码管的工作过程为:南北方向红灯亮20秒(数码管从20倒计时),东西方向绿灯亮17秒(数码管从17倒计时),接着黄灯闪烁3秒(数码管从3倒计时);在黄灯变为0秒时,东西方向的红灯亮30秒(数码管从30倒计时),则南北方向绿灯亮27秒(数码管从27倒计时),接着黄灯闪烁3秒(数码管从3倒计时);在黄灯为0秒时,南北方向红灯亮20秒,则东西方向绿灯亮17秒,依次类推。
2)南北和东西方向的通行时间可用按键分别调整(增加或者减少);
3)根据实际车流量可以设置三个不同工作时段,分别为“忙”、“不忙”和“闲”,三个时段的南北和东西方向的交通灯的时间是不一样的,“忙”的时间大于“不忙”,“不忙”的时间大于“闲”;
4)三个时段通过串口通信设置,串口通信数据格式为两个字节,前一个字节表示地址,后一个字节表示时段。地址字节为0x01、0x02、0x03等,分别表示不同小组的地址。时段字节为:0x00、0x01和0x02,分别表示不同时段,即“闲”、“不忙”和“忙”。例如传输数据0x01,0x00时,表示第一组的“闲”时段。
整个系统主要由主控中心-宏晶科技STC89S52单片机和复位电路、时钟电路、信号灯控制显示电路、数码管控制显示电路及按键控制电路等功能模块组成,系统硬件框图如图1所示。
图1 交通灯控制系统的硬件电路结构框图
复位电路和时钟电路为通用电路模块,晶振频率为11.0592MHz。
信号灯控制显示电路如图2所示,采用单片机P1口中的P1.0~P1.5控制12个发光二极管模拟实际交通信号灯。其中,P1.0~P1.2分别控制南北方向的红灯、黄灯和绿灯,P1.3~P1.5分别控制东西方向的红灯、黄灯和绿灯。所有信号灯采用共阳极的方式连接,即当P1.0~P1.5相应端口输出低电平时,对应的发光二极管点亮,指示相应的交通状态。
图2 信号灯控制显示电路图
采用4位七段数码管显示通行/停止倒计时时间,数码管控制显示电路如图3所示。数码管的8段段码与单片机P0端口连接,4位位码与单片机端口(A1~A4)经三极管反相后相连接。通过分时轮流控制各位数码管的位码,使各位数码管轮流受控动态显示数字。由于数码管为共阴极连接,段码和位码高电平有效。
图3 数码管控制显示电路图
功能按键电路如图4所示,有三个按键,S1、S2和S3,分别与单片机P2.0~P2.2端口连接。按键的主要功能是手动调整通行时间。具体为:S1用于通道的切换,按1次为调整南北方向通行时间,按2次为调整东西方向通行时间,按3次退出时间调整;S2用于增加通行时间,每按一次通行时间增加1S;S2用于减少通行时间,每按一次通行时间减少1S。当然,时间的调整步长可以是其他任意值,如5s或10s。通行时间设置有最长时间值和最短时间值。
图4 功能按键电路图
交通灯控制系统的软件分模块进行设计,采用Keil公司µvision2编译器用C51语言编写。软件程序主要包括:主程序、初始化子程序、运行过程子程序、信号灯控制子程序、数码管显示控制子程序、功能按键子程序、定时中断子程序、串口通信中断子程序等。下面对主要的子程序进行分析说明。
初始化子程序用来设置功能寄存器的初值,初值错误将导致设计失败。本设计用定时器T0做通行时间倒计时,工作在模式1;定时器T1做串口通信的波特率,工作在模式2。串口通信工作在模式1,允许接收。寄存器的初值设置如下:
TMOD=0x21;//定时器1和定时器0
SCON=0x50;//串口通信模式1,允许接
收
PCON=0x00;//波特率不倍增
TH0=(65536-45872)/256;//50ms定时器初值
TL0=(65536-45872)%256;
TL1=0xFD;//波特率为9600bps
TL1=0xFD;
EA=1;//开中断
ET0=1;
ES=1;
TR0=1;//启动定时器
TR1=1;
运行过程子程序以时间为主线控制交通信号灯状态的转换和数码管时间的显示,其流程图如图5,每一种交通状态下,程序都需要处理信号灯控制显示、数码管控制显示和按键扫描子程序,同时需要处理定时器中断和串行通信中断。
图5 运行过程子程序设计流程图
信号灯控制子程序是用来控制信号灯的转换。由信号灯的硬件电路可知,信号灯为共阳连接,P1.0~P1.5为高电平/低电平时,信号灯熄灭/点亮。根据通行情况,信号灯的状态共有7种,各状态的含义和对应P1.0~P1.5端口的电平值如表1所示。
表1 信号灯的状态
定时器中断子程序完成1s计时,设置初值时每50ms产生一次中断,计时1s需要产生20次中断。串口中断子程序完成两个字节数据的接收,前一个字节为地址,后一个字节为命令。当接收第一个字节后,判断是否为本机地址,如果是,则执行命令。
图6 交通灯控制系统仿真结果
图6为交通灯控制系统在Proteus虚拟仿真平台上的仿真结果。仿真图中除了上文所述硬件电路外,还增加了电平转换电路,以实现串口通信。图中交通灯南北方向绿灯点亮,东西方向红灯点亮;四位数码管上的第1位表示通行时段,数字“0”表示工作在“闲”时段,第3和第4位数字表示通行时间的十位和个位。图7为实际制作的交通灯控制系统。同样是南北方向绿灯点亮,东西方向红灯点亮,数码管同时显示通行时段和时间。仿真结果与实际电路结果一致。通过手动按压功能键S1、S2和S3可以调整通行时间,调整时间的步长为1S。通过串口通信调整通行时段,通信内容为“00”、“01”和“02”,分别表示“闲”、“不忙”和“忙”。仿真和实验结果说明本文设计思路和实现满足系统总体功能。
图7 交通灯控制系统实物图
基于STC89S52单片机设计并制作了交通灯控制系统。根据功能要求设计了系统的硬件电路和软件程序。Proteus平台对交通灯控制系统的虚拟仿真和硬件电路的安装与测试结果表明设计的交通灯控制系统不仅具有基本的交通控制功能,还能够手动按键/串口通信实时调整通行时间。
全部0条评论
快来发表一下你的评论吧 !