毕业设计(论文)-单片机交通灯控制系统的设计.doc_第1页
毕业设计(论文)-单片机交通灯控制系统的设计.doc_第2页
毕业设计(论文)-单片机交通灯控制系统的设计.doc_第3页
毕业设计(论文)-单片机交通灯控制系统的设计.doc_第4页
毕业设计(论文)-单片机交通灯控制系统的设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计(论文)题目:交通灯控制系统的设计论文作者:指导教师:专 业:电子信息工程技术系 (院):信息工程系答辩日期:2013年 5 月 29 日目 录摘 要第1章 课题总体介绍21.1 课题背景 21.1.1 研究背景 21.1.2 课题作用 21.2 主要设计功能 3第2章 开发方法的选择 42.1 开发工具42.2 开发工具简介42.3 交通灯控制模组简介 4第3章 交通灯控制方案设计 53.1 交通灯控制系统的硬件结构53.2 十字路口的通行规则83.3 主程序流程图及相关代码93.4 各方向程序流程图及代码123.4.1 左右拐的程序流程图及代码 153.4.2 黄灯程序流程图及代码 183.5 中断程序流程图及代码203.6 语音提示程序设计23第4章 交通灯的实现 254.1 程序的运行及调试25第5章 结论26致 谢26摘要参考文献27摘要本系统主要介绍了以凌阳单片机为核心的交通控制系统的设计。这个系统利用SPCE061A单片机、模拟交通灯模组建立十字路口交通控制模型,来实现生活中交通灯的控制方式。交通灯控制系统主要包括软件和硬件两个部分。硬件部分:61板、交通灯模块、USB 在线调试器 、电池盒,软件部分主要是协助硬件完成各项功能。交通灯控制系统所实现的功能:1)南北全为红灯,东西直行、人行为绿灯、左右拐为红灯;2)南北直行、人行、左拐为红灯、右拐为绿灯,东西直行、人行为红灯、左右拐为绿灯;3)东西全为红灯,南北直行、人行为绿灯、左右拐为红灯;4)东西直行、人行、左拐为红灯、右拐为绿灯,南北直行、人行为红灯、左右拐为绿灯;当人行道为红灯时语音提示“现在是红灯,请不要闯红灯!”关键词:凌阳单片机、61板、交通灯模组I第1章 课题总体介绍第1章 课题总体介绍1.1 课题背景SPEC061A是凌阳家族单片机里的一种,它是伴随着“凌阳大学”计划推出的,它是一款16位的单片机。SPEC061A单片机学习开发系统则将开发软件、单片机开发系统(或称“实验板”)、下载线、编程器、和仿真器进行了完善的结合。SPEC061A单片机整合了在线编程控制的功能模块,在试验过程中无需拔插任何电缆和芯片,也无需切换电源,只需配合下载线,就可轻松地将编译好的代码下载到开发系统上进行验证或验示,整个过程操作简单。同时也可以使用配套的开发环境直接对实验板上的资源进行在线仿真。1.1.1 研究背景先进的自动化控制方法在交通控制系统中的应用成为待解决的问题之一。目前摆在我们面前的问题是:如何将先进的智能控制算法和嵌入式系统相结合并研发出高性价比和适合中国国情的交通控制器。社会在发展,经济突飞猛进的同时,城市化进程也在不断加深,机动车已成为城市生活不可或缺的代步工具,交通问题也渐渐成为城市的通病。拥挤的交通成为消耗时间、能源以及交通事故的和环境污染的主要症结。交通灯的发明和发展,很好的解决了和保障了交通的有序性和安全性。1.1.2 课题作用城市是人类从事各类社会、政治、经济和文化的活动中心,在社会发展中起了重要的作用。汽车是这一时代文明的产物,在给人们带来巨大便利的同时,也使人们面临交通拥挤的困惑和道路交通安全事故的烦恼。在我国,随着改革开放政策的贯彻实施,国民经济得到了迅猛发展,道路交通也得到了迅速的发展。与此同时,由于城市化进程的加速,城市规模不断膨胀,城市的经济贸易和社会的活动日益频繁,人员流动与社会交往日益增多,使得城市交通拥挤和交通安全事故问题更加突2出。城市交通作为城市基础设施重要组成部分,如何改善、完善和发展城市交通,越来越被人们所重视。城市交通作为支撑城市活动的主要基础设施,是城市的枢纽和命脉,因此,城市交通问题的解决,不但可以使人们的生命财产有保障,而且可以加快经济的发展和社会的进步。城市交通系统是城市大系统中非常重要的子系统之一。城市交通一方面受城市结构、经济状况、生产布局、人口分布等因素的制约;另一方面,它的有效性、安全性、可靠性、经济性又影响着城市的工作效率、经济效益和居民生活水平。城市交通系统的运行状况又可以从另一个侧面反映出城市的经济建设、科学技术和城市管理水平。因此,在交通管理中应用先进的科学技术和管理方法保证道路的安全畅通,是经济发展的需要。针对城市交通拥挤,有人提出修建新的城市道路或是修建新的立交桥。可是,过不了多长的时间,道路又恢复到原来的拥挤状态。一般来说修建新的道路不会改变原来的拥挤,诱发的交通量将很快占据新增的道路设施,这部分潜在的交通量是由于以前受道路供给短缺的制约而未能得到实现的。由于修建道路并不能从根本上解决城市交通拥挤的问题,人们开始寻求新的解决途径。随着人们对控制理论的认识和利用的不断深入以及计算机技术的发展,利用控制理论和计算机技术来解决交通问题显得越来越重要了。各国相继开发了不同的交通控制系统,为缓解交通问题做出了很大的贡献。随着人工智能这一新兴的科学的兴起,人们开始将其引入到城市交通控制中来。经过大量的探索和研究实践,人们相信智能控制是解决城市交通问题的强有力的工具。31.2 主要设计功能设计功能是通过凌阳单片机控制LED和数码管来摸拟真实的交通灯。本系统主要完成十字路口交通灯车辆运行的控制及计时功能。实现在车辆通行繁忙的十字交叉路口设置的交通灯控制系统,其特点是:道路较窄而车辆通行较多,支线、干线的车辆通行时间不等,并设有左右弯道通行时间,允许人工监控或修改各线通行时间,具体的情况是:在正常的情况下,直行和人行道为40S,左右弯道为20S。并且能够在人工监控状态下,通行时间通过程序修改。第2章 开发方法的选择4第3章 交通灯控制方案设计第2章 开发方法的选择2.1 开发工具表2-1 开发工具表开发语言C语言、汇编语言开发环境Windows xp/7、unsp IDE、probe下载线、SPCE061A可编程开发板开发工具unsp IDE 3.0.7、compress tool2.2 开发工具简介SPCE061A是凌阳科技研发生产的十六位单片机,在此开发环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且提供了语音录放类的函数,只要了解库函数的使用,就会容易完成语音录放的功能。SPCE061A内还集成了一个ICE(在线仿真电路)接口,使的对该芯片的编程、仿真都变得非常方便,而且程序的下载也是通过对该接口进行下载。Compress tool(凌阳语音压缩工具)支持.wav格式的语音压缩,但要求压缩语音资源属性为8K,16位,单声道。可以压缩单个文件,也可以压缩多个文件。2.3 交通灯控制模组简介交通灯控制模组有61板、交通灯模组(以8个数码管和4组LED发光二极管和驱动电路构成的模组)、USB接口的PROBE下载线、排线5第3章 交通灯控制方案设计3.1 交通灯控制系统的硬件结构交通灯控制系统的硬件结构之一就是“61板”(如图3-1所示),“61板”是SPCE061A EMU Board的简称,是凌阳16位微控器SPCE061A的精简开发系统。它是以SPCE061A为核心的仿真开发实验板,硬件电路包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等。它有专业的集成开发环境unSP IDE和ICE在线仿真调试电路,结合集成开发环境不需外界任何仿真、调试器即可完成在线编程、仿真、调试功能。另外,61板体积小、采用电池供电,携带十分方便。图3-1 61板外型结构图硬件结构二:交通灯模组驱动板(如图3-2所示),其中J1、J2、J3、J4为LED板的插接口,使用时可以直接把LED模组板插接在驱动板的插槽上。图3-2 交通灯模组驱动板外型结构图67硬件结构三:交通灯模组LED板(如图3-3所示),其中有四块相同的LED板,一块LED板来自一个方向的车辆或者人的通行(直行,人行,左拐,右拐),有数码管来显示数字倒计时,各个方向的红绿黄灯分别代表着停行等三个状态图3-3 交通灯模组LED板外型结构图7硬件结构四:在线调试器1(如图3-4所示)提供在线编程、仿真和调试使用。该调试器一端在PC机的USB口上,另一端接在开发系统的ICE端口上。图3-4 在线调试器1外型图83.2 十字路口的通行规则交通灯控制十字路口的通行规则是我根据实际情况模拟设计的方案(如图3-6所示),该系统的数码管显示时间可以改动,具体情况是:当东西方向直行人行通行时,东西方向左拐右拐不能通行,且南北方向都不能通行;当东西方向直行人行不能通行,东西方向左拐右拐通行,且南北方向的右拐通行,南北方向左拐,直行人行不能通行;同理,南北与东西方向通行状态互换,即当南北方向直行人行通行时,南北方向左拐右拐不能通行,且东西方向都不能通行;当南北方向直行人行不能通行,南北方向左拐右拐通行,且东西方向的右拐通行,东西方向的左拐、直行、人行不能通行(如图3-7所示)图3-6 交叉路口结构图图3-7 模拟交通灯控制LED板布局图93.3 主程序流程图及相关代码十字路口的主程序流程图(如图3-3-1所示)开始初始化端口开2Hz中断各路口设初始值执行东边路口的函数执行西边路口的函数执行南边路口的函数执行北边路口的函数清看门狗图3-3-1 主程序流程图10主程序设计的代码:/语法格式:int main(void)/功能描述:交通灯控制,控制四个路口交通灯数码管的倒计时和红、黄、绿灯的亮灭int main(void)11DIG_Initial(); /端口初始化,该函数在DIG.asm中定义,在DIG.h申明*P_INT_Ctrl_New |= C_IRQ5_2Hz; /开2Hz中断,以便系统进行倒计_asm(int irq);Nnum = ENUM+SNUM-1; /Nnum为59Wnum = ENUM-1; /Wnum为39 Snum = ENUM+SNUM-1;Enum = ENUM-1; /设置各方向路口初始时的倒计时时间,倒计时时间可以在DIGuser.h文件中修改max = ENUM+SNUM;/max为59保存各向初始倒计时时间中最大的数据,以便计时过程中使用min = SNUM;/min为20保存各向初始倒计时时间中最小的数据,以便计时过程中使用while(1)/交通灯控制DirFlag = EAST_G;/设置方向状态标志为东边路口车辆直行通行状态,EAST_G为EAST GreenEnum = max-min-1;/东边路口数码管从min开始倒计时EastSTrough();DirFlag = WEST_G;/设置方向状态标志为西边路口车辆直行通行状态,WEST_G为WEST GreenWnum = min-1;/西边路口数码管从min开始倒计 WestSTrough();/进入3L,3S,3P,1R,2R(通行25s)状态,该函数在DIGuser.c文件中定义DirFlag = SOUTH_G;/设置方向状态标志为南边路口车辆直行通行状态,SOUTH_G为SOUTH GreenSnum = min-1;/南边路口数码管从min开始倒计时SouthSTrough();/进入2L,2S,2P,4R,1R(通行25s)状态,该函数在DIGuser.c文件中定义DirFlag = NORTH_G;/设置方向状态标志为北边路口车辆直行通行状态,NORTH_G为NORTH GreenNnum = min-1;/北边路口数码管从min开始倒计时NorthSTrough();*P_Watchdog_Clear = 0x0001;123.4 各方向程序流程图及代码东西通行的程序流程图(如图3-4-1所示)南北通行的程序流程图和东西相同,只是变量会有所改变。11开始点亮数码管,东西路口左右为红,直行人行道为绿,南北全为红刷新四个数码管并倒计时显示运行状态EAST-Y清看门狗是否到设定黄灯闪烁时间是否为东边路口状态是否到设定左右拐绿灯时间运行状态EAST-GYNYNYN图3-4-1 东西通行的程序流程图13代码如下:void EastSTrough(void)/下面为东边和西边路口直行、人行道绿灯亮,其他红灯亮状态/点亮数码管DIGShow(EAST_D,Enum);DIGShow(SOUTH_D,Snum);DIGShow(WEST_D,Wnum);DIGShow(NORTH_D,Nnum);LEDShow(EAST_L,LeftRed,StrtGrn,RigtRed,MansGrn);/东边路口直行、人行道绿灯亮,左拐、右拐红灯亮LEDShow(SOUTH_L,LeftRed,StrtRed,RigtRed,MansRed);/南边路口全部红灯亮LEDShow(WEST_L,LeftRed,StrtGrn,RigtRed,MansGrn);/西边路口直行、人行道绿灯亮,左拐、右拐红灯亮LEDShow(NORTH_L,LeftRed,StrtRed,RigtRed,MansRed);/北边路口全部红灯亮while(DirFlag=EAST_G)/如果是EAST_G状态,循环,该状态持续40sif(cn = 2)/四个路口数码管倒计时并显示14cn = 0;Enum-;Snum-;Wnum-;Nnum-;/刷新数码管DIGShow(EAST_D,Enum);DIGShow(SOUTH_D,Snum);DIGShow(WEST_D,Wnum);DIGShow(NORTH_D,Nnum);if(Enum=Grntime)DirFlag=EAST_G; /东边倒计时左右拐绿灯时间if(Enum=Ylwtime)/如果东边倒计时到设定黄灯时间DirFlag = EAST_Y;/改变为下一个状态,EAST_Y状态*P_Watchdog_Clear = 0x0001;3.4.1 左右拐的程序流程图及代码左右拐程序流程图EAST-G(如图3-4-2所示)15开始东西方向直行,人行为红,左右拐为绿南北方向右拐变绿,其余为红清看门狗各方向数码管倒计时并显示图3-4-2 左右拐程序流程图EAST-G代码如下:while(DirFlag=EAST_G)/EAST_G状态持续20sif(cn = 1)/0.5sDIGOff(EAST_D);/东边路口数码管熄灭DIGOff(WEST_D);/西边路口数码管熄灭16LEDOff(EAST_L,StrtYlw);/所有点亮的黄灯熄灭LEDOff(EAST_L+1,MansYlw);LEDOff(WEST_L,StrtYlw);LEDOff(WEST_L+1,MansYlw);if(cn = 2)/1s,四个路口数码管倒计时并显示,绿灯显示cn = 0;Enum-;Snum-;Wnum-;Nnum-;DIGShow(EAST_D,Enum);DIGShow(SOUTH_D,Snum);DIGShow(WEST_D,Wnum);DIGShow(NORTH_D,Nnum);LEDShow(EAST_L,LeftGrn,StrtYlw,RigtGrn,MansYlw);/东边左右拐绿灯亮,直行、人行黄灯亮LEDShow(SOUTH_L,LeftRed,StrtRed,RigtGrn,MansRed);/南边路口右拐亮绿灯,其余亮红灯 LEDShow(WEST_L,LeftGrn,StrtYlw,RigtGrn,MansYlw);/西边左右拐绿灯亮,直行、人行黄灯亮LEDShow(NORTH_L,LeftRed,StrtRed,RigtGrn,MansRed);/北边路口右拐亮绿灯,其余亮红灯17if(Enum=0xffff)/如果东边路口倒计时到-1(由于要显示00)Enum = min-1;/东边路口的倒计时时间设置为min/Nnum = min-1;/北边路口的倒计时时间设置为min/Snum = min-1;/南边路口的倒计时时间设置为minDirFlag = EAST_Y;/清状态标志*P_Watchdog_Clear = 0x0001;3.4.2 黄灯程序流程图及代码黄灯程序流程图EAST-Y(如图3-4-3所示)开始东西直行人行,左右拐为黄灯闪烁南北全为红灯各方向数码管倒计时并显示清看门狗图3-4-3 黄灯程序流程图EAST-Y18代码如下:14while(DirFlag=EAST_Y)/EAST_Y状态持续4sif(cn = 1)/0.5sDIGOff(EAST_D);/东边路口数码管熄灭DIGOff(WEST_D); /西边路口数码管熄灭LEDOff(EAST_L,StrtYlw);/所有点亮的黄灯熄灭LEDOff(EAST_L+1,MansYlw);LEDOff(WEST_L,StrtYlw);LEDOff(WEST_L+1,MansYlw);if(cn = 2)/1s,四个路口数码管倒计时并显示,黄灯显示cn = 0;Enum-;Snum-;Wnum-;Nnum-;DIGShow(EAST_D,Enum);DIGShow(SOUTH_D,Snum);DIGShow(WEST_D,Wnum);DIGShow(NORTH_D,Nnum);19LEDShow(EAST_L,LeftYlw,StrtYlw,RigtYlw,MansYlw);/东边左右拐绿灯亮,直行、人行黄灯亮LEDShow(SOUTH_L,LeftRed,StrtRed,RigtRed,MansRed);/南边路口全部亮红灯 LEDShow(WEST_L,LeftYlw,StrtYlw,RigtYlw,MansYlw);/西边左右拐绿灯亮,直行、人行黄灯亮LEDShow(NORTH_L,LeftRed,StrtRed,RigtRed,MansRed);/北边路口全部亮红灯if(Enum=0xffff)/如果东边路口倒计时到-1(由于要显示00)Enum = min-1;/东边路口的倒计时时间设置为min/Nnum = min-1;/北边路口的倒计时时间设置为min/Snum = min-1;/南边路口的倒计时时间设置为minDirFlag = 0;/清状态标志*P_Watchdog_Clear = 0x0001;3.5 中断程序流程图及代码中断程序流程图(如图3-5-1所示)20寄存器入栈保护是IRQ4_1HZ中断?清IRQ4其它中断寄存器出栈中断返回清IRQ4_1HZ中断调用数码管显示程序NY图3-5-1 中断程序流程图21代码如下:/汇编语言格式:_IRQ4/功能描述:IRQ4的中断服务函数/ 调用F_DIG_ScanDrive程序进行动态扫描.PUBLIC _IRQ4_IRQ4:push r1,r5 tospr1 = 0x0010test r1,P_INT_Ctrljnz ?IRQ4_1KHzr1 = 0x0020test r1,P_INT_Ctrljnz ?IRQ4_2KHzr1 = 0x0040P_INT_Clear = r1jmp ?exit?IRQ4_1KHz:P_INT_Clear = r1call F_DIG_ScanDrive/调用F_DIG_ScanDrivejmp ?exit?IRQ4_2KHz:P_INT_Clear = r1?exit:pop r1,r5 fromspreti /汇编语言格式:_IRQ5/功能描述:IRQ5的中断服务函数,改变中断计数器cn.PUBLIC _IRQ5_IRQ5:push r1,r5 tospr1 = 0x0004test r1,P_INT_Ctrljnz ?IRQ5_2Hzr1 = 0x000822P_INT_Clear = r1jmp ?exit?IRQ5_2Hz:P_INT_Clear = r1r1 = _cnr1 += 1_cn = r1?exit:pop r1,r5 fromspreti3.6 语音提示程序设计23语音提示代码:1. 主程序while(1)PlaySnd_Auto(0,3);while(1);*P_Watchdog_Clear = 0x0001;2.子程序:/语法格式:void PlaySnd_Auto(unsigned int uiSndIndex,/unsigned int uiDAC_Channel)/实现功能:通过自动方式播放语音资源/参数:1.uiSndIndex:语音资源序号 /2.uiDAC_Channel:语音播放通道void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int uiDAC_Channel)SACM_S480_Initial(1);/初始化为自动播放方式SACM_S480_Play(uiSndIndex,uiDAC_Channel,3);/播放while(SACM_S480_Status() & 0x0001) != 0)/判断播放状态,如还在播放则继续循环SACM_S480_ServiceLoop();/播放系统服务程序*P_Watchdog_Clear = 0x0001;SACM_S480_Stop();/停止播放24第4章 交通灯的实现第4章 交通灯的实现4.1 程序的运行及调试1、程序的编译:编好程序后,接下来就需要对所编的程序进行编译,单击菜单“Build”“Rebuild All”开始编译,编译的结果如图4-1所示。图4-1 编译结果2.程序的下载,调试把硬件连接好,进入在线调试状态,先单击“Use

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论