1 概述
1.1 课题研究的背景和意义
目前,世界上的各个国家所广泛使用的最具有代表性并且也被大量使用的城巿道路交通信号系统为英国和澳大利亚
各自研发的自适应红绿灯系统。在城市交通灯的发展过程中,“自适应”红绿灯系统一直是世界各国研究机构的重
点研究对象,例如SCOOTS和SCATS。到了近年来,国外的研究喜好仍旧偏向于依照自适应理论来对信号灯系统进行研
究和制造。特别是美国,在美国有超过十个大学和研究机构在进行自适应信号灯系统的研究和制造。
中国作为一个有着悠久历史的古老国度,有着千年历史的城市不胜其数,这些城巿的布局以及道路的分布都是在
这上千年的历史中随着城市的发展而一同演化而来的,近年来有的城市虽已经做出了一些适应时代发展的改变和改
造,但还是依旧难以脱离出原来的模样,对新时代的交通运载的适应情况较差。在国内,除开少数几个经济发达的现
代化大城市外,大部分城巿的道路情况普遍有一些弊端:首先,道路密度低。城市中大量人口集中在一些城镇中,
有大量未完全开发的土地,这些城镇之间的道路承载着这座城市中的大部分交通负载。这个现象又引发出了下一个
问题——交通干道少。由于城市中大部分的人员出行和物资运输主要都集中在城镇中,一部分道路成为了交通干
道,而这些交通干道又承担起了大部分负载,便引发了交通堵塞的问题。因此,中国的城巿道路情况主要有以下现
象: 城巿中的干道少,且间距较大,又市区中聚集着大量的人口,人员出行和物资运输的需求全部集中在这一片固定区
域,这导致了车辆被迫在本就不多的干道上行驶,引发了严重的交通堵塞。这一问题在一些中小城市更为严重,在这
些中小城市中干道少的问题更为突出——只有几条干道贯穿全巿,这些干道上的大量支路缺又因城市布局只能承担极
小一部分需求。从流量的角度来看,除城市外围的道路外,都有着出行高峰集中在几个固定时段的现象,且这些时
段都容易出现严重的道路拥堵的情况,严重浪费了人们的出行时间。除了道路规划问题以外,中国的居民开车普遍
偏向于“平稳”驾驶,这种情况导致了有的车行驶缓慢,阻挡了后车前行,尾随的车也只能跟着缓慢行驶。在红绿灯
路口也经常出现启动慢的车挡住启动快的车,导致交通运力的浪费。
1.2 国内发展情况
在交通控制领域,我国起步和发展的时间比起西方国家比较晚,基本上都是在新中国建国之后。随着经济的发
展,城市范围不断扩大,人员出行和物资运输的需求也不断增加,建立起相对完善健全的交通系统的需求也迫在眉
睫。一开始,我国的科技水平相对落后,只能引进一些国外发展成熟的交通控制系统。随着科技发展,随着交通部
门对原先的系统进行的本地化改造和创新后,在一部分城市中用更先进的控制方式逐步替代了落后的控制方式,一
些先进技术也得到了更广泛的应用,某些领域的水平更是已经领先于国外发达国家。近年来,我国的交通系统已经
不仅仅是控制红绿灯,而是集红绿灯控制和道路流量控制以及现代化城巿公路控制于一体的混合型系统。结合中国的
道路布局及交通现况和国际上的先进交通系统的功能来看。中国未来的交通系统应首先从系统结构上来说,应在控
制范围内的各个区域中能够根据运载量的变化而做出改变。其次,随着科技发展,信息技术也在不断进步, 为驾驶
员提供道路信息已经成为了可能。因此交通系统的职能已经不止是引导车辆通行。更应该依靠GPS系统对车辆的行驶
路线进行引导,让驾驶员能够选择顺畅的道路,使道路通行能力更强,减小道路运行的压力。最后,任何控制系统要
良好运作的基础都是建立在具体情况之上的。因此必须针对交通流量情况规划出更完善的城市布局和道路布局。另外,随着科技发展,现有的控制系统在未来必将被逐步升级和换代。为便于改造,在制定和建造交通系统时,应当采
用模块化和通用化的硬件和软件。
1.3本课题研究的现状及其存在的问题
随着中国的经济快速发展,汽车数量的增长速度迅猛,部分中型和大型城市的交通系统正面临着全新的考验。交
通问题日益严重,交通事故发生频率大大增加,因交通事故造成的受伤和死亡逐年都在增加;另一方面,由于车辆数
量逐年上涨,交通拥堵问题也逐年变得严重。这也成为了人们每天都要面对却又只能默默忍受的社会问题。由于国
外的人口数量与我国相差过大,我国很难照搬国外的系统。因此,研发出适应我国实际交通情况的交通系统已经成
为当前的主要任务。
不论国内还是国外,先行的交通系统中,基本上都使用了定周期,半感应以及全感应等几种方式。第一种控制
方式应用较多,其应用完全是基于对路口交通流量数据的统计,由于车流量会随着城市发展而发生改变,这两种方式
都有明显的缺陷:方案容易老化过时,容易出现通行效率低的情况。而后两种方式是在第一种方式的基础上增加了
车辆检测器并根据车流量情况来自动调整周期长长度。这两种方式对交通情况的随机性适应得更好,可使交通变得
更为流畅。
在工业生产中,从基础的冶炼、化工、电气工程到高端的轨道交通、智能芯片制造等诸多领域当中,都需要对物
资运输的顺序进行有序的控制。使用单片机来对信号灯进行控制,其系统结构简单,反应速度快。更重要的是,能
够在不改变电路的前提下灵活地根据需求的变化而改变控制的方式,只需要改写程序即可,为后期的维护和扩展创
造了很多便利。因此,单片机对信号灯的控制问题是一个经常在工业生产中被提起的重大需求。
在工业生产当中,交通灯设备无处不在。目前,在工厂当中,大多数的交通系统都依赖于继电器来实现,但继电
器相比于单片机而言,其反应速度慢,且随着使用时间不断增加之后,电路出现故障的概率也会不断增加,为保障系
统的可靠,则要花费更多的成本去设立故障检测系统。而使用单片机来进行控制,软件可靠程度远比电路高,不会因
工作时长而对其性能产生影响。因此相比继电器而言,使用单片机来控制信号灯的方案具有更高的可行性。
1.4 设计思想和基本功能
假设一个十字路口,两条路分别为:东西方向和南北方向。在任一时刻只有一个方向允许通行,另一方向禁止
行,持续一定时间,经过短暂的过渡时间,将允许通行和禁止通行的方向对换。如下图1-1所示,黑圆表示亮灯,白
圆表示灭灯。
交通信号灯的四种状态由如下所述:
东西方向红灯熄灭,同时绿灯点亮,南北方向黄灯熄灭,同时红灯点亮,持续一段时间。此状态下,东西向禁
止通行,南北向允许通行。
东西方向绿灯熄灭,同时黄灯点亮,南北方向红灯点亮,持续一段时间。此状态下,除了已经正在通行中的其他所
以车辆都需等待。
南北方向红灯熄灭,同时绿灯点亮,东西方向黄灯熄灭,同时红灯点亮,持续一段时间。此状态下,东西向允许通
行,南北向禁止通行。
南北方向绿灯熄灭,同时黄灯点亮,东西方向红灯点亮,持续一段时间。此状态下,除了已经正在通行中的其他所
以车辆都需等待。
四种状态为一个循环不断重复
2 系统方案设计
2.1系统总体设计
系统总体设计需求有:
能够自动实现根据车流量自动调整通行时间,交通灯的切换以及显示剩余时间的倒计时功能。并且考虑到现实
中的车辆通行状况,另外设计了按键用于实现复位功能,夜间模式,紧急模式,东西方向通行,南北方向通行,加
减调时时间。
夜间模式:按下夜间模式按钮后,所有方向均闪烁黄灯来提醒车辆此处有路口。
紧急模式:按下紧急模式按钮后,所有方向均亮起红灯以对应交通事故或特种车辆需要紧急通行的情况。
东西、南北通行模式:为应对支干道车流量较小的情况,可以手动设置两条干道有不同的通行时间来增强道路
通行能力。
车流量检测:使用红外线传感器来检测车流量大小并自动增减通行时间来应对不同路况。
2.2系统方案设计
本系统所需要的模块不多,主要有以下几个主要功能模块:
1)LED显示模块:由红黄绿三个LED灯管模拟一个路口的红绿灯。
2)数码管显示模块:用于显示红绿灯切换倒计时时间。
3)按键模块:用于传递数字量给单片机用于控制不同的显示模式。
4)车流量检测模块:利用红外线传感器来判断某一方向上的车辆数量并传递数字信号给单片机。
2.2.1显示模块设计
本系统的显示模块可以分为LED显示部分和数码管显示部分两个部分。其中LED显示部分以红,黄,绿三种颜色
来显示禁止通行,暂停过渡,允许通行三种指令。数码管显示部分用于以倒计时的形式显示出通行和禁行的剩余时
间。据调查,行驶车辆中的司机基本上都对具有显示倒计时功能的红绿灯更有好感。这个功能可以有效地减少司机
判断信号灯何时改变的难度,并且在等待红灯期间也更不容易烦躁,间接增加了道路的运载能力和行驶安全程度。
为了使本设计更合理可靠,故将两种显示方式结合。
2.2.2按键模块设计
本系统所需的按键不多,且单片机也有足够的I/O接口,为了减小设计复杂程度和提升可靠性,选择使用独立式
按键。即每个模式均由一个独立的按键进行控制与切换。
2.2.3车流量检测模块设计
与传统交通灯系统不同的点在于,本系统增加了红外线检测来检测车流量的变化来自动调整红绿灯时间,用以
解决传统交通灯系统所采用的定时分配方式的缺陷,例如: 当某一方向上的车辆通行时间无车时,这段时间内,就
浪费了道路的运送能力。
3系统硬件设计
3.1 单片机
3.1.1单片机简介
单片机是一种集成的电路芯片。将CPU, RAM和 ROM, I\O接口,中断,定时器,计时器等部件,高度集成在一
起形成的一个小型计算机系统。相比于完整的计算机系统而言,单片机的价格便宜,能够提供低成本的学习条件;
其体积小的特点在某些对处理速度要求不高或对体积大小要求较高的嵌入式系统中,单片机比完整的计算机能更满
足需求。
3.1.2单片机选择
由台湾宏晶公司所生产的STC89C51是一种高效微控制器。相比于ATMEL生产的AT89C51, STC89C51可以使用串
口进行程序下载,而AT89C51只能使用烧录器,烧录器会在一定程度上增加学习和使用的成本。STC89C51单片机的生
态发展成熟,成本低的优点为很多对处理速度要求不高的嵌入式控制系统提供了一种灵活性高,学习成本低且更廉
价的方案。STC89C51在引脚方面与AT89C51几乎相同,STC89C51比起AT89C51增加了一些功能:主要为支持在线编程
和看门狗。且STC89C51的烧写次数为10000次,比AT89C51更为耐用,有利于降低学习成本。更重要的是,STC89C51
比起AT89C1有着更高的频率和更广的工作电压。STC89C51的最高频率为33MHZ,而AT89C51的极限频率仅有24MHZ,因
此STC89C51的计算速度更快。STC89C51支持的工作电压范围,为4V-5.5V,AT89C51在供电低于4.8V或高于5.3V的时
侯无法正常工作。因此选择更可靠的STC89C51作为最小系统。
3.2系统硬件构成
在确定了单片机的选择后,本系统选用的元器件也就确定了。为实现本系统的功能,采用4组由“红,黄,绿”
共12个LED灯管构成的红绿灯指示部分和由东南西北各两个,总共8个数码管构成倒计时显示部分。另外还有红外线
传感器来实现车流量的检测以及由按键组成的模式选择部分。
3.3单片机最小系统
STC89C51的时钟信号有两种产生方式:内部时钟以及外部时钟。单片机内的振荡电路中,只要将晶振外接到
XTAL1引脚和XTAL2引脚两个引脚上,就能在单片机内部产生脉冲信号。图中两个电容起到稳定频率并且实现快速起
振的作用。晶振的振荡频率为1.2MHZ到12MHZ之间。
当单片机的RTS引脚接入高电平并保持2个机器周期时,单片机内部就执行复位操作。
本设计采用按键来进行手动复位。按键手动复位有电平方式和脉冲方式两种
3.4 显示模块电路设计
显示模块的电路分为LED显示模块与数码管显示模块。交通灯系统采用不同颜色的发光二极管来作为不同颜色的
信号指示灯。其电路图如图3-3和图3-4所示。
发光二极管是一种能够将电能转化为光能的半导体器件。发光二极管具有高亮度,发热少,长寿长命、无毒无
害、可回收利用等优点。而随着科技发展,制造工艺和材料不断被改良,各种超高亮度的LED不断被研制并大量投入
使用,其发出的光的强度相比于最初的LED提高了近1000倍,颜色方面也已涵盖了可见光波段的几乎所有颜色。由于
能发出超高亮度的白光的LED的出现,使LED成为了全球最受瞩目的新一代光源。
数码管也属于半导体器件中的一种,其基本单元也是发光二极管。按其中二极管的连接方式可分为两种:共阳
极和共阴极。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极的数码管。当阴极被置低电平时,
就点亮相应的二极管,当阴极被置高电平时,相应的二极管就不被点亮。共阴极数码管是指将所有发光二极管的阴
极接到一起形成公共阴极的数码管。当阳极置高电平时,就点亮相应的二极管,当阳极为低电平时,相应的二极管
就不被点亮。由于它的价格便宜使用简单在电器特别是家电领域应用极为广泛。
3.5按键模块电路设计
单片机的按键设计普遍可分为两种:独立式和矩阵式。独立按键是指每一个引脚上接一个按键,按键一端连接
单片机引脚,另一端接地。这种接法的好处是程序设计比较简单且系统运行相对稳定。而矩阵式按键程序相较独立
式按键来说更复杂,但是占用的I/O引脚比独立按键少,适合应用于按键需求较多的场合。因为本系统按键较少I/O
接口足够
独立式按键判断有无按键被按下的实现原理是利用单片机的I/O引脚读取按键电平的高低来判断有无按键被按
下。平时无按键被按下时I/O引脚维持高电平。当有键按下时,此I/O 引脚接地短路,I/O 引脚置低电平。在按键释
放后,按键内的上拉电阻使I/O引脚所读取的电平重新保持高电平。接下来只要在程序中查寻此I/O引脚的电平状态
就可以判断是否有按键动作。
使用单片机判断是否有按键按下的过程中还需要有另一个很重要的部分:消抖。这里的抖动指的不是按键的机
械抖动,而是指当键盘在未按下时也会产生的电平稳定的正常现象,这一现象是不可避免会发生的。因此需要一段
程序来筛选掉因电平稳定而产生的误触。这种抖动持续时间一般为10毫秒到300毫秒之间,这段时间对于时钟周期以
微秒为单位的单片机来说则是可以被明显检测到的时间。去抖动的实现方法是:在读取I/O引脚是否为低电平时,判
断I/O引脚置低电平的时间是否大于300毫秒,在300毫秒的判断时间结束后再读取一次I/O 引脚的电平高低。若此次
读取为高电平则表示低电平的时间不到300 毫秒,则视作干扰信号不调用函数。当读出的还是低电平则表示有按键
按下,则调用相应的函数。
3.6车流量检测电路
红外线检测器的原理是利用红外线的遮挡或反射,通过检测物体有无。红外线属于不可见光的一种,因此一切
能够反射光线的物体都能够被红外线检测器所感知。随后,传感器内部的光电开关根据目标物体反射的红外线将光
信号通过发射器转换成电信号发出,接收器再根据所接收到的电信号转换为数字信号送入单片机进行数据处理。例
如,当有汽车通过传感器的检测区域时,红外线被汽车所反射,从而实现对车辆数量的检测。红外线传感器有着响
应速度快,不易受外界的恶劣条件或物体自身属性影响的优点,且安装简单成本低。
在本系统中,为检测车流量所采用的红外线传感器为E18-D50NK。该红外线检测器感应距离大约为3厘米到50厘
米之间。当有车辆经过检测器的工作范围,输出端将一个数字信号发送去单片机,单片机则自动调用相应的函数,
自动将检测器所发送的信号转换为车辆数,从而完成对车流量的统计,从而自动根据车流量调整通行时间。
3.7蜂鸣器驱动电路
蜂鸣器是一种电子发声器,供电方式一般为直流供电。本系统中蜂鸣器主要用于对闯红灯的车辆进行警报。
系统中的蜂鸣器驱动电路如图所示。其中,三极管起到开关的作用,基极置低电平会使三极管导通,电流流经
蜂鸣器使其发声;基极置高电平则三极管不再导通,电流也不再流经蜂鸣器,发声也就停止。
3.8信号驱动电路
本系统译码器选用74HC245译码器,采用此译码器可以提高译码系统效率。
4系统软件设计
4.1系统软件功能设计
根据课题需求,本交通灯控制系统软件部分可以分为8个子程序:①按键判断程序;②按键消抖程序;③二极管
控制程序;④数码管显示控制程序;⑤模式判断处理程序;⑥中断程序;⑦车辆数检测程序;⑧红绿灯等待时间调
整程序。
4.2系统软件总体分析
为便于调试,本系统软件采用模块化设计,将每一个功能分别设计成子程序,最后再主程序中对应调用。本程
序可以大体分为三个主要部分:按键处理部分,显示控制部分以及车流量检测部分。
4.2.1按键处理部分总体设计
按键控制的原理是利用读取单片机I/O引脚的电平高低来判断此时有无按键被按下。以东西和南北通行模式这两
个模式来举例,图为不同模式按键被按下后的逻辑框图。
4.2.2显示控制部分总体设计
为了控制二极管发光和数码管能够每秒刷新显示,需要用到本系统中一个重要的部分:如何让定时器计算1秒。
定时器只要开始启动,它就会开始在默认的数值上开始不断加1。而如果没有设置开始时的TH0的初始值和TL0的初始
值,它们便会有默认值0。STC89C51单片机时钟频率为12MHz,且12个时钟周期为一个机器周期,那么机器周期即为
1us。因此,想让定时器溢出就需要215个数,第216个数就会使得计数器溢出,计数器便会向处理器申请中断。综上
可计算得:溢出一次的时间大约为65.6毫秒。所以如果想让程序以1秒为周期刷新数码管数据以及各个状态的处理切
换,可以让程序产生20次50ms的定时器中断。为此,需要在程序开始的时候就给定时器定义一个初始值。在这个初
值上进行50000次加1后,定时器溢出,此时刚好就是50ms中断一次。定时中断子程序的流程框图如图。
4.2.3车流量检测部分总体设计
本系统中一大重要功能为:根据车流量自动控制通行时间的加减来增加道路的运力,减小交通堵塞的程度。和
不同的模式一样,这个功能其实也是中断子程序中的一部分。此功能一共分为两个步骤:①在红、黄灯期间使用红
外线检测器来检测计算车辆数量;②在绿灯亮前根据当前车辆数量来自动计算该方向上合适的通行时间。
据粗略统计,一辆汽车通过十字路口的时间约为2秒,据此可粗略得到某一方向上合适的通行时间:在某一方向
上绿灯亮起时,若有10辆车等待通行,则至少需要20秒的通行时间;若有15辆车等待通行,则至少需要30秒的通行
时间……以此类推。如通行时间不足,则以5秒为一个标准不断增加通行时间(最大时间不超过60秒);如通行时间
过长,则以5秒为一个标准不断减少通行时间(最小时间不低于15秒)。
5系统调试
5.1软件调试
在完成软件系统开发后,使用Keil自带的检测功能进行.c文件的编译与调试,检查各程序有无编译问题,最后
进行整个系统的仿真运行
5.2系统仿真运行
为保证系统能够正常使用,需要在程序正常编译后导入仿真软件以观察是否能正常实现所有的需求。对系统进行仿
真运行。经仿真证明,所有模块运行正常。
仿真中车辆数量用模拟值进行代替。
图为交通灯系统正常运行时状态,此时东西方向亮起绿灯,南北方向亮起红灯。经过20秒后,东
西方向上的黄灯被点亮。再经过5秒后,东西方向上的红灯被点亮,南北方向上的绿灯被点亮。此后不断重复稳定运
行。
为东西通行模式与南北通行模式。可见在东西通行模式下,东西方向上绿灯保持常亮,南北方
向上红灯保持常亮;在南北通行模式下,南北方向上绿灯保持常亮,东西方向上红灯保持常亮。
图为紧急模式运行。可见按下“紧急模式”按钮时东西与南北方向均常亮红灯。
通过增加和减少车流量可以实现对两个方向切换红绿灯通行时间的控制。
,此时东西方向上有7辆车等待通行,则根据程序,东西方向上的通行时间为最少的15秒。南北方向也
同理。
5.3系统调试小结
对系统进行调试是十分关键的一个环节,它是整个设计的最终测试环节。只有在调试完整个系统后才能发现系
统中的漏洞和设计上的缺陷,才能通过不断弥补漏洞来提升系统的完善程度。在调试过程中发生了很多问题:例如
中断程序中计算错误,导致实际上每一秒刷新的次数为理论的好几倍,整个系统运行速度非常快;程序进行一次完
整的运行后不进行下一次运行等等。但是在经过不断的调整和一次次测试后,这些问题得以解决。
6结束语
6.1研究工作总结
交通灯系统在现代是一个必不可少的系统,交通灯更是行人和车辆之间的一种默契和规则,它保证了日常交通
能够有序进行。因此它需要能够长期稳定地运行,所以设计一种简单可靠的交通灯是符合当前社会需求的。
为完成研究并更好地撰写论文,我进行了如下研究:
(1)查找与单片机开发有关的文献并阅读相关资料进行学习,观察十字路口运行情况,初步规划红绿灯方案。
(2)通过书本和网上资料学习有关STC89C51芯片,Keil开发环境,Proteus仿真软件的使用以及学习Altium
Designer软件对电路板进行设计。
(3)学习程序编写,调试程序,最后完成设计。
6.2研究难点与突破
在前期的开发过程中,因为对开发环境的不熟悉导致遇到了许多问题,但是依靠老师的帮助和网上的资料,这
些问题都被悉数解决。其次就是初步规划的方案过于简单,仅有简单的自动切换功能。在老师的帮助下随后设计了
更多符合日常生活中需要的功能,使得本系统能应对更多复杂路况,提升了系统的可靠性。最后在设计的过程中借
鉴开发手册和资料不断填补自身知识的空白,最后基本完成了预想设计。在设计的过程中也进一步提升了自学能力
和解决问题的能力以及对知识的运用能力。