单片机交通灯课程设计课程设计报告(15页).doc
-单片机交通灯课程设计课程设计报告-第 12 页武夷学院单片机原理与应用课程设计报告基于单片机的交通灯设计院 系 :机电工程学院专业(级):11电子信息工程(1)班姓 名:刀建平学 号:20114081063指导教师:张淏职 称:助教完成日期:2013 年 12 月 20日目 录1 引 言12设计任务与要求12.1 设计任务12.2 设计要求13 方案总体设计23.1 显示时间方案的选择23.2 总体设计23.3总体设计24 硬件设计44.1 单片机最小系统44.1.1 STC89C52单片机特性参数44.1.2 STC89C52RC主要引脚功能44.1.3 STC89C52RC的中断源54.1.4 时钟电路54.1.5 复位电路64.2 数码换显示电路64.3 红绿灯显示电路84.4 整体电路95 软件设计105.1 KEIL C简介105.2 程序流程图105.3 keil调试过程116 系统仿真与实现136.1 proteus仿真软件简介136.2 仿真调试过程136.3 实物制作156.4 使用说明177 设计总结17谢 辞18参 考 文 献19基于单片机的交通灯设计1 引 言交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显作用。本系统采用单片机89C52为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外,还具有倒计时功能,较好的模拟实现了十字路口可能出现的状况。软件上采用KEILC编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。经过整机调试,实现了对十字路口交通灯的模拟。中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。2设计任务与要求2.1 设计任务通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力;通过交通信号灯控制系统的设计,掌握定时/计数器的使用方法,和简单程序的编写,把理论知识与实践知识相结合,充分发挥个人能力,并在实践中得到锻炼。2.2 设计要求设计一个能够控制十二盏交通信号灯的模拟系统,:利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。3 方案总体设计本次课程设计的主要任务是设计复杂的十字路口交通信号灯控制系统,。本模拟交通信号灯系统利用STC89C52单片机作为核心元件,实现信号灯对路面交通的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。3.1 显示时间方案的选择方案一:采用数码管显示,半导体数码管不仅具有工作电压低、体积小、寿命长、可靠性高等优点,而且响应时间短(一般不超过0.1us),亮度也比较高。方案二:采用液晶显示,液晶显示器的最大优点是功耗极小。但是,由于它本身不会发光,仅仅靠反射外界光线显示字形,所以亮度很差。通过上述两种方案的对比,显然可以发现,对于交通灯时间的显示,数码管显示更加适合,可靠,所以选择方案一。3.2 总体设计总体设计如图1所示。图1 总体设计图3.3总体设计首先了解实际交通灯的变化情况和规律。假设一个十字路口如图(2)所示东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。初始状态1东西绿灯通车,南北红灯亮,禁止通车,人行道通行,行人可过。过一段时间(10秒)后,转状态2,东西方向还是绿灯亮,南北方向还是红灯亮,黄灯开始闪烁,黄灯闪几下(5秒),即提示红绿灯状态将发生转换。再转状态3,南北方向绿灯亮通车,东西方向红灯亮,即此方向禁止通车,人行道可通行。黄灯熄灭后转状态4,南北方向还是绿灯,东西方向还是为红灯亮,闪几下黄灯(5秒),提示红绿灯显示状态将发生转换。一段时间后,又循环至状态1。列出交通信号灯的状态表如表1所示(1表示灯亮,0表示灯灭)。图2 十字路口示意图表1 红绿灯状态表状态东西南北红 黄 绿红 黄 绿红 黄 绿红 黄 绿10 0 10 0 11 0 01 0 020 1 10 1 11 1 01 1 031 0 01 0 00 0 10 0 141 1 01 1 00 1 10 1 1对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,而且,东西方向与南北方向显示的状态相反,所以只要用一组就行了,因此,可采用单片机内部的I/O口上的P1口中的3个引脚即可来控制3个信号灯。通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。4 硬件设计4.1 单片机最小系统单片机最小系统由一块单片机、一个时钟电路和一个复位电路组成。如图3所示。图3 最小系统结构图4.1.1 STC89C52单片机特性参数STC89C52RC单片机8K字节程序存储空间;512字节数据存储空间;内带2K字节EEPROM存储空间;可直接使用串口下载;8K字节程序存储空间;256字节数据存储空间。l 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.l 工作电压:5.5V3.3V(5V 单片机)/3.8V2.0V(3V 单片机)l 工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz;l 用户应用程序空间为8K字节;l 片上集成512字节RAM;l 通用I/O口(32个),复位后为:P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻,设计电路时需要注意这点。l 共3个16位定时/计数器,分别为T0,T1,T2.4.1.2 STC89C52RC主要引脚功能STC89C51引脚图如图4所示,其主要芯片功能如下所示。图4 STC89C52引脚图l VCC:电源电压l GND:接地l P0口:P0口是一组8位双向I/O口。P0口即可作地址/数据总线使用,又可以作为通用的I/O口使用。l P1口:P1是一个带内部上拉电阻的8准位双向I/O口,P1作为通用的I/O口使用。l P2口:P2是一个带有内部上拉电阻的8 位准双向I/O口l P3口:P3口是一组带有内部上拉电阻的8 位准双向I/0口l RST:复位输入l PSEN()程序储存允许(PSEN())输出是外部程序存储器的读选通信号l EA()/VPP:外部访问允许l XTAL1:振荡器反相放大器及内部时钟发生器的输入端l XTAL2:振荡器反相放大器及内部时钟发生器的输:出端4.1.3 STC89C52RC的中断源89C52有6个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、三个片内定时/计数器溢出中断TF0,TF1,TF2、一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制。4.1.4 时钟电路此次设计的时钟电路由一个12MHz的晶振和两个22PF的陶瓷贴片电容组成。89C52芯片内部有一个高增益反相放大器,用于构成振荡器。引线XTAL1和XTAL2分别为反向放大器的输入和输出,两端跨接石英晶体及两个电容就可构成稳定的自激振荡器。而电容器C1,C2起稳定振荡频率,并对振荡频率有微调作用,C1和C2可在20-100PF之间取值,这里取22PF。电路如图5所示。图5 时钟电路4.1.5 复位电路手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。通常采用手动复位和上电自动复位结合,其电路如图6所示。图6 复位电路4.2 数码换显示电路显示电路既可以选用液晶显示器,也可以选用数码管显示。我采用的是数码管显示电路。用1个二位共阴极数码管显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。共阴数码管的码表为如表2所示。表2 共阴数码管码表01234567890x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。LED数码管的显示原理:数码管有段选与位选两个使能端,由于采用共阴极数码管,要把数码管点亮,就必须给位选选通,至于显示什么数字,只需给段选输入数据即可。通过给52单片机P1口送入初始值,并用P1口来控制段选位,P3.5、P3.6口来控制位显来实现动态显示,来显示各灯所在状态的显示时间。8052单片机的P3口的三个端口接主干道的红、绿、黄灯,显示燃亮情况,通过两个八段显示器显示每个灯的燃亮时间,使灯和显示器时间同步。在设计中,我们采用LED数码管动态显示,用P1口驱动显示。由于P1口的输出级时,数码管显示的亮度不够,根据以前学习的知识及学长们的经验,只需给P1口强势上拉1K排阻,经实验验证,P1口上拉1K排阻后,数码管显示较亮。电路图如图7所示。图7 数码管显示电路其中单片机P口与数码管各引脚之间的连接关系分别为:Ø P1.0-aØ P1.1-bØ P1.2-cØ P1.3-dØ P1.4-eØ P1.5-fØ P1.6-gØ P1.7-hØ P3.5-2Ø P3.6-1其中a,b,c,d,e,f,g,h在数码管上的位置如图8所示。图8 数码管4.3 红绿灯显示电路在本次交通灯设计中,主干道上东西南北四个方向各三盏灯,分别是红灯、黄灯、绿灯。由于东西方向与南北方向信号相反,红灯与绿灯信号相反,故只需3个端口即可控制这12盏灯的亮灭。这些灯由三种颜色即红、黄、绿发光二极管代替,采用共阳极接法,故只需选择性的给这3个端口低电平,对应的二极管就被点亮。显示电路如图9(当然,其中的数码管不包括在内)所示。图9 红绿灯显示电路4.4 整体电路将各模块电路整合到一起就形成了系统工作电路,如图10所示。在altium designer 中画出电路原理图,检查电路没有错误后,可在proteus环境下进行仿真,就可看到整个系统的工作状态,即可模拟出实际交通灯的工作状态。图10 整个电路工作原理图5 软件设计5.1 KEIL C简介KEILC51标准C编译器为8051微控制器的软件开发提供C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编 器,实时操作系统,项目管理器,调试器。uVision2IDE可为它们提供单一而灵活的开发环境。C51V7版本是目前最高效、灵活的8051开发平台。它可以支持所有8051的衍生产品,也可以支持所有兼容的仿真器,同时支持其它第三方开发工具。5.2 程序流程图l 主程序流程图图11 主程序图如图11所示,当整个系统电路开始正常工作时,电路的运行状态将按照程序框图的顺序运行下去,最后进入循环状态,即可反映交通灯运行的状态。l 中断服务程序流程图当系统电路上电后,系统初始化话后,程序从主程序开始进入中断程序,当计数溢出时,中断产生,红绿灯状态将发生转换,接着进入下一个状态,最后进入循环。中断程序如图12所示。图12 中断服务程序流程图5.3 keil调试过程在Keil中将程序代码编完后,点击rebuild键,编译看一开始,出现了好几个错误,经过好久的调试与更改后,编译时没报错,但是有些电路功能还是没弄出来,最后接近快三天的时候才将整个程序编出,终于将程序调试出来了。编译成功后,先在keil中进行调试仿真。先点击Start/Stop Debug Session 键后,显示界面如图13所示。图13 调试第一步再点击Peripherals键,选择I/O-Ports->Port3,再点击几下Step键,显示如图14所示。图14 调试第二步因为P3.5,P3.6分别控制共阴数码管的十位和个位,上图显示的是P3.6口的变化,说明数码管的个位在发生变化,最后再连续点击数下Step键,显示如图15,如上显示的是P3.5的变化,即数码管的十位数在变化。图15 调试第三步在keil中调试完成后,接着进一步软件测试,即可进行电路仿真。6 系统仿真与实现6.1 proteus仿真软件简介Proteus是世界上著名的EDA工具仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等。6.2 仿真调试过程在Keil中调试完成后,再到proteus中进行仿真。首先在proteus中需要的元件依次找出来,根据电路所需要实现的功能画好电路原理图,当检查电路完全没有错误后,双击芯片,再将在keil中生成的hex文件导入芯片,接着点击play键开始进行电路仿真。其中,此次的交通灯整个中循环共有四个工作状态。状态一:点击play键,电路开始进行仿真,此时红绿灯显示的情况为:东西方向为绿灯亮,南北方向为红灯亮,即东西方向通行,南北方向禁止通行,交通灯显示状态如图16所示。图16 状态一状态二:在开始仿真经过10秒后,黄灯开始闪烁,红绿灯的状态将发生变化,即东西方向、南北方向的通行状态即将发生变化,显示情况如图17。图17 状态二状态三:在状态二即黄灯开始闪烁5秒后,东西方向与南北方向的红绿灯的状态发生变化,即通行状态发生变化,显示情况如图18。图18 状态三状态四:在状态三进行10秒种的过程中,东西方向、南北方向红绿灯显示的状态不变,10秒钟之后,黄灯开始闪烁,即东西方向,南北方向的显示状态将发生变化,也就是说通车状态将发生转换。状态四某一时刻的状态如图19所示。图19 状态四黄灯闪烁5秒后,现行状态即将发生变化,将进入状态一,即开始进入循环。6.3 实物制作在proteus中仿真成功后,说明电路原理图及程序代码没有错误,根据电路原理图就可以开始动手做板子,在刚刚开始动手时,总感觉时间不够,而且这种心态一直持续了将近三天。因为我在编写程序代码上不是很顺利,总是会有一点问题出现,在尝试了多次更改后,一些功能总是不能实现,后来再看了别人的一些程序然后仔细分析自己的程序,才知道自己的程序的不当之处,最后才将程序编写出来。至于自己为什么会编不出来,我觉得自己以前编写程序时只是套用别人的程序,也没有去想为什么要这样写,所以才会犯如此的错误;在画洞洞板布线图时,由于没有注意洞洞板的规格,导致在焊接时出现洞洞板太小,放不下所有的线路,所以得重新焊。从而导致浪费了一块板子,而且也浪费了一定的时间与精力;再有就是在第二次焊接完后,没有仔细的检查焊接的怎么样就直接去烧程序到单片机上,结果发现自己做的板子一点反应也没有。之后检查才发现原来是最小系统的时钟电路没有接地。修改后最后才将实物做成功。实物图正面、反面如图20、图21所示。图20 实物正面由于在做实物的过程中,没有仔细的考虑板子的大小问题,导致在焊了一部分的时候才发现有些先焊不下去了,因为没地方可放线了,没办法,最后只能重新拿一块板子再焊。焊接之前发现不论怎样调整线路,总是存在飞线,正如反面所示。这可能是元件布局没做好,相信在做PCB印刷板时定然不会有飞线。图21 实物反面总而言之,在制作实物的过程中,存在着软件方面和硬件方面的问题。软件方面主要是程序的问题,编写程序有的时候忘记声明,有的时候忘记定义变量就直接用,有的时候就是死记程序来着,完全没弄清出事怎么回事就直接写,还有就是编写程序时符号用的是中文环境下的,其中最后这一条是最不好找出来的。唯有谨记这些教训,以后才能少走弯路。硬件方面的问题,主要是焊接时候的问题。焊接前的认真将元件合理的布局。焊接的时候,要井然有序,不能这里花费一下,那里花费一下,否则很容易出现漏焊的问题,再说这样做也便于检查。6.4 使用说明通过下载器将编好的程序通过下载软件烧入单片机,下载成功后,以后只需给单片提供5V的电源,按下6脚按键开关,电路立即接通,交通灯就可正常工作。交通灯正常工作时,按下4脚按键开关后立即松掉,即按下复位键,单片机就重新开始工作,即交通灯从初始状态开始工作。7 设计总结经过一个星期的努力,终于将交通灯实物做出来了。顿时,整个人感觉轻松多了。现在回想起来,还真是别有一番滋味。可以说,这一个星期,很辛苦,但收获也很大。综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识,动手实践能力也有了一定的提高。在此,由于自身能力有限,在课程设计中碰到了很多的问题,但通过查阅相关书籍、资料以及和周围同学及学长们交流后都得以一一解决。由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红绿灯规则效率还不是很高,设计的系统电路功能不是很健全等等,这都需要在实践中进一步完善。当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在单片机编程这方面有一个大的发展。谢 辞 感谢我的指导教师张淏老师,本论文从开始到完成,每一步都倾注了张淏老师大量的心血。是他给了我大力的支持与帮助、耐心的辅导与解惑。而且还给了我很多就业上的见意。张淏老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,使我感受到他朴实无华、平易近人的人格魅力。他是我日后学习、工作与生活中的最好的榜样!还要感谢我的舍友,在我最无力的时候帮助我,焊接过程中很是烦躁,是你们陪着我一点点焊接完,并实现功能。参 考 文 献1 何立民.单片机应用系统设计M.北京:北京航空航天大学出版社,1990:34-35.2 徐惠民,安德宁. 单片微型计算机原理接口及应用M.北京:北京邮电大学出版社,2000:126-129.3 付晓光.单片机原理与应用技术M.北京:清华大学出版社,2004:138-141.4 李维祥.MCS-51单片机原理与应用M.天津:天津大学出版社,2002:55-56.5 李广弟,朱月秀,王秀山.单片机基础M.北京:北京航空航天大学出版社,2001:44-47.6 沙占友,葛家怡,马洪涛.集成化智能传感器原理与应用J.北京:电子工业出版社,2004:74-81.7 张伟.单片机原理及应用M.北京:机械工业出版社,2002:174-180.8 李玉峰,倪虹霞.MCS-51系列单片机原理与接口技术M.北京:人民邮电出版社,2004:128-129.9 李勋,刘源.单片机实用教程M.北京:北京航空航天大学出版社,2006:11-12.10 陈光东.单片微型计算机原理与接口技术.武汉:华中理工大学出版社,1999:64-71.11 李朝青. 单片机原理与接口技术M . 北京: 北京航空航天大学出版社, 2005.5.12 楼然苗等. 51系列单片机设计实例M . 北京. 北京航空航天出版社, 2003.3.13 何立民. 单片机高级教程M . 北京. 北京航空航天大学出版社, 2001.14 赵晓安. MCS-51单片机原理及应用M. 天津. 天津大学出版社. 2001.3.15 肖洪兵. 跟我学用单片机M. 北京. 北京航空航天大学出版社, 2002.8.16 夏继强. 单片机实验与实践教程M. 北京. 北京航空航天大学出版社, 2001.17 于凤明. 单片机原理及接口技术M . 北京. 中国轻工业出版社, 1998.18 阎石. 数字电子技术基础M. 北京. 高等教育出版社, 2005.