基于AT89S51 单片机控制的交通灯管理系统
2012-12-08鲁俊婷
陈 刚,鲁俊婷
(黄河水利职业技术学院,河南 开封 475004)
0 引言
随着经济、社会和科技的发展,单片机的应用不断深入社会的各个领域, 其中MCS-51 系列单片机更是以价格和功能的优势被广泛用于各种控制系统之中。 本系统采用51 系列单片机AT89S51,构成控制电路,用汇编语言编写相应的软件程序,实用性强、操作简单。 以下分功能模块对其进行阐述。
1 设计任务
所设计的交通灯管理系统能够真实模拟双干线交通信号灯的管理,设置两组红、黄、绿灯,并配置两对LED 显示器和一个紧急车辆放行按钮。在正常情况下,两个干线上的红、黄、绿灯按四个状态进行转换,并以倒计时的方式将剩余时间显示在与每个干线对应的两位LED 显示器上。 4 个状态分别用S0、S1、S2 和S3 表示。 其工作过程如下: 起始状态S0 为东西向红灯、 南北向绿灯, 两个方向都从45s开始倒计时,持续40s 后转为状态S1:状态S1 为东西向红灯,南北向黄灯以1Hz 频率闪烁。 状态S1 持续5s 后转为状态S2。 东西向绿灯,南北向红灯,两个方向都从35s 开始倒计时。 持续30s 后再转为状态S3。状态S3 为东西向黄灯以1Hz 频率闪烁,南北向仍然为红灯,状态S3 持续5s 后,循环至状态S0。两个方向重新从45s 开始倒计时。
所设计的交通灯管理系统须满足急救车优先通过的要求。 有急救车到达时,两向交通信号为全红灯,以便让急救车通过。 急救车通过后,交通灯恢复中断前状态。
2 硬件电路
本系统硬件电路的设计主要通过3 个大的电路模块来实现:红绿灯控制电路、倒计时显示电路。紧急状态产生与解除电路。
关于红绿灯控制电路的设计, 系统使用AT89S51 的P0 口驱动红绿灯的亮灭。 P0.0 接东西向红灯,P0.1 接东西向黄灯,P0.2 接东西向绿灯,P0.5 接南北向红灯,P0.6 接南北向黄灯,P0.7 接南北向绿灯。 LED1、LED2、LED3 分别为东西向的红、黄、 绿灯,LED6、LED7、LED8 分别为南北向的红、黄、绿灯。
关于倒计时显示电路的设计,根据位选线与段选线连接方法的不同,LED 显示器分为静态显示和动态显示两种方式。 段选线控制字符的选择,位选线控制显示位的亮、暗。 由于动态显示的硬件资源利用率高,而且采用串行输出,形式可以大大节省单片机的内部资源, 所以系统采用动态显示方式。串并转换器采用74LS164, 在低电平时允许通过8mA 电流, 无需添加其他驱动电路。 74LS164 为串入/并出的移位寄存器, 并行数据输出端Q0~Q7 通过限流电阻分别接到显示器的字形口(a~dp);单片机的P1.0~P1.3 连接显示器的字位口。 74LS164 的A、B 为串行数据输入端, 连接单片机的P1.4;CLK为移位脉冲输入端,连接单片机的P1.5。
关于紧急状态产生与解除电路,我们选用两个按钮SW1 和SW2。 SW1 为紧急状态产生按钮,与单片机的P3.2 引脚连接;SW2 为紧急状态解除按钮,与单片机的P3.3 引脚连接。 当有紧急车辆要通过时,按下SW1,两个方向红灯同时点亮,倒计时时间停止。 当紧急车辆通过后,再按下SW2,则继续紧急车辆通过前的状态。
由此设计出交通灯管理系统电路 (如图1 所示)。
图1 交通灯管理系统电路图Fig.1 Traffic light management system circuit diagram
3 软件程序设计
表1 状态控制码Table 1 Status control code
本系统采用汇编语言编写程序,编程方面需解决以下3 个方面问题。
3.1 4 种红绿灯状态的实现
由硬件电路图可知, 单片机的P0 口连接发光二极管的阴极,所以通过编写指令将状态控制码送往单片机的P0 口,即可实现4 种红绿灯状态。 表1 列出了状态控制码。
3.2 倒计时时间的控制与显示
(1)倒计时时间控制。 将需要显示的倒计时时间始终存放在单片机内部RAM 的R3 中。利用单片机内部定时器T0 进行定时, 使定时器工作在定时方式1,定时时间t 选为10ms。 当定时满100 次时,说明1s 时间到,这时只需让R3 中的倒计时数值减1 即可。
(2)显示部分。 编写相应的显示子程序,使两组显示器显示出R3 中的倒计时时间。 并把显示子程序放入定时器0 中断子程序中。 这样可以每10ms调用一次显示子程序,使显示器随时显示出倒计时时间。
3.3 紧急通车状态的控制
本系统以按下紧急按钮SW1 为中断申请,表示有急救车通过。 这时两向全为红灯,倒计时时间停止。 按下解除按钮SW2,中断解除,返回原来的红绿灯状态, 倒计时时间继续计时。 状态控制码如表1所示。 由于紧急通车状态的产生和解除是随机的,所以对于紧急按钮SW1 和解除按钮SW2 的检测不能间断,因此,将这两个按钮的检测程序放在定时器0 中断子程序中,这样每10ms 就会检测一次中断按钮,达到了紧急通车状态的控制要求。
3.4 程序设计流程图
通过以上分析,程序包含3 大功能模块:主程序、定时器中断子程序、动态显示子程序。 其中主程序与定时器中断子程序在时间上是同步运行的,动态显示子程序的功能是显示R3 中的倒计时时间,供定时器中断子程序调用,结构较为简单。 以下给出主程序和定时器中断子程序的流程图。
图2 主程序流程图Fig.2 Main program flow
图3 定时器断子程序流程图Fig.3 Timer interruption subroutine flow
4 结语
本系统硬件电路简单, 软件程序采用汇编语言编写,与硬件电路配合使用,更为高效。 在现有道路条件下,对于提高交通控制和管理水平,合理使用现有交通设施,充分发挥其能力,更加灵活有效地提高道路的利用率,有较高的指导作用,可广泛用于实际的交通灯控制系统之中。
[1] 胡健. 单片机原理及接口技术[M]. 北京: 机械工业出版社,2005:144.
[2] 胡健. 单片机原理及接口技术实践教程[M]. 北京:机械工业出版社,2005:22-23,163.
[3] 陶春鸣. 单片机实用技术[M]. 北京:人民邮电出版社,2008:118.