单片机控制的交通灯控制系统设计

更新时间: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所示:

本文来源:https://www.bwwdw.com/article/w1r4.html

Top