资源描述
基于AT89C51的交通灯控制系统的设计
摘 要
交通灯控制系统是近现代社会随着物流、出行等交通发展产生的一套独特的公共管理系统.随着我国城市现代化进程的不断推进,交通是影响我国社会经济发展的严重问题,而城市交通问题的核心就是对十字路口交通信号的控制。因此,我国的城市交通问题的研究重点是交通灯控制系统的研究。
本课题是根据单片机相关知识对简单交通灯控制系统的设计.本文首先介绍了交通灯的发展历史和研究现状,阐述了本课题的任务要求,并在交通管理系统知识的基础上,根据设计要求和实际应用情况,进行总体方案论述。接着,对单片机进行了简单介绍,然后通过对交通灯控制系统需完成的功能确定了控制系统中需要设计的模块,最后对每个模块进行硬件的选择与设计,完成了对交通灯控制系统的硬件设计。在软件设计部分,运用Proteus和Keil软件对交通控制系统编程与仿真,使交通灯控制系统功能达到任务要求.
关键词:信号灯 AT89C51 倒计时 控制
引言:在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段.这一技术在19世纪就已出现了。
早期的交通信号灯使用“固定配时”方式实行自动控制,这种方式对于早起交通流量不大的情况曾起过一定的作用。但随着汽车工业的发展,交通流量增加,随机变化增强,采用以往那种单一模式的“固定配时"方式已不能满足客观需要,于是一种多时段多方案的信号控制器开始出现并逐步取代了传统的只有一种控制方案的控制器.
计算机的出现为交通控制技术的发展注入了新的活力。加拿大多伦多市于1964年完成了计算机控制信号灯的实用化,建立了一套由IBM650型计算机控制的交通信号协调系统,成为世界上第一个具有电子数字计算机城市交通控制系统的城市.这是道路交通控制技术发展的里程碑.
为此,设计一个关于交通灯控制系统,该设计以AT89C51单片机作为核心,功耗小可以方便以后研究。
1。设计的要求与方案
1。1
根据上述交通灯控制系统的研究意义,本课题设计了适应当前交通管理的交通灯控制系统。此系统中除了具有基本的交通灯功能之外,还具有倒计时、时间设置、根据情况手动控制等功能。
(1)在一般情况下,交通灯控制系统要求正常显示信号灯以及倒计时的时间变化:当东西方向为绿灯时,南北方向为红灯;当东西方向绿灯变为黄灯,提示此方向即将禁止通行;当东西方向变为红灯,南北方向变为绿灯;当南北方向变为黄灯时,提示此方向即将禁止通行。在每个方向都要求有倒计时显示,提示通行时间和暂缓通行时间。
(2)在特殊情况下,某一方向的车流量过多,按键设置通行时间和暂缓通行时间。
综上所述,交通灯的发展带动了整个交通运输的发展.本章主要介绍了交通灯的发展现状和研究意义,提出了本课题的任务要求。
35
1.2 系统设计的总体方案
1.2。1 系统设计目标
随着人们日常生活水平的提高,机动车辆不断增加,简单的交通控制系统已不能满足当前交通道路管理的需要。为了最大程度的满足交通管理的需要,为车辆提供准确的通行时间,本课题应结合先进的研究技术设计出功能完善的交通灯控制系统。此外,还需要充分考虑系统的可操作性,使控制系统具备与突发状况相适应的可调节能力。
1。2。2 交通道路管理方案
在设计交通灯控制系统之前,应明确交通道路中交通灯的管理方案。东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,以指挥车辆的安全通行。红灯亮禁止通行;绿灯亮允许通行;黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。信号灯指示方案如表1。2.1所示.
表1.2。1 信号灯指示方案
状态
信号灯显示
S1
东西方向绿灯 南北方向红灯
S2
东西方向黄灯 南北方向红灯
S3
东西方向红灯 南北方向绿灯
S4
东西方向红灯 南北方向黄灯
1.2。3 系统设计总体方案
根据交通系统管理方案和本课题任务的要求,该系统应具有交通灯的显示功能、倒计时功能和通行时间设置功能,所以把系统分为四个模块,包括单片机控制、信号灯显示、倒计时显示和键盘设置,系统硬件设计结构如图2。1所示。
初 始 参
数 设 置
AT89C51单片机控制模块
倒计时显示模块
信号灯显示模块
键盘设置
74LS245
驱动
图1。2。1 系统硬件设计结构
下面分别简单介绍这四个模块:
(1)单片机控制模块:单片机将计算机的基本部件微型化并集成到一块芯片上,具有优异的性能价格比,控制功能强,这将使各模块功能的实现变得简单方便.本系统中,8051单片机的P0口控制南北方向的时间显示;P1口控制信号灯的点亮;P2口控制东西方向的时间显示;P3口接入键盘开关,可设置适应当前状况的通行时间和暂缓通行时间。
(2)信号灯显示模块:利用发光二极管代替交通信号灯,通过单片机控制使其按要求点亮。
(3)倒计时显示模块:此模块有两种方案。第一种是采用数码管显示.该方案实现简单,但只能显示有限的符号和数码字符.第二种是采用点阵式LED显示.该方案实现复杂,须完成大量的软件工作,但功能强大,可方便的显示各种英文字符、汉字和图形。由于本控制系统只需显示倒计时时间,利用数码管即可完成此功能,因此本控制系统中利用2位一体的共阴数码管显示道路两个方向的通行时间和暂缓通行时间,通过单片机控制进行倒计时显示.
(4)键盘设置模块:在交通道路突发情况时,可通过按键手动设置通行时间和暂缓通行时间,通过单片机控制进行时间设置。此模块有两种方案:第一种是采用8255扩展I/O口及键盘、信号灯显示等。该方案使用灵活,可提供较多I/O口,但操作复杂.另一种是直接在I/O口线上接上按键开关.该方案设计精简,但提供的I/O口数量有限.由于本控制系统对于交通灯及数码管的控制只用单片机本身的I/O口就可实现,故选择第二种方案。
综上所述,交通灯控制系统的总体方案已经确定,下面进行硬件设计。
2交通灯控制系统硬件设计
2.1 单片机简介
8051系列单片机是在美国Intel公司于20世纪80年代推出的MCS—51系列高性能8位单片机的基础上发展而来的,它在单一芯片内集成了并行I/O口、异步串行口、16位定时器/计数器、中断系统、片内RAM和片内ROM,以及其他一些功能部件[5]。单片机主要有如下特点:
(1)有优异的性能价格比。
(2)集成度高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯 片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性 与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣的环境下工作。
(3)控制功能强.为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O 口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机.
(4)低功耗、低电压,便于生产便携式产品。
(5)外部总线增加了 IC(Inter-Integrated Circuit)及 SPI(Serial Peripheral Interface)等串行总线方式,进一步缩小了体积,简化了结构。
(6)单片机的系统扩展和系统配置较典型、规范,容易构成各种规模应用系统[6]。
2.2 系统时钟电路
晶振采用了内部时钟信号源的方式,如图3。1所示.8051单片机内部有一个高增益反向放大器,用于构成振荡器,反向放大器的输入端为XTAL1,输出端为XTAL2,分别是8051的第19和18脚。在XTAL1和 XTAL2之间接1个石英晶体及2个电容,就可以构成稳定的自激振荡器,当震荡在6MHz~12 MHz时通常取30pF左右的电容进行微调[7].
图3。1 系统时钟电路
2.3 信号灯显示电路
在信号灯显示电路中,本控制系统选用了发光二极管代替信号灯。其中:红色发光二极管、黄色发光二极管和绿色发光二极管分别代替红灯、黄灯、绿灯。
发光二极管是一种特殊的二极管,导通时会发光(发光二极管导通压降一般为1。5V左右)[8]。此外,工作电流要满足该二极管的工作电流。 一般发光二极管与I/O端口之间都会再连接一个电阻,其作用在于限制通过二极管的电流,从而达到减少功耗或者满足端口对最大电流的限制[9].一般发光二极管的点亮电流为5~15mA。控制系统中,信号灯指示电路如图3.2所示。
图3。2 信号灯显示电路
在此信号灯显示电路中,每个发光二极管都与1个220Ω的电阻相连接,起到限流作用。因为二极管的导通电压为1。5V,电阻分得的电压为5V-1。5V=3.5V,当选择220Ω的电阻时发光二极管的电流为3。5V/220Ω,约为15mA,此时发光二极管正常点亮。
2。4 倒计时显示电路
该交通灯控制系统的倒计时功能可以采用数码管显示,也可以采用点阵式LED显示.点阵式LED虽然功能强大,但是需要完成大量的软件工作,系统设计的复杂度会增加,因此本控制系统选择采用数码管来实现交通灯倒计时功能的显示.
8段数码管又称为8字型数码管,分为8段:A、B、C、D、E、F、G、DP。其中,DP为小数点。数码管常用的有10根管脚,每一段有一根管脚,另外两根管脚为一个数码管的公共段,两根之间相互连通[10-13]。8段LED数码管,就是在一定形状的绝缘材料上,利用不同形状点划的发光二极管组合,排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示0~9的数字[14]。数字显示代码如表3。1所示。
表3。1 数字显示驱动代码表
显示数值
dop g f e d c b a
驱动代码(16进制)
0
0 0 1 1 1 1 1 1
3FH
1
0 0 0 0 0 1 1 0
06H
2
0 1 0 1 1 0 1 1
5BH
3
0 1 0 0 1 1 1 1
4FH
4
0 1 1 0 0 1 1 0
66H
5
0 1 1 0 1 1 0 0
6DH
6
0 1 1 1 1 1 0 0
7DH
7
0 0 0 0 0 1 1 1
07H
8
0 1 1 1 1 1 1 1
7FH
本控制系统倒计时电路采用了4个2位一体的共阴数码管,此数码管在交通灯控制系统中便于观察倒计时显示,如图3。3所示。
图2。2位一体的共阴数码管
这4个数码管分别与控制两干道倒计时显示的端口相连接,即可显示出信号灯的倒计时功能。以南北方向的数码管为例,如图3.4所示.此数码管显示的数值从绿灯的设置时间最大值一直减,每秒钟减1,然后又从黄灯的设置时间一直减,再从红灯的设置时间一直减,接下来又显示绿灯时间,如此循环。
图3。4 南北方向倒计时显示
2.5 键盘设置电路
键盘设置电路中,采用独立式按键进行控制。独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态[14].独立式按键的典型应用如图3。5所示:
图3。5 独立式按键电路
独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。
根据以上特点,本控制系统单片机的I/O口数可以满足该键盘,并且可以完成课题中所要求的手动设定时间的控制功能,所以本控制系统中应采用独立式键盘,键盘设置电路如图2。6所示。
图2.6 键盘设置电路
2。6 单片机控制电路设计
交通灯控制系统中,单片机控制模块是整个电路设计的主要部分.8051单片机有4个并行I/O口P0、P1、P2和P3,每个口都有8个引脚,共有32根I/O引脚,它们都是双向通道,每一条I/O引脚都能独立地用做输入和输出。本系统中,8051单片机的P0口控制南北方向的时间显示;P1口控制信号灯的点亮;P2口控制东西方向的时间显示;P3口接入键盘开关,可设置适应当前交通状况的通行时间和暂缓通行时间。
另外,在P0口控制南北方向的时间显示中,利用74LS245芯片驱动数码管。74LS245管脚结构如图3。7所示,它是常用的芯片,用来驱动LED或者其他的设备,是8路同相三态双向总线收发器,可双向传输数据[15]。8051单片机P0口内部不带上拉电阻,输出只有电压没电流,接负载时要外接上拉电阻,即当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
图3。7 74LS245管脚结构
74LS245芯片具有双向三态功能,既可以输出,也可以输入数据,74LS245芯片内部结构如图3。8所示。
图3.8 74LS245内部结构
当片选端低电平有效时,DIR=“0”,信号由 B 向 A 传输,即接收数据;DIR=“1",信号由 A 向 B 传输,即发送数据。当为高电平时,A、B均为高阻态.
所以,在本控制系统中需要用74LS245芯片对数码管进行驱动.
本章对单片机进行了简单介绍,设计了交通灯控制系统硬件电路。接下来,还需要对软件部分进行设计,完成整个控制系统的设计要求。
3 交通灯控制系统的软件设计
硬件平台结构一旦确定,功能框架就已经形成。软件在硬件平台的基础上构筑,完成各部分硬件的控制和协调.系统是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。
3。1 软件设计环境简介
3。1.1 Proteus仿真软件简介
Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路[16].该软件的特点是:
(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。
(4)具有强大的原理图绘制功能[17].
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大.
3。1.2 KeilC51编译软件简介
目前流行的51系列单片机开发软件是德国Keil公司推出的Keil C51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6。0以上的版本将编译和仿真软件统一为uVision(通常称为uV2)[18]。Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:uVision IDE集成开发环境(包括工程管理器、源程序编辑器、程序调试器)、C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及 Monitor—51、RTX51实时操作系统[19—21]。
3。2 交通灯系统主程序
在交通灯控制系统的设计中,首先对交通灯进行初始参数设置,然后根据是否出现键盘事件,如出现键盘事件就启动键盘程序,进行键盘时间处理;若没有出现,继续进行由初始参数进行的控制程序.交通灯控制系统的设计流程如图4.1所示:
开始
初始化
等待键盘事件
键盘事
件处理
显示程
序处理
图4.1 交通灯控制系统设计流程
3。3 交通灯延时程序
延时方法可以有两种,一种是利用MCS—51内部定时器才生溢出中断来确定1秒的延时时间,另一种是采用软件延时的方法。
3。3。1 计数器硬件延时
(1)计数器初值计算
定时器工作时必须给计数器初值,这个值是送到TH和TL中的。它是以加法计数的,并能从全1到全0时自动产生溢出中断请求[22—26]。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:
TC=M-C
式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M的值为216;在方式2和3为28。
(2)计算公式
TC=M-T/ T计数
T计数是单片机时钟周期TCLK的12倍;TC为定时初值,
如单片机的主脉冲频率TCLK为12MHZ,经过12分频:
方式0: TMAX=213﹡1us =8.192ms
方式1: TMAX=216﹡1us=65。536ms
方式2和3: TMAX=28﹡1us=0。256ms
显然1秒钟已经超过了计数器的最大定时时间,所以只有采用定时器和软件相结合的办法才能解决这个问题.
(3)延时1秒的方法
系统中采用在主程序中设定一个初值为4000的软件计数器和使定时器定时250us.这样每当T0到250us时CPU就响应它的溢出中断请求,进入它的中断服务子程序。在中断子程序中,CPU先使软件计数器减1,然后判断它是否为0。为0表示1秒已到可以返回到输出时间显示程序。
(4)相应程序代码
主程序中:定时器需要定时250 us,故T0工作于方式2.初值:
TC=M-T/ T计数=28-250us/1us=06H
TMOD = 0x02; //设置定时器0为工作方式2
TH0 = 0x06;
TL0 = 0x06; //初始化8位定时器 (256-6)*4000 = 1s
EA = 1; //总中断允许
ET0 = 1; //T0中断允许
TR0 = 1; //打开T0中断
3。3。2 软件延时
软件延时需要通过编写延时程序进行延时。计算机执行一条指令需要一定的时间,由一些指令组成一段程序,并反复循环执行,利用计算机执行程序所用的时间来实现延时,这种程序称为延时程序[27—28]。如当系统使用12MHz晶振时,一个机器周期为1us,执行一条双字双周期DJNZ指令的时间为2us,因此执行该指令50万次,就可以实现延时1s的目的,对于50万次循环可采用外循环、中循环、内循环嵌套的多重循环结构。
3。4 交通灯显示程序
交通灯显示程序设计流程如图4。2所示。交通灯显示程序总共有4个状态S1、S2、S3和S4,每个状态中发光二极管显示信号灯点亮情况,数码管来进行倒计时显示,完成这4个状态后再进入初始状态S1,进行循环。
开始
初始化,状态S1
延时,并显示时间
状态S2
延时,并显示时间
状态S3
延时,并显示时间
状态S4
延时,并显示时间
图4.2 交通灯显示设计流程
3。5 按键处理程序
键盘是人机进行交互的重要接口之一。用户通过对仪器下达命令,仪器获得相应的键值,并执行相应的命令程序[29].键盘部分的软件设计主要是对键盘管理芯片8051进行编程,从而成功地读取键盘值,实现相应功能.
按键模块设计流程如图4。3所示.在系统中有3个按键设置,分别为“设置键"、“增加键”、“减少键”.若“设置键”没有按下,不进行按键处理。若“设置键"按下,则按照到“设置键”程序处理,看是否有“增加键"和“减少键”被按下,若没有,不进行处理;若有,进行相应按键处理。
Y
Y
N
N
Y
等待按键按下
设置键是否按下
增加键是否按下
减少键是否按下
设置键处
理程序
增加键处
理程序
减少键处
理程序
图4.3 按键模块设计流程
3。5。1 设置键处理
(1)设置键的功能
设置键的功能是根据按键次数决定的,如表4.1所示。按下“设置键”1次,则设置东西方向的绿灯点亮时间;按下“设置键"2次,则设置东西方向黄灯点亮时间;按下“设置键”3次,则设置南北方向的绿灯点亮时间;按下“设置键”4次,则设置南北方向黄灯点亮时间;按下“设置键"5次,则恢复交通灯工作状态,时间显示设置后的通行时间和暂缓通行时间。
表4.1 设置键功能
按“设置键"次数
第1次
第2次
第3次
第4次
第5次
调整内容
东西方向
绿灯点亮
时间
东西方向
黄灯点亮
时间
南北方向
绿灯点亮
时间
南北方向
黄灯点亮
时间
恢复交通灯工作状态
(2)设置键设计流程
N
N
N
N
Y
Y
Y
Y
Y
等待按键释放
第5次按下
东西向绿灯点亮,数码管闪烁,设置通行时间
东西向黄灯点亮,数码管闪烁,设置暂缓通行时间
南北向绿灯点亮,数码管闪烁,设置通行时间
南北向黄灯点亮,数码管闪烁,设置暂缓通行时间
交通灯正常显示,数码管显示设置好的时间
返回等待
第4次按下
第3次按下
第2次按下
第1次按下
图4。4 设置键设计流程
(3)设置键相关程序
void setSecond(void)
{while(P3_4 == 0);
cntP3_4++; //标志设置键被按下的次数
switch(cntP3_4)
{case 1:cntEW = 5;// cntEW为东西向标志位
P1 = 0xf7;//东西向绿灯点亮
break;
case 2:cntEW = 1;
P1 = 0xef;//东西向黄灯点亮
break;
case 3:cntSN = 1;// cntSN为南北向标志位
P1 = 0xfe;//南北向绿灯点亮
break;
case 4:cntSN = 3;
P1 = 0xfd;//南北向黄灯点亮
break;
case 5:cntEW = 5;//东西方向和南北方向标志位都回到初始状态
cntSN = 5;
cnt_num = 0;
cntP3_4 = 0;
break; }
}
增加键处理
(1)增加键的功能
当系统系统需要进行按键设置时,通过“增加键"可以改变东西方向和南北方向的通行时间和暂缓通行时间.此按键分为两个功能,一个是“加1”功能,一个是“加10”功能。
(2)增加键处理流程
N
N
N
Y
Y
Y
Y
延时
按键是否还在按下
延时
按键是否释放
按键是否还在按下
等待按键释放
数码管值加1
返回
数码管值加10
数码管加10
延时
图4.5 增加键设计流程
(3)“增加键”相关程序
秒数加1程序:
void addSecond(void)
{ while(P3_5 == 0);
cnt_key = 0; //记录长按键的参数清零
switch(cntP3_4)
{ case 1:
if(keyMemory != greenEW + 10) //判断按键是否已经加10,如果没有加10则秒数加1,如果已经加10则不加1
{ greenEW++;
}
if(greenEW == 90)
{ greenEW = 0;//90为秒数增加后的最大值,当超过90s后自动为0
}
scdEW = greenEW;
scdSN = greenEW + yellowEW + 1;
break; //东西向绿灯显示时间设置
case 2:
if(yellowEW++ == 9)
{ yellowEW = 0;
}
scdEW = yellowEW;
break; //东西向黄灯显示时间设置
case 3:
if(keyMemory != greenSN + 10)
{ greenSN++;
}
if( greenSN == 90)
{ greenSN = 0;
}
scdEW = greenSN + yellowSN + 1;
scdSN = greenSN;
break; //南北向绿灯显示时间设置
case 4:
if(yellowSN++ == 9)
{ yellowSN = 0;
}
scdSN = yellowSN;
break; } //南北向黄灯显示时间设置
}
长按加10s程序:当长时间按下按键后,增加的时间为10s
void add_10s(void)
{cnt_key = 0;
switch(cntP3_4)
{case 1: //设置键按1次,设置东西方向绿灯显示时间
greenEW = greenEW + 10; //长按秒数加10
if(greenEW 〉= 90)
{ greenEW = 0;
}
keyMemory = greenEW + 10; //keyMemory用来标记秒数已经加10
scdEW = greenEW;
scdSN = greenEW + yellowEW + 1;
break;
case 3: //设置键按3次,设置东西方向绿灯显示时间
greenSN = greenSN + 10;
if(greenSN 〉=90)
{greenSN = 0;
}
keyMemory = greenSN + 10;
scdEW = greenSN + yellowSN + 1;
scdSN = greenSN;
break; }
}
减少键处理
“减少键"与“增加键"设计的流程基本相同,如图4.6所示。N
N
N
Y
Y
Y
Y
延时
按键是否还在按下
延时
按键是否释放
按键是否还在按下
等待按键释放
数码管值减1
返回
数码管值减10
数码管减10
延时
图 “减少键"设计流程
交通灯控制系统仿真
仿真开始时,东西方向为绿灯,数码管从20s开始倒计时;南北方向为红灯,数码管从24s开始倒计时.接着,东西方向为黄灯,数码管从3s开始倒计时;南北方向还是红灯。过后,东西方向为红灯,数码管从30s开始倒计时;南北方向为绿灯,数码管从24s开始倒计时。再接着,东西方向继续为红灯;南北方向为黄灯,数码管从5s开始倒计时。最后,回到初始状态进行循环。当道路上出现突发状况时,按键设置通行时间后,交通灯信号灯显示状态不变,通行时间和暂缓通行时间变为按键设置后的时间.
交通灯初始状态时的仿真
初始状态下,东西方向显示绿灯,数码管从20s开始倒计时;南北方向显示红灯,禁止通行,数码管从24s开始倒计时。
图4。7 交通灯初始状态的仿真
东西向信号灯切换时仿真
东西向绿灯变为黄灯,时间为3s,南北方向为红灯.
图4。8 东西向信号灯切换时的仿真
键盘控制重设时间的仿真
通过设置键、增加键、减少键对交通灯控制系统的通行时间和暂缓通行时间进行设置,东西方向的通行时间为36s,南北方向等待通行时间为40s.
图4。9 键盘控制重设时间的仿真
综上所述,该控制系统的软件设计极其重要。本章主要阐述了每个模块的设计流程,简单介绍了控制系统的程序设计,列出了本控制系统的仿真结果。
4 交通灯控制系统调试
因本设计本身要求有稳定性高、免维护、抗干扰能力强等功能,系统调试除了验证数据处理的精度,确保判断的准确性外,同时必须确认各项的功能的正常运行。根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块化设计,所以方便了对各电路功能模块的逐级测试,包括对:交通灯点亮功能调试,倒计时功能调试,键盘设置功能调试。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。最后将各模块组合后进行整体测试,使系统的所有功能得以实现。
4.1 硬件调试
交通灯控制系统电路板焊接工作量非常大,电路焊接完成后,首先要进行检查,即确认电路无虚焊,无短路,无断路,集成元件安装是否正确,之后进行电路功能模块的分级调试,根据电路功能逐级进行:
(1)信号灯点亮功能调试:四种状态下的信号灯点亮情况和亮度的调试;
(2)倒计时功能调试:包括数码管亮度调试和延时功能的调试;
(3)键盘设置功能调试:包括按键功能调试及延时功能的调试;
4。2 软件调试
本系统的软件系统全部用C语言来编写,选用Keil对其进行调试。首先,对程序的语法进行检查.当确认程序没问题时,通过直接下载到单片机来调试。采取的是自下到上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统,最后完成一个完整的系统调试。
4.3 软硬件联调
系统做好后,进行系统的完整调试。主要任务是检验实现的功能及其效果.调试时,单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。
信号灯指示电路模块由12个发光二极管和12个220Ω电阻组成。该模块接线繁琐,极易出错.当检查发光二极管无故障、导线无断线、连线接头无互相搭联后可先写一个软件调试程序,依次检查东南西北方向的信号灯(发光二极管)是否点亮;
若未点亮,则可能是连线接错.根据灯的亮灭情况依次查找错误,直到电路正常工作为止.
倒计时显示电路模块由4个数码管组成。调试时,先检查数码管管脚是否与相应引脚相连,确认无误后,再将数码管与仿真器相连,编制一个简单的程序进行调试,直到数码管正常显示时间为止。
键盘设置电路模块由3个按键和3个1KΩ电阻组成。当检查按键无故障、导线连接无误后,用一个软件调试程序进一步检查按键设置电路。
当各模块均调试好后,进行整机联调:将各模块连接起来,逐个进行检测.调试成功后再将程序写到单片机中进行调试,直至整个系统能够正常工作。
此外,在电路抗干扰设计方面,硬件电路中采取了引线尽量短,减少交叉等措施。实践证明,这些措施对消除某些引脚引起的直流分量干扰起到了很好的效果.抗干扰设计是单片机应用系统设计的重要组成部分,没有良好的抗干扰措施,系统就无法安全可靠的工作。当然,本系统只能通过系统软件、硬件设计尽可能的减少干扰带来的影响,而不可能完全消除干扰.
5结 论
本系统采用了8051芯片和74LS245芯片为中心器件来设计交通灯控制系统,此系统通过P1口对交通灯燃亮情况进行了控制,而南北方向和东西方向的显示时间分别是通过P0、P2口进行了控制,键盘设置时间模块是由P3。4、P3。5、P3.6控制,该系统设计简便,实用性强,操作简单。但是本文所设计的交通灯控制系统还存在一些未尽人意的地方,还有很多不足之处:
(1)该交通灯控制系统没有考虑到夜晚车辆极少情况下的交通灯显示情况.
(2)该交通灯控制系统不能控制车的左、右转,以及自动根据车流改变红绿灯时间等。
(3)该交通灯控制系统只考虑交通道路中的车辆,未考虑到行人的通行问题.
通过这次毕业设计,使我得到了一次运用专业知识、专业技能分析和解决问题全面系统的锻炼,使我在单片机的基本原理、单片机应用系统的开发过程以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
参 考 文 献
[1] 余发山.单片机原理及应用技术[M]。中国矿业大学,2002。
[2] 李朝青。单片机原理及接口技术(修订版)[M]。北京:北京航空航天大学出版社,1998。
[3] Zadeh L。A。 Fuzzy Sets and their Applications [M]. New York: Academic Press,1975。
[4] 李广弟.单片机基础[M].北京:北京航空航天大学出版社,1992.
[5] 余锡存,曹国华。单片机原理及接口技术[M]。陕西:西安电子科技大学出版社,1998.
[6] 张立新,吴明捷,张晓燕.可编程控制器(PLC)的高速计数器的应用[J]。北京石油化工学院学报,2001(1):34~36。
[7] 蒋万君.在论循环时序电路的简便设计[J].机电一体化,2005(2):12~14。
[8] 史建平。PLC在全功能交通灯控制上的应用[J]。常州工学院学报,1999(6):65~68.
[9] Tobin, R。L Friesz .T.L Sensitivity analysis for equilibrium network flows [J], Prentice Hall,2001(2):87~91.
[10] 黄义源。机械设备电气与数字控制[M]。中央广播电视大学出版社,1993。
[11] 蔡美琴.张为民等MCS—51系列单片机系统及应用[M].高等教育出版社,1992。
[12] 李建中。单片机原理及应用[M].西安:西安电子科技大学出版社,2002.
[13] 康华光.电子技术基础(第四版)[M]。北京:高等教育出版社,2000。
[14] 杨佩昆等编。交通管理与控制[M].北京:人民文通出版社,1992。
[15] 绕庆和.MSC—51单片机实用技术[M]。北京:电子工业出版社,2003.
[16] 沈红卫.单片机应用系统设计实例与分析[M]。北京:航空航天大学出版社,2000。
[17]陈静,花瑞,宋炳生。交叉口交通信号控制的半实物仿真平台设计[J].武汉理工大学学报(信息与管理工程版),2008(5):26~29.
[18] 馀吉万等编。城市交通的计算机控制和管理[M]。北京测绘出版社,1985。
[19] 刘晓娟,张雁鹏,汤自安编。城市轨道交通智能控制系统[M]。中国铁道出版社,2008。
[20] 王炜。城市交通规划理论及其应用[M].北京:电子工业出版社,2007.
[21] 张辉.8051单片机控制交通信号灯的方法研究[J].邵阳师范高等专科学校学报,
附录
附录一:电路图
附录二:程序
#include”at89x51。h”
unsigned char num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数字0~9
unsigned char ctr[]={0xfa,0xf5}; //0xfa(P3_0和 P3_2为0,即高位有效)0xf5(P3_1和P3_3为0,即低位有效)
unsigned char disEW[2]; //记录东西向高低位数值
unsigned char disSN[2]; //记录南北向高低位数值
unsigned char v;
unsigned char cnt_ctr;
unsigned int scdEW,scdSN;
unsigned int cntSN,cntEW;
unsigned char cntP3_4,cntP3_5,cntP3_6;
unsigned int cnt_num,cnt_key,cnt_flash,keyMemory;
int greenEW = 20,yellowEW = 3,greenSN = 24,yel
展开阅读全文