交通灯模拟控制系统_第1页
交通灯模拟控制系统_第2页
交通灯模拟控制系统_第3页
交通灯模拟控制系统_第4页
交通灯模拟控制系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、 课程设计说明书课程设计名称: 专业课程设计 课程设计题目: 交通灯模拟控制系统 学 院 名 称: 信息工程学院 专业: 电子信息工程 班级: 110413 学号: 11041327 姓名: 王争盛 评分: 教师: 陶秋香 20 14 年 6 月 27 日 电子信息工程专业 课程设计任务书20 13 20 14学年第 2 学期分散1周 第 17 周 19 周集中 题目交通灯模拟控制系统内容及要求1用单片机扩展一片8255,用12个发光二极管模拟一个十字交叉路口的红、绿、黄灯,并设置二个紧急放行按键;2正常行驶时,东西或南北方向的灯按绿灯亮10秒,黄灯闪烁3秒,红灯亮12秒控制;3当东西或南北方

2、向的紧急放行按键按下时,如果禁行方向为红灯,则红灯继续维持12秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3秒;如果禁行方向为黄灯,则黄灯继续维持。进度安排1. 分散1周:布置任务、查阅资料、选择方案。注意:学生的设计方案需经指导老师检查通过后方可进实验室进行制作。2. 第17周:模块训练,软件设计及调试。3. 第18周-第19周:领元器件、制作、焊接、硬件调试、软硬件调试调试、验收及测试并上交报告。学生姓名:王争盛,徐淑艳指导时间 分散1周,集中指导:2014.6.9-6.27指导地点:E 楼 505室任务下达2014 年 5 月 21日任务完成2014 年 6 月 27日考核方式1.评阅 2

3、.答辩 3.实际操作 4.其它指导教师陶秋香系(部)主任贾杰注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。 2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。 摘要 随着计算机科学技术的不断发展,单片微型机得到了广泛的应用,是人们利用计算机设计和开发各种应用系统的基础。同时单片机接口技术也是一门实践性较强的课程,理论与实践相结合可以更好的掌握知识这也是这次交通灯系统控制的设计目的。交通灯是交通安全的关键,已广泛应用于城乡的十字路口,它的有无作为交通安全检查的重要依据,是交通秩序正常进行的有力保障。 本次的交通灯控制系统主要由单片机结合8255A

4、并行口等芯片组成。整个课程设计使用单片机的P1口和P0口扩张端口至8255芯片获取编程的地址由8255的PA口和PB口实现交通灯的并由开关K1、K2实现东西、南北方向的紧急放行。这个系统看上去比较简单,但它运用了单片机的定时功能、IO口的扩展功能以及对8255A的熟悉运用。 关键字8255A、紧急情况、定时 目录第一章 设计内容及要求1第二章 系统组成及工作原理22.1 AT89C52的工作原理22.2 8255的工作原理42.2.1 8255特性42.2.2 8255A的工作方式42.2.3 引脚信号42.3 发光二极管62.4 紧急放行按键62.5 74ALS5736第三章 硬件电路方案设

5、计73.1 方案选择73.2 交通灯各部分功能分析及各逻辑器件描述83.2.1 单片机输入输出引脚83.2.2 时钟定时控制部件93.2.3 LED数字显示电路103.2.4 复位电路113.2.5 红黄绿灯显示电路123.2.6 扩展并行I/O口8255123.2.7 74ALS573芯片简介133.2.8 紧急情况143.3 电路参数分析15第四章 软件设计164.1 主程序流程图164.2子程序流程图174.3 程序详细设计214.3.1 初始化定时器程序214.3.2 中断程序214.3.3 红绿灯控制程序214.3.4 延时程序23第五章 调试与测试结果分析245.1 硬件和软件的测

6、试245.2 调试过程中遇到的问题245.3 实验结果分析24结论25参考文献26附录27附录一27附录二33附录三34第一章 设计内容及要求(1)用单片机扩展一片8255,用12 个发光二极管模拟一个十字交叉路红、绿、黄灯,并设置二个紧急放行按键。(2)正常行驶时,东西或南北方向的灯按绿灯亮10 秒,黄灯闪烁3 秒,红灯亮12秒控制。(3)当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯继续维持12 秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3 秒;如果禁行方向为黄灯,则黄灯继续维持。第二章 系统组成及工作原理2.1 AT89C52的工作原理89C52是INTEL公司MCS-

