基于单片机交通灯控制系统设计Word下载.docx
《基于单片机交通灯控制系统设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机交通灯控制系统设计Word下载.docx(26页珍藏版)》请在冰豆网上搜索。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。
1.2.2单片机的特点
(1)性价比高,开发周期短,易于产品化,
(2)集成度高,可靠性好,抗干扰性强,
(3)功能完善,接口多样,
(4)低功耗、低电压
一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V。
(5)总线多样,易于扩展
单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。
外部总线增加了I2C及SPI等串行总线方式,可根据需要进行并行或者串行扩展。
1.2.3MCS—51单片机内部结构有8大部分
①.一个8位的中央处理器CPU(又称为微处理器)
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
②有128字节的片内数据存储器RAM。
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
③.4KB片内程序存储器ROM或EPROM
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据
④.片内18个特殊功能寄存器(SFR)
如图(图1-1)所示:
数据缓冲区
位寻址区
R7
R03组(8字节)
2组
1组
0组
图1-1片内特殊存储器分布图
⑤.4个8位的并行输入输出I/O口(PIO)
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输
P0口P0.0~P0.7输入与输出分时的传送地址低8位与数据线
P1口P1.0~P1.7输入与输出无第二功能
P2口P2.0~P2.7输入与输出传送地址的高8位
P3口P3.0~P3.7输入与输出P3.0—RXD:
串行口输入端
P3.1—TXD:
串行口输出端
P3.2—
:
外部中断0中断请求输入端
P3.3—
外部中断1中断请求输入端
P3.4—T0:
定时器/计数器0外部输入端
P3.5—T1:
定时器/计数器1外部输入端
P3.6—
外部数据存储器写选通信号
P3.7—
外部数据存储器读选通信号
⑥.1个串行口I/O(SIO/UART)完成单片机与其他微机的之间的串行通信
⑦.2/3个16位定时器/计数器(TIMER/COUNTER)
⑧.可处理5个中断源,两级可程序优先级的中断系统
其中含有MCS-51指令集含111条指令,按照指令操作功能话费有五类:
<
1>
数据传送指令(28)
2>
算术运算指令(24)
3>
逻辑运算及转移指令(25)
4>
控制转移指令(22)
5>
位操作指令(12)
1.2.4单片机的内部结构图
除去图中的存储电路和I/O部件,剩下的是CPU,它可以分为运算器和控制器两部分。
运算器功能部件包括算术逻辑运算单元ALU、累加器ACC、寄存器B、暂存寄存器TMP1、TMP2、程序状态字寄存器PSW等。
控制器功能部件包括程序计数器PC、指令寄存器IR、指令译码器ID、定时控制逻辑电路CU、数据指针寄存器DPTR、堆栈指针SP及时钟电路等。
图1-2单片机内部结构图
第二章单片机控制交通系统总体设计
2.1单片机交通控制系统通行方案设计
设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。
其具体状态如下图所示。
说明:
黑色表示亮,白色表示灭。
交通状态从状态1开始变换,直至状态6然后循环至状1,周而复始,即如图(图2-1)所示:
直至状态6然后循环至状态1,通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:
图2-1交通状态
※东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20秒。
此状态下,东西向禁止通行,南北向允许通行。
※东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时2秒。
此状态下,除了已
经正在通行中的其他所以车辆都需等待状态转换。
※南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时20秒。
此状态下,东西向允许通行,南北向禁止通行。
※南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时2秒。
此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
下面我们可以用图表表示灯状态和行止状态的关系如下:
表2-1交通状态及红绿灯状态
状态1
状态3
状态4
状态6
东西向
禁行
等待变换
通行
南北向
东西红灯
1
东西黄灯
东西绿灯
南北红灯
南北绿灯
南北黄灯
东西南北四个路口均有红绿黄3灯和数码显示管2个,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。
状态及红绿灯状态如表2.1所示。
0表示灭,1表示亮。
2.2单片机交通控制系统的功能要求
本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,车流量检测及调整,交通违规处理和紧急处理等功能。
2.2.1倒计时显示
倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。
驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。
倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择。
2.2.2车流量检测及调整
随着我国经济建设的蓬勃发展,城市人口和机动车拥有量在急剧增长,交通流量日益加大,交通拥挤堵塞现象日趋严重,交通事故时有发生。
车辆检测器作为智能交通系统的基本组成部分,在智能交通系统中占有重要的地位。
现阶段,车辆检测器检测方式有很多,各有其优缺点,如红外线检测器、地磁检测器、机械压电检测器,磁频检测器、波频检测器、视频检测器等。
一般车流量检测器采用传感器+单片机+外围器件来实现。
而且,目前国内使用的红绿灯都是固定的红绿灯时间,并自动切换。
红灯时间和绿灯时间,是根据道口东西向和南北向的车流量,利用统计方法确定的。
交通警察不断观察十字路口的两个方向,根据车辆密度和流速决定是否切换红绿灯,以保证最佳的道路交通控制状态。
2.2.3时间手动设置
除系统根据车流量自动控制调整,也可以通过键盘进行手动设置,增加了人为的可控性,避免自动故障和意外发生,并再紧急状态下,可设置所有灯变为红灯。
键盘是单片机系统中最常用的人机接口,一般情况下有独立式和行列式两种。
前者软件编写简单,但在按键数量较多时特别浪费I/0口资源,一般用于按键数量少的系统。
后者适用于按键数量较多的场合,但是在单片机I/0口资源相对较少而需要较多按键时,此方法仍不能满足设计要求。
本系统要求的按键控制不多,且I/0口足够,可直接采用独立式。
2.2.4紧急处理
交通路口出现紧急状况在所难免,如特大事件发生,救护车等急行车通过等,我们都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关等。
由此在交通控制中增设禁停按键,就可达到想此目的。
2.3单片机交通控制系统的基本构成及原理
单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。
本系统在此基础上,加入了违规检测电路和车流量检测电路为单片机采集数据,单片机对此进行具体处理,及时调整控制指挥,为了超越视觉指挥的局限性,同时接上蜂鸣器,在听觉上加强了指挥提醒作用。
如图(图2-2)所示:
单片机
图2-2系统的总体框图
据此,本设计系统以单片机为控制核心,连接成最小系统,由车流量检测模块,违规检测模块,和按键设置模块等产生输入,信号灯状态模块,LED倒计时模块和蜂鸣器状态模块接受输出。
系统的总体框图如上所示。
键盘设置模块对系统输入模式选择及具体通行时间设置的信号,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。
在此过程中还要实时捕捉违规检测和紧急按键信号,以达到对异常状态进行实时控制的目的。
急停按键和违规检测随时调用中断。
在模式选择上,若为自动模式,将不断调用车流量检测模块对车流量进行检测统计,到达一定时间将修正通行时间一满足不同路况的需要。
第三章系统硬件电路的设计
3.1系统硬件总电路构成及原理
实现本设计要求的具体功能,可以选用AT89C52单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,8个LED东西南北各两个构成倒计时显示模块,车流量检测传感器采集流量数据,光敏传感器捕获违规信号,若干按键组成时间设置和模式选择按钮和紧急按钮等,以及用1个蜂鸣器进行报警。
3.1.1系统硬件电路构成
本系统以单片机为核心,组成一个集车流量采集、处理、自动控制为一身的闭环控制系统。
系统硬件电路由车流量检测电路、单片机、违规检测电路,状态灯,LED显示,按键,蜂鸣器组成。
其具体的硬件电路总图如图3.1所示。
其中P0,P1,用于送显两片LED数码管,P2用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,P3.2即INT1接违规检测电路和紧停/东西时间设置键J,P3.3即INT1接车流量检测电路,P3.6接南北时间设置键S,P3.7接自动模式选择/返回键F,P3.4接蜂鸣器。
3.1.2系统工作原理
系统上电或手动复位之后,系统等待模式选择设置键按下,模式分两种:
红绿灯时间自动和红绿灯时间设置。
若此时F键按下,则设置为自动模式,若此时按下的是S键,则设置为时间设置模式,依次按S若干次,J键若干次可设置好两个方向的红绿灯时间,再按F键确认。
其实这个过程就是将存储时间值的寄存器进行设置,以及标志是否要进行车流量检测及调整。
接下来,系统必须先显示状态灯及LED数码管,将状态码值送显P2口,将要显示的时间值的个位和十位分别送显P0和P1口,在此同时以50ms为周期,用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。
时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,
当然,还要开启两个外部中断,其一为违规信号或禁停信号输入,一旦信号有效,中断开始,进入中断服务子程序,开启蜂鸣器禁止全部通行,当按下F键,中断结束返回。
其二为车流量检测信号输入,若检测到车辆经过,进入相应的中断子程序,将存储车流量的寄存器加1,然后中断结束返回。
每满一个状态循环周期,若为自动模式,则须将检测到的车流量数据处理一次,判断两个方向的交通轻重缓急状况,再调整下次状态循环的红绿灯时间,以达到自动控制的目的。
如图(图3-1)所示。
图3-1基于单片机的交通灯控制系统电路图
3.1.3车流量检测电路及模拟
为了达到对红绿灯的时间控制,需要对道路上的车流量进行检测。
当前比较流行的车流量检测器件,是一种自感式的车辆传感器。
其工作原理是当车辆经过传感器时,引起其自感的变化,考虑到单片机系统的便利性,本次设计用一种手动的操作方式,即车流量的检测电路用拨断开关代替。
其基本思路为:
当车流量大时,有拨断开关送出一个高电平。
另外,再单片机和坡度按开关之间加了光电隔离。
下面叫简绍光电隔离,以TLP550为例。
TLP550是日本东芝公司生产的一款光耦,该光耦没有和基极连接,适合与再噪声比较大的环境中应用。
TLP550的工作原理如下:
当2.3叫的电压为正,且能时发光二极管正常发光时,控制的发光二极管发光,使得输出端的光敏二极管导通。
这样输出端的基极相当于与8引脚连接,其电平为高,使得三极管导通,及5.6两个引脚导通。
由于5引脚接地,这样输出端6叫就为低电平。
再实际使用中,6.8引脚通常会连接一个电阻。
这样当2.3引脚的电压不足使发光二级光发光时,输出端三极管就不到同,就相当于输出端6引脚通过一个电阻接到了8脚上。
相对于后面的连接电路来书,其为高电平。
这样就可以通过控制2.3引脚之间的电压,来控制输出6引脚的电平,达到电压耦合的隔离的作用。
车流量检测电路如下图(图3-2)所示。
图3-2车流量检测电路
基于光电隔离的作用,再加上拨断开关和LED,为了避免干扰信号,可以加入光电耦合器。
如图所示,当开关状态如图所示时,LED点亮,同时低电平被单片机捕获。
当开关拨下时LED熄灭,同时高点平被单片机捕获,这样单片机通过捕获的
电平状态做出相应的控制,与LED的状态即车流量的状态互相配合协调。
3.1.4八段LED数码管
LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。
LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。
以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示sP,即点),每个发光二极管的阳极连在一起,如图(图3-3)所示。
这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。
为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。
图3-3LED数码管
LED灯的显示原理:
通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如dp,g,f,e,d,c,b,a全亮显示为8,采用共阳极连接驱动代码,代码表如下表(表3-1)所示。
表3-1驱动代码表
显示数值
dp,g,f,e,d,c,b,a
驱动代码
11010000
C0H
11111001
F9H
2
10100100
A4H
3
10110000
B0H
4
10011001
99H
5
10010010
92H
6
10000010
82H
7
11111000
F8H
8
10000000
80H
9
10010000
90H
相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。
LED8段数码管的设置为每个方位上的一对2为显示器。
四个方位上总共用8个LED接在单片机的IO口上。
虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。
如图(图3-4)所示,其中A,B分别是P0,P1的网络标号。
图3-4LED连接图
3.3.4其它器件
(1)发光二极管
根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极
管。
每个方向上设置红绿黄灯,总共4组。
如果东西红灯亮,那南北方向就是绿灯
亮,反之亦然,所以在硬件上连接图上也是对称分布的,如下图(图3-6)所示:
图3-6信号灯的连接
(2)按键控制
本设计设置了有3个键:
S键P3.2,J键P3.2,F键P3.7。
每个按键一端接地,另一端接上拉电阻。
低电平有效,当按键按下端口接地,单片机捕获到低电平,从而知道相应的输入信息。
如下图(图3-7)所示。
图3-7按键示意
第四章系统软件程序的设计
4.1程序主体设计流程
全部控制程序实际上分为若干模块:
键盘设置处理程序,状态灯控制程序,LED显示程序,消抖动延时程序,次状态判断及处理程序,紧停或违规判断程序,中断服务子程序,车流量计数程序,红绿灯时间调整程序等。
整个软件程序方面主要分两大部分:
按键处理程序和50ms扫描程序。
流程图如图(图4-1)所示。
图4-1系统总的流程图
4.2子程序模块设计
4.2.1按键扫描程序
首先程序不断扫描模式设置键,分别记为:
S键,J键,F键对应IO端口的P3.6,P3.2,P3.7,低电平有效,按键顺序是指定的,若直接按F键,则为自动调整模式,然后进入下一程序;
若先按S键,再按J键,F键则为设置时间模式,然后进入下一程序。
程序的开始要判断是否有键按下,可以不断将S键值和F键值相与,与值为1则表示没有键按下,为0则表示有键按下,程序如下:
K1:
MOVC,P0.0
ANLC,P0.1
JBC,K1
……
接下来要判断具体是那个键,若为F键,则将自动标志位置1,进入下一程序,否则为S键,则表示设置南北绿灯时间,用R0存值,按1下加1,同时还需判断此时J键是否按下,若按下,则表示南北绿灯时间设置完毕,开始设置东西绿灯时间,用R1存值,同样按1下加1,同时判断此时F键是否按下,若按下,则表示时间设置完毕,进入下一程序。
在这个过程中,S,J键的计数是循环的,从初值20开始,加到40则循环回到20。
如判断S键程序如下:
CJNZR0,#40,V1
MOVR0,#20
V1:
INCR0
……
4.2.2状态灯显示及判断
在本设计中,实际控制的灯只有6个,即:
东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯。
定义IO端口如下,其中均是低电平有效。
H_GREENBITP2.2
H_YELLOWBITP2.3
L_REDBITP2.4
L_GREENBITP2.5
L_YELLOWBITP2.6
共有4钟状态:
东西红灯亮,南北绿灯亮(11011101/DDH);
东西红灯亮,南北黄灯亮(10111101/BDH);
东西绿灯亮,南北红灯亮(11101101/EDH);
东西黄灯亮,南北红灯亮(11100111/E7H)。
括号中是P2端口8个引脚值P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0以及对应的十六进制码。
在用于显示发光二极管时,直接由MOV指令将十六进制码送入P2口。
刚才的4个状态是依次变换的,这就要涉及到状态的判断和衔接了。
先把P2端口的值与所有的4个状态码比较,若相同则判断成功当前状态,再把下一状态的状态码送显P2即可。
程序如下:
MOVA,P2
CJNZA,#0DDH,D1
MOVP2,#BDH
D1:
CJNZA,BDH,D2
MOVP2,#EDH
D2:
CJNZA,#EDH,D3
MOVP2,#E7H
D3:
CJNZA,#E7H,Y
MOVR2,#DDH
……
4.2.3LED倒计时显示
LED计时每1秒都要刷新1次,那么计时满1秒时就要将存储时间的工作寄存器R4减1,然后送入LED显示程序中显示。
下面要将时间数据R4的十位,个位分开送显P1,P0端口,首先将R4除以10,整数即十位放在A中,余数即个位放在B中,设置7段LED显示数据的数据表,用数据指针寄存器DPTR指向数据表的首地址,再加上A中的偏移量,就可以指向十位数字,然后送显即可,个位显示同理。
具体程序如下:
MOVA,R4
MOVB,#10
DIVA,B
MOVDPTR,#LEDMAP
MOVCA,@A+DPTR
MOVP1,A
MOVA,B
MOVP3,A
LEDMAP:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
4.2.4车流量检测中断服务子程序
车流量检测是用外部中断引脚P3.3即INT1捕获到一个低电平,则进入相应的中断服务子程序,在子程序中,用R5计南北向车流量,用R6计东西向车流量,设车向标志位为01H,判断车向,程序如下:
JNB01H,U
INCR5
U:
INCR6
4.2.5紧停及违规中断服务子程序
紧停按键和违规信号传感器均连接到外部中断引脚P3.2,即INT0捕获到一个低电平,则进入该中断,中断程序中先把蜂鸣器P3.4端口置0,启动蜂鸣。
并且等待恢复键F键P3.7按下,然后关闭蜂鸣返回。