单片机交通灯设计.docx
《单片机交通灯设计.docx》由会员分享,可在线阅读,更多相关《单片机交通灯设计.docx(23页珍藏版)》请在冰点文库上搜索。
单片机交通灯设计
一、引言
本系统由单片机系统、键盘、LED显示、交通灯演示系统组成。
系统包括人行道、左转、右转、以及基本的交通灯的功能。
系统除基本交通灯功能外,还具有时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。
随着社会经济的发展,城市交通问题越来越引起人们的关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
二、设计原理及思路
2.1原理
基于AT89S52单片机数显交通灯系统硬件原理,由于单片机需高稳定,高频率的实基脉冲,因此需要晶体振荡器。
在晶体振荡器两端并联两个电容C1、C2,对振荡器频率有微调作用。
如图1:
图1基于AT89S52单片机数显交通灯系统组成框图
2.2 方案设计与论证
本设计以单片机为核心,以LED数码管作为倒计时指示,根据设计的要求我们考虑了各功能模块的几种设计方案,以求最佳方案,实现实时显示系统各种状态,以提高效率,缓减交通拥挤。
2.3电源提供方案
为使模块稳定工作,须有可靠电源。
本次设计考虑了两种电源方案:
方案一:
采用独立的稳压电源。
此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:
采用单片机控制模块提供电源。
该方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,选择第二种方案。
2.4显示界面方案
该系统要求完成倒计时功能。
基于上述原因,本次设计考虑了两种方案:
方案一:
完全采用点阵式LED显示。
这种方案功能强大,可方便的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。
方案二:
完全采用数码管显示。
这种方案优点是实现简单,可以完成倒计时功能。
缺点是功能较少,只能显示有限的符号和数码字符。
根据本设计的要求,方案二已经满足了要求,所以本次设计采用方案二以实现系统的显示功能。
2.5.输入方案
这里同样讨论了两种方案:
方案一:
采用8155扩展I/O口、键盘及显示等。
该方案的优点是使用灵活可编程,并且有RAM及计数器。
若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二:
直接在I/O口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的端口资源还比较多,我们使用六个按键,分别是P16、P17、P27、P30、P32、P33,依次完成倒计时加1、倒计时减1、调完确认、调时方向切换、南北强行和东西强行等功能。
由于该系统是对交通灯及数码管的控制,只需用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
2.6设计满足的基本功能
本系统由单片机系统、键盘、LED数码管显示、流水灯演示系统组成。
最后,系统要求实现如下的交通灯的功能:
1)南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,南北方向设有红绿黄灯和转向灯,东西方向只设有红绿黄灯,不设转向灯(如果有需要可以取消警报灯D6来设置)。
时间可在初始化中设置修改。
2)南北方向在绿灯转为转向灯时,要求黄灯先闪3s;在转向转为红灯时,要求黄灯先闪5s。
东西方向在绿灯转为黄灯时,要求黄灯先闪5s。
3)东西方向、南北方向每次灯亮的时间都用显示器进行显示(采用倒计时的方法)。
4)复位按键S1,能在任何情况下返回初始设置
5)发生紧急情况,如交通意外或道路施工,需要车辆禁止通行时,系统能通过K1按键指挥交通停止,南北和东西方向同时显示红灯,并鸣响警报、亮起警报灯,提示行人车辆。
进入紧急模式并保留当时交通灯运行的情况,可以通过第二次按下K1恢复原来状态。
6)深夜路上没有行车的路口,可以设置夜间模式,系统通过K2按键切换到黄灯不停闪烁的模式,数码管只显示0000,不进行倒计时。
可以通过复位键进行返回。
7)当交通一个方向上有车而另另一个方向上无车时,系统能通过K3立即让有车道放行。
如果是东西通道无车而南北通道有车,按下K3能直接切换到南北绿灯;如果是南北通道无车而东西方向上有车,按下K3能直接切换到东西绿灯。
根据设计功能及要求,我们可得系统的原理框图如图2所示。
图2系统的原理框图
2.7部分电路设计
2.7.1显示部分电路设计
该设计采用如下所示的数码管,分别显示东西和南北灯的剩余时间,左边两位为东西,右边两位为南北。
该数码管为共阳接法(0脉冲有效),片选部分接单片机管脚的P2口和数码段显示部分接单片机管脚的P0口,具体的下见图3。
图3单片机管脚P0口P2口
图4单片机部分管教图
2.7.2复位部分电路设计
复位引脚RESET通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
复位电路通常采用上电自动复位和按钮复位两种方式,该设计采用的是上电直接复位。
其连接图如下图5所示:
图5独立按键模块
键盘是最常用的输入设备,本设计中键盘数目较少,且为安装方便,因此在本设计中采用独立式接法,由P3.2、P3.3、P3.4口控制。
独立式实际上就是一组独立的按键,这些按键可直接与单片机的I/O口连接,即每个按键独占一条口线,这种接法简单。
本设计采用P1口控制二极管的发光情况,口线送低电平有效。
三、系统硬件设计
硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现交通灯基本功能以外,主要还要考虑如下几个因素:
①系统稳定度;②器件的通用性或易选购性;③软件编程的易实现性;④系统其它功能及性能指标;因此硬件设计至关重要。
现从各功能模块的实现逐个进行分析探讨。
3.1 总体设计
本设计以单片机为控制核心,采用模块化设计,共分以下几个功能模块:
单片机控制系统、键盘及状态显示、倒计时模块等。
单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。
它由单片机振荡电路、复位电路等组成。
键盘及状态显示,开关键盘输入交通灯初始时间,通过单片机P1输入到系统。
系统采用双数码管倒计时计数功能,最大显示数字99。
按键功能介绍
本设计中采用独立式接法,由P3.2、P3.3、P3.4口控制,如下表1所示。
表1各按键控制功能
按键
键名
功能
P3.2
K1键
紧急停止键
P3.3
K2键
夜间模式键
P3.4
K3键
转换模式键
当按下启动按钮K1并释放后,系统就进入紧急停止模式,东西和南北方向上都亮起红灯。
表示发生紧急状况,两边道路都禁止通车。
当按下启动按钮K2并释放后,系统就进入夜间模式,东西和南北方向上都为黄灯不停闪烁,能有效的节约能源,并依旧能起到提醒过往车辆和行人的效果。
当按下启动按钮K3并释放后,系统就进入转换模式,当一个方向上有车而另另一个方向上无车时,系统能立即让有车道放行。
如果是东西通道无车而南北通道有车,按下K3能直接切换到南北绿灯;如果是南北通道无车而东西方向上有车,按下K3能直接切换到东西绿灯。
3.2 单片机最小系统
3.2.1振荡电路
AT89S52是内部具有振荡电路的单片机,只需在18脚和19脚之间接上石英晶体,给单片机加工作所需直流电源,振荡器就开始振荡起来。
振荡电路就为单片机工作提供了所需要的时钟脉冲信号,是单片机的内部电路、单片机的内部程序(若有)开始工作。
振荡电路不工作,整个单片机电路都不能正常工作。
AT89C51常外接6MHz、12MHz的石英晶体,18脚和19脚分别对地接了一个20pF的电容,目的是防止单片机自激。
若从18脚输入外部时钟脉冲,则19脚接地。
3.3 显示及其驱动模块
3.3.1 键盘与状态显示功能
键盘在本设计中用于紧急情况的手动控制装置,以及定时时间的设置等功能,起到了不可缺少的重要作用。
当定时器定时为1秒时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间,同时一直显示信号灯的颜色,这时在返回定时子程序定时1秒,在显示黄灯的下一个时间,这样依次把所有的时间显示完后在重新给时间计数器赋初值,重新进入循环。
键盘电路如图6所示。
图6键盘电路
3.3.2 倒计时计数功能
本系统使用数码管完成倒计时显示功能。
以南北方向为例,数码管显示的数值从绿灯的设置时间最大值往下减,每秒钟减1,一直减到1。
然后又从红灯的设置时间最大值往下减,一直减到1。
接下来又显示绿灯时间,如此循环。
系统共有4个两位的LED数码管,分别放置在模拟交通灯控制板上的四个路口。
因为四个方向的数码管应该显示同样的内容,所以我们可以把它们同样对待。
也就是说各个方向的数码管个位(把数码管第二位定义为个位,第一位定义为十位)用一根信号线控制,十位用另一根信号线控制。
这里采用动态显示。
LED数码管如图7所示。
图7LED数码管
四、系统软件设计
软件在硬件平台上构筑,完成各部分硬件的控制和协调。
系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。
因此,软件是本系统的灵魂。
软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。
同时,对软件进行全面测试也是检验错误排除故障的重要手段。
这里我们选用了移值性好、结构清晰、能进行复杂运算的C语言来实现编程。
4.1 软件总体设计
软件总体设计主要完成各部分的软件控制和协调。
本系统主程序模块主要完成的工作是对系统的初始化,发送显示数据,同时对键盘进行扫描,等待外部中断,以及根据所需要的功能进行相应的操作。
其流程图如图8所示。
图8软件总体流程图
程序实现功能
;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。
;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。
;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。
;工作寄存器及存储单元分配
;1.工作寄存器
;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器
;2.片内存储单元
;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元
;3.标志位
;00H:
南北通行标志位;01H:
东西通行标志位;02H:
紧急事件标志位
;-----------------------------------
SNFEQU00H;;;南北通行标志位
EWFEQU01H;;;东西通行标志位
URFEQU02H;;;紧急事件标志位
ORG0000H
LJMPMAIN;;;上电转主程序
ORG000BH;;;定时中断入口
LJMPDSZD
ORG0003H;;;紧急中断入口
LJMPURZD
ORG0030H
MAIN:
LCALLINIT;;;调用初始化子程序
LOOP:
LCALLDIS;;;循环执行显示子程序
AJMPLOOP
;///////////初始化程序
INIT:
SETBSNF
SETBEWF
SETBURF
MOVR2,#20;;;定时器中断20次为1s
MOVTMOD,#01H;;;初始化定时器
MOVTL0,#0B0H
MOVTH0,#3CH
SETBEA;;;开定时中断与紧急中断
SETBET0
SETBTR0
SETBEX0
SETBIT0;;;设置中断程控方式
MOVDPTR,#TAB;;;数值首地址放入DPTR中
MOV40H,#40;;;东南西北通行时间设置
MOV41H,#40
MOV30H,#40;;;通行时间初始化
MOV31H,#60
MOVP0,#4CH;;;初始化时南北通行并把交通灯状态分别放在32H和33H中
MOV32H,#4CH
MOVP2,#15H
MOV33H,#15H
RET
;////////////显示子程序
DIS:
MOVP3,#0DFH;;;选中南北方向的十位数码管
MOVA,30H;;;把显示数据送人数码管显示
MOVB,#10
DIVAB
MOVCA,@A+DPTR
MOVP1,A;;;
LCALLD1MS
MOVP3,#0EFH;;;选中南北方向的个位数码管
MOVA,B;;;送入数码管显示
MOVCA,@A+DPTR
MOVP1,A
LCALLD1MS
MOVP3,#7FH;;;选中第东西方向的十位数码管
MOVA,31H;;;送入数码管显示
MOVB,#10
DIVAB
MOVCA,@A+DPTR
MOVP1,A
LCALLD1MS
MOVP3,#0BFH;;;选中第东西方向的个位数码管
MOVA,B
MOVCA,@A+DPTR
MOVP1,A
LCALLD1MS
SETBP3.0
SETBP3.1
JNBP3.0,DIS_S;;;查询是否第一个按键按下
JNBP3.1,DIS_E;;;查询是否第二个按键按下
AJMPDIS_R;;;没有键按下则返回
DIS_S:
LCALLD5MS;;;按键去抖
JNBP3.0,DIS_SN
AJMPDIS_R
DIS_SN:
MOV40H,#50;;;对通行时间从新分配,南北通行时间加长
MOV41H,#30
AJMPDIS_R
DIS_E:
LCALLD5MS;;;按键去抖
JNBP3.1,DIS_EW
AJMPDIS_R
DIS_EW:
MOV40H,#30;;;东西通行时间加长
MOV41H,#50
DIS_R:
RET
;///////定时中断处理程序
DS_C:
LJMPDS_R;;;接力跳转
DSZD:
PUSHACC;;;保护现场
PUSHPSW
CLRTR0;;;关定时器及中断标志位并重新赋值
CLRTF0
MOVTL0,#0B0H
MOVTH0,#3CH
DJNZR2,DS_C;;;判断1m时间是否到达
MOVR2,#20;;;到达重新赋值
DEC30H;;;南北方向通行时间减一
MOVA,30H;;;把减一后的时间送入显示存储单元
;;;;;;;南北通行到达最后4秒时黄灯闪烁
DS_10:
CJNEA,#4,DS_11;;;如果通行时间剩余4秒
JNBSNF,DS_11;;;判断是否是南北通行
MOVP0,#8AH
MOV32H,#8AH;;;把交通灯状态存入存储单元(后面类似)
DS_11:
CJNEA,#3,DS_12;;;不是剩余3秒,返回
JNBSNF,DS_12;;;不是南北通行时间,返回
MOVP0,#88H
MOV32H,#88H
DS_12:
CJNEA,#2,DS_13
JNBSNF,DS_13
MOVP0,#8AH
MOV32H,#8AH
DS_13:
CJNEA,#1,DS_14
JNBSNF,DS_14
MOVP0,#88H
MOV32H,#88H
;------------------------
DS_14:
JNZDS_NE;;;通行时间没有结束转向改变东西方向的数码管
CPLSNF;;;如果通行时间结束则对标志位取反
JNBSNF,DS_1;;;判断是否南北通行
MOV30H,40H;;;是,点亮相应的交通灯
MOVP0,#4CH
MOV32H,#4CH;;;存储交通灯状态
MOVP2,#15H
MOV33H,#15H;;;存储交通灯状态
DS_NE:
DEC31H;;;东西方向通行时间减一
MOVA,31H;;;把通行剩余时间送入显示存储单元
;;;;;;;;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似略)
DS_20:
CJNEA,#4,DS_21
JBEWF,DS_21
MOVP0,#51H
MOV32H,#51H
DS_21:
CJNEA,#3,DS_22
JBEWF,DS_22
MOVP0,#41H
MOV32H,#41H
DS_22:
CJNEA,#2,DS_23
JBEWF,DS_23
MOVP0,#51H
MOV32H,#51H
DS_23:
CJNEA,#1,DS_24
JBEWF,DS_24
MOVP0,#41H
MOV32H,#41H
;-----------------------------
DS_24:
JNZDS_R;;;东西方向时间没有结束,返回
CPLEWF;;;对通行状态取反
JNBEWF,DS_2;;;东西方向通行时间到来,跳转
MOV31H,#80;;;东西方向通行结束,重新显示时间
MOVP0,#89H;;;点亮相应的交通灯
MOV32H,#89H
MOVP2,#29H
MOV33H,#29H
AJMPDS_R
DS_1:
MOV30H,#80;;;南北通行时间结束,重新对显示存储单元赋值
MOVP0,#89H;;;执行转弯状态1
MOV32H,#89H
MOVP2,#26H
MOV33H,#26H
AJMPDS_NE
DS_2:
MOV31H,41H;;;东西方向开始通行,赋值予显示存储单元
MOVP0,#61H;;;点亮相应的交通灯
MOV32H,#61H
MOVP2,#15H
MOV33H,#15H
DS_R:
SETBTR0
POPPSW;;;恢复现场
POPACC
RETI
4.2 软件主要子程序设计
4.2.1 紧急状态子程序设计
1.在紧急状态下,只有紧急状态手动控制按键才可以使所有的LED都被置为红灯,车辆禁行、行人通行。
紧急情况结束后再转成自动状态。
紧急控制按键如图9所示。
紧急状态子程序如图10所示。
图9手动控制按键
图10紧急状态子程序处
紧急中断处理程序如下
/////////////紧急中断处理程序
URZD:
PUSHACC;;;保护现场
PUSHPSW
CLRIE0;;;清除中断标志位
CLRTR0;;;关定时器
CPLURF;;;紧急事件标志位
JBURF,UR_CON;;;紧急结束;跳转
MOVP0,#49H;;;各路口灯全显示红灯亮
MOVP2,#15H
AJMPUR_R
UR_CON:
SETBTR0;;;恢复正常交通
MOVA,32H
MOVP0,A
MOVA,33H
MOVP2,A
UR_R:
POPPSW;;;恢复现场
POPACC
RETI
4.2.2 键盘模块子程序设计
键盘是人机进行交互的重要接口之一。
用户通过按键对仪器下达命令,仪器对按键译码获得相应的键值,并执行相应的命令程序。
键盘部分的软件实现主要是指对键盘管理进行编程,从而成功地读取键盘值,实现相应的功能。
键盘实现的程序流程图如图11所示。
图11键盘实现的程序流程图
五、硬件电路设计(原理图)
主要电路原理图
基于AT89S52单片机数显交通灯系统硬件电路原理如图所示,由于单片机需高稳定,高频率的实基脉冲,因此需要晶体振荡器。
AT89S52在XTAL1、XTAL2两引脚接晶体振荡器。
在晶体振荡器两端并联两个电容C1、C2均为30pF,对振荡器频率有微调作用,震荡范围为1.2-12MHz.时间倒计时显示电路采用4个两位共阴LED显示。
排电阻RP1用于单片机P0口的上拉电阻。
电路原理图如下图12所示:
图12电路原理图
部分电路原理图
显示电路采用4个两位共阴数码管,P1口作为数码管的输入,P3.4、P3.5、P3.6 P3.7分别作为东西南北四路数码管的位选端。
数码管和信号灯电路如图13所示。
图13数码管和信号灯电路
六、程序设计,流程图
程序分主程序和中断程序,可采用汇编语言编程,计时采用延时程序进行,延时的程序执行时间为1秒()(若单片机的晶振频率为6MHZ),用特殊功能寄存器=PSW的第六位FO(PSW15)作A、B通道的放行标志,PSW15=0时,R4中存放立即数#5AH(相当于十进制数60),R4计数60次时,B道放行正好60S。
还可以根据控制过程中的实际情况来改变R4中的数据,就能改变A、B通道的放行时间。
晋级车辆通过的处理用中断服务程序控制。
主程序流程图如图14示:
图14主程序流程图
七、总结
本设计以单片机为核心,以LED数码管作为倒计时指示,该设计通过AT89S52芯片组成交通信号灯并且通过按键控制夜间黄灯闪烁和手动紧急控制。
所有功能均在城市交道口模型上得到很好地实现,该设计在确保功能实现的基础上,充分考虑了控制系统操作方便、可靠性高、稳定性好等要求。
该设计的交通灯控制器,实现了能根据实际车流量通过芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩3秒时黄灯闪烁警示绿灯时间可检测车流量并可通过双位数码管显示。
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面的系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧,特别是对C语言的掌握方面都能向前迈了一大步,从理论上的知识转化为实践上的锻炼,为日后成为合格的应用型人才打下良好的基础。
该设计虽然结束了,但由于时间、设备、条件和水平等各方面因素,还存在一些不足,还需要不断改进,当然也就需要学习并运用更多相关的知识。
这次的课程设计也让我真正认识到了实践的重要性,实践才是检验真理的最好标准,当你可以用实践做出一个东西出来,我相信这个人对理论方面的掌握一定也很牢固。
参考文献
[1]陈明荧,8051单片机课程设计实训教材,清华大学出版社2004年3月
[2]吴飞青等.单片机原理与应用实践指导[M].机械工业出版社 2009.
[3]陈汝全. 电子技术常用器件应用手册[M].机械工业出版社,2002.
[4]周向红. 51系列单片机应用与实践教程[M]. 北京:
北京航空航天大学出版社,2008.
[5]李全利.单片机原理及应用技术(第三版)[M].北京:
高等教育出版社,2009年.
[6]CNKI数字图书馆镜像分站数据库http:
//202.113.91.130:
8080/