题 目:十字路口交通灯设计
班 级: 自动化1班
姓 名:
学 号:
指导教师: 缪仲翠
设计时间: 2012.4.22
评语:
成绩 |
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机ATC51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统等几大部分组成。系统除基本的交通灯功能外,还具有倒计时、紧急情况处理等功能,较好的模拟实现了十字路口可能出现的状况。
本系统采用单片机汇编语言编写,主要编写了主程序,LED数码管显示程序等。总体上完成了软件的编写。
关键词:交通灯;控制;ATC51;倒计时显示
引言
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通信号灯在大多数城市得到了广泛的应用。传统的交通信号灯控制一般采用了电子线路和继电器控制,结构复杂,可靠性低,故障率高。本次设计是基于ATC51单片机的交通灯控制系统,东西南北的通行时间可调,倒计时显示通行时间灯功能,该系统具有设计周期短、可靠性高、维护方便、使用简单等优点。
1、设计要求及思想
1、1设计内容
设计一个能够控制十二盏交通信号灯的模拟系统。利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。
假设一个十字路口为东南西北走向。初始状态0为东西南北都红灯亮。然后转状态1东西绿灯通车,南北红灯亮。过一段时间后,转状态2,东西绿灯灭,黄灯闪几下,南北还是红灯。再转状态3,南北绿灯通车,东西红灯亮。过一段时间后转状态4,南北绿灯灭,闪几个黄灯,东西还是为红灯亮,一段时间后,又循环至状态1。
通过对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换,并增添其倒计时间的显示功能。
1、2设计思想
在该交通灯控制系统中,东西南北四个方向各有红黄绿三种颜色的指示灯各一盏,共计12盏指示灯,用以来指挥车辆和行人安全通行。当红色指示灯亮的时候表示禁止该方向的车辆和行人通行,当绿色指示灯亮的时候表示允许该方向的车辆和行人通行,当黄色指示灯亮的时候提示人们红、绿灯的状态即将切换。并且黄灯燃亮时为东西南北两干道的公共停车时间。为了达到上述设计要求,可以用一片ATC51单片机实现。用ATC51的P0口(P0.0~P0.5)分别接上垂直两个道口的6盏信号灯; 四个数码管的显示用动态显示的方法实现。用ATC51的P1口输出作为倒计时时间的十位数码,P2口输出作为倒计时时间的个位数码。
2、单片机选型及硬件接线图
2、1配置
根据设计的要求以及自己设计的实际情况,选用ATC51单片机为交通灯
控制系统的核心,主要用来驱动数码显示管、实现晶振电路和发光二极管等部件的控制,以实现对整个系统进行控制。数码显示管用来显示红黄绿三种颜色的灯的倒计时时间。指示灯六个发光二极管用以实现对主支路的控制,红灯亮表示“停止”,绿灯亮表示“通行”,黄灯是警告信号。
2、2十字路口的交通灯分布示意图
十字路口的交通灯分布示意图如图2-1所示,将这12个交通灯进行编号。
图2-1 十字路口交通灯分布示意图
这12个交通灯共有四个状态:
状态1(S1):东西红灯(4、10)亮,南北绿灯(3、9)亮
状态2(S2):南北黄灯(2、8)亮,东西仍为红灯(4、10)亮
状态3(S3):南北红灯(1、7)亮,东西绿灯(6、12)亮
状态4(S4):东西黄灯(5、11)亮,南北仍为红灯(1、7)亮
2、3系统硬件接线图
系统硬件接线原理图如图2-2
图2系统硬件接线图
3、软件实现
3、1分析论证
单片机控制交通灯的软件设计是采用顺序执行并反复循环的方法,其中数码显示电路运用动态显示的方法,并采用延时的方法来定时通行时间。由于整个设计是在ATC51单片开发机上进行的, 所以用LED来代替交通灯,需要低电平“0”来驱动点亮,在实际应用电路中,应使P1口输出高电平“1”来驱动继电器导通,从而使220V的交通灯点亮,可以通过修改发光二极管LED的程序实现。
3、2 状态地址分配
状态地址分配如表3-1所示:
表3-1
P0.7 | P0.6 | P0.5 | P0.4 | P0.3 | P0.2 | P0.1 | P0.0 | 灯地址 |
— | — | 东西绿 | 东西黄 | 东西红 | 南北绿 | 南北黄 | 南北红 | |
1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | F3H |
1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | F5H |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | DEH |
1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | EEH |
表3-2 十六进制数字型代码表
字型 | 共阴极代码 | 字型 | 共阴极代码 |
0 | 3FH | 6 | 7DH |
1 | 06H | 7 | 07H |
2 | 5BH | 8 | 7FH |
3 | 4FH | 9 | 6FH |
4 | 66H | 灭 | 00H |
5 | 6DH |
主程序流程图如图3-1所示:
图3-1 主程序流程图
倒计时流程图如图3-2所示:
图3-2 倒计时流程图
3、4程序设计
具体程序如下:
ORG 0000H
MOV P0,#00H ;确保P0为低电位
lJMP MAIN0
ORG 0030H
MAIN0: MOV 30H,#08H
MOV R6,#00H
MOV R7,#00H
MOV DPTR,#TABLE ;取数码管的译码
MOV TMOD,#01H ;设计定时方式为定时器0的方式1;
MOV TL0,#0CDH ;定时时间为125ms
MOV TH0,#0BH
SETB TR0 ;启动定时器
SETB EA ;开总中断
SETB EX0 ;允许外部中断0
SETB EX1
CLR IT0
MAIN: MOV P0,#0F3H ;南北绿灯,东西红灯
MOV R6,#1EH ;红灯30s倒计时
MOV R7,#19H ;绿灯25s倒计时
MAIN1: CALL DELAY ; 1S延时子程序
CJNE R7,#00H,MAIN1 ;判断绿灯25s是否倒计完
MOV P0,#0F5H ;南北黄灯,东西红灯
MAIN2: CALL DELAY
MOV R7,#00H ;红灯继续倒计时,黄灯闪烁
CPL P0.1 ;黄灯闪烁
CJNE R6,#00H,MAIN2 ;判断红灯是否倒计时完
MOV P0,#0DEH ;南北红灯,东西绿灯
MOV R7,#1EH
MOV R6,#19H
MAIN3: CALL DELAY
CJNE R6,#00H,MAIN3
MOV P0,#0EEH
MAIN4: CALL DELAY
MOV R7,#00H
CPL P0.4
CJNE R6,#00H,MAIN4
JMP MAIN
DELAY: MOV A,R6 ;进行南北方向倒计时时间的十进制调整
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR ;找寻相应的数码管代码
MOV P1,A ;输出个位
MOV R4,#4 ;降低动态显示频率
LOOP1: MOV R3,#125
LOOP2: DJNZ R3,LOOP2
DJNZ R4,LOOP1
MOV A,B
MOVC A,@A+DPTR
MOV P2,A ;输出十位
MOV R4,#4
LOOP3:MOV R3,#125
LOOP4: DJNZ R3,LOOP4
DJNZ R4,LOOP3
MOV A,R7 ;进行东西方向倒计时时间的十进制调整
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,A
MOV R4,#4
LOOP5: MOV R3,#125
LOOP6: DJNZ R3,LOOP6
DJNZ R4,LOOP5
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
MOV R4,#4
LOOP7: MOV R3,#125
LOOP8: DJNZ R3,LOOP8
DJNZ R4,LOOP7
JBC TF0,LOOP ;判断是否计满125ms
AJMP DELAY
LOOP: MOV TL0,#0CDH ;计满125ms重新给定时器赋值
MOV TH0,#0BH
MOV A,30H
DEC A
MOV 30H,A
JNZ DELAY ;判断是否计满8次125ms,即1s
DEC R6 ;计满1s,东西倒计时减1,南北倒计时减1
DEC R7
MOV 30H,#08H ;重新1s次数,重新计时
RET
TABLE:DB 03FH,06H,05BH,04FH,66H ;相应数值的数码管代码
DB 6DH,7DH,07H,7FH,6FH,00H
END
3、5 proteus软件仿真
在Proteus软件仿真之前必须在Proteus里面画出硬件的外部接线图,接下来装入程序,然后组建生成HEX文件,接下来就可以运行仿真了。其初始状态时的图形如图3-3所示:
图3-3 初始状态图
由于仿真出来的它是一个动态的图形,东西南北红黄绿灯计时循环所致。在这不能展现出其动态变化过程只能给出运行过程中的静态图,所以运行过程中某一时间的运行图如图3-4所示:
图3-4 运行图
4、设计总结
经过一周的单片机课程设计,经历了很多也学会了很多。本次做的是关于交通灯系统的设计,虽说交通灯在我们日常生活中很普遍的存在,我们对它似乎也很熟悉,但是等到做这个课设的时候,我才发现其实不是这样的。刚开始实在不知道从何下手,通过认真查阅资料,整个设计就开始有了头绪。
首先,对要设计的系统有个整体的思路,接下来画流程图这样可以对系统有个总体的认识,画完流程图就到了编写程序,在编写程序的时候才发现自己对汇编语言还需要进一步的学习和巩固,经过反复的修改终于踏入了第三步,画硬件的外部接线图,在画图的时候必须了解ATC51芯片中各如个引脚的功能,学会怎么样去使用ATC51这个可编程并行接口芯片,怎样去锁存地址等等。在上学期理论学习的基础上,又下了一次苦功夫,对如何设计一个系统有了进一步的了解,巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。认识了从未接触过的Proteus单片机仿真软件,并能用它仿真处正确的结果。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处。
单片机作为我们的主要专业课之一,虽然在大三开学初我对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。这次单片机课程设计我们虽然只有短短一星期,但是经过这个星期的实践和坚持不懈,我还是克服了种种困难,最终完成了交通灯的单片机控制系统。现在想来,觉得学校安排的课程设计有着它更深层的意义——通过课程设计让我们综合了学过的理论知识来运用到设计和创新之中,增强了自己的动手和实践能力,提高了自己思考的能力,为将来继续学习和工作打下了基础。
参考文献
[1] 李华,王思明.单片机原理及应用.兰州:兰州大学出版社,2001.5
[2] 陈宁.单片机技术项目教程. 南京:南京东南大学出版社,2008.4
[3] 何立民.单片机高级教程.北京:北京航空航天大学出版社, 2000.