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

下载本文档

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

文档简介

南 阳 理 工 学 院 本科生毕业设计(论文)学院(系): 电子与电气工程系 专 业: 电子信息工程 学 生: 指导教师: 完成日期 2010 年 5 月南阳理工学院本科生毕业设计(论文) 基于单片机的交通灯控制系统设计Design of Traffic Light Control System Based on Single-chip总 计: 毕业设计(论文) 19页表 格: 7 个插 图 : 13 幅基于单片机的交通灯控制系统设计南 阳 理 工 学 院 本 科 毕 业 设 计(论文)基于单片机的交通灯控制系统设计Design of Traffic Light Control System Based on Single-chip学 院(系): 电子与电气工程系 专 业: 电子信息工程 学 生 姓 名: 林鹏 学 号: 94106045 指 导 教 师(职称):牛军(副教授) 评 阅 教 师: 完 成 日 期: 南阳理工学院 Nanyang Institute of TechnologyI基于单片机的交通灯控制系统设计电子信息工程 林鹏摘 要城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。本文设计了一种基于AT89S51 单片机的交通灯信号控制系统。该系统除具有基本交通灯功能外,还具左转提示和紧急情况(重要车队通过、急救车通过等)发生时手动控制等功能。本文完成了系统的软、硬件设计任务,并且利用Proteus与Keil 联调技术,对此交通灯控制系统进行了仿真,结果可实现上述功能。该系统能够简单、有效地疏导交通,提高交叉口的通行能力。关 键 词交通灯;单片机;控制系统;Proteus;KeilDesign of Traffic Light Control System Based on Single-chipElectronic Information Engineering Specialty LIN PengAbstract: The urban transport control system is used to acquire data of urban transportation and control the traffic signal It is the important part of the modern urban transport command system. This paper introduces a multi-functional traffic signal control system based on AT89S51. In addition the system has the basic functions of traffic lights, turn left also has tips and emergency (important motorcades, emergency vehicles through, etc.) occurs, manual control functions. Finally, it is simulated with Proteus and Keil to realize the above-mentioned functions. The system has been proved to be simple and effective in easing traffic congestion and improve traffic junction capacity.Key words: Traffic lights; single-chip; control system; proteus; keil目 录1 引言12 系统总体设计12.1 系统设计要求12.2 系统硬件框图及工作原理12.3 软件设计思想23 系统各模块硬件电路设计43.1 单片机AT89S51概述43.1.1 AT89S51单片机的主要性能43.1.2 AT89S51的各引脚功能53.2 系统硬件设计63.2.1 电源电路设计63.2.2 复位电路设计73.2.3 时钟电路设计83.2.4 单片机与PC机串口通信电路93.2.5 交通灯显示模块103.2.6 LED数码管倒计时显示模块103.2.7 紧急情况中断电路124系统软件设计134.1 软件设计总体概述134.2 系统程序流程框图134.2.1 紧急情况中断服务子程序134.2.2 状态循环子程序145 基于Proteus 软件的系统仿真实现15结束语17参考文献18致谢19201 引言在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。智能的交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行。交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。本文为了实现交通道路的管理,力求交通管理先进性、科学化。分析应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地疏导交通,提高交通路口的通行能力。2 系统总体设计2.1 系统设计要求东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯和绿色左转指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯闪亮提示人们注意红、绿灯的状态即将切换,且黄灯闪亮时间为东西、南北两干道的公共停车时间。当发生紧急情况发生时,信号灯转变为红色禁行信号。 2.2 系统硬件框图及工作原理本系统主要由单片机控制系统、按键紧急情况中断模块、通信模块、LED 显示模块、交通灯显示模块,电源模块等组成,如图1所示。其中,单片机系统为系统的主控制器,以控制其他模块协调工作;按键模块采用外部中断INT1 的方式;串口通信模块RS-232C串行通信标准接口;LED 显示模块用以显示交通灯控制参数;交通灯显示模块用以显示各车道的通行情况。按 键 模 块通 信 模 块AT89S51单片机交通灯LED数码管电 源电 源图1 系统硬件原理框图2.3 软件设计思想采用分模块设计的思想,程序设计实现的基本思想是一个计数器,选择一个单片机,其内部为一个计数,是十六进制计数器,模块化后,通过设置或程序清除来实现状态的转换,由于每一个模块的计数多不是相同,这里的各模块是以预置数和计数器计数共同来实现的,所以要考虑增加一个置数模块,其主要功能细分为,对不同的状态输入要产生相应状态的下一个状态的预置数。以主干道为例,简述其设计思想。如前分析,已经确定该系统有四个状态,而置数子模块要将下一状态的预置数准备好,所以很容易得到主干道的置数表,如表1所示。表1 主干道置数表状态主干道预置数次干道预置数00402001不要置数20(左转)1020401120(左转)不要置数 依据表1,就可以通过程序循环的方法设计该模块,主要思想是通过数据判断指令、跳转指令实现,由主控制器计时和中断产生的四个状态去译码,从而得到不同的输出,即预置数,由以上分析可用一个计数器和跳转指令去完成预置数。而红绿灯的显示也是一样,由状态分析可以得出红绿灯的变化如表2所示。表2 红绿灯变化表状态主干道灯显示次干道灯显示00红灯绿灯01红灯左转绿灯10绿灯红灯11左转绿灯红灯依据表2就可以用组合电路实现该功能了,可以用数据选择器的思想,在本系统中,直接通过门电路的译码,接下来就是计数模块了,其主要的功能细分为,要从预置数开始递减计数,一个状态结束,通过判断,通知主控制模块,使之进入下一模块。还有一个必须考虑到的就是,预置数必须在下一个状态来之前准备好,而红绿灯的状态变化,必须和计数状态同步,于是引起预置数变化的程序要超前于系统本身的状态变化,所以,系统中的两个状态转换时,在上一状态结束时设置预置数,而控制红绿灯的是随着系统本身状态的变化而变化,体现在本子电路中就是有两组电路去判断符合的状态。紧急情况的处理则采用查询加中断的方式。通过查询相应端口的状态来控制外部中断1,然后进去相应的处理程序。在哪一方向上有紧急情况,则能通过开关进行中断,使该方向上为绿灯放行,同时紧急情况报警灯亮。主程序流程图如图2所示。开 始紧急事件处理紧急情况中断事件初 始 化循环程序处理 图2 系统主程序流程图3 系统各模块硬件电路设计3.1 单片机AT89S51概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种1。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器2。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等3。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚4。它集Flash程序存储器 既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域5。3.1.1 AT89S51单片机的主要性能与单片机产品兼容8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源 、全双工UART串行通道低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符6。中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器用于存放变化的数据。AT89S51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用7。程序存储器用于存放程序和固定不变的常数等。通常采用只读存储器,且其又多种类型,在89系列单片机中全部采用闪存。AT89S51内部配置了4KB闪存。定时/计数器用于实现定时和计数功能。AT89S51共有2个16位定时/计数器。AT89S51共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。每个口都由1个锁存器和一个驱动器组成。它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其它功能。A89S51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。中断系统的作用主要是对外部或内部的终端请求进行管理与处理9。AT89S51共有5个中断源,其中又2个外部中断源和3个内部中断源。3.1.2 AT89S51的各引脚功能 VCC:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I0口,也即地址数据总线复用口10。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。P1口:Pl是一个带内部上拉电阻的8位双向IO口,Pl口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,Pl口接收低8位地址。P1口第二功能如表3所示。表3 具有第二功能的P1口引脚端口引脚第二功能:P1.5MOSI(用于ISP编程)P1.6MOSI(用于ISP编程)P1.7MOSI(用于ISP编程)P2 口:P2 是一个带有内部上拉电阻的8 位双向IO 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8 位地址的外部数据存储器(如执行MOVXRi 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。P3 口:P3 口是一组带有内部上拉电阻的8 位双向I0 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I0口线外,更重要的用途是它的第二功能,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。P3口引脚第二功能如表4所示。表4 具有第二功能的P3口引脚端口引脚第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外中断0)P3.3/ INT1(外中断1)P3.4T0(定时计数器0外部输入)P3.5T1(定时计数器1外部输入)P3.6/ WR(外部数据存储器写选通)P3.7/ RD外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。图3 AT89S51单片机3.2 系统硬件设计3.2.1 电源电路设计 由于单片机工作时需要+ 5V的电压,所以在设计电源电路时,需要一个电子元件能提供+ 5V电压,由于7805 能够提供5V 电压的三端稳压电源,在实际的电路控制中应用其作为电源电路较为广泛,在普通的电子元器件商场都有销售易于购买并且技术相对成熟。7805 1脚为电源输入段,2脚为公共接地段,3脚即为我们所需要的+ 5V电压输出段。 本文采用最典型的7805 提供电压的电路,即在7805 的1 脚和公共接地端(即2 脚) 之间接入0. 3F 的电容,在公共接地端和3脚+ 5V电压输出端之间接入0. 1F 的电容,其电路如图4所示。图4 电源模块3.2.2 复位电路设计复位电路如图5所示。图5 复位电路MCS51 的复位输入引脚RST 为MCS51 提供了初始化的手段。有了它可以使程序从指定处开始执行,即从程序存储器中的0000H 地址单元开始执行程序。在MCS 51 的时钟电路工作后,只要RST 引脚上出现10ms 以上的高电平时,单片机内部则初始复位。 只要RST 保持高电平,则MCS51循环复位。只有当RST由高电平变低电平以后,MCS51 才从0000H 地址开始执行程序。MCS51 的复位是由外部的复位电路来实现的。复位引脚通过施密特触发器与复位电路相连,施密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式。本系统采用两种方式的复合方式即上电位按钮复位方式。RST端接单片机图的复位引脚,VCC接电源,GND接地。3.2.3 时钟电路设计MCS 51 的时钟可以由两种方式产生,一种是内部方式,利用芯片内部的振荡电路;另外一种为外部方式。本论文根据实际需要和简便,采用内部振荡式。MCS 51 内部有一个用于构成振荡器的高增益反相放大器,脚XTAL1 和XTAL2 分别是此放大器的输入端和输出端。个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成一个自激振荡器。 MCS 51 虽然有内部振荡电路,但要形成时钟,必须外接元件所以实际构成的振荡时钟电路。外接晶体以及电容C1 和C2 构成并联谐振电路接在放大器的反馈回路中。对接电容的值虽然没有严格的要求,但电容的大小会影响振荡器率高低、振荡器的稳定性、起振的快速性和温度的稳定性。晶体频率可在1. 2MHz12MHz 之间任选,电容C1和C2 的典型值在20pF100pF 之间选择,考虑到本系统对于外接晶体的频率稳定性要求不高,所以采取比较廉价的陶瓷谐振器。本系统应用的机器周期为1us,所以晶振选择为12MHz,根据调试电容选择30pF,XTAL1 和XTAL2 分别是此放大器的输入端和输出端,与单片机对应的引脚XTAL1 和XTAL2相连,其电路图如图6所示。在硬件电路焊接时,晶体或陶瓷振荡器和电容应该尽可能地与单片机芯片靠近,以减少寄生电容,可以更好地保证振荡器稳定和可靠的工作。图6 时钟电路3.2.4 单片机与PC机串口通信电路AT89C51单片机与PC机串口通信使用RS-232C串行通信标准接口,RS-232C总线接口芯片有很多,本系统使用MAXIM公司的MAX232芯片完成TTL和EIA之间的双向电平的转换,从而使PC机可以与AT89C51单片机通信。目前较为常用的串口有9针串口(DB9)和25针串口(DB25)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。串口针脚定义如表5所示。表5 9针串口常用信号脚说明针脚号功能说明缩写1数据载波检测DCD2接收数据DCD3发送数据TXD4数据终端准备DTR5信号地GND6数据设备准备好DSR7请求发送RTS8清除发送CTS9振铃指示DELLAT89S51单片机和PC机的串行通信连接电路如图7所示。该工作电路对电源噪声比较敏感,在电路设计中,要注意提高器件的抗干扰能力。应使用0.1uF或1.0uF电容连接电源去耦,选择1.0uF/16V钽电容作外接极性电容C1、C2,且让电容尽可能靠近芯片,以提高系统抗干扰能力。图7 通信电路3.2.5 交通灯显示模块 本部分电路设计,应用单片机的P1 口对东西方向提示灯控制,P2 口对南北方向提示灯控制。其中P1.0、P1.1、P1.2 三个输出控制口,分别控制东西方向上的绿灯、黄灯、红灯,P1.3输出控制口,控制东西左转方向的绿灯。P2.0、 P2.1、P2.2三个输出控制口,分别控制南方向上的绿灯、黄灯、红灯。 P2.3输出控制口,控制南北道左转方向的绿灯。其电路如图8所示。图8 交通灯显示电路3.2.6 LED数码管倒计时显示模块在单片机应用系统中,数码管显示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码。在本系统中,直接通过门电路的译码,接下来就是计数模块了,其主要的功能细分为,要从预置数开始递减计数,一个状态结束,通过判断,通知主控制模块,使之进入下一模块。还有一个必须考虑到的就是,预置数必须在下一个状态来之前准备好,而红绿灯的状态变化,必须和计数状态同步,于是引起预置数变化的程序要超前于系统本身的状态变化,所以,系统中的两个状态转换时,在上一状态结束时设置预置数,而控制红绿灯的是随着系统本身状态的变化而变化,体现在本子电路中就是有两组电路去判断符合的状态。因此,使用这种方法单片机中CPU的开销小,可以提供单独锁存的I/O接口电路很多。所以本设计采用串并转换电路74LS164的静态显示电路。其电路图如图9所示。图9 LED显示模块74LS164其真值表如表6所示,其功能是将外部输入的串行数据转化为8位的并行数据输出具有锁寸功能。A、B端为串行数据输入端,QA QH为数据输出端,CLK为外部时钟输入端,CLR为清零端。表6 74LS164真值表输入输出CLEARCLOCKA BQA QB QHLXX XL L L HLX XQA0 QB0 QH0HH HH QAn QGnHL XL QAn QGnHX LL QAn QGn注: QA0、 QB0、QH0为在稳态输入条件建立之前QA 、QB 和QH相应的电平;QAn 、QGn 为在最近的时钟转换前QA或QG的电平,表示移1位。MCS-51单片机串行口方式0为移位寄存器方式,外接2片74LS164作为2位LED显示器的静态显示接口,把89C51的RXD作为数据输出线,TXD作为移位时钟脉冲。74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输入信号时可并接。T(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1Q8(第3-6和10-13引脚)并行输出端分别接LED显示器的hga各段对应的引脚上。在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,然后如果再来一个脉冲,第一个脉冲就会从最高位移出。设计中的2片7LS164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样首先送出的数据被送到了右面的74LS164中,后送入的则在左面的74LS164中。其共阴极数码管字形码如表7所示。表7 共阴极LED数码管字形码表数据位D7D6D5D4D3D2D1D0笔段位ABCDEFGH字码0011111107H10001001012H210111100BCH310110110B6H411010010D2H511100110E6H611101110EEH70011001032H811111110FEH911110110F6H全灭0000000000H3.2.7 紧急情况中断电路图10 紧急中断电路紧急情况的处理则采用查询加中断的方式。通过查询P1.2和P1.3的状态来控制外部中断1,然后进去相应的处理程序。在哪一方向上有紧急情况,则能通过开关进行中断,使该方向上为绿灯放行,同时紧急情况报警灯亮。当东西向(或南北向)有特殊情况,比如有救护车通过,开关SW1为低电平则应使交通灯处于S3(东西绿灯、南北),开关SW2为低电平则应使交通灯处于S1(南北向绿灯、东西向红灯)。紧急情况中断处理电路图如图10所示。4系统软件设计4.1 软件设计总体概述交通灯根据其显示情况可以分为四个状态,可以通过定时来控制每个状态的时间;通过定时也可以向LED数码管中每隔1秒送一个数,显示该状态剩余的时间;如果有中断出现则进入相应的处理程序:先保留目前的显示状态,然后根据情况显示处理中的状态,紧急情况结束则恢复到保留的原来状态。当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值,重新进入循环。紧急情况的处理则采用查询加中断的方式。通过查询P1.2和P1.3的状态来控制外部中断1,然后进去相应的处理程序。在哪一方向上有紧急情况,则能通过开关进行中断,使该方向上为绿灯放行,同时紧急情况报警灯亮。由于发光二极管为共阳极接法,输出端口为低电平,对应的二极管发光,所以可以用置位方法点亮红、绿、黄发光二极管。4.2 系统程序流程框图4.2.1 紧急情况中断服务子程序紧急情况的处理则采用查询加中断的方式。通过查询P1.2和P1.3的状态来控制外部中断1,然后进去相应的处理程序。在哪一方向上有紧急情况,则能通过开关进行中断,使该方向上为绿灯放行,同时紧急情况报警灯亮。如果P1.2为低电平,说明东西方向有紧急车辆要通过,东西方向绿灯,南北方向红灯。程序转向状态1,即使将东西方向的信号灯控制端口P1.0置0,P1.1、P1.2置1;相反将南北方向的信号灯控制端口P2.2置0,P2.0、P2.1置1。如果P1.2为高电平,说明南北方向有紧急车要辆通过,东西方向红灯,南北方向绿灯。程序转向状态3,即使将东西方向的信号灯控制端口P1.0置1,P1.1、P1.2置0;相反将南北方向的信号灯控制端口P2.2置1,P2.0、P2.1置0。紧急情况中断服务子程序流程图如图11所示。保存当前状态状态3(S3)中断结束?恢复原来状态状态1(S1)P1.2=0?是否是否定 图11 紧急情况中断服务子程序流程图4.2.2 状态循环子程序交通灯根据其显示情况可以分为四个状态,可以通过定时来控制每个状态的时间;通过定时可以向LED数码管中每隔1秒送一个数,显示该状态剩余的时间。当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值,重新进入循环。当为第一状态时,调用延时子程序,并且每个一秒向数码管显示电路发送一帧数据并显示。查询时间是否为0,如果不为0则继续等待,直到时间为0时,进入第二状态,调用延时子程序,并且每个一秒向数码管显示电路发送一帧数据并显示。查询时间是否为0,如果不为0则继续等待,直到时间为0时,进入第三状态,调用延时子程序,并且每个一秒向数码管显示电路发送一帧数据并显示。查询时间是否为0,如果不为0则继续等待,直到时间为0时,进入第四状态,调用延时子程序,并且每个一秒向数码管显示电路发送一帧数据并显示。如果没有紧急中断按键按下,程序将一直执行这一子程序。时间是否为0 状态循环子程序流程图如图12所示。 是第一状态,第一状态显示时间 显示时间减1否显示时间减1 否是第二状态,第二状态显示时间显示时间减1显示时间减1第三状态,第三状态显示时间是否是否时间是否为0 第四状态,第四状态显示时间时间是否为0 时间是否为0 图12 状态循环子程序流程图5 基于Proteus 软件的系统仿真实现Proteus是英国Labcenter 公司开发的电路分析与实物仿真软件。它运行于Windows 操作系统上,可以仿真、分析(SPICE) 各种模拟器件和集成电路。在Capacitors、Switches&Relays、Optoelec2tronics 、Resistors 和 Miscellaneous 这些库中寻找所需要的电容、开关、七段LED 共阴极数码管和LED 红、绿、黄三种发光二极管、电阻、晶振等,绘制出实现上述系统功能的仿真图载入在软件设计中的得到的sheji .HEX 文件、仿真运行。 软件仿真结果表明,本文设计的交通灯系统达到了预期目标。调试后证明该硬件系统实现了绿灯显示功能、时间倒计时显示功能、左转提示和紧急情况发生时手动控制等功能。仿真步骤如下:(1) 打开Keil软件,新建工程;(2) 选择芯片;(3) 把保存的文档加载到Source Group;(4) 编译程序;(5) 设置转换成16进制;(6) 运行程序的结果;(7) 把编写好的16进制文件(jtd.hex) 输入单片机AT89S51仿真器和对其进行初始化。(8) 给实验板进行通电,观察运行结果,不一致则跳到第一步进行反复调试,直到与预定目的一致。通电以后,东西、南北方向的时间均递减,20秒以后,东西方向的20秒用完,变成东西左转、南北各20秒,此后,时间显示和红绿灯不再变化,一直保持这一状态。运行proteus 的ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置view 菜单下的捕捉对齐和system 下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序。在source 菜单的Define code generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目。在source菜单的Add/remove source files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。Proteus 软件所提供了30 多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。Proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的调试,Proteus 提供了两种方法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。对于总体执行效果的调试方法,只需要执行debug 菜单下的execute 菜单项或F12 快捷键启动执行,用debug 菜单下的pause animation 菜单项或pause 键暂停系统的运行;或用debug 菜单下的stop animation 菜单项或shift-break 组合键停止系统的运行。其运行方式也可以选择工具栏中的相应工具进行。对于软件的分步调试,应先执行debug 菜单下的start/resta

温馨提示

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

评论

0/150

提交评论