1、1安徽新华学院2016届本科毕业论文(设计)本科毕业论文(设计)题目:基于车流量检测的交通灯的设计姓 名: 宋 燕_ _学 号: 1242051250_ _专 业: 电子信息工程_ _院 系: 电子通信工程学院 _指导老师: 张 艳_ _ _职称学历: 讲师 硕士_ _完成时间: 2016年5月 教务处制1安徽新华学院本科毕业论文(设计)独创承诺书本人按照毕业论文(设计)进度计划积极开展实验(调查)研究活动,实事求是地做好实验(调查)记录,所呈交的毕业论文(设计)是我个人在导师指导下进行的研究工作及取得的研究成果。据我所知,除文中特别加以标注引用参考文献资料外,论文(设计)中所有数据均为自己研
2、究成果,不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的工作已在论文中作了明确说明并表示谢意。毕业论文(设计)作者签名: 日期: 安徽新华学院2016届本科毕业论文(设计)基于车流量检测的交通灯的设计摘 要随着社会飞速的发展,交通运输工具的迅速增加,交通控制系统在我们生活中起到了越来越重要的角色。现如今,为了提高交通秩序的安全性,除了国家颁布的一系列的交通法律法规,还必须通过一定的科技手段加以实现。本次基于车流量检测的智能交通控制系统设计是由AT89S51单片机、交通显示、LED倒计时、车流量检测及调整、紧急处理、时间模式手动设置等模块组成。系统除了能实现基本的交通信号
3、灯的功能外,还可以实现通行时间手动设置、倒计时显示、急车强行通过、车流量检测及调整等相关功能。关键词:单片机; 智能交通控制; 倒计时显示IDesign of Traffic Lights based on vehicle flow detectionAbstractWith the development of modern social logistics and the increase of transportation, the public management system-traffic control system plays a more and more importan
4、t role in our life. At present, in order to ensure and improve the safety of traffic order, not only the country need to issue a series of traffic laws and regulations, but also need to use certain scientific and technological means to achieve it.The intelligent traffic control system based on singl
5、e chip is composed of AT89S51 singlechip, traffic display, LED countdown, vehicle flow detection and adjustment, emergency treatment, time mode and other modules. The system not only can execute the basic function of traffic lights, but also can achieve some related functions such as manually set of
6、 the transit time, countdown display, the car forced through and traffic detection and adjustment and so on. Key Word: Singlechip; Intelligent Traffic Control; Countdown DisplayII目 录1 绪 论11.1 交通信号灯的选题背景11.2 交通信号灯的发展及研究意义12 系统硬件设计32.1 电路模块总体设计及实现功能32.2 AT89S51及其最小系统52.2.1 时钟电路52.2.2 复位电路62.2.3 EA脚的功能
7、及接法72.3 车流量检测电路72.4 数码管显示电路82.5 按键控制电路103 系统软件程序设计123.1 设计思路123.2 定时及计数程序的设计144 系统调试与结果154.1 软件调试154.2 硬件调试165 结 论17致 谢18参考文献19附 录201 绪 论1.1 交通信号灯的选题背景红绿灯的起源可追溯到19世纪初的英国。距今已有一百多年的历史。当时,伦敦议会大厦前经常发生马车轧人的事故。英国机械师德哈特于1868年设计了红、绿两色的煤气交通信号灯,由一名手持长杆的警察通过牵动皮带来转换灯的颜色。1914年,这时的交通信号灯已从煤气进化为电气,这与现代的交通信号灯已经没有多少差
8、距,除了信号灯本身,美国人还完善了信号控制系统。1918年,又出现了带控制的红绿灯和红外线红绿灯1。经过前人的设计和改造,交通信号灯现在已经普及到每个城市的十字路口。它的出现,不仅可以疏导日益拥堵的城市交通、提高道路通行能力,还大大降低了交通事故的发生。现阶段,许多设计工作者又设计出许多智能化,自动化,数字化等更先进的交通灯控制方案,这更方便于维护管理,给人们提供了更加便利的交通环境。1.2 交通信号灯的发展及研究意义城市交通控制系统是一个综合度高而又复杂的问题,关系到政策、机构、体制、管理、成本、基础设施建设和投资各方面问题。道路交通控制系统在近百年的发展中,经历了从手动到自动、从无感应控制
9、到有感应控制、从固定配时到灵活配时、从单点控制到干线控制、从区域控制到网络控制的长远发展历程。我国的交通是从新中国成立之后才开始发展的,起步比较晚,但随着我国经济的迅速发展,交通的需求也急剧增加,对原有的交通控制系统更提出了严峻的挑战。传统的控制系统已经不能满足交通设施日益增长的城市,由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。在交通控制系统中引入单片机,有助于增加交通运输的安全性、提高交通管理的服务质量。并在一定程度上降低了道路拥挤造成的经济损失。为了改善原有的交通控制系统,本次设计根据十字路口经常出现的交通拥堵情况,运用AT89S51单片机作为控制核心,设计出十字
10、路口智能交通灯控制系统,从而来改善道路交通拥挤的状况。通过智能交通控制系统我们将有效的解决日趋严重的交通拥挤现象,缓解城市的交通压力,降低交通事故的发生率,减少交通管理人员的工作量,更重要的是为人们的出行节省了大量的时间,创造了更多的社会价值。2 系统硬件设计2.1 电路模块总体设计及实现功能 基于单片机设计的智能交通信号灯控制系统,可以用单片机直接控制信号灯的状态变换从而来只会交通的具体通行。整个控制系统以单片机为控制核心,连接成最小系统,由车流量检测模块和按键模块等产生输入,信号灯状态模块和LED倒计时模块接受输出。系统地总体结构如图2.1所示。 图2.1 系统的总体框图键盘设置模块对系统
11、输入模式选择及具体通行时间设置的信号,系统进入正常的工作状态,执行交通灯状态显示控制,并将时间数据倒计时输入到LED数码管上实时显示。与此同时不断调用车流量检测模块对车流量进行检测,车流量达到一定值时,修正通行时间以满足不同路况的需要。在此过程中,还要实时捕捉紧急案件的信号,已达到对异常状态进行控制的目的。电路图如图2.2所示: 图2.2 系统电路图本次设计除了可以实现基本的交通信号灯的功能外,还能实现以下功能:(1) 手动设置信号灯明灭的时间手动设置信号灯明灭的时间是可以结合具体的交通路口的实际情况来设定红绿灯的时间,所以手动调节红绿灯的明灭时间这一功能可以使交通信号灯增加了人为的可控性,避
12、免自动故障和意外的发生,更加有效的疏导拥堵的车辆。(2) 倒计时显示倒计时显示是可以提醒驾驶人员和行人信号等发生改变的时间,驾驶人员和行人根据所剩的时间在停止或通行这两状态中做出合适的选择。这种明确的时间的提示,减少了驾驶员在通过红绿灯路口时的判断时间,从而也减少了车辆在通过路口时消耗的时间。(3) 车流量检测及调整随着我国经济建设的蓬勃发展,车辆检测器作为智能交通控制系统的基本组成部分,如今也发挥着越来越重要的角色。本次设计采用的是红外线检测器,因为相对于其他的检测器,红外线检测器在实验室中更易于实现。本次设计中共用了两个红外线传感器,分别统计东西方向和南北方向上的车流量,当车流量唱过系统的
13、默认值后,便会增加该方向上的通行时间。(4) 紧急处理在现实生活中,出现特殊情况也是在所难免的,这时候可以改变交通信号灯的模式来适应不同的突发状况。总共有五种模式,第一种是东西方向、南北方向全部亮红灯,这种模式可以对应在出现交通事故时给救护车让行。第二种是东西方向亮红灯,南北方向绿灯。第三种方法是东西方向亮红灯,南北方向亮绿灯。第四种是东西方向、南北方向都亮绿灯。第五种是东西方向、南北方向上都只亮黄灯。这种模式可以对应提醒驾驶员夜间行车。不同的模式可以对应不同的突发状况,使交通信号灯更加的具有实用性。2.2 AT89S51及其最小系统单片机就是在一片半导体硅片上,集中了中央处理单元(CPU)、
14、存储器(RAM、ROM)、并行I/O、串行I/O、定时器/计数器、终端系统、系统时钟电路及系统总线的用于测控领域的微型计算机2。一个最简单的单片机系统包括晶振、复位、电源、系统输入控制、输出显示以及其他外围模块。2.2.1 时钟电路首先介绍一下单片机的晶振电路,也就是时钟电路。时钟电路用于产生AT89S51单片机工作时所必须的控制信号,单片机的内部电路是在时钟信号的控制下,严格按时序指令完成工作,外围部件的运行也是以时钟信号为基准,有条不紊的工作。因此时钟频率直接影响单片机的速度,时钟电路的质量直接影响单片机的稳定性。常用的时钟电路有两种方式:(1) 内部时钟方式AT89S51单片机内部有一个
15、用于构成振荡器的高增益反相放大器,他的输入端为引脚XTAL1,输出端为XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。图2.3(a)为AT89S51单片机内部时钟方式的电路图。电路中的电容C1和C2一般选用30pF。晶体振荡器通常选择60MHz、12MHz或11.0592MHz的石英晶体。(2) 外部时钟方式 外部时钟方式使用现成的外部震荡器产生时钟脉冲信号,常用于AT89S1单片机同时工作,以便多片单片机之间的同步。 外部时钟电源直接接到XTAL1端,XTAL2端悬空,如图2.3(b)所示: (a) 内部时钟方式 (b) 外部时钟方式 图2.3 时钟方式 2.2
16、.2 复位电路 系统刚上电时,单片机内部的程序还没有开始执行,需要一段时间准备,这就是复位时间,一个稳定的单片机系统必须设计复位电路,当程序跑飞或死机时,也需要进行系统复位。复位电路有很多种,有上电复位和手动复位等。如图2.4所示: (a) 上电复位 (b) 手动复位 2.4 复位电路图 2.2.3 EA脚的功能及接法 单片机的EA引脚是外部程序存储器访问允许控制端,控制程序从内部存储器还是外部存储器读取程序。由于现在单片机内的flash容量都很大,因此基本是从内部的存储器读取程序,因此EA=“1”,即EA上接高电平。 本设计中时钟电路采用的是内部时钟方式电路,复位采用的是手动按键复位方式。2
17、.3 车流量检测电路 本次设计采用的是E18-D80NK红外线避障碍传感器,这是一种集发射与接受与一体的光电传感器,发射光经过调制后发出,接受头对反射光进行解调后输出。有效的避免了可见光的干扰3。由于使用了透镜,传感器最远可以检测80厘米的距离。检测障碍物的具体距离可以通过尾部的电位器旋钮进行调节。 图2.5 E18-D80NK原理图 连接时红黑黄线不能接错,否则会烧坏传感器。另外输出端接I/O端口时要接上拉电阻,阻值在1K欧姆左右。本次设计中,由于检测车流量使用了两个红外线避障碍传感器,它们的输出端分别连接着单片机I/O端口的P3.3和P3.4端口。E18-D80NK红外线避障碍传感器通俗而
18、言也就是一种光电式开关,工作原理也是比较简单的,输出的是“1”和“0”,也就是高电平和低电平,正常状态时输出高电平,当检测到目标时输出的是低电平。单片通过I/O端口接收到低电平并且开始计数,设定一分钟内的初始值为20,实际测的一分钟内的车流量为x。当x20时,绿灯通行时间不变;当20x30时,绿灯通行时间增加10秒;当30x时,绿灯通行时间增加20秒。通过这种方法从而可以实现车流量智能化的控制。2.4 数码管显示电路 本次设计使用的是LED数码管显示。LED数码管为“8”字型,带小数点总共八段,每一段对应一个发光二极管,有共阳极和共阴极两种4。如图2.6所示: (a) 外形及引脚 (b) 共阳
19、极 (c)共阴极 图2.6 8段LED数码管结构及外形 共阳极数码管的阳极连接在一起,接到+5V上,共阴极数码管的阴极连接在一起,接地。本次设计采用的是共阳极数码管,当某个发光二极管接低电平时,该发光二极管被点亮,即相应的段被显示。本设计中显示器用来显示红绿灯的倒计时间,因此需要LED数码管显示不同的数字,要把某些段点亮,就要为数码管的各段提供一个字节的二进制代码,即字型码。各个数字对应的字型码如表2-1所示:表2-1共阳极字型码对应的显字符 显示字符 共阳极字型码0C0H1F9H2A4H续表显示字符共阳极字型码3B0H499H592H682H7F8H880H990H习惯上以“a”段对应字型码
20、字节的最低端。 单片机控制LED数码管有两种显示方式:静态显示和动态显示。(1) 静态显示 静态显示就是无论多少位LED数码管都同时处于显示状态。多位的LED数码管工作在静态显示方式时,各位的共阳极连接在一起接+5V,每位数码管的段码线(adp)分别一个单片机的8位I/O口锁存器输出端相连。当送往各个数码管的段码一经确定,则相应的I/O口的输出将保持不变,直到送入下一个显示字符的段码。如图2.7所示: 图2.7 静态显示(2) 动态显示 本次设计中用到四个LED数码管,如果使用静态显示将占用大量的I/O端口,因此将采用动态显示。 动态显示就是将显示器的段码线的相应端并联在一起,由一个8位I/O
21、端口偶控制,而各显示位的公共端分别由另一个单独的I/O端口控制。单片机向段码线输出预显示字符的段码,每一时刻只有一位位选线有效,即被选中的位选线对应的数码管显示。每隔一定时间逐个轮流点亮各个数码管,由于数码管点亮的余辉作用和人眼的视觉暂留原理,因此数码管看起来是被同时点亮的。如图2.8所示: 图2.8 动态显示 本次设计东西南北方向上总共用到了8个LED数码管,但由于东西方向显示的时间是一样的,南北方向显示的也是一样的,因此单片机实际上只需要控制4个LED数码管显示,由于数码管较多,用的是动态显示方法,4个LED数码管的(adp)接单片机的8位I/O端的P0口,4条位选线接I/O端P2的4个端
22、口。P0控制的是单片机向数码管输入的字符段码,P2的4位位选线控制的是点亮哪个数码管。2.5按键控制电路 本次设计共用到4个按键S1、S2、S3和S4,四个按键的一端共同接地,另一端分别接单片机I/O端口的P1.0、P1.1、P1.2和P1.3端口,按键为低电平有效。如图2.9所示: 图2.9 按键电路 当P1.0=0即开关S1闭合时,可设置红绿灯时间,且按S2增加1,按S3减少1。当P1.0=1即开关S1断开时,P1.1=0,即开关S2闭合,可显示车流辆。当按下开关S4时,可以切换不同的应急模式。3 软件程序的设计3.1设计思路 整个控制程序主要分为这几个模块:按键设置处理程序、状态灯控制程
23、序、LED数码管显示程序、车流量计数程序、红绿灯时间调整程序、消抖动延时程序等。在设计程序之前,首先要确定其最基本的通行方案。在交通十字路口,一般分为东西方向和南北方向,每个方向上有绿、黄、红三种颜色的灯来控制车辆的通行或禁行。并在任意一时刻,只有一个方向通行,另一个方向禁行,持续一定时间的过渡,通行禁行的方向对换,所以总共有四种状态,具体通行状态如图3.1所示: 图3.1 交通灯通行状态图 (1) 状态a是:南北方向上的绿灯灭,同时黄灯闪烁,倒计时5s;东西方向上继续亮红灯。在a状态下,除了正在通行中的,其他所有车辆转换成等待状态。 (2) 状态b是:南北方向上黄灯灭,同时红灯亮,倒计时30
24、s;东西方向上红灯灭,同时亮绿灯,倒计时25秒。在b状态下,南北方向禁行,东西方向通行。 (3) 状态c是:南北方向上继续亮红灯;东西方向绿灯灭,同时黄灯闪烁,倒计时5秒。在c状态下,除了正在通行中的,其他所有车辆转换成等待状态。 (4) 状态d是:南北方向上红灯灭,同时亮绿灯,倒计时25s;东西方向上黄灯灭,同时亮红灯,倒计时30秒。在d状态下,南北方向是通行,东西方向上禁行。流程如图3.2所示: 图3.2 交通灯通行流程图 在实现最基本交通灯功能的基础上,单片机会通过对I/O端口P1.0P1.3的扫描,判断是否有按键被按下,在具体确定是哪个按键,根据键值跳转到按键处理程序。按键控制两种工作
25、模式:红绿灯时间设置模式和红绿灯时间自动模式。设置后进入50ms扫描程序,50ms扫描程序开始后立即刷新显示模块。若为自动模块接下来则需要计数车流量,然后扫描紧急信号。50ms已到则重新扫描,扫描达到20次之后,达到1s时间数据减1,在显示模块中修改缓冲区域内容。当车流量值大于设定值时,调用红绿灯时间调整程序,更新红绿灯时间。3.2 定时及计数程序的设计AT89S51单片机内部有2个定时器T0和T1。工作方式寄存器TMOD用来设置T0、T1的工作方式5。本次设计中TMOD=0x11,因此T0和T1为16位定时器/计数器且工作在方式1状态下。为了确定红绿灯显示时间间隔1s,让T0定时50ms,并
26、连续20次中断得到秒信号,从而控制红绿灯的点亮时间。内部定时器/计数器用作定时器时,是对机器周期计数,每个机器周期的长度是12个振荡周期。定时时间为50ms,设定时器T0的计数初值为X,晶振的频率为11.0592HZ,则:50000=(65536-X)12/11.0592得X=15808转换成十六进制为:0x3cb0,因此TH0=0x3c,TL0=0xb0.4 系统调试与结果4.1软件调试设计中运用了Keiluv3 和Proteus 7.1 SP2两种软件。(1) 用Keil编写C语言程序,根据流程图顺序编写。写完程序后进行编译,修改错误部分,直到编译成功,没有错误,生成.HEX文件。(2)
27、Proteus是电路仿真软件,在Proteus中画出总体电路图。再将.HEX文件加载到电路图中进行仿真,仿真图如图4.1所示: 图4.1 电路仿真图 由于E18-D80NK红外避障传感器无法在Proteus软件中无法仿真,因此用按键产生的低电平来代替传感器检测到物体输出的低电平。4.2 硬件调试 在电路设计中,用到了单片机及其最小系统、两个避障碍传感器、两个阻排、十二个发光二极管、四个按键、四个数码管、一个电源开关等器件。在我们将器件焊接在电路板上之前,要对电路图进行适当的调整,以便做出来的实物更加的整齐,明朗。器件全部焊接好之后,将程序导入单片机中进行调试。如图4.2所示。如果实物调试过程中
28、出现问题,可以检查是否有虚焊、漏焊的引脚,然后针对各个模块进行排查。 图4.2 实物调试 在实物调试的过程中,由于无法实现正真的通过避障碍传感器检测车流量,但可以通过手指或任何物体的来回晃动,代替车辆的流通。5 结 论基于车流量检测的智能交通信号灯的设计,主要完成的任务有:(1) 通过书籍或网络了解和研究交通信号灯的相关资料。 (2) 列出大纲,通过Keil软件编写程序,编译调试直到程序无误。 (3) 在Proteus软件中画出电路图,仿真并观察是否能完成相应的功能。 (4) 根据电路原理图在PCB板上焊接实物,并将程序烧入单片机中,检查电路是否有问题,并观察是否能实现相应功能。 在本次设计的
29、过程中也遇到了很多问题,通过自己的努力和朋友的帮助,系统在实现交通信号灯基本的功能外,还可以实现手动设置红绿灯时间、倒计时显示、车流量检测及调整还有紧急处理功能。不过社会经济的快速发展,车辆的迅速增加,这些功能已经不能满足城市的需求,因此还可以增加违章报警,左转弯或右转弯红绿灯提示等功能,这些功能我将在后期再进行深入的研究。致 谢在本次毕业设计的过程中,我遇到了很多问题。从一开始的选题,设计以及后来的调试都是在老师和朋友的帮助下才能顺利进行。当时一开始选择这个课题的时候,自己也并不是很了解,通过查阅书籍和上网来寻找相关资料整理思路,遇到不懂得问题,先和同学商讨,最后再去请教老师,尽管老师很忙对
30、我们但对于我们提出的问题还是一一详细的解释,并询问进度情况,督促我的工作,尽心尽力。我能顺利完成,与老师和同学的帮助密不可分。在此我要对我的指导老师张艳老师还有帮助我的同学表示诚挚的谢意!参考文献1 陈毅,许飞,王学飞.基于单片机的交通灯智能控制系统J.中国高新技术企业,2009年第15期.2 刘勇.数字电路M.电子工业出版社.2004.3 郭爱芳.传感器原理及应用M.西安电子科技大学出版社.2010.9.115-1194 陈朝大,韩剑.单片机原理及应用M.华中科技大学出版社.2014.6.42-455 常喜茂,孔英会,付小宁.C51基础与应用实例M.电子工业出版社.2009.1.20-246
31、 付兰芳,付少波.传感器及其应用电路M.化学工业出版社.2011.6.133-1347 岂兴明.51单片机编程基础与开发实例详解M.人民邮电出版社.2008.11.32-568 杨欣,张延强.实例解读51单片机M.电子工业出版社.2011.4.289-2949 孙家启.C语言程序设计教程M.合肥工业大学出版社.2011.6.56-8410 彭伟.单片机C语言M.电子工业出版社.2009.6.32-4011 蒋辉平,周国雄.基于Proteus的单片机系统设计与仿真实例M.机械工业出版社.2009.7.1-1612 翁嘉民,周成虎,杜大军.单片机典型系统设计与制作实例解析M.电子工业出版社.201
32、4.114-3013 张元良,王建军.单片机开发技术实例教程M.机械工程出版社.2011.1.66-6914 严天峰.单片机应用系统设计与仿真调试M.北京航空航天大学出版社.2005.15 沙占友.单片机外围电路设计M.电子工业出版社.2006.附 录#include /调用单片机头文件#define uchar unsigned char /宏定义uchar代替unsigned char。#define uint unsigned int /宏定义uint用来定义无符号整型数。/数码管段选定义 0 1 2 3 4 5 6 7 8 9uchar smg_du=0x40,0x75,0x0c,0x
33、14,0x31,0x12,0x02,0x74,0x00,0x10,/ AB C D E F不显示 0x20,0x03,0x4a,0x05,0x0a,0x2a,0xff; /断码uchar dis_smg8 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8;uchar smg_i = 4; /显示数码管的个位数uchar flag_che; /本看车流量/数码管位选定义sbit smg_we1 = P20; /数码管位选定义sbit smg_we2 = P21;sbit smg_we3 = P36;sbit smg_we4 = P37;char dx_s = 0
34、;/东西 南北 倒计时变量sbit dx_red = P24; /东西红灯sbit dx_green = P23;/东西绿灯sbit dx_yellow = P22;/东西黄灯sbit nb_red = P27;/南北红灯sbit nb_green = P26;/南北绿灯sbit nb_yellow = P25;/南北黄灯sbit nb_che = P33; /南北车计流量sbit dx_che = P34; /东西车计流量uint nb_che_value;uint dx_che_value;uchar xdata nb30;uchar xdata dx30;uchar flag_jtd_m
35、ode; /交通灯的模式 根据时间 bit flag_1s = 0;bit flag_500ms;bit flag_dx_nb = 0; /东西南北模式uchar flag_5m_value;uchar i;uchar flag_alarm;/模式uchar dx_time = 30,nb_time = 20; /东西、南北的时间uchar flag_jdgz ; /交通管制uchar miao ,miao1;/*数码位选函数*/void smg_we_switch(uchar i)switch(i)case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1;
36、smg_we4 = 1; break;case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;/* 名称 : delay_1ms()* 功能 : 延时1ms函数* 输入 : q* 输出 : 无*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j110;j+);/* 名称 : display()* 功能 : 数码管显示* 输入 : 无* 输出 : 无*/void display()uchar i;for(i=0;i= 60)miao = 0;for(i=0;i60;i+)dx_che_value += dxi;for(i=0;i60;i+)nb_che_value += nbi;dx_s -;if(dx_s = 30