单片机控制的交通灯控制系统设计
更新时间:2023-05-28 19:05:01 阅读量: 实用文档 文档下载
单片机控制的十字路口交通灯控制系统设计
河南理工大学
电子设计综合训练报告
单片机控制的交通灯控制系统设计
姓 名:学 号:专业班级: 指导老师:所在学院: 电气工程与自动化学院
2010年6月8日
单片机控制的十字路口交通灯控制系统设计
摘要
本设计是单片机控制的交通灯控制系统设计。由单片机系统、LED显示、交通灯演示系统、键盘电路及其控制电路组成。该系统除基本交通灯功能外,还具有倒计时、紧急情况处理、调整通行时间以及根据具体情况手动控制等功能。
十字路口的交通灯在工作时应具有如下特点:红灯表示该条道路禁止通性;黄灯表示该条道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通性;绿灯亮表示该条道路允许通行。
该系统使用12MHZ晶振与单片机AT89S52相连接,通过软件编程的方法实现十字路口的交通灯控制,输入装置是键盘开关,用于控制交通灯的运行模式以及设置通行时间,显示装置是两位的LED七段数码管。该系统是由AT89S52单片机控制的,可以实现以下功能:
1. 南北方向(主干道)车道和东西方向(支干道)两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒、支干道每次通行间为20秒,时间可设置修改。
2. 在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。 3. 黄灯亮时,要求每秒闪亮一次。
4. 东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法)。
5. 一道有车而另一道无车(实验时用开关 K0 和 K1 控制),交通灯控制系统能立即让有车道放行。
6. 有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯。
关键字:AT89S52单片机,交通灯,LED显示,键盘开关电路。
单片机控制的十字路口交通灯控制系统设计
目 录
1概述 -3- 1.1设计背景 -3- 1.2设计目的 -3- 1.3设计要求 -3- 2 系统总体方案及硬件设计 -4- 2.1 设计原理 -4- 2.2 各功能模块设计 -4- 2.2.1单片机AT89S52介绍 -4-
2.2.2总体方案 -5- 2.2.3时钟电路模块 -6- 2.2.4复位电路模块 -6- 2.2.5交通灯演示模块 -7- 2.2.6 LED显示模块 -7- 2.2.7键盘开关模块 -8- 3 软件设计 -10- 3.1程序流程图 -10- 3.2系统软件设计 -11- 3.2.1 LED的编程 -11- 3.2.2交通灯模块的编程设计 -12- 3.2.3定时器程序 -12- 3.2.4键盘程序 -13- 3.2.4.1通行时间设置程序 -13- 3.2.4.2紧急情况处理程序 -14- 3.2.4.3状态调整程序 -14-
4 Proreus仿真 -15- 4.1正常工作状态 -15- 4.2时间调整 -17- 4.3紧急状况 -19- 4.4状态调整 -20- 5课程设计体会 -22- 参考文献 -23- 附1:源程序代码 -24- 附2:系统原理图 -32-
单片机控制的十字路口交通灯控制系统设计
1 概述
1.1 设计背景
人们越来越关注城市交通问题,而交通灯在安全行车过程中起十分重要的作用, 现在交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯, 加上一个倒计时的显示计时器来控制行车, 对于一般情况下的安全行车、车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 主要有如下几个缺点: 1、车道让车轮流放行时间相同且固定, 在十字路口, 经常出现有些车道车辆较多, 放行时间应该长些;而有些车道车辆较少,放行时间应短些。2、 没有考虑紧急车通过时, 两车道应采取的措施, 譬如, 有消防车通过执行紧急任务时, 两车道的车都应停止, 让紧急车辆通过。根据行车过程中出现的实际情况, 如何合理高效地利用交通灯指示交通情况,这是一个迫切需要解决的问题。 1.2 设计目的
1. 进一步熟悉和掌握单片机的结构及工作原理。
2. 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 3. 通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。 4. 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 5. 了解开发单片机应用系统的全过程,为今后从事相关事业打下基础。 1.3 设计要求
1. 设计一个十字路口的交通灯控制电路,要求南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒、支干道每次通行时间为20秒,时间可设置修改。
2. 在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道; 3. 黄灯亮时,要求每秒闪亮一次。
4. 东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法)。
5. 一道有车而另一道无车(实验时用开关 K0 和 K1 控制),交通灯控制系统能立即让有车道放行。
6. 有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯。
单片机控制的十字路口交通灯控制系统设计
2 系统总体方案及硬件设计
2.1 设计原理
本设计使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时更新系统,根据道路情况适时调整交通灯的状态,全面有效地利用交通灯指示交通情况。
该设计是以单片机AT89S52为核心完成的,在硬件电路中采用P1口点亮交通指示灯,采用P0口和P2口作为2位LED数码管的驱动接口,可显示各个方向的交通灯的持续时间,单片机外围接有按键开关电路,可以响应外部中断及键盘程序,实现紧急情况处理、调整交通灯的点亮时间等功能。
芯片选用AT89C51 单片机,电路由下列部分组成:时钟电路、复位电路、键盘电路、交通灯演示电路、LED显示电路。
2.2 各功能模块设计 2.2.1 单片机AT89S52介绍
AT89S52是一个低电压,高性能CMOS型 8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器(ROM)和256 B的随机存取数据存储器(RAM)。 AT89S52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89S52可以按照常规方法进行编程,也可以在线编程。
单片机控制的十字路口交通灯控制系统设计
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
引脚使用说明:
I/O端口的编程实际上就是根据应用电路的具体功能和要求对I/O寄存器进行编程。具体步骤如下:
l. 根据实际电路的要求,选择要使用哪些I/O端口。
2. 初始化端口的数据输出寄存器,应避免端口作为输出时的开始阶段出现不确定状态,影响外围电路正常工作。
3. 根据外围电路功能,确定PO端口的方向,初始化端口的数据方向寄存器。对于用作输入的端口可以不考虑方向初始化,因为PO的复位缺省值为输入。
4. 用作输入的PO管脚,需上拉电阻。
5. 最后对I/O端口进行输出(写数据输出寄存器)和输入(读端口)编程,完成对外围电路的相应功能。
几个特殊管脚:
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。
RST: 复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平。
2.2.2 总体方案
此交通灯系统位于一个十字路口,此路口为东南西北走向。南北方向为主
干道,东西方向为支干道。各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行,黄灯亮提示人们注意红、绿灯的状态即将切换。
此交通灯系统工作过程分为4个状态。状态0南北方向绿灯亮,东西方向红灯亮。过25秒后转为状态1,南北方向绿灯灭,黄灯每秒闪亮一次,东西方向还是红灯亮。历时5秒钟再转为状态2,南北方向红灯亮,东西方向绿灯亮。过15秒后转为状态3,南北方向还是红灯亮,东西方向绿灯灭,黄灯每秒闪亮一次。历时5秒钟又循环至状态0。
交通灯的状态表如下:
单片机控制的十字路口交通灯控制系统设计
表01 交通灯的状态表
注:
1:SN:南北方向。WE:东西方向。 2:状态:0:熄。1:亮。1/0:闪。 2.2.3 时钟电路模块
时钟电路模块给单片机提供特定的时钟周期,以备单片机工作使用。单片机的机器周期有6MHz和12MHz的两种。这里采用的是12MHZ的晶振,以给单片机提供12MHz的机器周期。另外有两个30P的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。
其电路图如图02所示:
图02 时钟电路模块
2.2.4 复位电路模块
单片机系统的复位电路采用的是上电+按钮复位电路形式,其中电阻R采用10KΩ的阻值,电容采用电容值为10μF的电解电容。
其具体连接电路如图03所示:
单片机控制的十字路口交通灯控制系统设计
图03 复位电路模块
2.2.5 交通灯演示模块
此交通灯演示模块由单片机的P1口作信号输出端来控制12个交通灯的亮灭,交通灯采用的是发光二极管。因为单片机的输出电流非常小,为了使发光二极管能够发光或者更亮,二极管采用共阳极接法。即阳极通过470Ω电阻接+5V直流电源,阴极接单片机P1口。同时南北方向同色灯连同上拉电阻一起并联,东西方向也是一样,以保证同一干道上的同色灯同时点亮或熄灭,并且流过二极管的电流不会因并联而减半。
其具体连接电路如图04所示:
图04交通灯演示电路
2.2.6 LED显示模块
由于同一干道上的两个方向的红灯,绿灯,黄灯点亮时间相同,所以南北方向只需一个数码管显示相应的时间即可,同理东西方向也只需一个。
单片机控制的十字路口交通灯控制系统设计
本次交通灯设计采用两位一体的共阴极数码管来显示相应的时间。由单片机的P0口输出字型码,P2口的前四位P2.0~P2.3作位选端。 位选端接LED的共阴极,故低电位有效。因为单片机I/O口的驱动电流很小,一般只有几个毫安。为了增加驱动能力,每个LED上都加上一个上拉电阻,接入+5V电源,本次设计采用的是排阻。当P0口输出低电平时,LED不导通,上拉电阻电流灌进单片机,而当P0口输出高电平时,LED导通。而且上拉电阻的电流也通过LED,这自然就增加了LED的发光亮度。 其具体连接电路如图05所示:
图05 LED显示电路
2.2.7 键盘开关模块
此系统通过5个开关实现所有的要求,开关一端接地,另一端接单片机的P3口。K0接P3^7,当主干道有车而支干道无车时,按一下K0键,可以实现主干道通行。K1接P3^6,当支干道有车而主干道无车时,按一下K1键,可以实现支干道通行。K2接P3^3,利用中断1的方式对紧急情况进行处理,即使东南西北四个方向都亮红灯停车。K4接P3^2,利用中断0的方式对各个干道的通行时间进行设置。在相应中断0期间,K0,K1起调整时间的作用。每按一下K0,主干道通行时间加一,每按一下K0,主干道通行时间加一。K3接P3^5,按一下K3,可以使系统退出中断,回到主程序。
其具体连接电路如06图示:
单片机控制的十字路口交通灯控制系统设计
图06 键盘开关电路
单片机控制的十字路口交通灯控制系统设计
3 软件设计
3.1 系统流程图
单片机控制的十字路口交通灯控制系统设计
3.2 系统软件设计
本次单片机课程设计软件部分利用C语言编程,采用模块化程序设计。程序部分由主程序、定时器程序、T0/T1中断服务程序、键盘扫描程序、交通灯点亮程序、LED数码管扫描显示程序和延时程序构成。 3.2.1 LED的编程
本次交通灯设计采用两位一体的共阴极数码管来显示相应的时间。数码管为七段数码管,由8个发光二极管构成,通过不同的组合可用来显示数字0-9,字符A-F、H、L、P、R、U、Y、符号“-”及小数点“.”。本设计只需要显示数字0-9,来表示相应的时间。
共阴极数码管的8个发光二极管的阴极连接在一起接位选端。两个两位一体的共阴极数码管共有4个位选端,分别接在 P2^O-P2^3,低电平有效。数码管各个阳极管脚接各段的驱动电路输出端,既P0口。P0^0接a,P0^1接b, P0^6接g,P0^7接dp,高电平有效。
本设计采用逐位扫描的方式实现相应时间的动态显示。先将P2^1置低电平,P2^0、P2^2、P2^3置高电平,来选中南北方向数码管的个位,此时P0口的数据接传送给它显示。经延时一段时间,将P2^1置低电位选中南北方向数码管的十位,此时P0口的数据接传送给它显示。再用同样的方法依次驱动东西方向数码管。通过不断改变P0口、P2口的输出,用循环扫描的方式,即可实现LED的动态显示。
LED动态显示的流程图如图08:
单片机控制的十字路口交通灯控制系统设计
3.2.2交通灯模块的编写设计
本次设计的交通灯演示模块由单片机的P1口作信号输出端来控制12个交通灯的亮灭。P1^1-P1^6依次连接南北的红灯、绿灯、黄灯,东西的红灯、绿灯,黄灯。所以4种状态依次为0x6A,0x66,0x5C,0x3C。当交通灯的剩余时间为零时,改变P1口的输出,进而改变交通灯的点亮状态。交通灯依次循环上面的4个状态,就可以实现指挥交通的作用。 3.2.3 定时器程序
本次设计用定时计数器T1,TMOD是定时计算器的工作方式控制寄存器,通过对该寄存器的操作可以改变T1的工作方式。T1有4种工作方式,由TMOD寄存器中间的M1、M0这两位来决定。本次设计的定时计数器工作在工作方式1,M1、M0设定为01。定时计算器采用加1计数的方式,当接收到一个驱动事件时计数器加1。工作方式1的内部计数器宽度为16位,由TH1的8位和TL1的8位组成。当TL1溢出时将向TH1进位,当TH1溢出后会产生相应的溢出中断。
驱动事件之间的时间间隔即为定时计数器的定时宽度。在定时的工作方式下,定时宽度是单片机的机械周期,也是外部时钟频率的1/12。本次设计的外部时钟频率为12MHz。可知,接收106个驱动事件的时间为1s。
定是1s的流程图如图09所示:
单片机控制的十字路口交通灯控制系统设计
3.2.4 键盘程序
为了实现设置通行时间、紧急情况处理、有车放行等功能,本次设计中有键盘电路。通行时间设置由外部中断0实现,紧急情况由外部中断1处理,有车放行是用普通的键盘程序实现的。
按键实际是一种常用的按钮,按键未按下时,键的两个触点处于断开状态,按键按下时,两个触点闭合。按键是利用机械触点来实现键的闭合和释放,由于弹性作用的影响,机械触点在闭合及断开瞬间均有抖动过程,从而使键输入也出现抖动。
抖动时间一般为5—10ms。本次设计采用软件的办法消抖。在第一次检测到有键按下时不动作,延时10ms,再次检测按键的状态,如果仍保持闭合状态,则确定真的有键按下。当按键释放后,转入按键的处理程序
延时程序如下:
/*延时t毫秒*/ void delay(uchar t) {
uchar i; /*定义无符号字符常量*/ for(t;t>0;t--) /*执行t次循环*/ {
for(i=2000;i>0;i--) /*由于时钟脉冲是12MHz,执行2000次循环的时间为1ms*/ { } }
}
3.2.4.1 通行时间设置程序
本次设计通过外部中断0设置各个干道的通行时间。
外部中断0的请求信号由P3^2引脚输入,采用低电平有效的方式响应中断,即IT0=1。响应中断0期间,CPU禁止响应其他中断,按键K0,K1起调整时间的作用。采用加1的方式,每按一下K0,主干道通行时间加1,每按一下K1,支干道通行时间加1。通行时间可以直接在数码管上显示出来。按一下K3,可以使系统退出中断,回到主程序断点处,从下一个状态开始执行新设置的通行时间。CPU再开放总中断。
由于本次设计使用两位一体的共阴极数码管显示时间,故设置各个干道的通行时间的范围为0—100s。考虑道路通车的实际情况,时间太短无法通过交通路
单片机控制的十字路口交通灯控制系统设计
口,所以本设计中通行时间下限为6s(绿灯1s,黄灯5s)。在6—99s之间可以任意设置通行时间,更合理高效的指挥交通。 3.2.4.2 紧急情况处理程序
本次设计通过外部中断1实现对紧急情况的处理。
与外部中断0相仿。外部中断1的请求信号有P3^3引脚输入,采用低电平有效的方式相应中断,即IT0=1。响应中断1期间,CPU禁止响应其他中断,东南西北四个方向均亮红灯,各个干道都禁止通行。由于不确定要持续多久,不采用倒计时的方式显示时间,数码管显示00。紧急情况结束时,按一下K3,可以使系统退出中断,回到主程序断点处,CPU再开放总中断。 3.2.4.3 状态调整程序
在实际交通系统中,很有可能会不时的出现一道有车而另一道无车的情况,为了更合理高效的指挥交通,本次设计的交通灯控制系统能立即让有车道放。由开关 K0 和 K1 控制。采用查询的方式不断扫描K0、K1,看有没有键按下。按一下K0键,可以实现主干道通行,按一下K1键,可以实现支干道通行。
此时交通状态的改变是因为另一路无车,所以不需要设置返回,直接按主程序循环指挥。也有可能较长时间出现一道有车另一道无车的情况,只需多次按K0或K1键即可。
单片机控制的十字路口交通灯控制系统设计
4 Proteus仿真
4.1 正常工作状态
本次设计的交通灯控制系统共有四个工作状态,分别是状态0、状态1、状态2和状态3。
开始时先执行状态0,南北方向绿灯亮,东西方向红灯亮。历时25秒。如图10所示:
图10 状态0
25秒后转为状态1,南北方向绿灯灭,黄灯每秒闪亮一次,东西方向还是红灯亮。历时5秒。如图11所示:
单片机控制的十字路口交通灯控制系统设计
图11 状态1
5秒后再转状态2,南北方向红灯亮,东西方向绿灯亮。历时15秒。如图12所示:
图12 状态2
15秒后转状态3,南北方向还是红灯亮,东西方向绿灯灭,黄灯每秒闪亮一次。历时5秒。如图13所示:
单片机控制的十字路口交通灯控制系统设计
图13 状态3
此状态结束后再回到状态0,如此循环进行。 4.2 时间调整
按一下开关K4,系统响应外部中断0,进入通行时间调整程序。各个干道的通行时间有数码管显示。如图14所示:
图14 时间调整
单片机控制的十字路口交通灯控制系统设计
按键K0,K1起调整时间的作用,每按一下K0,主干道通行时间加1,每按一下K1,支干道通行时间加1。多次按键即可调整到合理的通行时间。如图15所示:
图15 通行时间+1
按一下K3,可以使系统退出中断,回到主程序断点处,从下一个状态开始执行新设置的通行时间。如图16、17所示:
单片机控制的十字路口交通灯控制系统设计
图16 主干道按新设置的时间执行
图17 支干道按新设置的时间执行
4.3 紧急情况
当出现紧急情况时,按一下开关K2,系统响应外部中断1,各个方向均亮红灯禁止通行,数码管均显示0。按一下K3,可以使系统退出中断,回到主程序断
单片机控制的十字路口交通灯控制系统设计
点处。如图18所示
图18 紧急情况
4.4 状态调整
为了更合理高效的指挥交通,当南北方向有车而东西方向无车时,按K0,系统会自动跳转到状态0,实现南北方向通行。如图19所示:
正在阅读:
单片机控制的交通灯控制系统设计05-28
基于核心素养的初中语文“部编教材”教学-精品作文(可编辑修改wo04-05
串并联电路复习06-13
淘米2014校园招聘笔试题08-24
大学生入党自传范文02-17
人教PEP版英语六下《unit 3 last weekend》A 207-22
项目奖金分配制度02-28
富力城业主便民电话(最新版)12-26
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 交通灯
- 单片机
- 控制系统
- 控制
- 设计