交通灯的单片机智能控制系统的设计_第1页
交通灯的单片机智能控制系统的设计_第2页
交通灯的单片机智能控制系统的设计_第3页
交通灯的单片机智能控制系统的设计_第4页
交通灯的单片机智能控制系统的设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

福 建 师 范 大 学 应 用 科 技 学 院学 生 论 文论文题目: 交通灯的单片机智能控制系统的设计 指导教师: 刘金清 学 号: 120352010017 姓 名: 周俊钦 年 级: 2010级 专 业: 电子信息工程 2014 年 5月 10 日交通灯的单片机智能控制系统的设计福建师范大学应用科技学院 电子信息工程专业120352010017 周俊钦 指导老师 刘金清 【摘要】本毕业设计采用单片机为主控芯片来做为交通灯的单片机智能控制系统的控制器,采用AT89C52单片机为核心部分,用发光二极管来模拟交通灯显示状态,按键开关用来进行交通运行时的高低峰切换按键等,用数码管显示做为交通红黄绿灯亮的时间长短。本次设计的交通灯的单片机智能控制系统模拟显示控制电路,综合运用到了C语言、单片机、电路设计、pcb板制作等专业知识。当然也可以运用其它的方法来实现交通的智能系统的的控制,综合考虑考量各方面的因素最终决定用单片机设计,用52单片机来控制电路可以使该电路更为简单、制作也较为方便、性能等方面都可以得到提高。 【关键词】AT89C52单片机;交通灯;数码管显示器;分时系统;双电源Design of intelligent control system of traffic lights College of Applied Science and technology Fujian Normal UniversityElectronic Information Engineering 120352010017 Zhou Jun Qin Tutor: Liu Jin QingAbstract The controller of the graduation design using single chip microcomputer as the main control chip to do intelligent control system for traffic lights, using AT89C52 microcontroller as the core part, using Leds to simulate the traffic light display state, a key switch used for operation of the traffic level of peak switching keys, digital tube display as the length of time the traffic red yellow the green light. Intelligent traffic light control system is the design of the analog display control circuit, the integrated use of the C language, professional knowledge of MCU, circuit design, PCB board production. Of course, also can use other methods to realize the intelligent control system of traffic, considering the factors of various aspects of the final chip design, with 52 single-chip microcomputer to control the circuit can make the circuit more simple, more convenient production, performance and other aspects can be improved.Key Words AT89C52 single chip microcomputer; Traffic lights; Digital tube display; Time-sharing system;目 录1概述11.1设计背景11.2设计目的11.3设计要求11.4设计方案的比较与论证21.4.1交通灯供电方案选择21.4.2交通灯显示界面方案选择21.4.3交通灯输入方案选择21.5交通灯规则的方案21.5.1 交通灯相位的概念31.5.2交通灯状态31.5.3交通灯高低峰时期管理机制62系统硬件设计72.1系统的总体设计72.2单片机AT89C52介绍82.3系统各模块介绍92.3.1时钟电路92.3.2复位电路102.3.3电源电路102.3.4键控模块电路102.3.5二极管显示模块112.3.6 74HC573控制模块电路112.3.7数码管显示模块电路123软件部分设计143.1 keil uvision4 集成开发环境介绍143.2系统的总程序163.2.1系统主程序流程图163.2.2数码管显示程序 183.2.3 定时器中断服务程序193.2.4外部中断服务程序214 Proteus仿真224.1 Proteus软件简介224.2 Proteus软件仿真245组装与调试265.1制作所需的元器件275.2硬件制作与调试中遇到的问题及解决方法275.3软件调试时遇到的问题以及解决方法275.4实物调试图276总结307致谢30参考文献31附录1 系统原理图32附录2 系统PCB图32附录3 主要代码331概述1.1设计背景在今天,红绿交通灯安装在各个交通道口上,已经变成疏导交通车辆最普遍和最有效的手段。可这一技术在19世纪就早已出现了。在1858年,在英国伦敦主要的街头上安装了用燃煤气为光源的红,蓝两色的机械扳手式信号灯,用来指挥马车行驶。这就是世界上最早的用交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上面,安装上了世界上最早开始的煤气红绿灯。它由红绿两色旋转式方形玻璃提灯构成的,红色灯表示“停止”,绿色灯表示“注意”。1869年1月2日,由于煤气灯爆炸,使得警察受伤,遂被取消。电气启动的红绿灯出现在美国,这种红绿交通灯由红绿黄三色圆形的投光器构成,1914年开始安装于纽约市5号大街的一座高塔上。红色灯亮表示“停止”,绿色灯亮表示“通行”。1918年,又出现了带可控制的红绿灯和红外线的红绿灯。带可控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。交通灯的出现,使交通得以有效管理,对疏导交通的流量、提高道路的通行能力,减少交通的事故有着明显作用。本设计采用单片机控制交通灯就是模拟实际交通灯运行指挥作用,也就是要达到交通指挥的功能要求。1.2设计目的交通灯是交通道路指挥车辆和人行安全、畅通运行的指示单元,一般交通灯的重要的组成部分是由红色指示灯、黄色指示灯、绿色指示灯、数码管显示器起到了指示和灯切换倒计时的作用。交通灯在交通道路运输具中有着重要地位,对车辆和人行安全肩负着使命,交通灯智能控制系统设计一直是交通道路指挥最重要的最好指挥工具。交通灯就好像是交通道路运输的枢纽中心,只有拥有了枢纽中心大脑,车辆和人行才能安全的到达目的地,所以也突出了次毕业设的重要意义。1.3设计要求设计一个交通灯控制器,其具体指标要求如下: 用发光红、黄、绿二极管模拟交通灯的红、黄、绿控制信号。数码管显示交通灯亮灭的切换时间提。数码管显示时间必须严格1秒单位跑。用按键来实现交通运输的高、低峰期间的交通灯运行时间切换最终达到运输效率提高,也是用来实现特殊与紧急情况控制按钮。该系统也是必须设计双电源供电,是为了在城市断电的情况下自动切换电源而达到交通照样能正常运行。在硬件设计时,要尽量做到简单方便、易于实现,使系统电路尽量简化。软件设计时思路要清晰,要做到程序简单,调试方便。1.4设计方案的比较与论证1.4.1交通灯供电方案选择为了是交通灯系统稳定工作,必须要有稳定可靠的电源供电。本交通灯系统涉及两种电源方案选择:第一种方案:采用稳压独立电源。本方案的优势是稳定可靠,并且有各种各样的成熟可靠的电源电路提供选用;缺点是各个模块都是独立的电源,这样会使的系统变得复杂化,有可能影响系统的电平稳定性。第二种方案:采用单片机控制模块做为电源供电。此方案的优点是使得系统的整体变得比较简单明了,节省成本;缺点是电源输出功率低。本系统在设计过程当中考虑到实际情况和体统简单性等方面因素原因,所以采用第二种方案,以此同时考虑到城市断电情况下,所以必须要增加一个后备电源,在主电源断电的瞬间,要切换到后备电源来给系统继续供电。1.4.2交通灯显示界面方案选择本系统设计也倒计时交通灯状态切换的功能。因此设计显示采用三种显示方案:第一种方案:全部采用数码管做为显示。本方案只能显示几个字符和数字,显示内容比较单一化。第二种方案:全部采用点阵式LED做为显示。本方案能显示各种各样的英文字符,汉字,图像,显示的内容丰富,但是缺点是软件工作量比较大和复杂。第三种方案:采用数码管和点阵式LED相结合做为显示。这种方案复杂度适中。又可以实现丰富显示内容。在本系统设计实际应用过程中,采用数码管来显示灯亮的时间长短,用灯来显示运行的状态,这样就基本满足实际应用要求,而且系统实现变得简单明了化。所以本设计采用了第一种方案。1.4.3交通灯输入方案选择在交通灯指挥过程中,当遇到紧急情况和一些特殊情况的时候,就需要按键来控制切换功能,本设计采用到两种方案:第一种方案:采用8155芯片扩展I/O 口及键盘与显示。本方案的优点是:软件编程更加灵活应用。I/O端口将会扩展的更多。缺点是:软件编程控制会比较复杂化。第二种方案:直接在单片机I/O端口连接上按键。本方案的优点是:按键软件编程变得简单和简洁,成本低廉,缺点:按键功能有限。根据本系统实际情况需要,由于本系统的按键功能简单,不需要复杂的软件编程就能满足设计要求,所以就采用第二种方案。1.5交通灯规则的方案本系统交通灯是用十字路口做为模型,在实现交通灯指挥基本功能情况下,在添加交通高低峰时期控制切换功能和在紧急情况和特殊情况按键触发控制切换模式功能。1.5.1 交通灯相位的概念为了交通能正常而安全的运行,本系统必须规定“相位”概念。相位概念的定义:在单个十字路口中,整个运行状态周期每一个绿灯亮起时间做为一个固定值。相位意义的作用是在一周期状态循环内,是根据十字路口每个的路口车流量的大小就可以合理适当分配绿灯的时间长短,这样做是为了使时间充分利用,保证主干线上较多车辆比较流畅行驶,副干线上的车辆也能流畅行驶,从而达到交通运行效率得到提高。1.5.2交通灯状态为了容易说明交通灯状态,交通灯系统设计状态如图1-1所示。如图1-1所示,交通道路系统一般是由双列车道和斑马线人行道组成的十字路口模型,由南向北行驶的车辆所看指示的交通灯是在北路口车行道上面,由北向南行驶的车辆所看指示的交通灯是在北南路口车行道上面,由西向东行驶的车辆所看指示的交通灯是在东路口车行道上面,由东向西行驶的车辆所看指示的交通灯是在西路口车行道上面。本设计规定如下交通运行状态:S1状态:南北方向上的车辆通行,东西方向上、南左转到西方向上、北左转到东方向上、西左转北方向上、东左转到南方向上全部禁行,东西方向上人行道通行、南北方向上人行道禁行。S1状态如图1-2所示。图1-1 交通灯示意图图1-2 S1状态示意图S2状态:东西方向上的车辆通行,南北方向上、南左转到西方向上、北左转到东方向上、西左转北方向上、东左转到南方向上全部禁行,南北方向上的人行道通行、东西方向上的人行道禁行。S2状态如图1-3所示。S3状态:南左转西方向上、北左转东方向上的车辆通行,南北方向上、东西方向上、西左转北方向上、东左转南方向上的车辆禁行,南北方向上、东西方向上人行道禁行。S3状态如图1-4所示。S4状态:西左转北方向上、东左转南方向上的车辆通行,南北方向上、东西方向上、南左转西方向上、北左转东方向上的车辆禁行,南北方向上、东西方向上的人行道禁行。S4状态如图1-5所示。图1-3 S2状态示意图图1-4 S3状态示意图S5状态:全部红灯亮,此状态为紧急事件情况。S5状态如图1-6所示。图1-5 S4状态示意图图1-6 S5状态示意图1.5.3交通灯高低峰时期管理机制本系统设计为了提高交通灯系统运行效率,设置了交通高低峰时段分时管理机制。交通高低峰时段分时定义如下:交通高峰期时段:在早上8点到10点,一般正常为上班上学出行的高峰期时段,在晚上18点到20点,一般正常为下班放学出行高峰期时段,这时主干道的车流量远远高于次干道的车流量;交通低峰期时段:除高峰时段的其他时段。在交通高峰期时段,采用增加主干道路绿灯通行的时间,减少次干道路绿灯通行的时间以最大限度的通过车辆。在交通低峰期时段,采用减少主干道路绿灯通行的时间,增加次干道路绿灯通行的时间以平衡通过车辆。交通高低峰期时段状态如表1所示。表1-1 交通高低峰期时段状态表S1状态S2状态S3状态S4状态交通低峰期时段交通高峰期时段南北方向的车行道绿灯时长20s南北方向的车行道绿灯时长25s东西方向的车行道绿灯时长15s东西方向的车行道绿灯时长10s南左转西方向,北转东方向绿灯时长10s南左转西方向,北转东方向绿灯时长10s东左转南方向,西左转北方向绿灯时长10s东左转南方向,西左转北方向绿灯时长10s在高低峰两时段期间,全部车行道绿灯的总和都为55秒,即相位都为55s。在发生突发事件的时候启动紧急状态S5,全部红灯亮。这种状态主要适用于例如救护车,军车执行任务时候使用。交通运行状态转换图如图1-7所示。图1-7 交通状态转化图2系统硬件设计2.1系统的总体设计交通灯系统是由电源电路、复位电路、LED灯显示电路、74HC573控制模块与数码管显示电路、按键控制等模块组成。电源电路主要负责给整个交通灯系统提供电源,本系统是采用USB供电。整个交通灯系统所需要的直流电是+5V,本系统显示模块是采用纯数码管显示,LED灯是做为模拟交通灯显示状态,按键按钮模块用来切换紧急情况或者特殊模式。系统框图如图2-1所示:复位电路按键控制触发外部中断电路双电源供电电路时钟电路数码管显示二极管显示AT89C52单片机74HC573控制模块电路图2-1 系统硬件框图2.2单片机AT89C52介绍图2-2 AT89C52单片机(1)AT89S52单片机的主要特性包括:AT89C52是一个包含4KBROM(FPEROMFlash Programmable and Erasable Read Only Memory)低电压,高性能的CMOS 8位的微控制器,也就是单片机。AT89C52它具有8K的可反复擦写(大于1000次)的flash程序存储器和256x8bit的随机存取的数据存储器RAM,32位I/0口线,3个16位定时器|计数器,6个中断源,全双工串行口,片内振荡器与时钟电路。该原器件是基于ATMEL高密度非易失存储器技术制造的,兼容工业级标准的MCS51的指令集和输出管脚。由于将多功能8位CPU和闪烁存储器集成在单个芯片中,ATMEL的AT89C52是一种高效微控制器。AT89C52单片机在很多嵌入式系统中得到了很广泛的应用因为其低廉、高效的特性1。(2)AT89C52单片机引脚功能:VCC:供电电压,接+5V电源。GND:接地端。RST:复位输入。ALE/PROG:在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时。然而要注意的是:每当用作外部数据存储器,将跳过一个ALE脉冲。如果禁止ALE的输出可在SFR8EH上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才其作用。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:内部和外部程序存储器选择信号。当EA为低电平时,则访问外部程序存储器,当为高电平时,访问内部程序存储器。XTAL1:反向振荡放大器的输入引脚及内部时钟工作电路的输入引脚。XTAL2:来自反向振荡器的输出。(3)输入/输出(I/O)引脚:P0口:P0口是一个8位漏极开路双向I口。当作为输出口时候,每个脚可吸收8个TTL门电流,当P0口的管脚为“1”时,被定义为高阻输入状态。P0 也能够用于外部程序数据存储器,它同样可以被定义为数据/地址的低八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0口输出原码,此时P0必须接上上拉电阻3。P1口:P1口是一个内置上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。当P1口管脚为“1”时,被内部的上拉电阻把端口拉到高电平,可用作输入口,P1口被外部下拉为低电平时,将输出电流。在FLASH编程和校验期间,P1口作为低八位地址接收。P2口:P2口是一个内置上拉电阻的8位双向I/O口,P2口缓冲器可接收4个TTL门电流,当P2口为“1”时,其管脚被内部上拉电阻拉高,可最为输入口。并因此作为输入时,P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,由于内部上拉,将输出电流。P3口:P3口管脚是个双向口,内部带上拉电阻可做为输入输出口,可接收输出4个TTL门电流。当P3 口写入“1”后,它们被内部上拉为高电平,并用做输入口。作为输入口时,由于外部下拉为低电平,P3口将输出电流(TTL)这是由于上拉的缘故。P3口作为通用I/O口使用时,是第二功能复用口,其引脚功能定义如表2-1所示:表2-1 管脚备选功能表引脚功能P3.0/RXD串行输入口P3.1/TXD串行输出口P3.2/INT0外部中断0P3.3/INT1外部中断1P3.4/T0计时器0外部输入P3.5/T1计时器1外部输入P3.6/WR外部数据存储器写选通P3.7/RD外部数据存储器读选通2.3系统各模块介绍2.3.1时钟电路时钟电路是用来配合外部晶体实现振荡的电路,其目的是为单片机提供系统时钟,假如没有时钟电路来产生时钟驱动单片机,则单片机就不能正常工作。单片机的机器周期有6MHz和12MHz两种,这里使用12MHz的晶振。还有两个33P的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。图2-3 时钟电路模块2.3.2复位电路单片机复位电路采用上电复位,上电瞬间,电容视做短路。单片机第九脚为高电平,符合单片机两个机器周期高电平的复位条件,单片机复位。其中电阻分别为1K和10K,电容采用10F的电解电容。图2-4 复位电路模块2.3.3电源电路电源模块为单片机提供工作所需的电源。图2-5 电源模块2.3.4键控模块电路完成交通灯控制系统的所有操作一共需要2个按键,如图2-6。考虑到单片机的I/O口资源比较丰富,而且每个I/O口均有独立的中断能力,因此,2个键可直接接到单片机的I/O口上,并由通过中断方式来响应。由于硬件电路比较简单,所以相应的软件设计也会比较简单,出于对安全可靠的考虑,为防止按键被误动带来的不安全因素,这里的按键操作都加了去抖动的处理。图2-6 按键控制模块2.3.5二极管显示模块在交通灯模拟显示这里我们选用发光二极管来模拟交通灯状态,LED(Light-Emitting-Diode)即发光二极管是一种能够将电能转化为可见光的半导体,它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用电场来发光。LED具有节能、环保、光效高、寿命长等很多的优点。现在LED已经广泛应用于各种照明灯、显示器、指示灯以及城市夜景等领域。现在社会的大背景大主题就是:节能,环保,低碳,所以交通灯使用LED正符合社会发展的趋势4。图2-7 二极管显示模块2.3.6 74HC573控制模块电路(1)74HC573应用原理74HC573和74LS373的基本原理是一样,8数据锁存器。主要用于数码管、按键等等的控制 。74HC573有20个脚,数据的进和出没有逻辑关系,这个芯片主要是看高电压激活还是低电压激活:1是低电压激活芯片 29脚是数据的输入脚从D0到D7 10脚是接地 11脚是高电压激活芯片 1219脚是数据的输出脚 20是电源图2-8 74HC573原理图 表2-2 74HC573功能表 输入输出 输出使能 锁存使能 D Q L H H H L H L L L L X 不变 H X X ZX=不用关心Z=高阻抗74HC573真值表,意思如下: 第一行/第二行:当OE0、LE1时,输出端数据等于输入端数据; 第三行:当OE0、LE0时,输出端保持不变; 第四行:当OE1是无论Dn、LE为何,输出端为高阻态;(2)通过对74HC573芯片了解,就可以与单片机接口相连接,通过单片机对74HC573芯片控制就可以在P0口连接两组两位共阴数码管,实现单片机通过一组P0口就可以对数码管的位选控制和段选的数据控制,通过74HC573芯片这样可以实现单片机的引脚、资源节省,由于单片机AT89C52资源是比较少的,所有通过应用74HC573芯片来控制数码管是非常有必要的。2.3.7 数码管显示模块电路 (1)数码管显示器概述:数码管显示器模块只能用来显示数字、几个字母字符示的内容比较简单。目前常用的数码管显示器有一位数码管,两位数码管,三位数码管,四位数码管的这几种组合模块。我们在实际应用过程中经常遇见有两种数码管显示器,一种是共阴数码管,另一种是共阳数码管。以下是一个2位共阴红色数码管的尺寸图和实物图,如图2-9 和如图2-10 所示。图2-9 2位共阴红色数码管尺寸图图2-10 2位共阴红色数码管实物图(2)数码管显示原理我们最常用是七段码和八段码的LED数码管,区别是八段码比七段码多一个小数点,其他基本是一样的。所谓的八段是指数码管里面有八个小LED发光二极管,是通过控制不同的LED发光二极管的亮灭来显示不同字形,数码管又分为共阴与共阳两种类型,共阴就是将八个LED的阴极全部连接在一起,共阴就是将八个LED的阴极全部连接在一起,然后接地。这样八个LED的每一个LED的另一端加高电平时就会点亮LED,而共阳就是八个LED的阳极连接在一起。其原理图如图2-10所示图2-11 数码管原理图在实际应用中只要关心数码管是共阳还是共阴数码管和数码管引脚封装问题,因为在单片机应用中,数码管的引脚是和单片机引脚相连的,也就是通过单片机控制显示数码管,比如共阴数码管中,先给COM端要至0,然后通过单片机把数据在给数码管段选线(即a,b,c,d,e,f,g,db)端口,就可以显示出相应数字字符出来,可以通过查看共阴数码管显示数字所对应的字符编码,比如要在数码管上面显示0,对应的字符编码是00111111,即0x3f 。这样完成了一位数码管显示数字字符。 (3)下面是2位共阴红色数码管与74HC573芯片连接原理图,其中数码管ah端口连接U1芯片Q0Q7端口,而U1的D0D7端口连接单片机P0端口,单片机P0端口需要10K上拉电阻。如图2-11所示 如图2-12 两位共阴数码管电路图3软件部分设计3.1 keil uvision4 集成开发环境介绍keil uvision4软件是KEIL公司的产品。KEIL C51标准C编译器为8051微控制器的软件开发提供C语言环境,同时保留汇编代码高效、快速等特点。C5l编译器的功能在增强,可使用户可以更进一步贴近CPU本身。C51已被完全集成到keil uvision4的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。keil uvision4可为它们提供单一而灵活的开发环境5。该软件的界面如下图。图3-1 软件的界面图该软件的使用步骤:(1) 建立源文件,打开菜单“file-new”,在新的文本编辑窗口写入源程序。(2) 建立工程文件点击“Project-New Project ”菜单,并给将要建立的工程编辑文件名(不需要扩展名),点击“保存”按钮,就会弹出第二个对话框,选择目标CPU,Keil支持的CPU种类很多,在这边选择Atmel公司的AT89C52芯片,按“确定”。(3) 在新建的工程中加入之前编辑的源程序。对工程进行详细设置,在这边我们主要设置CPU的晶振频率为12,同时设置对话框中的 OutPut 页面,其中Creat Hex file用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX 格式文件,文件的扩展名为.HEX)。(4) 编译、连接。在程序编译完成没有出现错误后,把生成的HEX格式的文件,下载到单片机内。界面显示如下图:图3-2 编译下载图3.2系统的总程序系统的总程序包括74HC573芯片控制程序与数码管显示程序、二极管状态显示交通灯程序和定时器中断服务程序。该系统使用的是C语言编写。C语言功能丰富、表达能力强、使用灵活、应用面很广、目标程序效率高、可移植性强,所以我选用C语言进行编写改交通灯系统的软件6。3.2.1系统主程序流程图 图3-3交通灯系统主程序流程图图3-4 系统总框架图 系统上电后开始工作,首先进行对外部中断和定时器中断、交通灯运行状态、单片机的I/O端口初始化,再通过外部中断触发判断按键是否。如果没被按键按下,则按照所设定的交通灯执行预定方案的时间和状态,在执行预定方案中。如果按键被按下,在判断是紧急情况被按下,还是高低峰切换按键被按下,然后做相应的执行程序。3.2.2数码管显示程序 数码管的显示主要包括对数据锁存器芯片(74HC573芯片)的操作和数码管的位选、位选的操作,读写操作等。两位共阴数码管显示程序如下:/*显示绿灯的十位*/P1=0xbe; /车道交通灯P3=0x9f; /行人交通灯 dula=1; /打开段锁存器 P0=table(sec-yellow_time)/10;dula=0; /锁住锁存器 P0=0xff;wela=1; /打开位锁存器P0=0xef;wela=0;delay(1); wela=1; P0=0xff;wela=0; /*南北方向显示绿灯的个位*/ dula=1; /打开段锁存器P0=table(sec-yellow_time)%10;dula=0; /锁住锁存器P0=0xff;wela=1;P0=0xdf;wela=0;delay(1);wela=1; P0=0xff;wela=0;3.2.3 定时器中断服务程序首先在定时器寄存器重新赋初值,然后对半秒、秒、小时的标志位累计和清零,这样就是实现对交通运行一天时间段的统计与计算,是为了后面交通高低峰切换时间段做依据。还有就是对一些标志位的判断,比如交通高低峰标志位判断在中断服务程序里面做了判断处理,以及对交通灯状态自动切换下一个状态标志位判断处理等等。 定时器中断服务程序:TH0=(65536-50000)/256;TL0=(65536-50000)%256; /设置定时中断时间为50mst+;if( t = 10 )half_sec+;t=0;if( half_sec = 2 ) /即为一秒的时间sec-;/交通灯显示秒数减1half_sec=0;hour_flag+;if( hour_flag = 3599)/当hour=3599的时候即为一小时时间hour_flag=0;hour+; /小时加1if( hour = 24 )hour=0;if( top_flag = 0 ) /高峰期的标志位置1时,进行交通时段判断if( (hour=8) | (hour=9) | (hour=17) | (hour=20) | (hour8) )s1=15;s2=10;s3=10;s4=20;if(sec = yellow_time) yellow_flag=1;/*当时间走到0秒时对状态进行赋初始值*/if(sec = 0)yellow_flag=0;if(s = 1)sec=s1;if(s = 2)sec=s2;if(s = 3)sec=s3;if(s = 4)s=0;sec=s4;s+;3.2.4外部中断服务程序外部中断服务程序主要是对按键触发的服务响应程序的处理,比如紧急情况服务程序,主要是对交通灯状态设置,即设为全部红色。而高低峰切换服务程序,主要是对高低峰状态标志位的取反和交通状态时间的初始化。外部中断服务程序/*紧急情况外部中断0服务函数*/void waibu0( ) interrupt 0P1=0xee; /车道交通灯P3=0xaf; /行人交通灯dula=1; /打开段锁存器P0=0;dula=0; /锁住锁存器P0=0xff; /消影wela=1; /打开位锁存器P0=0;wela=0;P0=0;delay(3);/*高低峰状态切换的外部中断1服务函数*/void waibu1( ) interrupt 2while(IE1=1);delay(1);while(IE1=1);top_flag=( top_flag );if( top_flag = 1 )P1=0xbe; P3=0x9f; delay(1);s=1;s4=25;s1=10;s2=10;s3=10;sec=25;4 Proteus仿真4.1 Proteus软件简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。他是目前最好的仿真单片机及外围器件的工具。虽然目前国内在国内刚刚起步,但已受到广大单片机爱好者、高校单片机老师、科研人员的欢迎7。Proteus软件界面如下。图4-1 protues界面(1)Proteus软件具有以下创新性的特点:互动的电路仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。仿真处理器及其外围电路,可以仿真一些常用的主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境8。 (2)具有3大功能模块:个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真;ARES PCB设计. (3)Protues提供了丰富的资源: Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。Proteus可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。 Proteus可提供的调试手段 Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。 (4)软件仿真:可支持目前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。提供软件调试功能。提供丰富的外围接口器件及其仿真RAM,ROM,键盘,马达,LED,LCD,AD/,部分SPI器件,部分IIC器件。这样很接近实际。在训练学生时,可以选择不同的方案,这样更利于培养学生。提供丰富的虚拟仪器利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。(5)电路功能仿真:在PROTUES搭建画好原理图后,导入已编译好的最终目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。 (6)PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等9。4.2 Proteus软件仿真按下仿真开始键,系统开始初始化后是先按照S1到S4执行,如果有紧急按键按下是按S5执行:S1状态:如下图所示:图4-2交通灯S1状态S2状态: 如下图所示:图4-3交通灯S2状态S3状态: 如下图所示:图4-4交通灯S3状态S4状态:如下图所示:图4-5交通灯S4状态S5状态:全部红灯亮,此状态为紧急事件情况。如下图所示:图4-6交通灯S5状态5组装与调试5.1制作所需的元器件单片机AT89C52、发光二极管、两位共阴数码管、74HC573数字芯片、电阻、电位器、排阻、电容、11.0592M晶振、插针、按键、杜邦线、自锁开关、USB母头。5.2硬件制作与调试中遇到的问题及解决方法(1)在画PCB图的过程中,由于没有考虑到两块74HC573芯片连接在单片机同一组端口画PCB的走线复杂问题,所以后面我用了杜邦线跳线连接起来。(2)由于之前画原理图的时候忘记把PCB板的焊盘设置大一些,当画好了PCB的时候才发现焊盘有点过小,所以在后面的制作中我使用了PCB的查找对象把所有小焊盘的大小改为60mil。(3)在焊接时也要注意很多的问题,首先铜板就必须保持清洁防止表面被氧化,其次是需要合适的助焊剂通常是采用松香作为助焊剂,最后是焊件要加热到合适的温度在合适的时间焊好管脚。在我的焊接过程中,由于电烙铁的焊头被氧化了,所以在焊接的过程中并不顺利,后来我换了一个焊头,顺利的完成了焊接的工作。5.3软件调试时遇到的问题以及解决方法(1)把程序加载到单片机后,上电调试后发现,在作品上面的实际显示结果不对,然后对程序的检查和查看PCB原理图,才发现原来程序与硬件引脚对应不对。(2)在数码管程序的时候,发现数码管不能正确显示我所要显示的数字,老是显示不知道的字符出来,然后通后对电路的检查,才发现原来是电路的线有些是断路了,所以就把断路的线修补好了。(3)在做紧急按键切换的时候,发现按键没效果,然后检查按键硬件电路,和按键触发外部中断函数程序,原来是外部中断初始化没配置好。5.4实物调试图 (1)交通灯S1的状态实物图图5-1 交通灯S1的状态(2)交通灯S2的状态实物图图5-2交通灯S2的状态(3)交通灯S3的状态实物图图5-3交通灯S3的状态(4)交通灯S4的状态实物图图5-4交通灯S4的状态(5) 交通灯S5的状态实物图图5-5 交通灯S5的状态6总结该交通灯系统经过画图、布线、焊接、调试等过程终于实现了想要设计功能。这次毕业设计对于我来说是一段比较艰辛的历程。虽然说之前也做过相似的课程设计,但是与毕业设计相比是不同,毕业设计需要自己独立完成一个作品。从选题到方案的选择以及软件硬件的设计,这些都是需要我们自己去琢磨。因为本次的选题是比较贴切生活实际的,所以在设计的过程中,我不仅需要加入自己的设计思想,还得能真正的能将该设计运用到生活实际上去。在设计的过程中,我也遇到了很多的难题。当你在仿真软件以及画图软件上的所有操作,但是在实际的组装和调试过程中,还是会有许多的问题出现。在经过后期的改善,基本都得到解决,电路也能正常工作。虽然改交通灯系统的设计是比较简单的,但是真正思考了每个设计的环节,我也从中掌握了很多的技巧,其中细心和耐心是必不可少的,这对于我以后的设计都是有很大帮助的。7致谢经过我不懈的努力,本次的毕业设计终于成功了。这也就意味着我们的大学生涯已经快走到尽头了,细想我的大学时光,思绪和情歌如潮水般涌来,令我不禁感慨万分。我都想说,能够在这样的环境中学习,能够与这些良师益友沟通与交流,我实在是感到非常荣幸,同时也受益匪浅。因为是第一次写毕业论文,经验比较匮乏,有很多不懂的地方,如果没有同学的帮助,我不会这么顺利的完成毕业设计。在本次设计

温馨提示

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

评论

0/150

提交评论