智能交通4控制系统设计PG.docx
- 文档编号:27030714
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:29
- 大小:287.75KB
智能交通4控制系统设计PG.docx
《智能交通4控制系统设计PG.docx》由会员分享,可在线阅读,更多相关《智能交通4控制系统设计PG.docx(29页珍藏版)》请在冰豆网上搜索。
智能交通4控制系统设计PG
毕业设计说明书
智能交通控制系统设计
学生姓名:
学号:
学院:
系名:
专业:
指导教师:
2015年6月
第一章引言
1.1选题背景
最早的手牵皮带到20世纪50年代的电气控制,从采用计算机控制到现代化的电子定时监控,交通信号灯在科学化、自动化上不断地更新、发展和完善。
交通指挥灯是非裔美国人加莱特.摩根在1923年发明的[1]。
此前,铁路交通已经使用自动转换的灯光信号有一段时间了。
但是由于火车是按固定的时刻表以单列方式运行的,而且火车要停下来不是很容易,因此铁路上使用的信号只有一种命令:
通行。
公路交通的红绿灯则不一样,它的职责在很大程度上是要告诉汽车司机把车辆停下来[2]。
开车的人谁也不愿意看到停车信号。
美国夏威夷大学心理学家詹姆斯指出,人有一种将刹车和油门与自尊相互联系的倾向。
他说:
驾车者看到黄灯亮时,心里便暗暗作好加速的准备。
如果此时红灯亮了,马上就会产生一种失望的感觉。
他把交叉路口称作“心理动力区”[3]。
如果他的理论成立的话,这个区域在佛罗伊德心理学理论中应该是属于超我而非本能的范畴。
新式的红绿灯能将闯红灯的人拍照下来。
犯事的司机不久就会收到罚款单。
有的红绿灯还具备监测车辆行驶速度的功能[4]。
用于交通灯控制系统的设计方法很多,例如可编程控制器PLC、单片机、标准逻辑器件等实现,然而,基于这些设备需要调整和调试电路的硬件支持,在某种程度上增加了设计过程的难度[5][6]。
提出基于单片机的交通灯系统设计,不仅编程简单、灵活、可靠性高,而且成本低,经济效益高。
为实现交通系统智能控制提供了一个新方法[7]。
1.2国内外发展情况
近年来,在快速城市化进程和经济发展的影响下,城市交通迅速增长,交通问题成为困扰许多大城市发展的通病,已成为日趋严峻的国际性问题[8]。
其中,十字路口则是造成交通堵塞的主要”瓶颈”。
世界发达国家都在积极探索如何最大限度地发挥道路通行能力,尽量减少交通堵塞造成的各种损失[9]。
基于单片机的智能交通灯控制系统,该系统可实现3种颜色灯的交替点亮,实现直行、左转、右转、掉头、四种通行控制,通过信息提示指挥车辆和行人安全通行,并能实时监测交通灯工作状态[10]。
该系统不仅编程简单、灵活、具有较高的可靠性,而且成本低、具有良好的经济效益,是今后一段时间国内外交通灯的主流设计思路[11]。
1.3发展前景
自从1858年英国人,发明了原始的机械扳手交通灯之后,随后的一百多年里,交通灯改变了交通路况,也在人们日常生活中占据了重要地位[12]。
随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著的效果[13]。
近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。
智能交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制[14]。
从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。
系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景[15]。
1.4本系统功能
本系统设计一款带直行、左转、右转、掉头、四种通行控制交通控制系统。
带紧急按钮,当按下后所有灯都亮红灯。
带有时钟功能可以设定进入夜间模式的时间段,自动夜间模式此时所有灯都亮黄灯。
同时有数码管显示当前颜色灯的剩余时间,倒计时功能。
第二章系统介绍及方案讨论
2.1系统结构框图
图2.1系统结构图
2.1.1系统介绍
因为系统逻辑较简单,在低成本低复杂度的思想下本系统主要利用STC89C51传统的51单片机作为主控核心,复杂交通灯的调度人机设置和显示。
本系统主要包括红绿灯的驱动,利用发光7段数码管显示倒计时,利用USB接口加载单片机程序和按键进行系统设定。
2.1.2系统各部件功能
1).双位数码管用来显示各灯状态的剩余停留时间。
2).USB通信接口用来进行单片机程序的加载,以及备用以后功能升级用来与外部设备通信;
3).LED驱动用来驱动LED,应为LED为电流驱动型单片机的IO不能直接驱动所以需要加一个大功率的功率转换芯片用以驱动LED。
4).DS1302时钟基准用于进入夜间模式的时间。
2.2单片机选型
在集成电路,微控制器,DSP,FPGA水平高度发达的今天,设计我们这样一款系统可以选择的为控制器有很多例如:
8位的改进型51单片机、AVR单片机、MSP43016位单片机以及现在比较火的32位的STM32、或者纯硬件控制的FPGA、CPLD、或者DSP等。
对于工程应用应该选择一款合适于我们的系统的单片机,既符合功能要求、又节约成本、才是我们的核心思想,下面我将介绍一下我们常用的几款单片机:
AVR单片机:
AVR单片机是采用美国爱梅尔(ATMEL)公司生产的一款8位单片机。
常用型号为ATMEGA48单片机。
Mega系列单片机是AVR家族的高档系列,采用哈佛结构。
具备较宽的供电电压(2.0-5.5V),该型单片机可以运行在低频模式(32K时钟)具备较低的功耗但是不能由应用程序更改时钟。
该型单片机采用了RISC精简指令集,集成了硬件乘法器,在速度与外设方面相比51单片机有很大提高,性价比较高,但是相比于51单片机成本还是稍高。
ST公司的STM32单片机,该型单片机基于ARM公司的Cortx-M3核心的由意法半导体(ST)公司生产的32位单片机,主要用于一些较复杂的工业与高端便携式应用,性价比较高,但是软件开发较复杂需要系统学习ARM,虽然性价比高,性能好但是开发复杂。
经过综合考虑之后我采用国产的STC89C52单片机的DIP-40封装的型号,该型单片机相对于传统的AT89C52单片机性能有所提升,程序采用串口加载也很方便。
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能其内部功能如图2.2所示。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
相比于传统51单片机其主要有以下特征:
1.8K字节程序存储空间;
2.512字节数据存储空间;
3.内带4K字节EEPROM存储空间;
4.工作电压:
5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
5.工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
6.可直接使用串口下载ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
7.共3个16位定时器/计数器。
即定时器T0、T1、T2
8.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
图2.2STC89C52内部功能图
2.3计数显示的选择
为了显示明显和显示方便我采用的是8段数码管进行倒计时的显示。
2.3.1数码管结构介绍
led数码管(LEDSegmentDisplays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示。
LED数码管以发光二极管作为发光单元,颜色有单红,黄,蓝,绿,白,黄绿等效果。
LED数码管广泛用于仪表,时钟,车站,家电等场合。
选用时要注意产品尺寸颜色,功耗,亮度,波长等。
多位数码管时其结构分为共阴和共阳极。
我使用的0.56英寸的双位共阴极8段数码管其结构如图2.3所示。
2.3.2数码管动态显示
透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。
图2.3双位共阳数码管结构
2.4STC串口加载代码(ISP)
USB,是英文UniversalSerialBus(通用串行总线)的缩写,而其中文简称为“通串线”,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。
是应用在PC领域的接口技术。
USB接口支持设备的即插即用和热插拔功能。
USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。
USB系统采用级联星型拓扑,该拓扑由三个基本部分组成:
主机(Host),集线器(Hub)和功能设备。
本次设计采用用的USB设备芯片CH340。
CH340是一个USB总线的转接芯片,实现USB转串口、USB转IrDA红外或者USB转打印口。
在串口方式下,CH340提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB总线。
在红外方式下,CH340外加红外收发器即可构成USB红外线适配器,实现SIR红外线通讯。
CH340具有以下特点
Ø全速USB设备接口,兼容USBV2.0,外围元器件只需要晶体和电容。
Ø仿真标准串口,用于升级原串口外围设备,或者通过USB增加额外串口。
Ø计算机端Windows操作系统下的串口应用程序完全兼容,无需修改。
Ø硬件全双工串口,内置收发缓冲区,支持通讯波特率50bps~2Mbps。
Ø支持常用的MODEM联络信号RTS、DTR、DCD、RI、DSR、CTS。
Ø通过外加电平转换器件,提供RS232、RS485、RS422等接口。
Ø支持IrDA规范SIR红外线通讯,支持波特率2400bps到115200bps。
Ø软件兼容CH341,可以直接使用CH341的驱动程序。
Ø支持5V电源电压和3.3V电源电压。
STC的51单片机内部带有ISP(在系统可编程)加载程序,无需专用编程器,无需专用仿真器,可通过串口(Rxd/P3.0,Rxd/P3.1)直接下载程序,数秒即可完成一片。
通过这个USB转串口芯片,我们通过USB总线连接上电脑通过编程软件即可实现程序的加载和串口通信。
2.5时钟芯片实现
现在流行的实时时钟芯片很多,例如DS1302、DS1307、PCF8485等等。
这些芯片的通信接口简单、芯片价格低廉、使用方便,因此被广泛地采用。
我使用的实时时钟芯片DS1302,DS1302是美国DALLAS公司推出的一种较高性能、,具有低功耗和带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,同时具有闰年补偿的功能,其工作电压为2.5V~5.5V。
采用三线SPI接口和CPU或者MCU进行同步通信,这个芯片可采用突发方式一次并且传送多个字节的时钟信号或RAM数据。
DS1302的内部有一个31×8的RAM用于临时性存放数据的RAM寄存器。
DS1302是DS1202芯片的升级产品,与DS1202兼容,与DS1202相比增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
所以说DS1302芯片操作方便使用成熟,并可以保证我们的应用需要的时间的精准度。
第三章硬件设计
3.1系统电源设计
对于一个系统来讲,有一个稳定可靠地电源是必要的。
为了提高电源可靠性、简化供电电路、适应多种不同电源供电,本系统采用外部电源适配器与板载稳压芯片结合的方法给电路供电。
由于板载输入电源芯片采用的是低压差的AMS1117-5.0其适应外部直流供电,范围为5-15V,所以我们只需要一个5-15V的直流源就行。
或者为了适应220V的交流供电我们的板子上面有一个Mini_UAB_A型接口,可以选择手机充电器作为电源适配器,通过一根MP3/MP4的USB线连接到板子就可以。
为适应单片机、LCD等元器件的5V的供电利用AMS1117-5.0将外部供电稳压为5V。
AMS1117为低压差的稳压芯片,最大可提供1A电流此时最小压差仅为为1.2V。
我采用的是SOT-223封装形式。
外部输入我采用500mA的1206封装的自恢复保险,以保证系统用电的安全,避免短路等意外情况发生。
为提高电源质量输入采用22uF电解电容和0.1uF瓷片电容滤波,输出采用10uF电解电容和0.1uF瓷片电容滤波。
DC-DC电路原理图如下所示:
图3.1系统电源
3.2单片机最小系统设计
STC89C52单片机我采用的封装为DIP-40,DIP-40引脚方便焊接和调试,使用方便,其引脚信息如表3-1所示:
引脚名
引脚编号
电源引脚
VCC为40、GND为20
外部时钟引脚
XTAL1为12、XTAL2为11
复位引脚
复位引脚为13
其他I/O或者功能引脚
除上述5个引脚以外
表3-1单片机引脚说明
图3.251单片机最小系统
40脚为单片机电源提供引脚外接5V直流电源,C3和C4用于电源的去耦,以提供良好的电源品质。
9脚为单片机复位引脚,当9脚的电平为高电平时单片机处于复位状态,为低时单片机正常运行,K1开关用来进行手动复位选择。
C1和R10共同组成单片机上电复位电路,当单片机接通电源以后由于C1两端的电压不会突变会有一个上升的过程,而C1和R10串接在VCC和地两端所以RST引脚的电压为VCC-电容电压,上电初期电容电压非常小,所以单片机处于复位状态,复位时间取决于R和C的取值,大约为R*C。
18和19脚为外部晶振接口,单片机的时钟由外部晶振和内部的晶体振荡电路组成,STC89C52单片机最高可以运行在40MHz,C2和C5为晶振电路负载电容,与晶振共同使时钟产生。
31引脚为内部或者外部存储器选择引脚,当31引脚为高电平时单片机的程序运行从内部FLASH执行,当寻址范围超过8K时使用外部存储器。
当31引脚为地电平时单片机默认为使用外部程序存储器。
3.3数码管显示电路设计
3.3.1数码管驱动芯片电路
为了节省IO和增加单片的IO驱动能力,采用74HC573三态锁存芯片驱动数码管。
74HC573包含八进制3态非反转透明锁存器,是一种高性能硅门CMOS器件。
LE为锁存控制端;OE为使能端。
八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。
当使能为低时,输出将锁存在已建立的数据电平上。
输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。
这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。
特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。
其引脚分布为:
引脚
功能
1
OE低电平有效低电平时Q输出数据高电平Q输出高高阻态
2-9
D0-D7输入数据端兼容TTL和CMOS器件
10
电源地
11
LE引脚当是高电平是将Dn数据输入至D触发器
12-19
Q7-Q0数据输出端
20
提供电源2V-6V
表3-274HC573引脚功能
由于本设计中74HC573只作为一个驱动器使用所以我们将OE接地将LE接高电平即可。
其电路图如图所示:
图3.3数码管驱动电路
3.4红绿灯电路设计
红绿灯的功率较大需要一个驱动电路的连接才能提高足够的功率使LED灯发光,我采用的是ULN2003反相驱动器进行LED红绿灯的驱动。
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。
该电路的特点如下:
ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
图3.4ULN2003内部原理
ULN2003的1脚到7脚为控制信号输入可以兼容TTL或者COMS电平的器件,10脚到16脚为反相驱动端口,当对应的控制引脚为高电平时这些引脚输出低电平,输入低电平时输出高电平。
ULN2003驱动器输出端的二极管学名续流二极管,如果ULN2003的达林顿管输入端输入低电平使其截止,其驱动的元件是感性元件(电机等),则电流不能突变,此时会产生一个高压;如果没有二极管,达林顿管会被击穿,所以这个二极管主要起保护作用。
由于ULN2003是集电极开路输出,为了让这个二极管起到续流作用,必须将COM引脚(pin9)接在负载的供电电源上,只有这样才能够形成续流回路。
我的ULN2003应用电路如图所示,其中R1到R7电阻为限流电阻,应为LED为电流驱动型,但是为了使用的方便我们一般通过串联一个电阻使LED导通时限定在一个合适的电流。
LED本质上是一个发光二极管,导通时本身要产生压降,对于本设计使用的LED导通的压降大约为1.1V,最大的电流为40mA。
我们使用的这个电路供电电压为5V,由电路可知导通时的电流为:
I=(5-1.1)/100.算出I等于39mA所以符合我们的LED使用要求,可以达到驱动LED发光而不至于损坏的要求。
图3.5ULN2003驱动LED电路
3.5实时时钟电路设计
我采用DS1302的DIP-8封装,DS1302的引脚排列和功能如下:
8脚和1脚分别为Vcc1和Vcc2,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
2脚和3脚为X1和X2是外部晶体引脚,外接32.768kHz晶振,作为芯片的时钟信号。
4脚是GND,为芯片提供电源。
5脚RST(CE)是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>2.0V之前,RST必须保持低电平。
6脚I/O为单片机与DS1302的数据交换引脚,通信时序将在软件中介绍。
7脚SCK是三线SPI接口的时钟。
DS1302电路连接如图所示,其中X1为32.768KHz的晶振,C1为一个大电容用以备份当VCC2主供电断开的情况下仍能保证时钟运行一段时间(1/2个小时),C2为一个去耦电容用于保证芯片供电的质量,是系统运行稳定。
图3.6DS1302电路
第四章软件设计
4.1系统运行流程图
图4.1系统运行流程
系统运行流程如图所示,系统上电以后首先等待功能按键(KSTATE(特殊状态按键)、KYEL(夜间模式按键)、KALL(全亮按键))是否按下,如果该按键按下那么系统将会进入运行状态,系统运行主要在定时器1中断函数中和main函数中进行,交通灯的逻辑运行判断主要在定时器1的中断函数中执行,特殊状态和红绿灯时间的设定主要在主函数中执行。
主函数中的执行流程为等待特殊状态按键(KSTATE)、夜间模式(KYEL)和全亮按键(KALL)的按下,如果三个状态按键没有一个按键按下,主函数将只会刷新数码管,直到定时器中断的触发或者等待按键按下。
当KSTATE特殊状态按键按下时系统进入特殊状态点亮两个方向的红灯,同时等待再次KSTATE按键的按下才能退出。
当KYEL夜间模式按键按下时系统进入夜间状态点亮两个方向的黄灯,同时等待再次KYEL按键的按下才能退出特殊状态。
当KALL特殊状态按键按下时系统进入特殊状态点亮全部方向的黄红绿灯,同时等待再次KALL按键的按下才能退出。
每一个按键按下时进入状态后将会禁止计数器技术和中断的触发,再次按下该状态按键时退出时会恢复计数和中断恢复运行。
图4.2功能按键设定
中断函数中的运行逻辑为进入中断以后将会给TH1和TL1寄存器赋值TH1和TL1赋值为15535,单片机运行时钟为1MHz定时器最大值为65535所以没隔50000次技术进行中断一次也就是50ms。
设置一个计数变量count_ints,定时器1没中断一次count_ints加1如果count_ints等于20时监测到时间过了一秒系统状态计数变量sum_tim加上1同时count_ints清0。
sum_tim状态变量为一个循环计数变量,计数的最大值为左右红绿灯时间+上下红绿灯时间+2*黄灯时间,黄灯时间固定为5秒。
系统的状态如表4.1所示。
系统主要有S0~S3四个状态,通过状态判断灯的亮灭和加载数码管倒计时变量的值。
一个周期时间T
T=上下方向红灯时间+上下绿灯时间+黄灯是时间
上下红灯时间=左右方向绿灯时间+黄灯时间
T=左右绿灯时间+上下绿灯时间+黄灯时间*2
时间0T
左右方向
左右绿灯亮时间
黄灯亮
红灯亮
上下方向
红灯亮
上下绿灯亮时间
黄灯亮
状态S0S1S2S3
表4.1系统运行状态跳转表
4.2单片机编程方法和软件
4.2.1KeilC51软件介绍
单片机开发使用的是经典的单片机开发工具KeilC51软件。
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
其开发界面如图4.4所示。
Keil软件开发主要过程为建立工程、选择使用的单片机型号、建议一个C语言文本。
添加C语言文本到工程中、编辑文本即可、然后通过编译、调试、仿真、下载就可以实现整个系统了。
4.2.2单片机代码结构
图4.3单片机程序开发思想和结构
单片机软件分为3层,底层位接口定义将实际的接口名字定义为易于理解的别名以供Driver层编写的操作函数使用,第二层为一些基本的器件操作的函数封装,第三层为利用这些函数实现相关的功能。
这种方式利于单片机程序的移植,与功能的更改,程序也更加规范化。
图4.4Keil软件界面
4.3数码管驱动代码实现
数码管的驱动分为直接静态驱动和动态扫描驱动,静态驱动适合于少量位数的数码管,特点是亮度高不会出现闪烁灯情况,并且编程简单,但是需要的I/O口较多。
动态扫描驱动适合于多位数码管特点是需要的硬件资源相对较少,但是需要单片机定时刷新,利用LED灯的余晖来暂存视觉,通过高速的扫描和实现。
由于这个系统涉及8位的数码管加上我使用的51单片机资源有限所以采用动态扫描方式。
数码管显示扫描代码如下所示:
voidDisplay(ucharSXT,ucharZYT)//SXT表示上下的数码管的显示值
{
uchartemp;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 交通 控制系统 设计 PG