7、51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,基于标准的MCS-51单片机体系结构和指令系统,集成了时钟输出和向上或向下计数器等更多的功能。89C52内置8位中央处理单元、256字节内部数据存储器RAM、8K片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能

8、。下面介绍89C52各管脚图及各引脚的功能与连接方法:89C52各管脚图VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故

9、。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,

10、可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部

11、存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.2 8255的工作

12、原理2.2.1 8255特性(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4PC7),B组包括B口及C口(低4位,PC0PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。2.2.2 8255A的工作方式方式0-基本输入输出方式;方式1-选通输入输出方式;方式2-双向选通输

13、入输出方式。2.2.3 引脚信号8255A的引脚如图2.1所示,分为数据线、地址线、读/写控制线、输入/输出端口线和电源线。图2.1 8255管脚图RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器均被清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平

14、时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和

15、端口B配合使用,可作为控制信号输出或状态信号输入端口。A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选择。2.3 发光二极管发光二极管简称为LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。发光二极管正极接高电平时,负极为低电平则

16、灯亮。2.4 紧急放行按键 本系统需两个紧急按键,实现当某个方向车流量较大时延长放行时间或紧急改变放行方向。2.5 74ALS573 74ALS573 锁存器它构成了外部数据存储器与单片机的接口电路该锁存器有以下特点: 工作电压电压7.0V ; 工作温度范围0°到70°; 引脚数20 ;三态输出 属TTL工艺 ; 最大传输延迟时间:14ns 。第三章 硬件电路方案设计3.1 方案选择方案一 利用89C52的P1口控制放行键,用8255控制交通灯及倒计时显示图3.1使用89C51和8255控制框图方案二 用利两片8255进行端口扩展,其中一片用于控制指示灯,另一片用于制控倒计

17、时显示及矩阵式键盘控制,图3.2利用两8255扩展I/O端口控制框图 方案一优点: 直接用51系统控制开关控制紧急放行键,容易控制。在扩展的8255芯片中控制LED和时间显示。 缺点:51系统利用少,8255要控制两部分,操作复杂。方案二优点:利用的硬件源资源相对较多,但由于使用了两片8255进行I/O端口扩展,所以有充足的端口资源,对系统的功能完善提供了方便的硬件资源。缺点:若只是用于实现一般的控制功能,则存在一定的资源浪费,不利于产品的商业化。 方案选择:选择方案一,本次课程设计要求能做出实物功能和仿真图,7279 protues仿真中没有,而且方案一简单实际,所以选择方案一。3.2 交通

18、灯各部分功能分析及各逻辑器件描述3.2.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程序存储器编程

19、时,接收低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端口还用于

20、一些专门功能,具体请参看下表。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.2.2 时钟定时控制部件 由于AT89C52单片机内部有一个用于构成振荡器的高增益反向放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源即可构成时钟电路,该电路采用的是内部方式,如图3-3所示。图3-3 时钟定时电路 在XTAL1和XTAL2的两端接石英晶体

21、振荡器,与内部反向器构成稳定的自激振荡器,发出的时钟脉冲直接进入片内定时定时控制部件。用以提供交通灯时钟信号。 在该电路的设计过程中,C1、C2的选取对频率有微调作用,选取值是22pF。为了减少寄生电容,保证振荡器稳定和可靠的工作,在接线时将晶振和电容的管脚接在单片机最近的地方。3.2.3 LED数字显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,如图3-4所示。图3-4 LED显示器的符号图发光二极管(LED)由特殊的半导体材料

22、砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图3-5是共阳式、共阴式LED数码管的原理图和符号。表3-1是两种数码管段码与显示字形的关系。 图3-5 数码管原理图和数码管符号图表3-1段码与显示字形的关系显示字型0123456789段码共阳C0HF9HA4HB0H99H92H82HF8H80H90H共阴3FH06H5BH4FH66H6DH7DH

23、07H7FH6FH3.2.4 复位电路在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在80C51的9(RST)引脚上时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复

24、位电路。当时钟频率选用12MHz时,C取10F,R约为10K。复位操作不会对内部RAM有所影响。常用的复位电路如图3-6所示: 图3-6 单片机复位电路3.2.5 红黄绿灯显示电路 红黄绿灯显示电路如图3-7所示。二极管的正极通过上拉电阻接+5v的电源VCC,负极分别接89C52单片机的外部接口P1.0、P1.1、P1.2、P1.3、P1.4、P1.5口,我们可以通过控制单片机P1口的数据输出来控制二极管的亮灭。例如为P1口送值为#0DEH,则南北红灯亮禁止通行,东西绿灯亮允许通行。交通灯电路如下图所示。图3-7 交通灯及数码管倒计时显示电路3.2.6 扩展并行I/O口82558255A芯片是

25、一个采用NMOS工艺制造的、40引脚双列直插式封装组建的大规模集成电路,采用单一+5V电源供电。40个引脚中有24个为与外围设备的口。(1)数据总线缓冲器 这是一个三态双向缓冲器,其宽度是8位,用做8255的内部数据总线与系统中的数据总线相连时的缓冲部件。缓冲器向数据总线送出数据,或从数据总线接收数据都是CPU指令控制下进行的。 (2)读写逻辑控制 这一部件用来管理所有的数据、控制字或状态资的传送。他接收来自CPU的各种控制信号,并以此为依据,控制数据总线缓冲器数据的传送方向。与CPU相连的个引脚说明如下:1) CS:芯片选择信号。来自地址译码器,低电平有效。2) RD:芯片读出信号。来自系统

