单片机设计十字路口交通灯设计
单片机课程设计
题 目:十字路口交通灯设计
班 级:
姓 名: 学 号: 指导教师:
设计时间:
目 录
摘 要 ....................................................... - 1 -
1. 引 言 ....................................................... - 2 -
1.1 课程设计背景 .............................................. - 2 -
1.2 本文设计任务 .............................................. - 2 -
1.3 本课程设计目的 ............................................ - 2 -
2. 系统方案设计与原理 ........................................... - 3 -
2.1 设计思路 .................................................. - 3 -
2.2 设计系统的运行过程 ........................................ - 3 -
3. 硬件设计 ..................................................... - 5 -
3.1十字路口交通灯控制系统的硬件电路设计图 .................... - 5 -
3.2 硬件的功能分析 ............................................ - 6 -
4. 软件设计 ..................................................... - 7 -
4.1 主流程图 .................................................. - 7 -
4.2 倒计时显示流程图 .......................................... - 8 -
4.3 状态地址分配 .............................................. - 9 -
4.4 LED 的字形代码表 .......................................... - 9 -
4.5 程序清单 ................................................. - 10 -
5. 运行与调试 .................................................. - 13 -
6. 心得体会 .................................................... - 15 -
参考文献 ...................................................... - 17 -
摘 要
随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路
三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制
系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系
统,它是现代城市交通监控指挥系统中最重要的组成部分。探究城市交通发展中
存在问题的原因,无论是从宏观上还是从微观上分析,其根本原因在于城市交通
系统的管理机制不适应。城市交通控制系统是现代城市智能交通系统的组成之
一,主要用于城市道路交通的控制与管理。
当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切
相关。因此,一个好的交通灯控制系统,将给道路拥挤、违章控制等方面给予技
术革新。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么
靠什么来实现这井然秩序呢?靠的是交通信号灯的自动指挥系统,信号灯的出
现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力减少交通事故
有明显效果。传统的交通信号灯控制电路一般由数字电路构成, 电路复杂、体积
大、成本高。采用单片机控制交通信号, 可以简化电路结构、降低成本、减小体
积, 现在有许多方法可以实现交通信号灯控制,本文采用AT89C51单片机为中心
器件来设计交通灯控制系统。各种交通控制方案,最终都要由路口信号控制器来
实现。
交通信号灯控制方式很多,我们可由AT89C51单片机的定时器每秒钟通过
P0口输送交通信号信息,在我们的系统中我们采用的是共阳极发光二极管,所
以当P0口的各引脚输出为低电平时,显示红、绿、黄灯的燃亮情况,由Pl 、P2
口用LED 显示每个灯的燃亮的倒计时时间。通过AT89C51单片机的RESET 位
来控制系统是工作或设置初值,当复位信号为1时就对系统进行初始化,系统就
开始工作。
关键词:AT89C51;LED 显示;交通灯
1. 引 言
1.1 课程设计背景
随着世界范围内城市化和机动化进程的加快,城市交通越来越成为一个全
球化的问题。城市交通基础设施供给滞后于高速机动化增长需求,道路堵塞日趋
加重,交通事故频繁,环境污染加剧等问题普遍存在。目前,全国大中城市普遍
存在着道路拥挤、车辆堵塞、交通秩序混乱的现象,交通事故频发,这给人民的
生命财产安全带来了极大的损失。如何解决城市交通问题已成为全社会关注的焦
点和大众的迫切呼声。为了确保十字路口的行人和车辆顺利、畅通地通过, 往往
采用电子控制的交通信号来进行指挥。
1.2 本文设计任务
设计一个能够控制十二盏交通信号灯的模拟系统。利用单片机的定时器定
时,令十字路口的红绿灯交替点亮和熄灭,并用LED 灯显示倒计时间。
假设一个十字路口为东南西北走向。初始状态0为东西南北都红灯亮。然
后转状态1南北绿灯通车,东西红灯亮。过一段时间后,转状态2,南北绿灯灭,
黄灯闪几下,东西还是红灯。再转状态3,南北红灯亮,东西绿灯通车。过一段
时间后转状态4,东西绿灯灭,闪几个黄灯,南北还是为红灯亮,一段时间后,
又循环至状态1。 通过对发光二极管的控制,来模拟交通信号灯的管理。每延
时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换,并增添其倒
计时间的显示功能。
1.3 本课程设计目的
(1)掌握十字路口交通灯控制的设计原理,并能够运用VHDL 编程语言编
写出实验程序,进一步对所学的知识进行掌握与实际应用。
(2)学会在MAX+plusⅡ软件环境中仿真,熟悉软件的基本操作和运行环境。
(3)锻炼自己获取信息的能力,以及能够独立自主的思考和解决问题的能
力。
2. 系统方案设计与原理
2.1 设计思路
在交通灯控制系统中,东西南北四个方向各有红黄绿三种颜色的指示灯各一盏,共计12盏指示灯,用以来指挥车辆和行人安全通行。当红色指示灯亮的时候表示禁止该方向的车辆和行人通行,当绿色指示灯亮的时候表示允许该方向的车辆和行人通行,当黄色指示灯亮的时候提示人们红、绿灯的状态即将切换。并且黄灯燃亮时为东西和南北两干道的公共停车时间。
初始状态0为东西南北都红灯亮。然后转为状态1南北绿灯通车,东西红灯亮。过一段时间后,转为状态2,南北绿灯灭,黄灯闪几下,东西还是红灯。再转为状态3,南北红灯亮,东西绿灯通车。过一段时间后转为状态4,东西绿灯灭,闪几个黄灯,南北还是为红灯亮,一段时间后,又循环至状态1。
为了达到上述设计要求,可以用一片AT89C51单片机实现。可以用一个AT89C51的P0口(P0.0~P0.5) 分别接上垂直两个道口的6盏信号灯,由AT89C51单片机的定时器每秒钟通过P0口输送交通信号信息,在我的这个系统中采用的是共阳极发光二极管,所以当P0口的各引脚输出为低电平时,显示红、绿、黄灯的燃亮情况。用AT89C51的Pl 、P2口显示每个灯的燃亮的倒计时时间,时间由定时器来控制,由P1口的输出作为倒计时时间的十位数码,P2口输出作为倒计时时间的个位数码,用四个数码管的显示用动态显示的方法实现。P3口用来接应急开关K2、K3,用来实现对特殊情况的处理,当按下开关时交通显示灯全变为红灯,是特殊车辆通过。
2.2 设计系统的运行过程
一般十字路口的交通灯控制系统的工作过程如下:
(1)图中南北车道绿灯亮,东西车道红灯亮。表示南北车道上的车辆允许通行,东西车道禁止通行。绿灯亮足25S 时,控制器发出状态信号,转到下一工作状态。
(2)南北车道黄灯亮,东西车道红灯亮。表示南北车道上未过停车线的车
辆停止通行,已过停车线的车辆继续通行,东西车道禁止通行。黄灯亮足5S 时,控制器发出状态转换信号,转到下一工作状态。
(3)南北车道红灯亮,东西车道绿灯亮。表示南北车道禁止通行,东西车道上的车辆允许通行绿灯亮足25S 时,控制器发出状态转换信号,转到下一工作状态。
(4)南北车道红灯亮,东西车道黄灯亮。表示南北车道禁止通行,东西车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行。黄灯亮足5S 时,控制器发出状态转换信号,系统又转换到第(1)种工作状态,就这样一次循环的进行运行。
在实际中,东西和南北两方向车道交通灯的4种运行状态的具体显示,如图2-1所示。
图2-1 四种状态的交通灯显示
3. 硬件设计
3.1十字路口交通灯控制系统的硬件电路设计图
根据以上的设计思路分析,可以得到十字路口交通灯控制系统的硬件电路设计图如3-1所示。
南北
图3-1 十字路口交通灯控制系统的硬件电路设计图
3.2 硬件的功能分析
AT89C51单片机是交通灯控制系统的核心,主要用来驱动数码显示管、实现晶振电路和发光二极管等部件的控制,本设计中用到了P0,P1和P2口,用89C51的P0口(P0.0~P0.5) 分别接上垂直两个道口的6盏信号灯,P1口输出作为倒计时时间的十位数码,P2口输出作为倒计时时间的个位数码, 所以其实现了对整个系统的控制。
十字路口要有数字显示装置,作为时间提示,以便人们更直观地把握时间。具体要求为:当某方向绿灯亮时,置定时器为某一个数值,然后以每秒减1的计数方式工作,直至减到数为0,十字路口红、绿灯交换,一次工作循环结束,进入另一个方向的工作循环。数码显示管就是用来显示东西和南北两个道口的红黄绿三种颜色的灯的倒计时时间。
通过89C5l 单片机的RESET 位来控制系统是工作或设置初值,当复位信号为1时就对系统进行初始化,系统就开始工作,复位开关K1就是用来实现对整个系统的初始化和复位工作。
在东西和南北两方向垂直的十字路口上,共有12盏交通灯,但有东西整个道上的分析一样,南北整个道上的分析一样,所以在设计时可用6盏灯来完成整个道路的设计,所以用3盏灯来显示南北方向的红黄绿,用3盏灯来显示东西方向的红黄绿。
应急开关K2、K3借用P3口,用来实现对特殊情况的处理,当按下开关时交通显示灯全变为红灯,是特殊车辆通过。
整个设计满足了任务的要求,即完成了四个状态的转换,完成了倒计时数码管的显示,所以这个系统的设计足以控制十字路口的交通灯正常变换,保证各道车辆的畅通运行。
4. 软件设计
4.1 主流程图
通过设计思路的分析,得到主流程图如图4-1所示。
图4-1 主程序流程图
4.2 倒计时显示流程图
在整个交通灯的设计过程中,LED 显示是主要设计的内容之一,在这个系统中,用到30S 和25S 两个时间段,用定时器0的工作方式1的时候,其最大设定时间只能为131ms ((216-0) ⨯2⨯10-6=131072⨯10-6(s ) ≈131ms )的时间,所以我用到了定时器和计数来完成这一功能,为了计算的方便,选择定时时间为125ms ,即计满8次为1s ,依此循环使其计够30s 或25s ,其中R6和R7就是存储30s 和25s 的倒计时时间的寄存器,整个运行过程是个比较复杂的内容,故将其流程图列画如下图所示。
图4-2 倒计时显示流程图
4.3 状态地址分配
设计任务中描述了十字路口交通灯的四种不同的状态,在整个的运行过程中要求四个状态进行切换,因此在程序设计中必须给四个状态分配不同的地址来进行驱动,由于P0上的灯用低电平“0”来驱动点亮,所以其具体点的状态地址分配如表4-1所示。 P0.7 P0.6 — 1 1 1 1
— 1 1 1 1
P0.5 1 1 0 1
P0.4 1 1 1 0
P0.3 0 0 1 1
P0.2 0 1 1 1
P0.1 1 0 1 1
P0.0 1 1 0 0
状态
地址 F3H F5H DEH EEH
东西绿 东西黄 东西红 南北绿 南北黄 南北红
表4-1 状态地址分配表
4.4 LED的字形代码表
LED 显示器中的发光二极管用共阴极连接时,其十六进制数字形代码表如表4-2所示。 字型 0 1 2 3 4 5 6 7 8 9 灭
D7 1 0 0 0 0 0 0 0 0 0 0
D6 1 0 1 1 1 1 1 0 1 1 0
D5 1 0 0 0 1 1 1 0 1 1 0
D4 1 0 1 0 0 0 1 0 1 0 0
D3 0 0 1 1 0 1 1 0 1 1 0
D2 0 1 0 1 1 1 1 1 1 1 0
D1 1 1 1 1 1 0 0 1 1 1 0
D0 共阴极代码 1 0 1 1 0 1 1 1 1 1 0
3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 00H
表4-2 LED 的字形代码表
4.5 程序清单
ORG 0000H
MOV P0,#00H ; 确保P0为低电位 lJMP MAIN0 ORG 0030H
MAIN0: MOV 30H,#08HMOV 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 LOOP2:MOV R3,#125 LOOP3:DJNZ R3,LOOP3
DJNZ R4,LOOP2 MOV A,B
MOVC A,@A+DPTR
MOV P2,A MOV R4,#4
LOOP4:MOV R3,#125 LOOP5:DJNZ R3,LOOP5
DJNZ R4,LOOP4
MOV A,R7 MOV B,#0AH DIV AB
MOVC A,@A+DPTR MOV P1,A MOV R4,#4 LOOP6:MOV R3,#125 LOOP7:DJNZ R3,LOOP7
; 进行南北方向倒计时时间的十进制调整找寻相应的数码管代码 ; 输出个位
; 降低动态显示频率
; 输出十位 ; 进行东西方向倒计时时间的十进制整
DJNZ R4,LOOP6 MOV A,B
MOVC A,@A+DPTR MOV P2,A MOV R4,#4 LOOP8:MOV R3,#125 LOOP9:DJNZ R3,LOOP9
DJNZ R4,LOOP8
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
5. 运行与调试
在单片机仿真软件Proteus.Professional.7.1.SP2中进行仿真,在初始状态下的情况如图5-1所示。
图5-1 十字路口初始状态的交通灯图
经过编译后,得到状态1(东西红,南北绿)情况下的仿真结果如图5-2所示。
图5-2 状态1情况下的仿真结果
经过编译后,运行一段时间后,我们得到状态3(东西绿,南北红)情况下的仿真结果如图5-2所示。
图5-3 状态3情况下的仿真结果
设计完成后,由于各种原因,我们在实验室的硬件上未能正确的完成模拟,但在单片机仿真软件Proteus.Professional.7.1.SP2上我们通过画外部接线图,装载程序等步骤进行了仿真,最终仿真结果能按照我们设计的四种状态依次循环的进行运行,当按下复位键时其重新开始仿真,当按下应急键时南北东西的红灯全亮,禁止车辆运行,仿真结果令人满意,让人有种苦尽甘来的感觉。
6. 心得体会
本周课程设计的任务是在学完单片机原理及课程之后综合利用所学单片机知识完成一个单片机应用系统设计,并且要在实验室连接硬件调试实现。该课程设计的主要任务是通过解决一、两个实际的问题,巩固和加深《单片机原理与应用》课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后工作打下一定的基础。
在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。通过这个星期的学习,我对单片机的结构和功能已有了大体的了解和认识。单片机在交通控制中起到了举足轻重的作用,掌握了单片机的工作原理也就基本了解了交通灯的运做原理。为了更好地掌握单片机的结构和功能,为了进一步加强自己的实践能力,学院给我们的这次课设机会让我确实受益匪浅。
在做课程设计的过程中,我通过图书和上网查阅资料,不仅了解了很多单片机的知识,而且锻炼了我自学和独立思考的能力。我们先通过题目的要求构思出大体的思路,画出主程序的流程图和细节的复杂过程的流程图,如倒计时显示的流程图,然后根据四个不同的状态逐个编写程序,在编程时加入了适当的注释,以防止长时间遗忘,或者防止别人看不懂,同时也可以在调试的过程中程序出错时便于检查。根据所设计的程序,画出外部硬件的接线图是主要完成的内容之一,开始时老师要求我们在Protel 软件中画出这个图,但最终由于安装的问题未能用到这个软件,所以我只能在visio 里面画了接线图,我们还在最后就是论文的编写。
值得一提的是我接触了以前从来未用到的单片机仿真软件Proteus ,刚开始拿到这个软件的时候我连安装都出现这样那样的问题,通过上网查阅问题,费了好大的劲才安装好,接下来就是使用软件了,初次用它,真有点无处下手的感觉,通过同学的指点和查阅书籍,我慢慢的摸索才渐渐的熟悉了里面的内容,硬件电路图搭建完成后,就是装载程序仿真了,在这里出现了很多的问题,有时候不显示,有时候显示不是我们期望的结果,经过我们不断的修改,不断的仿真,最终才完成了准确的仿真,可谓艰辛啊,但是,收获真的是巨大的,无论是从知识的
掌握上还是实践经验的积累上都给了我们很大的鼓舞。这一系列的过程听起来可能比较的容易,但做起来并非如此,它要求我们有非常拘谨和仔细的态度,所以课设不仅教会了我们很多的学习上的知识,还教会了我们很多生活和做人的道理。
顺利完成这次课程设计给了我很大的信心,但我感到了自己很多的不足和对知识理解的不全面,但我始终相信发现问题,面对问题,才有可能解决问题。今后的学习中,我将更加的努力,使自己更上一层楼。相信凡事踏踏实实做好做扎实,我们一定会随后收获很多,因为“千里之行,始于足下”是至高无上的真理。
参考文献
[1] 李华,王思明. 单片机原理及应用[M]. 兰州:兰州大学出版社,2001.5. [2] 陈宁. 单片机技术项目教程[M]. 南京:南京东南大学出版社,2008.4. [3] 胡辉. 单片机原理及应用设计[M]. 中国水利水电出版社,2006.6.
[4]何立民. 单片机高级教程[M ].北京:北京航空航天大学出版社, 2000.