【摘要】本次设计是基于单片机的交通信号灯控制系统设计,通过对现有的资料文献分析了交通信号灯系统控制的需要,根据系统总体方案的设计选择合理的硬件配备;用软件编程实现基本功能,通过对程序的仿真来模拟交通灯的运行情况。
1 系统控制方案
1.1 硬件方案的设计
本设计采用标准的AT89C51单片机作为控制器,根据设计要求需要倒计时显示,复位电路,晶振电路,交通灯状态显示电路等,系统结构方框图如图1
1.2系统功能说明
(1)交通灯显示功能
本设计利用单片机P1口来驱动和控制车行道的交通灯,P3口控制人行道交通灯。红灯禁行,绿灯直行,直行车辆可以进入左右待转区,当左右转向灯亮时,可以左右转向。
(2)时间显示功能
本设计采用两位数码管。因为南北东西向数码管显示的时间不同,所以单片机P0口送出数据的段码,位选信号由 P2口送出。本设计采用共阴极的数码管,数码管点亮需要5MA以上的电流,电流不能过大,否则会烧毁二极管。单片机的I/O口不能送出如此大的电流,所以中间需要一个驱动电路来实现,本次设计使用上拉电阻的方式提供足够大的电流。
1.3 交通灯状态设计说明
交通道路由四车道加人行道组成,四车道从左至右分别是左转车道,直行车道,直行车道,右转车道,在左右转车道的前都设有待转区,当绿灯时,车辆可进入左右待转区,等待待转信号进行左右转。
现规定如下状态:
左右转向灯在设计中用蓝灯表示,SN-南北方向 、EW-东西方向、 RX2-南北走向人行道、 RX-東西走向人行道 、TIME-时间
S1:SN红灯亮,EW绿灯亮,RX2红灯亮,RX绿灯亮
S10:SN红灯亮,EW黄灯亮, RX2红灯亮,RX绿灯亮
S11:SN红灯亮,EW左转和右转蓝灯亮,RX2、RX红灯亮
S12:SN红灯亮, EW左转和右转蓝灯闪烁,RX2、RX红灯亮
S2:SN绿灯亮,EW红灯亮,RX2绿灯亮,RX道红灯亮
S20:SN黄灯亮,EW红灯亮,RX2绿灯亮,RX红灯亮
S21:SN左转和右转蓝灯亮,EW红灯亮,RX2、RX红灯亮
S22:SN左转和右转蓝灯闪烁,EW红灯亮,RX2、RX红灯亮
3系统硬件设计
3.1AT89C51单片机
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。8051单片机包含CPU、RAM、ROM、特殊功能寄存器、两个优先级的5个中断源结构、4个8位并行I/O口、两个16位定时/计数器、全双工串行口、布尔处理器、64KB外部数据存储器地址空间、64KB外部程序存储器地址空间、片内振荡器及时钟电路。
3.2外部电源电路
交通信号灯控制系统工作只需要+5V电压,在实际连接中电路左端连接4个5V的电池为系统提供稳定的电源。
3.3 晶振电路
本设计系统电路的晶体振荡器的值为12MHZ的陶瓷电容,数值大约为22uf。在设计和焊刷电路板时候,晶体振荡器与电容尽量与单片机芯片靠近,减少寄生电容,保证振荡器的稳定性。
3.4 复位电路
单片机的复位分为上电自动复位和按钮手动复位。上电复位电路是靠电容充电来实现的。按钮复位电路又分为脉冲和电平复位。按钮电平复位电路按下复位按钮时,电容充电,使RST/VPD端为高电平,当把复位按钮松开后,电容放电,使RST/VPD端恢复为低电平。本次设计采用按钮电平复位电路。
3.5 交通灯指示电路
发光二极管Light- Emitting Diode 简称为LED,只能往一个方向导通,发光二极管的反向击穿电压约5 伏。为了保护LED不被破坏,需要加限流电阻。
3.6 时间显示电路介绍
本次设计采用2位7段数码管作为时间显示电路,分别对十字路口和人行导通时间进行倒计时。2位7段数码管中,1、2是公共端,控制位码。如果是共阴极接低电平,共阳的则接高电平。A-G,DP是控制断码和二极管的亮暗。可以直接接51单片机的输出口,输出口需要加上拉电阻,提供电流,驱动数码管正常工作。如果是共阴极的接高电平来使数码管亮,若为共阳则用低电平来点亮数码管。此设计LED显示器采用动态显示。
4 软件设计
4.1软件总体流程图
软件总体设计流程图如图2,主要完成的各个部分的软件控制
4.2 时间显示程序的设计
动态数码管扫描,完成数码管的显示功能
DIS:
MOV P2,#00000001B //显示第一位
MOV A,SNTIME //取显示的南北时间
MOV B,#10 //完成数据个位和十位的分解
DIV AB
MOV DPTR,#TAB //查数码管段码表
MOVC A,@A+DPTR
CPL A
MOV P0,A //送P0口,进行显示
LCALL DELAY //扫描程序延时1ms
MOV P0,#00H //灭调P0口,为下次显示做准备
MOV P2,#00000010B //显示第二位
MOV A,B //类似于显示第一位
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL A
MOV P0,A
LCALL DELAY
MOV P0,#00H
MOV P2,#00000100B //显示第三位
MOV A,EWTIME
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL A
MOV P0,A
LCALL DELAY
MOV P0,#00H
MOV P2,#00001000B //顯示第四位
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL A
MOV P0,A
LCALL DELAY
MOV P0,#00H
MOV P2,#00010000B //显示第五位
MOV A,RXTIME
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL A
MOV P0,A
LCALL DELAY
MOV P0,#00H
MOV P2,#00100000B //显示第六位
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL A
MOV P0,A
LCALL DELAY
MOV P0,#00H
MOV P2,#01000000B //显示第七位
MOV A,RXTIME2
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL A
MOV P0,A
LCALL DELAY
MOV P0,#00H
MOV P2,#10000000B //显示第八位
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL A
MOV P0,A
LCALL DELAY
MOV P0,#00H
RET
4.3延时程序的设计
AT89C51单片机的工作频率为12MHz。机器周期與主频有关,是它的12倍,所以一个
机器周期的时间为1us(12*1/12=1us)。我们可以知道每条指令的周期数,这样就能通过指令的执行条数来确定延时的时间。
具体的延时500ms程序:
DELAY500MS:
MOV R4,#75
DELAY1S2:
LCALL DIS //调用数码管显示程序75遍
DJNZ R4,DELAY1S2
RET
5系统仿真与调试
系统仿真是利用计算机的keiluVsion和proteus软件完成,将keiluVison编写好的程序通过生成的hex文件加载到proteus原理图的单片机中,进行程序的仿真。
本次设计采用PCB电路板焊接,采用双层板,默认工艺FR4 1.6板厚过孔盖绿油有铅喷锡。电路焊接完后,对其进行检查,有无虚焊短路等情况的出现,检测元件是否安装正确,各个元器件是否能够正常工作。
在软硬连调的过程中,将程序加载到硬件电路中的,进行交通信号灯真实情况模拟,观察交通灯的状态,通过反复调试,才得以正常运行。
参考文献:
[1]周美娟,肖来胜.单片机技术及系统设计[M]. 北京:清华大学出版社,2007.08.
[2]周蔚吾. 道路交通信号灯控制设置技术手册[M].知识产权出版社,2003.
[3]罗苑棠. CPLD/FPGA常用模块与综合系统设计实例精讲.电子工艺出版社,2007.
[4]夏继强. 单片机实验与实践教程.北京航空航天大学出版社,2001.