26、总线,低电平有效。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与PC 8255A有三个与外围设备相连的端口PA,PB,PC。各端口可以独立工作,由程序控制位将它设成各种不同的工作方式。端口A,B一般用做独立的输入或输出端口,每个端口包

27、括一个四位琐存器,分别与A口,B口配合使用,作为与外设之间的联络信号3.2.7 74ALS573芯片简介 74ALS573 是一种带三态门的8D锁存器,其管脚示意图3-9所示。其中:D0-D7为8个输入端。 Q0-Q7为8个输出端。 LE为数据打入端: 当LE为“1”时,锁存器输出状态同输入状态; 当LE由“1”变“0”时,数据打入锁存器 为输出允许端: 当=0时,三态门打开; 当=1时,三态门关闭,输出为高阻状态。图3-8 74ALS573管脚封装图3.2.8 紧急情况 当开关key_a(key_b)按下时,即P1.0(P1.1)口变为低电平,此时将P1.0(P1.1)口的状态送至PA(PB

28、)口。12个LED灯的状态会根据PAPB口的内容发生相应的变化。图3-9紧急开关电路图及元器件见附录二3.3 电路参数分析 指示灯控制电路是用8255的PA口的低六位接十二个发光二极管组成,采用的是低电平点亮,因此发光二极管的正端通过一个510的提拉电阻接到5伏电源上。此时流过发光二极管的电流 I=(5-1.5-0.3)/5106.27(mA) 式3.1完全可满足发光二极管点亮时的亮度问题。定时器初值分析:T0定时最长时间约为65ms,可用T0产生50ms的定时,再通过计时10次产生半秒标志、计时20次产生1S标志。设定时初值为X,则有 (65536X)*1s=50ms 式3.2得X3CB0H

29、, 即 TH0=3CH, TL0=B0H 第四章 软件设计 软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由硬件和软件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。4.1 主程序流程图软件总体设计主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作是对系统的初始化,等待外部中断,发送显示数据,以及根据所需要的功能进行相应的操作。其主流程图如图4-1所示。开始 8255初始化查表计数

30、器R0置为0调用LP1子程序查表计数器R0置为0调用LP2子程序图4-1 程序主流程图4.2子程序流程图主程序中共调用了两个子程序,分别为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处查表结果代表东西方向亮灯状态,送

31、入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显示子程序为数码管显示倒计时程

