韩超智能交通信号灯控制系统终稿.docx
《韩超智能交通信号灯控制系统终稿.docx》由会员分享,可在线阅读,更多相关《韩超智能交通信号灯控制系统终稿.docx(45页珍藏版)》请在冰点文库上搜索。
韩超智能交通信号灯控制系统终稿
本科生毕业论文(设计)
题目:
智能交通信号灯控制系统
专业代码:
070201
作者姓名:
韩超
学号:
2008200998
单位:
物理科学与信息工程学院
指导教师:
安学立
2012年5月10日
摘要
通过对目前国内外智能交通信号灯控制系统方面相关资料的研究,结合目前国内外主流的单片机应用技术,搭建一套完整的智能交通信号灯控制系统软硬件控制平台。
系统功能主要有:
交通信号灯正常显示、出现特殊情况或紧急情况时,可以让交通信号灯以常“红”显示,转去处理特殊情况或者紧急情况,处理完成以后系统会在接收到提醒时立即恢复交通信号灯的正常显示;系统具有独立的时钟系统。
关键词:
单片机;交通信号灯;紧急情况;
Abstract
Basedoncurrentdomesticandforeignintelligenttrafficsignallampcontrolsysteminformationrelatedtotheresearch,combinedwiththecurrentdomesticandinternationalmainstreamchipapplicationtechnology,setupacompletesetofintelligenttrafficsignallampcontrolsystemsoftwareandhardwarecontrolplatform.Systemfunctionsinclude:
trafficsignallampdisplay,therearespecialcircumstancesoremergency,canmakethetrafficsignallampisusedto"red"display,turnedtodealingwithspecialsituationsoremergencies,processingcompletedsystemwillreceiveareminderwhenimmediaterestorationoftrafficsignalsdisplay;systemisindependentoftheclocksystem.
Keywords:
singlechipmicrocomputer;trafficlights;emergency;
智能交通信号灯控制系统
前言
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
随着智能控制技术的发展,未来的交通信号灯控制系统正朝着智能化,自适应的方向发展。
智能交通信号灯控制系统能够根据实际的车流量状况进行实时调控红绿灯的通行时间,减少道路堵塞,优化道路交通状况。
基于此,我们可以看出,研究这种新型的智能交通信号灯控制系统即有很强的实用价值和现实意义。
目前单片机渗透到我们生活的各个领域,基于单片机实现的底层控制系统几乎无处不在。
飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制等这些都离不开单片机。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
1、智能交通信号灯控制系统研究目的和要求
1.1、智能交通信号灯控制系统课题的研究目的和意义
智能交通信号灯控制系统的研发和设计,目的是利用现代化计算机技术、通讯技术对日益快速发展的城市十字路口交通信号灯实现自动化监控和智能化的科学管理,做到集中管理,智能控制。
进一步提高道路照明质量,提高服务质量,从而提高系统的整体社会效益、管理效益、经济效益和环保效益。
智能交通信号灯控制系统基于STC89C51系列单片机[1],配合高精度SD2403API时钟芯片所开发的一套简单实用的智能交通信号灯模拟控制系统,是对单片机应用的一个升华,具有很强的实用性。
能够很方便地使用在城市道路、乡镇道路、甚至高速公路交通信号灯的智能控制方面。
1.2、智能交通信号灯控制系统的设计要求
智能交通信号灯控制系统性能的基本要求是稳定性和可靠性,具体功能要求如下:
(1)交通信号灯正常运行:
红灯、黄灯、绿灯交替亮灭,红灯亮22S,黄灯亮3S、绿灯亮20S,数码管显示当前的时间。
(2)报警情况处理:
当按下K1或K2,表示第一个地点或第二个地点有特殊情况或紧急情况发生,则立即反馈给底层控制系统,底层系统立即中断交通信号灯的正常运行,使该路段全部以红灯显示,禁止车辆通行,并随时监测该路段特殊情况是否处理完毕。
(3)报警情况取消:
当特殊情况或者紧急情况处理完毕的时候,立即反馈给底层控制系统,底层控制系统立即开启交通信号灯的正常工作模式,并把当前的时间反馈给系统,系统可以通过数码管显示当前时间。
系统主要性能指标:
系统的稳定性,包括单片机要保证不死机,串口通信的稳定性等;系统的实用性和创新性等;
2、智能交通信号灯控制系统的总体结构
2.1、智能交通信号灯控制系统简介
智能交通信号灯控制系统由四个部分组成:
单片机最小系统、系统时钟校时查时系统、报警系统(报警和取消报警)、显示系统。
其中单片机最小系统包括STC89C52单片机、晶振电路(11.0592MHZ)[2]、复位电路、电源部分(+5v电压由三端稳压集成电路LM7805输出,前后端需要加上滤波电容);系统时钟电路是基于高精度SD2403API时钟芯片与相应的外围电路搭建而成,时钟芯片内部寄存器读取方式采用IIC总线读取的方式;显示电路采用两个两位的共阴极数码管显示;模拟报警电路是用按键检测模拟的方式,K1、K2按下时,表示有紧急情况或出现特殊情况,系统转去处理当前特殊情况;K3、K4表示取消报警,当前交通信号灯按照正常情况亮灭。
智能交通信号灯控制系统充分运用单片机技术,底层程序利用KEILⅢC语言开发系统平台进行开发[3],硬件部分运用PortelDXP2004电路图设计软件设计[4]。
2.2、智能交通信号灯控制系统硬件设计
智能交通信号灯控制系统包括单片机部分;电源部分;高精度SD2403API实时时钟芯片部分;紧急情况发生及取消相关电路;数码管显示部分;其系统框图如图4所示;
智能交通信号灯控制系统的底层电路主要分为四个部分:
单片机最小系统电路、系统校时查时系统电路、报警系统电路、数码管显示电路。
(1)单片机最小系统包括单片机、石英晶振电路、+5V稳压电路、复位电路、电源指示灯电路等几个小的功能电路。
(2)系统校时查时系统电路是由高精度SD2403API时钟芯片与相应的外围电路搭建而成,单片机通过IIC总线的方式对芯片内部进行相应的设置和读取。
(3)报警系统电路用了四个按键进行模拟:
K1、K2按下时,表示有紧急情况或出现特殊情况,系统转去执行当前特殊情况;K3、K4按下时,表示取消报警,当前交通信号灯按照正常情况亮灭,特别说明,系统在主程序中会对按键进行实时检测。
(4)数码管显示电路主要将显示数据的BCD码转换成相对应的编码。
选用两个两位的共阴极数码管分别显示时间的时和分。
智能交通信号灯控制系统电路图是用ProtelDXP2004软件设计。
时钟校时和查询工具可以通过PC端串口调试助手[5]向单片机发送相应的命令(21位)来实现。
图4、智能交通信号灯控制系统框图
系统设计原理图:
①、如图5.1所示,该部分是STC89C51单片机最小系统,包括5V电源部分,其5V电源是由外接电源12V,经过稳压芯片LM7805输出稳定的5V电压;D1是电源指示灯,R1是限流电阻;晶振电路,系统所用的晶振频率为11.0592MHZ,由石英晶体搭建配套电路供给;复位电路,由于51系列单片机复位需要至少持续两个机械周期以上的高脉冲;
图5.1、单片机最小系统
②、报警系统(按键)和时钟系统:
如图5.2所示,系统时钟由高精度SD2403API时钟芯片通过搭建外围电路提供,供电电压为5V,报警系统由按键来模拟,K1、K2按下时,表示有紧急情况或特殊情况发生;K3、K4按下时表示上一次的紧急情况或者特殊情况已经处理完毕;
图5.2、报警系统(按键)和时钟系统电路
③、显示部分:
如图5.3所示,显示部分包括数码管显示和LED指示灯显示部分;数码管是用共阴极的双位数码管,每一个数码管都有两个位选,八个段选;如图所示,LED指示灯一共有7个,分别与单片机引脚相连。
D1、D2表示红灯、D3、D4表示黄灯、D5、D6表示绿灯;D7是红灯,可以指示是否报警,当有紧急情况或者特殊情况发生时,红灯常亮,但取消报警时,处于熄灭状态;
图5.3、数码管与LED指示灯电路
④、通信部分:
该系统中单片机需要与PC端进行通信,中间的电平转化借助MAX232芯片,其中0.1uf电容的主要作用是滤波,去耦。
其可以有TTL电平转化为232电平,方便通信,其外围电路如图5.4;
图5.4、串口通信部分电路
各芯片主要管脚功能如下:
1、STC89C52单片机(图1)[1][6][7]:
⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
(5)、I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
图1、51单片机引脚图
2、高精度SD2403API时钟芯片[8][9][15]:
SD2400系列是一种具有内置晶振、支持IIC串行接口的高精度实时时钟芯片,CPU可使用该接口通过5位地址寻址来读写片内32字节寄存器的数据(包括时间寄存器、报警寄存器、控制寄存器、通用SRAM寄存器)。
SD2400系列内置晶振,该芯片可保证时钟精度为±5ppm(在25℃下),即年误差小于2.5分钟;该芯片内置时钟精度调整功能,可以在很宽的范围内校正时钟的偏差(分辨力3ppm),通过外置或内置的数字温度传感器可设定适应温度变化的调整值,实现在宽温范围内高精度的计时功能。
SD2400系列内置的一次性工业级电池或充电电池可保证在外部掉电情况下时钟使用寿命为5~8年时间;内部具备电源切换电路,当芯片检测到主电源VDD掉到电池电压以下,芯片会自动转为由备电电池供电。
SD2400系列内置单路定时/报警中断输出,报警中断时间最长可设至100年;内置频率中断输出和倒计时中断输出。
SD2400系列采用了多种提高芯片可靠性的技术,可满足对实时时钟芯片的各种需要,是在选用高精度实时时钟时的理想选择。
SD2400系列内部各种封装引脚图如图2.1,一般常用的是DIP-8脚封装;内部结构图如图2.2所示;
图2.1、SD2403API引脚图
图2.2、SD2403API内部结构图
3、两位共阴极数码管[9],有2个公共端,8位段选端,点亮二极管的电流一般在15MA左右;图3.1给出了数码管基本引脚图;数码管与单片机的基本连接图如图3.2;
图3.1、数码管引脚图
图3.2、数码管与单片机连接图
数码管使用条件:
①、段与小数点之间加限流电阻;
②、使用电压:
段:
根据发光颜色决定、小数点:
根据发光颜色决定
③、使用电流:
静态:
总电流80MA(每段10MA)、动态:
平均电流4-5MA,峰峰值电流100MA;
2.3、智能交通信号灯控制系统软件设计
2.3.1、基本功能
(1)交通信号灯正常运行:
红灯、黄灯、绿灯交替亮灭,红灯亮22S,黄灯亮3S、绿灯亮20S,数码管显示当前的时间。
(2)系统检测到K1或K2按下时,表示第一个地点或第二个地点有特殊情况或紧急情况发生,立即反馈给底层控制系统,单片机立即中断交通信号灯的正常运行,使该路段全部以红灯显示,禁止车辆通行,并随时监测该路段特殊情况是否处理完毕。
(3)报警情况取消:
系统检测到K3、K4键按下时,表示特殊情况或者紧急情况处理完毕,底层控制系统立即开启交通信号灯的正常工作模式,并把当前的时间反馈给系统,系统可以通过数码管显示当前时间。
2.3.2、软件设计[7][12][13][14]
智能交通信号灯控制系统软件基于KEILⅢC语言开发系统平台,用C语言开发,工程主要包括主程序(main.c)、定时器部分(timer.c)、时钟部分(sd2403api.h)、执行程序(command_process.c)、串口部分(uart.c)、全局变量声明(global.c);
主程序流程图:
图6、主程序流程图
流程图详解:
系统上电以后首先对系统中所用到的相关变量进行初始化,然后对定时器0、串口、看门狗等进行初始化,然后进入While()循环,首先进行喂狗,然后检测串口1是否有命令过来,如果有命令,则转去执行串口1的命令,主要是系统时间的设置与查询;如果串口1中没有命令到来,则正常执行交通信号灯亮灭程序,此时再去判断是否有报警信息,如果有报警命令到来,则转去执行报警程序,如果没有,则转去执行数码管显示部分程序,执行完成以后转会喂狗部分,继续按照以上步骤执行,程序在此循环。
串口相关程序流程图:
图7、串口相关程序流程图
系统用到串口部分程序的作用主要是对系统时间进行设置和查询,这样整套系统时间就可以任意设置,并且由于SD2403API时钟芯片精度较高,一年中的误差率不会超过几分钟,所以系统在第一次使用时设置好了时间,可以每隔一年左右的时间进行校准,当然可以通过串口命令随时校准,如果嫌比较麻烦,单片机内部已经对时间校准进行了设置,每隔一年校准一次;
通过以上流程图,我们可以看出,此串口程序可以接收一条长21个字节的完整命令,并且带有超时检测功能。
即如果一条命令超时长达2s,则这条命令取消,重新接收下一条命令。
这样可以保证命令的完整性和可靠性;
由于能够对系统时间进行设置和查询,且精度较高,所以这套配搭时间的系统用在交通道路方面的可靠性也较之一般系统高的多,整套系统交通信号灯亮灭的时间都可以随时记录和查询。
方便日后进行的维修和事故处理。
注:
整个系统的源程序、系统校时查询时间命令见附录(带注释);
2.4、系统调试
调试主要步骤如下[8][9][10]:
①、根据硬件线路设计将硬件线路连接好;
②、根据软件流程图编写好源程序
③、程序在PC端上编译通过,并与PC机硬件连好,进行连接和运行调试;
相关调试说明:
智能交通信号灯底层控制系统硬件电路方面只需要熟悉ProtelDXP软件即可,电路调试主要集中在电源部分和数码管显示部分中的位选信号部分,数码管位选信号用NPN三极管(9013)进行驱动,其中基极限流电阻的选择是个关键。
软件的调试是本系统的难点也是重点。
软件部分采用KEILⅢC语言开发系统进行编写,调试的重点在于采用IIC总线方式对时钟芯片内部寄存器上的数据进行修改和读取,数码管动态显示以及定时器精确定时设置。
本系统用STC-ISP-V4.80下载软件将KEIL软件生成的相应的HEX文件下载到AT89C52单片机内部,并进行在线调试。
结论
智能交通信号灯控制系统硬件部分用ProtelDXP软件进行设计,软件部分采用KEILⅢC语言进行开发,充分发挥了C语言简单、实用、可移植性强的特点。
总之,采用单片机应用开发技术使得复杂的电子系列设计变得简单容易,大大提高了设计的效率。
本设计的特点在于AT89C52单片机应用方面国内已经比较成熟,系统开发周期短,整个系统稳定性高,能够满足道路照明的要求。
该系统使用方法较为简单,能够很方便地进行量产普及。
总之,整个设计的工作稳定可靠,具有很强的抗干扰能力是本系统的一大特色。
本设计还可以从经济适用的角度出发,结合外围的LED、按键输入、数码管显示、报警和等电路利用C语言编写主核芯片的控制程序,使该系统能够实现交通信号灯的智能化控制。
这样就可更方便的应用于城市道路、乡镇道路甚至高速公路等用到交通信号灯的场所。
这也使得该系统更具有实用性。
考虑到美观、成本、稳定性等诸多方面的因素、该系统功能上还有许多需要改进的地方。
比如最关键的一点该系统只是对某个特定通道上的交通信号灯进行控制,而没有形成一个巨大的城市道路交通信号灯控制系统平台。
但是通过此次学习,我深深的感受到,只有系统地充分地学习单片机方面,硬件电路方面的理论知识,才能在在理论学习的基础上进行系统开发时,能够更加地得心应手!
只有使得理论充分地与实际相结合,才能顺利的做出较为出色的毕业设计,加强单片机应用方面的能力,设汁好与工程实际应用接轨的课程题目。
参考文献
[1]李广弟等单片机基础北京航空航天出版社,2001.7
[2]楼然苗等51系列单片机设计实例北京航空航天出版社,2003.3
[3]唐俊翟等单片机原理与应用冶金工业出版社,2003.9
[4]刘瑞新等单片机原理及应用教程机械工业出版社,2003.7
[5]吴国经等单片机应用技术中国电力出版社2004.1
[6]李全利、迟荣强单片机原理及接口技术高等教育出版社2004.1
[7]侯媛彬等凌阳单片机原理及其毕业设计精选科学出版社2006
[8]罗亚非,凌阳十六位单片机应用基础北京航空航天大学出版社2003
[9]北京北阳电子有限公司,061A凌阳单片机及其附带光盘2003年
[10]张毅刚等MCS-51单片机应用设计,哈工大出版社2004年第2版
[11]霍孟友等,单片机原理与应用机械工业出版社2004.1
[12]霍孟友等单片机原理与应用学习概要及题解机械工业出版社2005.3
[13]许泳龙等,单片机原理及应用机械工业出版社,2005.1
[14]马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社,
2003修订版
[15]薛均义张彦斌虞鹤松樊波,凌阳十六位单片机原理及应用,2003年
,北京航空航天大学出版社
致谢
历时两个月的时间终于将这篇论文写完,在论文的写作过程中老师和同学给了我很大的帮助。
首先要强烈感谢我的论文指导老师—安学立老师,在我的论文写作过程中给予了诸多的指导,既学到知识又不产生依赖感。
在安老师的悉心指导下,我对单片机应用方面知识有了进一步的理解和掌握,通过学习使我更加了解了我们所学的专业,学有所用,从而更加热爱电子专业。
感谢我的同学和朋友,在我写论文的过程中给我提了很多的建议,还在论文的撰写和排版等过程中提供了很多的帮助。
由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和同学批评和指正!
附录
系统校时与时间查询命令:
系统时间设定(秒、分、时、星期):
2f432f0600000000000000000A0081#####CC
系统时间设定(日期、月份、年份、#):
2f432f0600000000000000000A0082#####CC
系统即时时间查询(秒、分、时、星期):
2f432f0600000000000000000A00880000000084CC
系统即时时间查询(日期、月份、年份、#):
2f432f0600000000000000000A00890000000099CC
注明:
该命令中第19位是从第4到第18位之间包括第4和第18位的所有数据的八位异或校验。
“#”代表任意设定的值或者需要求出的校验值。
系统源程序如下(带注释):
(1)、主程序如下(main.c):
#include
#include
#include
#include
#include
#include
#include
main()
{
unsignedchari;
translight();//相关变量初始化
Phy_timer0_init();//定时器1初始化
uart1_init();//串口初始化
EA=1;//开总中断
watchdog_init();//看门狗初始化
delay(30);
while
(1)
{
watchdog_kick();//看门狗从新计数
if(uart1_flag)//是否有串口命令过来
{
//有串口命令要执行;
uart1_flag=0;
uart1_flag_lock=1;//防止串口数据还没有处理完,又来了一条新的命令
uart1_command_process();//最大6层嵌套;
uart1_flag_lock=0;
}
tra_light_process();//正常亮灯
check_alarm();//检测报警信息
for(i=0;i<10;i++)//循环执行10次,能够增加LED的亮度
{
display();//数码管连续显示10次
}
}
}
(2)、系统执行子程序文件(command_process.c):
#include
#include
#include
#include
//共阴数码管0-9-_空表
//====================红灯20s、黄3s、绿灯22s按照正常次序依次执行============================//
voidtra_light_process();
voidcheck_alarm();
voiddisplay(void);
voidunknow_command(void);
voidprocess_0A();
voidprocess_0A_00();
voidback_time(unsignednum);//0返回时、分、秒、星期,1返回年、月、日
voidback_command(void);
//========错误命令返回函数函数=============================================//
voidunknow_command(