正文B交通灯模拟控制系统

上传人:wuy****ng 文档编号:133939026 上传时间:2022-08-11 格式:DOC 页数:30 大小:852.01KB
返回 下载 相关 举报
正文B交通灯模拟控制系统_第1页
第1页 / 共30页
正文B交通灯模拟控制系统_第2页
第2页 / 共30页
正文B交通灯模拟控制系统_第3页
第3页 / 共30页
点击查看更多>>
资源描述
通信工程 专业课程设计题单 班级 1182041 学生 甘飞炜 课程名称 专业课程设计 课 题 交通灯模拟控制系统 设计要求 用单片机扩展一片8255,用12个发光二极管模拟一个十字路口的红、绿、黄灯,并设置二个紧急放行按键;正常行驶时,东西或南北方向的灯按绿灯亮10秒,黄灯闪烁3秒,红灯亮12秒控制;当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯继续维持12秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3秒;如果禁行方向为黄灯,则黄灯继续维持。 课 题 发 给 日 期 课程设计完成日期 指 导 教 师 评语: 评分: 摘要在现代城市中,红绿交通灯成为交管部门管理交通的重要手段。为了确保十字路口行人跟车辆顺利、畅通的通过,往往采用电子控制的交通信号来进行指挥。本课程设计用8051单片机扩展一片8255,用12个发光二极管模拟一个十字交叉路口的红、绿、黄灯,并设置二个紧急放行按键。绿灯是通行信号, 红灯是禁行信号,黄灯是警告信号,而当紧急信号灯被按下时,将改变通行的方向跟时间。关键词:8051单片机 交通信号 紧急放行键目录摘要.5第一章绪论.61.1 引言.61.2 课题背景.61.3 研究的意义及内容.6第二章系统总体设计方案.72.1 总体设计方案.72.2 交通灯设计思想.72.2.1 具体设计思想 .72.2.2 交通灯控制系统状态 .8第三章系统的硬件设计.93.1 8051 单片机简介.93.2 内部资源.113.2.1 串行口 .113.2.2 定时器/计时器 .113.2.3 中断系统 .113.3 交通灯各部分功能分析及各逻辑器件描述 .113.3.1 单片机输入输出引脚 .113.3.2 时钟定时控制部件 .123.3.3 LED 数字显示电路 .133.3.4 复位电路 .143.3.5 红黄绿灯显示电路 .153.3.6 扩展并行I/O 口8255 .163.3.7 74LS373 芯片简介 .17第四章软件设计.184.1 设计要求.184.2 主程序流程图.194.3 子程序流程图.19 4.4 源程序及代码注释.234.4 源程序及代码注释 .26第五章总结.28参考文献.29附录.30附图1:80C51 与8255 电路连接部分.30附图2:8255 通过74LS245 控制数码管显示部分.31第一章 绪 论1.1 引言 随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。1.2 课题背景在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的助手,但这一技术在19世纪就已出现了。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。1.3 设计的意义及内容 随着我国社会经济的发展,城市化、城镇化进程的加快,道路交通堵塞问题日趋严重,如何对交通进行合理的管理和调度而尽可能减少堵车现象成为目前我国很多地方尤其是特大城市急需解决的问题,显然交通灯在其中起着不可缺少的作用。 该课题研究的内容主要是单片机,单片机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。随着单片机在各个领域的广泛应用,单片机以其自身的特点,已广泛的应用于智能仪器、工业控制、家用电器、电子玩具等各个领域。这种将单片机嵌入到对象体系中的嵌入式系统已渗透到每个单位、每个家庭和个人。随着社会需求的不断增长,单片机的应用有着广泛的和稳定增长的市场通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。由单片机和交通等模组即可构成交通灯,在单片机内运行适当的程序即构成了交通灯控制系统。 第二章 系统总体设计方案2.1 总体设计方案交通灯控制系统总体设计方案共有五个部分组成,分别是:单片机80C51、LED交通灯电路、8255控制数码管显示电路、晶振及复位控制电路。该设计的设计方框图如图2-1所示。 2-1 交通灯总体设计图2.2 交通灯设计思想2.2.1具体设计思想 利用80C51单片机控制交通灯系统工作。其中P1口接上上拉电阻用作输出口,控制东西方向,P3口接上上拉电阻也用作输出口,控制南北方向;8255的PB口连接一个74LS245芯片(双向总线驱动器),再与外部六个数码管连接,PB口连接一个74LS245芯片与6个数码管的公共COM端连接,用于选择数据输出的地址,这样就可以实现时间的动态显示,并且节省了端口数。同一方向的交通灯的状态是一致的,所以一个端口控制同方向的两盏灯,交通灯与P1口、P3口之间的关系如表2-1所示。P1.0P1.1P1.2P1.3P1.4P1.5东向黄灯东向绿灯东向红灯西向黄灯西向绿灯西向红灯P3.0P3.1P3.2P3.3P3.4P3.5南向黄灯南向绿灯南向红灯北向黄灯北向绿灯北向红灯 表2-1交通灯与P1口之间的关系2.2.2交通灯控制系统状态通过软件编程控制P1口、P3口的高低电平来实现交通灯的亮灭,通过调用延时程序来设定时间以确定各个路口红绿灯亮灭的时间,各个路口交通灯的状态如表2-2所示。南北干道东西干道时间绿灯亮,允许通行红灯亮,禁止通行9秒黄灯闪烁,停车红灯亮,禁止通行3秒红灯亮,禁止通行绿灯亮,允许通行9秒红灯亮,禁止通行黄灯闪烁,停车3秒表2-2 各个路口交通灯亮灭的状态当东西方向或南北方向遇到紧急情况时,可按下相应的急性键作相应的处理:如果禁行方向为红灯,则红灯继续维持12秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3秒;如果禁行方向为黄灯,则黄灯继续维持。第三章 系统的硬件设计3.1 80C51单片机简介 80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。其管脚封装如图3-1所示。图3-1 80C51 管脚封装80C51包含以下部分,其结构图如图3-2所示(1)一个8位微处理器CPU(2)片内数据存储器RAM和特殊功能寄存器SFR(3)片内程序存储器ROM(4)两个定时/计数器T0、T1,可用作定时器,也可用以对外部脉冲进行计数(5)四个8位可编程的并行I/O端口,每个端口既可作输入,也可作输出(6)一个串行端口,用于数据的串行通信(7)中断控制系统(8)内部时钟电路图3-2 80C51内部结构图功能特性概述:80C51 提供以下标准功能:8K字节 Flash 闪速存储器,256字节内部 RAM,32 个 I/O 口线,3 个 16 位定时/计数器,一个 6 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,80C51 可降至 0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2 内部资源3.2.1 串行口8051单片机内部有一个可编程的、全双工的串行接口。串行收发贮存在特殊功能寄存器SFR中的串行数据缓冲器SBUF中的数据,SBUF占用内部RAM地址99H。但在机器内部,实际上有两个数据缓冲器:发送缓冲器和接收缓冲器,因此,可以同时保留收/发数据,进行收/发操作,但收/发操作都是对同一地址99H进行的。3.2.2 定时器/计时器 8051内部有两个16位可编程计时器/计数器,记为T0和T1。16为是指他们都是由16个触发器构成,故最大计数模值为216-1,可编程是指他们的工作方式由指令来设定,或者当计数器用,或者当定时器用。并且计数(定时)的范围可以由指令来设置。这种控制功能是通过定时器方式控制寄存器TMOD来完成的。 如果需要,定时器在记到规定的定时值时可以向CPU发出中断申请,从而完成某种定时的控制功能。在计数状态下同样可以申请中断。定时控制寄存器TCON用来负责定时器的启动、停止以及中断管理。 在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频作为定时器的时钟。计数工作时,时钟脉冲(计数脉冲)由T0和T1(即P3.4,P3.5)输入。3.2.3 中断系统8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。外部中断申请通过INT0和INT1(即P3.2,P3.3)输入,输入方式可以是电平触发(低电平有效),也可以是边沿触发(下降沿有效)。两个定时器中断请求是当定时器溢出时向CPU提出的,即当定时器由状态全1转为全0时发出的。第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可以提出一次中断请求。8051单片机可以设置两个中断优先级,即高优先级和低优先级,由中断优先控制器IP来控制。3.3 交通灯各部分功能分析及各逻辑器件描述3.3.1单片机输入输出引脚 (1) P1端口P0.0-P0.7 P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。 在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。(2) P1端口P1.0P1.7 P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收低8位地址信息。(3) P2端口P2.0P2.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) P3端口P3.0P3.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请参看下表。P3引脚兼用功能P3.0串行通讯输入(RXD)P3.1串行通讯输出(TXD)P3.2外部中断0( INT0)P3.3外部中断1(INT1)P3.4定时器0输入(T0)P3.5定时器1输入(T1)P3.6外部数据存储器写选通WRP3.7外部数据存储器写选通RD3.3.2 时钟定时控制部件由于AT89C52单片机内部有一个用于构成振荡器的高增益反向放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源即可构成时钟电路,该电路采用的是内部方式,如图3-3所示。图3-3 时钟定时电路 在XTAL1和XTAL2的两端接石英晶体振荡器,与内部反向器构成稳定的自激振荡器,发出的时钟脉冲直接进入片内定时定时控制部件。用以提供交通灯时钟信号。在该电路的设计过程中,C1、C2的选取对频率有微调作用,选取值是22pF。为了减少寄生电容,保证振荡器稳定和可靠的工作,在接线时将晶振和电容的管脚接在单片机最近的地方。3.3.3 LED数字显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,如图3-4所示。图3-4 LED显示器的符号图发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图3-5是共阳式、共阴式LED数码管的原理图和符号。表3-1是两种数码管段码与显示字形的关系。图3-5 数码管原理图和数码管符号图显示字型0123456789段码共阳C0HF9HA4HB0H99H92H82HF8H80H90H共阴3FH06H5BH4FH66H6DH7DH07H7FH6FH表3-1段码与显示字形的关系3.3.4 复位电路在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在80C51的9(RST)引脚上时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用12MHz时,C取10F,R约为10K。复位操作不会对内部RAM有所影响。常用的复位电路如图3-6所示: 图3-6 单片机复位电路3.3.5 红黄绿灯显示电路 红黄绿灯显示电路如图3-7所示。二极管的正极通过上拉电阻接+5v的电源VCC,负极分别接89C52单片机的外部接口P1.0、P1.1、P1.2、P1.3、P1.4、P1.5口,我们可以通过控制单片机P1口的数据输出来控制二极管的亮灭。例如为P1口送值为#0DEH,则南北红灯亮禁止通行,东西绿灯亮允许通行。交通灯电路如下图所示。图3-7 交通灯及数码管倒计时显示电路3.3.6 扩展并行I/O口82558255A芯片是一个采用NMOS工艺制造的、40引脚双列直插式封装组建的大规模集成电路,采用单一+5V电源供电。40个引脚中有24个为与外围设备的接口。8255管脚封装如图3-8所示。图3-8 8255管脚封装图(1)数据总线缓冲器 这是一个三态双向缓冲器,其宽度是8位,用做8255的内部数据总线与系统中的数据总线相连时的缓冲部件。缓冲器向数据总线送出数据,或从数据总线接收数据都是CPU指令控制下进行的。 (2)读写逻辑控制 这一部件用来管理所有的数据、控制字或状态资的传送。他接收来自CPU的各种控制信号,并以此为依据,控制数据总线缓冲器数据的传送方向。与CPU相连的个引脚说明如下:1) CS:芯片选择信号。来自地址译码器,低电平有效。2) RD:芯片读出信号。来自系统总线,低电平有效。3) WR:芯片写入信号。来自系统总线,低电平有效。4) RESET复位信号。当它为高电平时,清除所有内部寄存器的内容,并将3 个数据端口PA,PB,PC置为输入方式。5) A1,A0:端口地址选择信号。用于选择8255A的3个数据端口和1个控 制口。当A1A0为00、01、10时,分别选择数据端口PA、PB、PC;当A1A0 为11时,选择控制口。 6) Vcc、GND:电源和地线。 (3) 端口PA、PB与PC8255A有三个与外围设备相连的端口PA,PB,PC。各端口可以独立工作,由程序控制位将它设成各种不同的工作方式。端口A,B一般用做独立的输入或输出端口,每个端口包括一个四位琐存器,分别与A口,B口配合使用,作为与外设之间的联络信号3.3.7 74LS373芯片简介 74LS373 是一种带三态门的8D锁存器,其管脚示意图3-9所示。其中:D0-D7为8个输入端。 Q0-Q7为8个输出端。 LE为数据打入端: 当LE为“1”时,锁存器输出状态同输入状态; 当LE由“1”变“0”时,数据打入锁存器 为输出允许端: 当=0时,三态门打开; 当=1时,三态门关闭,输出为高阻状态。 图3-9 74LS373管脚封装图第四章 软件设计 软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由硬件和软件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。4.1 设计要求(1) 用单片机扩展一片8255,用12个发光二极管模拟一个十字路口的红、绿、 黄灯,并设置二个紧急放行按键; (2) 正常行驶时,东西或南北方向的灯按绿灯亮10秒,黄灯闪烁3秒,红灯亮 12秒控制; (3) 当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯 继续维持12秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3秒;如果禁 行方向为黄灯,则黄灯继续维持。4.2主程序流程图软件总体设计主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作是对系统的初始化,等待外部中断,发送显示数据,以及根据所需要的功能进行相应的操作。其主流程图如图4-1所示。开始 8255初始化查表计数器R0置为0调用LP1子程序查表计数器R0置为0调用LP2子程序图4-1 程序主流程图4.3 子程序流程图 主程序中共调用了两个子程序,分别为LP1和LP2,其中LP1子程序为东西方向绿灯亮9s+黄灯闪烁3s,南北方向红灯亮12s禁止通行,LP2子程序则恰好和LP1子程序功能相反,为南北方向绿灯亮9s+黄灯闪烁3s,东西方向红灯亮12s禁止通行。下面结合LP1和LP2画出两个子程序的流程图,如图4-2和图4-3所示。开始R2=0调用K1子程序K1键是否按下 是 否 R2=0调用K2子程序K2键是否按下 是 是 否R0内容送入A 标志A 查表TAB1 否,转至标志B处查表结果代表东西方向亮灯状态,送入P1口南北方向置为红灯状态调用XS显示子程序数码管显示倒计时R0自加1R0=12否 是返回 图4-2 子程序LP1流程图开始R2=0调用K1子程序K1键是否按下 是 否 R2=0调用K2子程序K2键是否按下 否 否 否R0内容送入A 标志B 查表TAB1 是,转至标志A处查表结果代表南北方向亮灯状态,送入P1口东西方向置为红灯状态调用XS显示子程序数码管显示倒计时R0自加1R0=12否 是返回 图4-3 子程序LP2流程图 图4-2和图4-3两个流程图中都调用了K1和K2子程序,这个两个程序为紧急放行事件处理程序,用于判断急行键按下后禁行方向的交通等状态;XS显示子程序为数码管显示倒计时程序,动态显示。其流程图如图4-4所示。开始R4赋值为250R1=0 否 是 选中南北方向倒计时显示十位的数码管选中东西方向倒计时显示十位的数码管显示倒计时十位延时1.5msR1=0选中南北方向倒计时显示个位的数码管选中东西方向倒计时显示个位的数码管显示倒计时个位延时1.5ms结 束R4减1=0 是 否 图4-4 XS显示子程序流程图4.4 源程序及代码注释 ORG 0000H SJMP ST ORG 0030HST: MOV SP,#60H ;堆栈指针赋初值 MOV A,#89H ;8255控制字,PA和PB均为输出 MOV DPTR,#0FF23H ;控制口地址 MOVX DPTR,A ;8255初始化DIR: MOV R0,#0 ;R0为表TAB1查表计数器,初值为0 MOV R1,#0 ;R1用来指示通行状态,R1=0代表东西通行 CALL LP1 ;LP1为东西通行,南北禁止 MOV R0,#0 MOV R1,#1 ;R1=1代表南北通行 CALL LP2 ;LP2为南北通行,东西通行 SJMP DIRLP1: JB P1.6,JIXU1 ;判断东西方向紧急放行键是否按下 CALL K1 ;调用K1子程序,处理东西方向紧急放行事件 CJNE R2,#0,JIXU4 ;若R2=0,东西通行,子程序返回后跳到JIXU2,否则 ;跳到JIXU4 SJMP JIXU2JIXU1:JB P1.7,JIXU2 ;判断南北方向紧急放行键是否按下 CALL K2 ;调用K2子程序,处理南北方向紧急放行事件 CJNE R2,#0,JIXU4 ;若R2=0,东西通行,子程序返回后跳到JIXU2,否则 ;跳到JIXU4JIXU2:MOV A,R0 MOV DPTR,#TAB1 MOVC A,A+DPTR ;查表 MOV P1,A ;东西方向亮灯状态送入P1口 MOV P3,#0DBH ;南北方向红灯灯状态送入P3口 CALL XS ;调用XS子程序,数码管倒计时显示 INC R0 CJNE R0,#0CH,LP1 ;未到12s转LP1处 RETLP2: JB P1.6,JIXU3 ;判断东西方向紧急放行键是否按下 CALL K1 CJNE R2,#1,JIXU2 SJMP JIXU4JIXU3:JB P1.7,JIXU4 ;判断南北方向紧急放行键是否按下 CALL K2 CJNE R2,#1,JIXU2JIXU4:MOV A,R0 ;南北通行,东西禁止,R1=1 MOV DPTR,#TAB1 MOVC A,A+DPTR ;查表 MOV P3,A ;南北方向亮灯状态送入P3口 MOV P1,#0DBH ;东西方向红灯状态送入P1口 CALL XS ;调用XS2子程序,数码管倒计时显示 INC R0 CJNE R0,#0CH,LP2 ;未到12s转LP2处 RETK1: MOV A,R0 CJNE R1,#0,SS1 ;若R1=0,此时东西通行,南北禁止 MOV R0,#0 MOV R2,#0 ;若R2=0,南北通行,子程序返回后跳到JIXU2 SJMP OVER2SS1: MOV R2,#1 ;若R2=1,子程序返回后跳到JIXU4 SUBB A,#9 ;否则南北正在通行,再判断为红,还是为黄 JNC OVER2 MOV R0,#9OVER2:RETK2: MOV A,R0 CJNE R1,#1,SS2 ;若R1=1,此时南北通行,东西禁止 MOV R0,#0 MOV R2,#1 ;若R2=1,子程序返回后跳到JIXU4 SJMP OVER4SS2: MOV R2,#0 ;若R2=0,子程序返回后跳到JIXU2 SUBB A,#9 ;否则东西正在通行,再判断为红,还是为黄 JNC OVER4 MOV R0,#9OVER4:RETXS: MOV R4,#250 ;数码管动态显示250次GO1: CLR CY CJNE R1,#0,GO2 MOV A,#0DFH ;选中一个数码管 MOV DPTR,#0FF20H ;位码送至PA口 MOVX DPTR,A SJMP GO3GO2: MOV A,#0FDH ;选中数码管,倒计时十位 MOV DPTR,#0FF20H ;位码送至PA口 MOVX DPTR,A GO3: MOV A,#0CH ;A=14,A=N-1 SUBB A,R0 ;14-R0=倒计时显示内容,再送入A中 MOV B,#10 DIV AB ;A除以十,把A的十位,各位分开,分开后A中为 ;十位,B为个位 MOV DPTR,#TAB2 ;先显示倒计时十位 MOVC A,A+DPTR ;查表 MOV DPTR,#0FF21H ;PB口地址 MOVX DPTR,A ;显示倒计时十位 CALL DEL ;延时 CJNE R1,#0,GO4 MOV A,#0EFH ;选中一个数码管 MOV DPTR,#0FF20H ;位码送至PA口 MOVX DPTR,A SJMP GO5GO4: MOV A,#0FEH ;选中数码管,倒计时个位 MOV DPTR,#0FF20H MOVX DPTR,A GO5: MOV A,B MOV DPTR,#TAB2 ;再显示倒计时个位 MOVC A,A+DPTR ;查表 MOV DPTR,#0FF21H MOVX DPTR,A ;显示倒计时个位 CALL DEL DJNZ R4,GO1 ;数码管动态显示 RETDEL: MOV R6,#50 ;0.2ms D2: MOV R5,#20 DJNZ R5,$ DJNZ R6,D2 RETTAB1: DB 0EDH,0EDH,0EDH,0EDH,0EDH,0EDH,0EDH,0EDH,0EDH,0F6H,0FFH,0F6HTAB2: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END4.5 程序调试 本设计主要设计了一个城乡十字路口交通灯,在设定几个正常状态的情况下,增加了两个紧急放行按键。通过这两个按键可解决急行车通行,车流量变化增加时状态不可改变的问题。在明白设计原理的基础上,可很方便的改变各方向通行时间,以适用不同的路口。在程序调式过程中,遇到了很多很多问题,由于这次课程设计所用代码中有比较多的子程序调用,并且跳转语句很多,故多数为逻辑性问题,下面选举一些具有代表性的问题加以说明。(1) LP1及LP2子程序。这两个程序用于实现交通灯的正常显示,为整个程序最重要的组成部分之一,想要实现课程设计题目的要求,一定要弄懂整个程序的运行过程,而这一问题在程序编写之前是不可能非常明了的,所以这一部分的程序编写用去了不少时间,主要是交通灯的显示状态的问题,又因为交通灯的状态显示是通过查表来实现的,所以主要问题是表TAB1中的显示码的问题,把这一问题弄明白了,这一部分的代码编写就迎刃而解了。(2) 急行键功能的实现。由于课设题目要求在任何时候按下急性键后,都要根据禁止方向的亮灯状态来做出相应的处理,这就需要在LP1子程序和LP2子程序中编写程序来实现这一功能。很自然的想到通过子程序调用来完成要求,所以在编写程序时在P1.6和P1.7两个引脚上分别接了两个开关,通过开关的状态来表示P1.6和P1.7引脚上出现的高低电平,并据此遍写程序作出相应的判断,这是编写程序时的设想。但在程序编写时往往顾此失彼,很难达到题目要求。主要是子程序调用后返回的变量R2的内容没有给予正确的赋值,还有就是子程序调用后程序的跳转问题,这要根据R2的内容来决定,所以只要把前一个问题解决了,整个问题就解决了。(3) 数码管倒计时显示。由于程序设计时实验箱提供的6位7段共阳极数码管,每次只能使其中的一部分数码管静态显示相同的内容,而根据题目要求要使数码管倒计时显示12s,这就需要用到数码管动态显示程序。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以这一部分的程序编写费了很长时间。其实只要将需要显示的数码管的选通控制端打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使需要显示的数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。第五章 总结本系统就是充分利用了8051和8255芯片的I/O引脚。系统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的P1口和P3口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩3秒时黄灯闪烁警示(交通灯信号通过P1、P3口输出,显示时间直接通过8255的PA口、PB输出至数码管)。系统不足之处在于不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现。由于程序中通过延时来实现交通灯显示时间,所以这样的时间实际上是不准确的,这是本系统另一不足之处,若要实现显示时间的精确控制,需要用到定时器及中断程序。 通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题的全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。另外综合课程设计让我们把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和掌握。由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流得到了解决。由于是使用是单片机作为核心的控制元件,使得系统的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红绿灯规则效率还不是很高等等,这需要在实践中进一步完善。 当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,以期使自己在系统编程这方面有一个大的发展。参考文献1 张鑫.单片机原理及应用.北京:电子工业出版社,2005.2 杨居义.单片机课程设计指导.北京:清华大学出版社,2009.3 张有德.单片微机原理应用与实验.上海:复旦大学出版社,1995.4 万福君.MCS-51单片机原理、系统设计与应用.北京:清华大学出版社,2008.5 朱清慧等.Proteus教程电子线路设计、制版与仿真.北京:清华大学出 版社,2008.附 录附图1:80C51与8255电路连接部分附图2:8255通过74LS245控制数码管显示部分 其中交通灯灯及数码管倒计时显示电路见正文部分图3-7
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 电气技术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!