32、序,动态显示。其流程图如图4-4所示。 开始R4赋值为250R1=0 否 是 选中南北方向倒计时显示十位的数码管选中东西方向倒计时显示十位的数码管显示倒计时十位延时1.5msR1=0选中南北方向倒计时显示个位的数码管选中东西方向倒计时显示个位的数码管显示倒计时个位延时1.5ms结 束R4减1=0 是 否 图4-4 XS显示子程序流程图4.3 程序详细设计4.3.1 初始化定时器程序void init() /定时器初始化 TMOD=0x01; /定时器0工作在方式1 TH0=(65536-50000)/256; /定时器0赋初值,50ms TL0=(65536-50000)%256; EA=1;

33、 /开总中断 ET0=1; /开定时器0中断 TR0=1; /启动定时器0中断 模值和计数器工作方式有关。在方式1时M的值为65536;在方式2和3为256。就此可以算出各种方式的最大延时。如单片机的主脉冲频率为12MHZ,经过12分频后,若采用方式最大延时只有8.129毫秒,采用方式最大延时也只有65.536毫秒。所以本程序采用50毫秒一次定时。(通过中断程序可以使定时的时间达到10秒或更长)4.3.2 中断程序void time0() interrupt 1 /中断服务函数 TH0=(65536-50000)/256; /重新赋初值 TL0=(65536-50000)%256; num+;

34、 num1+; 通过控制num num1的数值从而控制定时的时间,交通灯的循环时间是25秒,故num num1的最大值都为50 红绿灯控制程序 void jiaotd() uchar djs1,djs2,djs3,djs4; PS=0x80; if(num>0&&num<180) /南北方向 /绿灯亮9s PA=0x14; djs1=9-num/20; djs2=0; display(djs1,djs2); /倒计时显示 if(num>=180&&num<240) /黄灯闪3s PA=0x09; delayms(100);

35、PA=0x00; djs1=3-(num-180)/20; djs2=0; display(djs1,djs2); /倒计时显示 if(num>=240&&num<480) /红灯亮12秒 PA=0x22; djs1=(12-(num-240)/20)%10; djs2=(12-(num-240)/20)/10; display(djs1,djs2); /倒计时显示 if(num1>0&&num1<240) /东西方向/红灯亮12秒 PB=0x12; djs3=(12-num/20)%10;djs4=(12-num/20)/10;disp

36、lay1(djs3,djs4); /倒计时显示 if(num1>=240&&num1<420) /绿灯亮9s PB=0x21; djs3=9-(num-240)/20; djs4=0; display1(djs3,djs4); /倒计时显示 if(num1>=420&&num1<480) PB=0x0C; /黄灯闪3s delayms(100); PB=0x00; djs3=3-(num1-420)/20;djs4=0;display1(djs3,djs4); /倒计时显示 num 控制的是南北红绿灯,num1控制的是东西红绿灯的情况,有

37、num num1的数值来控制红绿灯的亮灭,实现定时的功能,这样的定时是非常的准确的。4.3.4 延时程序void delayms(uint z) /延时程序 uint y; while(z-) for(y=110;y>0;y-); 延时程序主要用在对键盘的消抖和黄灯的闪烁上。主程序见附录一第五章 调试与测试结果分析5.1 硬件和软件的测试 (1)利用万用表测试单片机ALE脚的电压值,观察是否在1.7V左右, 在表示电路已经起振,单片机部分电路是完全正确的。 (2)检测按键的导通情况,保证按键的的有效性。 (3)将程序下载入单片机中,观察交通灯的亮灭情况,改变程序中相应的 数值,亮灭情况是

38、否发生改变。5.2 调试过程中遇到的问题 (1)灯的亮灭没有按照预想的规律去实现,之后通过改写程序中对PA PB 口的赋值,将这一问题解决了。 (2)紧急情况的按键无效,按下键后,交通灯没有变化,之后查找电路通 过更改了按键的IO口将问题解决了。5.3 实验结果分析 开始运行时,系统在工作状态为东西方向为红,南北方向为绿,红灯保持12秒,绿灯保持10秒,并不断递减,当绿灯减到0时,南北方向路口由绿等切换成黄灯,黄灯闪烁时间为3秒,3秒过后,南北方向转为红灯,东西方向转为绿灯。并不断递减,当东西路口减到0时,东西方向路口由绿等切换成黄灯,黄灯闪烁时间为3秒,之后的情况不断重复。当东西或南北方向的

