《基于单片机的交通灯控制系统设计毕业设计样本.doc》由会员分享,可在线阅读,更多相关《基于单片机的交通灯控制系统设计毕业设计样本.doc(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。毕业设计说明书基于单片机的交通灯控制系统设计专业电气工程及其自动化学生姓名郭 恒 燕班级BD电气042学号指导教师张 兰 红完成日期 6月10日基于单片机的交通灯控制系统设计摘 要:对基于单片机的交通灯控制系统进行了设计。系统功能为: 以MCS-51系列单片机作为控制核心, 设计并制作交通灯控制系统, 东西南北四个方向具有左拐、 右拐、 直行及行人4种通行指示灯, 用计时器显示路口通行转换剩余时间, 在特种车辆如119、 120经过路口时, 系统可自动转为特种车辆放行, 其它车辆禁止通行状态。在对系统功能分析的基础上, 提出了三种设计方
2、案, 经比较, 选择性能较优的LED动态循环显示方案进行了设计。设计包括硬件和软件两大部分。硬件部分包括单片机最小系统、 时间显示、 交通灯显示三部分。选用Atmel公司的AT89S52单片机作为控制核心, 东西南北四个方向设置了LED时间显示和交通灯显示, 时间显示采用三位LED显示器, 交通灯显示则采用红绿双色高亮发光二极管来模拟。软件采用了模块化的设计方法, 主要分为主程序、 定时器中断服务子程序、 倒计时显示子程序、 交通灯模拟显示子程序四部分。在实验板上制作了基于单片机的交通灯控制系统样机, 对硬件和软件部分分别进行了调试, 再进行了软硬件联调, 得到的交通灯控制系统样机实物, 可圆
3、满地完成毕业设计任务书所要求的功能。关键词: 交通灯; 单片机; AT89S52Design of traffic light control system based on SCM Abstract: Traffic light control system based on SCM (Single Chip Microcomputer) is designed in this paper. System requires that MCS-51 series SCM is used as CPU. Traffic light control system should be designe
4、d and made .There are four groups light which indicate to turn left, turn right, and go straight ahead and pedestrian access in east, west, north and south four directions. Timer shows traffic conversion remainder time. When special vehicles, such as 119,120 go through, the system can automatically
5、allow special vehicles running and other vehicles is prohibited.Based on analysis of the system functions, three schemes are put forward .By comparison, LED dynamic cycle display scheme has better functions and it is selected to be designed. The design includes hardware part and software part. Hardw
6、are has three parts .They are SCM system, LED time display, traffic lights. AT89S52 SCM is selected as control CPU. LED display and traffic lights are set in east, west, north and south four directions. Three LED monitors are used to show time. Highlight and red-green two color traffic lights are us
7、ed as traffic lights. Software is designed by module. It is divided into main program, timer interrupting service subroutine, LED display subroutine, traffic display subroutine.The model of traffic lights control system is made in experiment board. Hardware and software is debugged respectively, the
8、n hardware and software are combined and debugged .The model of traffic lights control system can meet the requirement of design task book perfectly.Key words: Traffic light; SCM; AT89S52 目 录1 概 述11.1 课题研究背景与意义11.2 课题设计内容12 系统设计12.1设计方案论证12.系统硬件设计32.2.1控制模块32.2.2通行灯显示模块52.2.3时间显示模块52.2.4电源电路模块52.2.5
9、硬件电路中器件选择62.3 系统软件的设计112.3.1主程序112.3.2定时中断服务程序112.3.3特种车中断服务程序132.3.4算法分析143 系统调试143.1硬件调试153.1.1静态检查153.1.2通电检查153.2软件调试及软硬件联调153.2.1仿真器选择153.2.2仿真过程163.2.3通行灯输出调试173.2.4时间显示模块调试183.2.5特种车中断程序调试183.2.6脱机调试183.2.7实验结果194 结 束 语20参考文献21致 谢22附 录23附录1 基于单片机的交通灯控制系统电路原理图23附录2 基于单片机的交通灯控制系统PCB图23附录3 基于单片机
10、的交通灯控制系统程序清单23基于单片机的交通灯控制系统设计1 概 述 1.1 课题研究背景与意义随着经济的增长和人口的增加, 人们生活方式不断变化, 人们对交通的需求不断增加。城市中交通拥挤、 堵塞现象日趋严重, 由此造成巨大的经济与时间损失。资料显示, 对日本东京268个主要交叉路口的调查估计表明: 每年在交叉路口的时间延误, 折成经济报失为20亿美元; 而在中国北京市, 当早晚交通高峰时, 交叉路口处的排队长度竟达1000多米, 有的阻车车队从一个交叉路口延伸到另一个交叉路口, 这时一辆车为经过一交叉路口, 往往需要半个小时以上, 时间损失相当可观。中国是一个历史悠久、 人口众多的国家,
11、城市数量随着社会的发展不断增多。随着城市化进程的大大加快, 诱发的交通需求急剧增长, 供需矛盾不断激化, 严重的交通问题也随之而来。人、 车、 路三者关系的协调, 已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、 交通信号灯控制与交通疏导的计算机综合管理系统, 它是现代城市交通监控指挥系统中最重要的组成部分。十字路口车辆穿梭, 行人熙攘, 车行车道, 人行人道, 有条不紊, 这一切要归功于城市交通控制系统中的交通灯控制系统。交通灯控制系统对于疏导交通流量、 提高道路通行能力, 减少交通事故有明显效果, 使城市交通得以有效管理。交通灯能够采用PLC、 单片机等控
12、制方法。利用单片机实现对交通信号灯的实时控制, 只要采用一块单片机, 加上简单的接口与驱动放大电路, 即可实现, 具有成本低, 可靠性高的特点。1.2 课题设计内容本课题对基于单片机的交通灯控制系统进行设计。以MCS-51系列单片机为控制核心, 设计并制作交通灯控制系统, 用于十字路口的车辆及行人的交通管理。东西南北四个路口具有左拐、 右拐、 直行及行人4种通行指示灯, 并分别用计时器显示路口通行转换剩余时间, 在特种车辆如119、 120经过路口时, 系统可自动转为特种车辆放行, 其它车辆禁止通行状态。设计交通灯控制系统硬件电路与软件控制程序, 对硬件电路与软件程序分别进行调试, 并进行软硬
13、件联调, 要求获得调试成功的实物。2 系统设计2.1 设计方案论证 根据设计内容要求, 提出了如下三种方案: 方案一: 采用AT89S52单片机作为控制核心, 采用四组高亮红绿双色二极管作为东西南北四个路口的通行指示灯; 采用四组3位LED数码管作为四个路口的通行倒计时显示器, LED显示采用动态扫描方式, 以节省端口数。按以上系统构架设计, 单片机端口资源刚好满足要求。方案一设计框图如图-1所示。图2-1 方案一: 采用LED动态扫描的交通灯控制系统方案二: 采用AT89C2051单片机作为控制器, 通行倒计时显示采用1616点阵LED发光管, 左拐、 右拐、 直行及行人4种通行指示也采用1
14、616点阵双色LED发光管。方案二设计框图如图2-2所示, LED点阵的列驱动采用74LS595, 用串行端口扩展实现, 行驱动采用1/16译码器74LS154动态扫描, 译码器74LS154生成16条行选通信号线, 再经过驱动器驱动对应的行线。每条行线上需要较大的驱动电流, 应选用大功率三极管作为驱动管。图2-2 方案二: 采用1616点阵LED发光管设计的交通灯控制系统方案三: 采用AT89C2051单片机作为控制器, 通行倒计时及左拐、 右拐、 直行、 行人通行指示采用单块LCD液晶点阵显示器。三种方案的特点比较如下: 方案一具有电路简单, 设计方便, 显示亮度高, 耗电较少, 可靠性高
15、等特点; 方案二的图案显示逼真, 单片机占用端口资源少, 缺点是需要大量的硬件, 电路复杂, 耗电量大, 不太适合于模型制作; 方案三设计占用单片机的端口最少, 硬件也少, 耗电也最少; 虽然显示图案也很精美, 但由于亮度太暗, 晚上还得开背光灯, 不够实用。可见方案一优于其它两种方案, 因此本设计选用方案一: 采用LED动态扫描的方案进行设计。2. 系统硬件设计采用LED动态扫描的交通灯控制系统电路原理图如图2-3所示。( 为排版起见, 该图放在下一页) 。系统由控制模块、 通行灯显示模块、 时间显示模块、 电源模块四部分组成。2.2.1 控制模块 控制模块电路如图2-4所示。主控制器采用A
16、T89S52。AT89S52是ATMEL公司生产的一款性能稳定的8位单片机, 具有1个8KB的Flash程序存储器, 1个512字节的RAM, 3个16的定时/计数器, 4个8位的双向可位寻址I/O端口, 1个串行口, 6个中断源, 两个中断优先级。图2-4 控制模块原理图AT89S52的P1口用于控制南北通行灯, P2口用于控制东西通行灯, P0口用于3位LED显示器的段码控制, P3.0P3.2口用于3位LED显示器的位码控制, 手动/自动转换采用P3.7扳键。/VPP接5V电源端。晶振及复位按典型电路设计, 元器件参数如图2-4中所示。晶振频率为12MHz。2.2.2 通行灯显示模块通行
17、灯显示模块如图2-5所示。通行灯指示采用高亮度共阴红绿双色发光二极管, 左拐、 直行、 右拐及行人各一个。双色发光二极管的共阴极经过电阻接地, 阳极接P1口或P2口( 南北为P1口, 东西为P2口) , 经74HC244控制。当发光电流为6mA时, 限流电阻按公式R=( 5-1.8) /0.006计算, 应为510。由于通行时南北双向指示牌相同, 东西双向指示牌相同, 因此每个端口应具有12mA的吸收电流能力, 在单片机的输出口接驱动电路74HC244, 以保护单片机的输出端口。图2-5 通行灯输出显示模块2.2.3 时间显示模块通行剩余时间显示模块如图2-6所示( 以北路口为例) 。路口通行
18、剩余时间采用高亮红色7段共阳LED发光数码管显示, 采用共阳数码管, 如用单片机吸收电流驱动, 列扫描驱动使用三级管, 按每段6mA电流算, 全显示字型”8”时, 每个数码管需6mA8=48mA。由于时间显示每个路口相同, 4组需192mA, 因此设计中采用功率三极管S9012驱动。由于单片机每个段码输出口需吸收48mA电流, 因此在电路设计中也使用了驱动集成块74HC244。2.2.4 电源电路电源电路如图2-7所示。整个系统采用的电源电压只需+5V电压, 将交流电经变压器变换为15V交流电, 再用整流桥得到13.5V左右的直流电, 采用不可调的3端稳压器件LM7805将电源稳定在5V直流输
19、出。图2-6 时间显示模块电路图2-7 电源电路2.2.5 硬件电路中器件选择A. AT89S52单片机 AT89系列单片机是ATMEL公司的8位FLASH单片机。这个系列单片机最吸引人的特点就是在片内含有FLASH存储器, 不需要再外扩存储器, 与80C51插座兼容, 由于这些优点, 使它有着十分广泛的用途, 特别是在便携式和需要特殊信息保存的仪器和系统中显得更为有用。89系列单片机典型型号有AT89C51, AT89LV51, AT89C52, AT89LV52, AT89C2051, AT89S52, AT89C1051, AT89S51和AT89S8252。本设计选用AT89S52。它
20、内部具有1个8KB的Flash的程序存储器, 1个512字节的RAM, 4个8位的双向可位寻址I/O端口, 3个16的定时/计数器、 1个串行口、 6个二级中断源和两个中断优先级。引脚如图2-8所示。图2-8 AT89S52引脚按功能, 引脚大致分为4部分: a) I/O口线P0口: 8位、 漏级开路的双向I/O口。当使用片外存储器及外扩I/O口时, P0口作为低字节地址/数据复用线。在编程时, P0口用于接受指令代码字节; 在程序校验时, P0口可输出指令字节( 这时需要加外部上拉电阻) 。P1口: 8位、 准双向I/O口, 具有内部上拉电阻。P1口是为用户准备的I/O双向口。在编程和校验时
21、, 可用做输入低8位地址。用做输入时, 应先将输出锁存器置1。P1口可驱动4个TTL负载。P2口: 8位、 准双向I/O口, 具有内部上拉电阻。P2口也可做普通I/O口使用。用做输入时, 应先将输出锁存器置1。P2口可驱动4个TTL负载。P3口: 8位、 准双向I/O口, 具有内部上拉电阻。P3口可作为普通I/O口, 用做输入时, 将输出锁存器置1。在编程/校验时, P3口接受某些控制信号。b) 控制信号线RST: 复位输入信号, 高电平有效。在振荡器稳定工作时, 在RST脚施加两个机器周期( 即24个晶振周期) 以上的高电平, 将器件复位。/VPP: 外部程序存储器访问允许信号。当引脚接地时
22、, 仅使用64KB的片外程序存储器, CPU从外部0000HFFFFH的地址空间取指令; 当引脚接VCC时, CPU从片内0000H地址开始取指令, 当PC值超过1FFFH时, 自动转到外存储器 HFFFFH地址空间执行程序。: 片外程序存储器读选通信号, 低电平有效。ALE/: 低字节地址锁存信号。c) 电源线: VCC为电源电压输入引脚, GND为地线。d) 外部晶振引线: XTAL1: 片内振荡器反相放大器和时钟发生线路的输入端。使用片内振荡器时, 连接外部石英晶体和微调电容。XTAL2: 片内振荡器反相放大器的输出端。当使用片内振荡器时, 外接石英晶体和微调电容。B.74HC244简单
23、输出接口扩展一般使用的典型芯片为74HC244, 由该芯片可构成三态数据缓冲器。74HC244芯片的引脚排列与内部结构分别如图2-9( a) ( b) 。( a) 引脚排列 (b)内部结构图2-974HC24474HC244芯片内部共有两组四位三态缓冲器, 使用时可分别以1和2作为它们的选通工作信号。1脚为低电平时只有4个缓冲器工作, 输入2, 4, 6, 8对应输出18, 16, 14, 12; 1为高电平时这4个缓冲器为高阻。19引脚为低电平另外四个缓冲器工作, 同样, 输入11, 13, 15, 17, 对应输出9, 7, 5, 3; 19为高电平时这四个缓冲器为高阻。C. LM 780
24、5LM7805的外形如图2-10所示。LM7805三端集成稳压电源内部由基准电压回路、 恒流源、 过流保护、 过压保护和短路保护回路等8部分组成, 具有低功耗, 高效率, 纹波系数小, 输出电压稳定等优点。图2-10 LM7805的外形图D.七段LED数码管7段数码管是一种常见的显示器件, 其外观与内部电路连接见图2-11。它使用7个笔画显示09共10个数字, 加上一个小数点共8个显示段, 每一个笔画都是由发光二级管组成的。LED数码管根据LED的接法不同分为共阴和共阳两类, 图2-11 (b)是共阳极数码管的内部电路, 将八只LED的阳极连在一起, 其中ag为7个笔画的驱动端; dp为小数点
25、驱动端; COM为公共引脚。 (a)外观 (b)内部电路连接图2-11 LED数码管09共10个字符的字形码如表2-1所示。E.双色发光二极管双色发光二极管是在一个封装结构内设置两只不同单色的发光二极管。共阴红绿双色发光电气符号图与内部电路连接如图2-12所示。有3根引出线, 圆形和长方形两种封装。其中第一只发光二极管的负( 或正极) 与第二只发光二极管的负( 或正极) 极相互连接后再向外引出。表2-1 LED数码管显示字符的字形码字形P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0字形编码dpgfedcba共阳共阴011000000C0H3FH111111001F9H06H2
26、10100100A4H5BH310110000B0H4FH41001100199H66H51001001092H6DH61000001082H7DH711111000F8H07H81000000080H7FH91001000090H6FH( a) 外形( b) 共阴双色发光二极管内部电路连接图2-12 双色发光二极管发光双色二极管的判别与检测方法: 将万用表打在电阻档, 用万用表黑表笔接在双色发光二极管中间的负极上, 红表笔接在双色发光二极管的正极上, 每次都亮, 该双色发光二极管是共阴极的, 而且是好的。F.三极管90129012为一PNP型的三极管, 外形与引脚图如图2-13所示。其中1脚
27、为发射极, 2脚为基极, 3脚为集电极。G.整流桥整流桥的外形如图2-14所示。整流桥的是作用将交流电转换成直流电, 本次设计电源电路中选用1A, 220V的整流桥。图2-13 9012外形图及引脚图 图2-14整流桥的外形如图2.3 系统软件的设计交通灯控制系统软件分为主程序、 定时中断程序与特种车实时响应程序三部分。2.3.1 主程序主程序主要负责总体程序管理功能, 包括初始化部分与人机交互设定部分。由于采用动态扫描方式显示时间, 因此主程序大部分时间要调用扫描显示程序。主程序流程图如图2-15所示。图2-15主程序流程图初始化部分主要完成内存规划, 定时器的工作模式、 中断方式等的设定。
28、由于子程序调用较多, 因此初始化时堆栈指针设于80H处。定时器T0、 T1设为16位定时器模式, 定时时间为50mS, T0为秒计时用, T1为通行结束闪烁用。2.3.2 定时中断服务程序定时中断服务程序主要用于车辆与行人的通行指示, 按照通行规则, 红绿灯控制转换逻辑表如表2-2所示。通行规则如下: A.车辆南北直行、 各路右拐, 南北向行人通行。南北向通行时间为1min( 60S) ,各路右拐比直行滞后10S开放。B.车辆南北向左拐、 各路右拐, 行人禁行。通行时间为1min( 60S) 。C.车辆东西直行、 各路右拐, 东西向行人通行。东西向通行时间为1min( 60S) ,各路右拐比直
29、行滞后10S开放。D.车辆东西向左拐、 各路右拐, 行人禁行。通行时间为1min( 60S) 。表2-2 路口通行方式控制码数据表 南 北 方 向端口控制功能120-110S110-70S70-60S60-10S10-0SP1.7左拐红1( 亮) 1( 亮) 1( 亮) 0( 暗) 0( 暗) P1.6左拐绿0( 暗) 0( 暗) 0( 暗) 1( 亮) 1/0( 提示) P1.5直行红0( 暗) 0( 暗) 0( 暗) 1( 亮) 1( 亮) P1.4直行绿1( 亮) 1( 亮) 1/0( 提示) 0( 暗) 0( 暗) P1.3右拐红1( 亮) 0( 暗) 0( 暗) 0( 暗) 0( 暗
30、) P1.2右拐绿0( 暗) 1( 亮) 1( 亮) 1( 亮) 1/0( 提示) P1.1行人红0( 暗) 0( 暗) 0( 暗) 1( 亮) 1( 亮) P1.0行人绿1( 亮) 1( 亮) 1/0( 提示) 0( 暗) 0( 暗) 路口控制字99H95H95H/84H66H66H/22H 东 西 方向 P2.7左拐红1( 亮) 1( 亮) 1( 亮) 1( 亮) 1( 亮) P2.6左拐绿0( 暗) 0( 暗) 0( 暗) 0( 暗) 0( 暗) P2.5直行红1( 亮) 1( 亮) 1( 亮) 1( 亮) 1( 亮) P2.4直行绿0( 暗) 0( 暗) 0( 暗) 0( 暗) 0(
31、暗) P2.3右拐红1( 亮) 0( 暗) 0( 暗) 0( 暗) 0( 暗) P2.2右拐绿0( 暗) 1( 亮) 1( 亮) 1( 亮) 1/0( 提示) P2.1行人红1( 亮) 1( 亮) 1( 亮) 1( 亮) 1( 亮) P2.0行人绿0( 暗) 0( 暗) 0( 暗) 0( 暗) 0( 暗) 路口控制字AAHA6HA6HA6HA6H/ A2H交通灯的4种通行规则, 是以给控制红绿灯端口送控制码的方式实现的。它的原理是, 将按不同规则通行时的各路口的红绿灯亮灭情况转换为单片机端口控制码。红绿灯指示功能经过T0定时中断服务程序实现。定时器T0定时溢出中断周期设为50ms, 中断累计2
32、0次( 即1S) 时对120S倒计时单元减一操作。设计中将4种通行规则分成几种不同的亮灯方式, 经过查询秒倒计时单元的数据, 实现在不同的时间段给控制端口送不同的控制数据码。控制码分为5个时间段: 120110S、 11070S、 7060S、 6010S、 100S。交通管理定时功能程序流程图如图2-16所示。图2-16 交通管理定时功能程序2.3.3 特种车中断服务程序将按钮S3按下, 给INT1引脚输入低电平信号来模拟特种车经过信号, 此时外部中断1被触发, 中断处理流程如图2-17所示。图2-17特种车中断服务程序流程图总的程序清单见附录三2.3.4 算法分析A.定时器/计数器本设计涉
33、及到120110S、 11070S、 7060S、 6010S、 100S五段计时, 首先须将它们转为16进制代码。 120=716+8=78H 110=616+14=6EH 70=416+6=46H 60=316+12=3CH 10=016+10=0AHB.定时时间初值与TMOD的设置T0、 T1为16位定时器, 由于定时时间大于8192S, 应选用工作方式一。由于晶振频率为12MHz, TCY=1S, 故有 T=( 65536-X) TCY=( 65536-X) 1s =50ms计算初值 X=15536=3CB0H即TH0=3CH , TL0=0B0H。TMOD的格式如图2-18所示。D7
34、D6D5D4D3D2D1D0GATEC/M1M0GATEC/M1M0图2-18 TMOD的格式TMOD各位的内容确定如下: 由于定时器/计数器0设为定时器, 选用工作方式一, 因此C/(TMOD.2)=0, M1(TMOD.1)=0, M0 (TMOD.0)=1, GATE(TMOD.3)=0; 定时器/计数器1没有使用, 相应的D7D4为随意状态”X”。若取”X”为0, 则( TMOD) =00000001B=01HC.中断系统IE的取值IE的格式如图2-19所示。D7D6D5D4D3D2D1D0EA-ET2ESET1EX1ET0EX0图2-19IE的格式IE每一位都由软件置1或清零。本设计
35、中CPU允许中断即EA=1, 定时器/计数器0中断允许位ET0及外部中断0中断允许位EX0可申请中断, 即ET0=1, EX0=1, 其余不允许中断, 均设为0, 因此IE=10000011H=83H3 系统调试根据前述第2大节中硬件和软件设计, 制作了基于单片机的交通灯控制系统样机实物。对样机的硬件和软件分别进行了调试, 最后进行了软件、 硬件联调。调试成功的实物照片如图3-1所示。图3-1 调试成功的单片机控制交通灯系统实物照片调试过程中遇到了不少问题, 并已将其逐一解决。最终得到了调试成功的交通灯系统, 能够完成本设计1.2节中设计内容的要求。3.1 硬件调试3.1.1 静态检查根据硬件
36、电路图核对了元器件的型号、 极性, 安装是否正确, 检查硬件电路连线是否与电路原理图一致, 检查电路元器件是否都已经连接好, 用万用表一一测试。3.1.2 通电检查首先调试电源部分。整个电路只需要+5V的电压, 接上电源, 将220V交流电通入, 测试变压器的输出端, 整流桥输出, LM7805的输出电压是否和理论计算值一致, 再用示波器检测单片机的复位和晶振电路是否有复位信号和振荡信号。3.2软件调试及软硬件联调对软件先用仿真器进行了调试。用仿真器运行正常后, 再用烧写器将程序烧到AT89S52单片机中, 进行了脱机调试。3.2.1仿真器选择单片机仿真器有很多型号, 本次设计采用南京电子有限
37、公司生产的伟福系列仿真器H51/S。仿真头类型采用POD-H8X5X。3.2.2仿真过程A建立程序选择菜单文件| 新建文件出现一个文件名为NONAME1 的源程序窗口, 如图3-2所示, 输入程序段( 此处以P18页时间显示程序段为例) 。图3-2建立程序窗口将文件存为扩展名为.ASM的文件进行保存。B建立项目建立项目分如下三步: a) 加入模块文件。( 将上述A中建立的ASM文件加入) b) 加入包含文件。( 若无包含文件, 此步加以取消) c) 保存项目。C仿真器的设置选择菜单设置| 仿真器设置功能或按”仿真器设置”快捷图标打开”仿真器设置”对话框, 如图3-3所示。在”仿真器”栏中, 选
38、择仿真器类型和配置的仿真头以及所要仿真的单片机。在”语言”栏中, ”编译器选择”选择为”伟福汇编器”。编译项目。选择菜单项目| 编译功能或按编译快捷图标, 编译项目。在编译过程中, 如果有错能够在信息窗口中显示出来, 双击错误信息, 能够在源程序中定位所在行。纠正错误后, 再次编译直到没有错误。在编译之前, 软件会自动将项目和程序存盘。在编译没有错误后, 就可调试程序了。图3-3 ”仿真器设置”对话框3.2.3通行灯输出调试对于通行灯输出程序的调试, 首先看左拐灯、 直行灯、 右拐灯、 行人灯是否能正常工作。编制了以下测试灯亮灭的程序: ORG 0000H START: MOV A,#0AAH
39、;让东西南北四个路口的四个红灯全亮 MOV P1,A MOV P2,A ACALL DELAY ;延时一段时间 MOV A,#55H ;让东西南北四个路口的绿灯全亮 MOV P1,A MOV P2,A ACALL DELAY ;延时一段时间 SJMP START; 到START处循环以上操作 DELAY: MOV R7,#01H ;延时子程序 MOV R6,#81H DL1: NOP NOP NOP DJNZ R6,DL1 DJNZ R7,DL1 RET将上述程序输入电脑, 经仿真器传输到系统运行后, 发现有一红灯不亮, 而其它指示灯都按指令运行出现正确的结果。用万用表仔细检测, 发现该灯的阳
40、极被误接地了, 没有接到单片机的并行口上。经修改, 每个指示灯均能正确的显示了, 至此, 说明通行灯的接线完全正确。判断出通行灯接线正确后, 对于整个电路的通行控制, 根据逻辑状态表2-2编制了相应的程序( 程序段见附录2中的T0中断服务程序) 多次、 重复调试, 直到逻辑关系正确。调试时南北方向、 东西方向指示灯同时进行。3.2.4时间显示模块调试对于时间模块, 首先看显示的数字是否正常, 显示的亮度是否合适。对于图2-3所示的电路, 尽管LED数码管为共阳极, 可是各位的位选为P3.0, P3.1 ,P3.2经PNP型晶体管9012后提供, P3.i(i=0,1,2)必须提供低电平才能点亮
41、相应的显示器, 须输出CLR P3.i指令(i=0,1,2)。先编制了LED静态显示的程序, 测试P3.i引脚上的LED是否能够正常显示, 相应程序如下: ORG 0000H START: MOV A,#01H MOV DPTR,#TAB ;取段码表地址 MOVC A,A+DPTR ;查显示数据对应段码 MOV P0,A CLR P3.0 ; 开启P3.0口 SETB P3.1 ; 关闭P3.1口 SETB P3.2 ; 关闭P3.2口 SJMP START TAB: DB 0C0H,0F9H,0A4H,0B0H,99H, END运行后P3.0引脚上接的显示器显示为1, 同理可分别测试P3.1
42、 , P3.2引脚上的LED显示器是否能够正常显示。经检测各位LED能够正常显示, 可是发光的亮度偏暗, 有些模糊, 这说明电路连接没有问题, 但选用的电阻过大了, 以至于电流很小, 显示器不太亮, 在保证9012正常工作的情况下, 将电阻从47K调整为10K, 显示亮度合适, 这部分调试成功。将附录2中的显示子程序进行了调试, 四个路口的三个数码管均能够动态显示。至此, 显示模块调试成功。整个程序设计中采用了两种倒计时显示方式, 120S倒计时适用于车流量较大的大城市, 60S倒计时可用于中小型城市, 两种倒计时由P3.7上的开关进行转换。3.2.5特种车中断程序调试将附录3中的119、 1
43、20特种车程序进行调试, 所有绿灯自动关闭, 红灯全亮。3.2.6脱机调试 用仿真器与硬件电路连接调试成功后, 又将附录3的程序烧写到AT89S52中去, 接上电源, 发现LED不能正常显示, 而通行灯输出一切正常。经检查AT89S52的P0口需要加外部上拉电阻, 在仿真器上不存在此问题, 因为仿真器的P0口有外部上拉电阻。接510的上拉电阻, 接通电源交通灯与倒计时显示器能够正常运行, 至此调试工作全部完成。3.2.7实验结果对实验板通电后, 显示器从120S开始倒计时, 每秒钟自动减一, 四个路口的红绿灯按通行规则正确显示。显示图片如图3-1所示。将S1开关打在合上的位置, 显示器从60S开