39、紧急放行按键按下时,对于放行方向若为红灯,则禁行方向变黄灯闪烁三秒后变红灯,放行方向变绿灯维持10秒。对于放行方向若为绿灯,则绿灯继续维持10秒;则禁行方向红灯继续维持13秒。通过以上结果可以看出,该结果与实验要求一致,此次试验是完全正确的。结论本次课程设计是一次较系统的电路设计,通过资料查找,硬件电路设计、PROTEL仿真,程序代码设计,电路排版与焊接,程序测试与调试,误差分析,课设总结等过程,它将我们所学的51单片机的理论转化为了对电子系统的设计与实践。加深了51单片机的知识,熟悉了电路设计的流程,增强了动手实践能力,锻炼了网络上收集所需电子文档和查看英文PDF文档的能力,同时提高了我们分

40、析问题,解决问题的能力。在课程设计过程中,首先了解了51最小系统板的知识,加深了8255芯片的管脚、原理功能及应用,设计中,设计了两个放行键,可以实施紧急放行,使得交通指挥更流畅,设计了倒计时显示,使得司机能够准确无误的行驶车辆;接下来利用PROTEL软件进行仿真,在原理上验证了设计的正确性;焊接过程当中,由于器件较少,很快就顺利完成了;主要是调试过程遇到了很多问题,因为第一次写这么长的应用程序,结构上安排的不是很好,导致程序有点过长,有些模块程序进行了一定的参考;这次实践认识到现在所学的知识还有些欠缺,而电子产品发展飞速,作为专业生要在今后的学习中更加努力,不断学习各种先进的文化知识,让自己

41、在面对以后人生道路上的问题时有个坚强的后盾。参考文献1 张鑫.单片机原理及应用.北京:电子工业出版社,2005.2 杨居义.单片机课程设计指导.北京:清华大学出版社,2009.3 张有德.单片微机原理应用与实验.上海:复旦大学出版社,1995.4 万福君.MCS-51单片机原理、系统设计与应用.北京:清华大学出版社,2008.5 朱清慧等.Proteus教程电子线路设计、制版与仿真.北京:清华大学出 版社,2008.附录附录一主程序#include<reg52.h> #include<absacc.h> #define uint unsigned int #define

42、 uchar unsigned char #define PA XBYTE0x0000 /8255 A口地址#define PB XBYTE0x0001 /8255 B口地址#define PC XBYTE0x0002 /8255 C口地址#define PS XBYTE0x0003 /8255 控制口地址sbit key_a=P10; sbit key_b=P11;sbit dula=P31;sbit wei1=P32;sbit wei2=P33;sbit wei3=P34;sbit wei4=P35; uint num=0,num1=0; /num0为南北方向计时,num1为东西方向计时u

43、char code table=/ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,/ 0x7f,0x6f,0x3f/ /数码管显示字形码09,显示占空比 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0, 0xfe,0xf6,0x3f; /数码管显示字形码09,显示倒计时(实物)void init() /定时器初始化 TMOD=0x01; /定时器0工作在方式1 TH0=(65536-50000)/256; /定时器0赋初值,50ms TL0=(65536-50000)%256; EA=1; /开总中断 ET0=1; /开定时器0

44、中断 TR0=1; /启动定时器0中断 void delayms(uint z) /延时程序 uint y; while(z-) for(y=110;y>0;y-); void keyscan() /键盘扫描 if(key_b=0) /南北方向紧急放行按键 delayms(10); /延时10ms,消抖 if(key_b=0) if(num<180) /禁行方向为绿灯,变为黄灯 num=180; num1=180; if(num>240) /禁行方向为红灯,维持12s num=240; num1=240; if(key_a=0) /东西方向紧急放行按键 delayms(10); /延时10ms,消抖 if(key_a=0) if(num1<240) /禁行方向为红灯,维持12s num=0; num1=0; if(num1>240)&&(num1<420) /禁行方向为绿灯,变为黄灯 num=420; num1=420; void display(uchar ge,uchar shi) /南北方向倒计时显示 wei1=0; dula=1; /显示高位 P2=tableshi; delayms(2); dula=0; P2=0XFF; delayms(2); wei

温馨提示

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

评论

0/150

提交评论