课程设计(论文)-单片机交通灯 设计.doc_第1页
课程设计(论文)-单片机交通灯 设计.doc_第2页
课程设计(论文)-单片机交通灯 设计.doc_第3页
课程设计(论文)-单片机交通灯 设计.doc_第4页
课程设计(论文)-单片机交通灯 设计.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

课课 程程 设设 计计 题目名称 单片机交通灯 学生姓名 学 号 专 业 指导教师 2011 年 5 月制 摘要 i 摘 要 一个完整的交通灯相当于一个简单的单片机系统,该系统有交通灯设置电路、 单片机、显示电路等构成。信号灯控制的实现是通过电路与汇编程序的结合来完 成,其中信号灯的模拟采用了发光二极管,发光二极管有熄灭、点亮和闪烁三种 信号,其中闪烁信号的产生运用了延时程序来实现,而时间倒数方面引进了 led 数字显示,克服了人们在等待时的心急的心情,减少了红灯未灭,闯红灯的现象。 电路部分原理图是通过用 protel 软件绘制设计,汇编程序的设计与调试都在 keil 上完成。最后使用 proteus 软件上的虚拟元件来代替所有的电路元件完成整 个系统的调试和仿真,这样就大大保证了焊制硬件实物能正常运行。 本系统功能设计完善,采用 at89c51 单片机为核心,具有实用,方便,灵活 的特点。随着电子技术的广泛应用,车辆日益增多将成为一种发展趋势,所以要 有一套安全可靠的交通指示灯。 关键字:关键字:at89c51;led 显示;交通灯 abstract ii abstract a complete traffic signal equivalent to a simple single-chip system, which has set up traffic lights circuit, microcontroller, display circuit, etc the realization of the control signal through the circuit and the combination of the compilation process to complete, including analog signal using a light-emitting diodes, light emitting diodes are off, the three flashing lights and signals, flashing signals which have used the procedure to delay the realization of the last time the introduction of led digital display, to overcome the people anxiously waiting for the mood at the time, a decrease of red light did not eliminate, the phenomenon of red light running. part of the circuit schematic diagram is drawn by using protel software design, compilation and debugging of the design procedures are completed in keil. proteus software on the final use of the virtual component to replace all the circuit elements to complete the testing and simulation systems, so much to ensure that the welding system to the normal operation of the physical hardware the well-designed system using at89c51 single-chip microcomputer as the core, with practical, convenient and flexible with the extensive application of electronic technology, an increasing number of vehicles will become a trend, so to have a safe and reliable indicator of the traffic. key word: the at89 c51;led show;traffic lights 目录 iii 目 录 1 引言 .1 2 交通管理设计流程 .3 2.1 设计任务3 2.2 流程介绍3 3 交通灯系统硬件设计 .5 3.1 单片机概述5 3.2 系统构成6 3.3 芯片选择与介绍6 3.3.1 at89c51 芯片 6 3.3.2 74ls164 芯片介绍 .9 3.3.3 74ls04 输出信号与信号灯 9 3.3.4 at89c51 单片机的复位电路和时钟振荡电路10 3.3.5 交通灯控制线路图12 4 交通灯软件设计 13 4.1 交通信号灯模拟控制系统设计程序流程图.13 4.2 交通信号灯控制程序代码.14 4.3 程序运行后状态表.21 5 调试与检测 22 5.1 硬件检测.22 5.1.1 静态检测.22 5.1.2 动态检测.22 5.2 软件调试.22 6 实验平台.23 6.1 实验平台 .23 6.1.1 keil 软件介绍 23 6.1.2 程序编写与调试.25 6.1.3 proteus 软件介绍 25 6.1.4 用 protues 绘制本设计电路 27 6.1.5 仿真结果与分析.29 目录 iv 结论 31 参考文献 33 致谢 34 1 引言 1 1 引言 今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的 手段。但这一技术在 19 世纪就已出现了。 1858 年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的扳手式 信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868 年,英国机械 工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的 煤气红绿灯。它由红绿两块以旋转式方形玻璃提灯组成,红色表示“停止” ,绿 色表示“注意” 。1869 年 1 月 2 日,煤气灯爆炸,使警察受伤,遂被取消。 1914 年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投 光器组成,安装在纽约市 5 号大街的一座高塔上。红灯亮表示“停止” ,绿灯亮 表示“通行” 。 1918 年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种 是把压力探测器安在地下,当车辆接近时,红灯便变为绿灯;另一种是用扩音器 来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。红外线红绿灯当 行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号 灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能 力,减少交通事故有明显效果。1968 年,联合国道路交通和道路标志信号协定 对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左 转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地 正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红 灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不 能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。 随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。道路拥 挤现象日趋严重,造成的经济损失越来越大,并一直保持大比例的增长。现在交 通系统已不能满足经济发展的需求。由于生活水平的提高,人们对交通运输的安 全性及服务水平提出了更高的要求。在交通中管理引入单片机交通灯控制代替交 管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质 量。并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工 电子科技大学成都学院学士学位论文 2 作人员的劳动强度。 中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作 用。智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的 效益、更加节约资源。使交管人员有更多的精力投入到管理整个城市交通控制, 带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。 2 交通管理设计流程 3 2 交通管理设计流程 2.1 设计任务 东西(a) 、南北(b)两干道交于一个十字路口,各干道有一组红、左转绿、 绿三个指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。 红灯的设计时间为 25 秒,绿灯 20 秒后开始闪烁警示,倒计时剩 2 秒时绿灯灭黄 灯亮。设 a 道和 b 道的车流量相同。 2.2 流程介绍 本论文主要的工作就是通过一个交通信号灯系统的硬件、软件的设计来实现 红绿灯的正常工作,具体工作安排大概描述为:一是根据系统控制要求设计硬件 电路,这里是用 proteus 软件来完成;二是根据硬件电路编写相应的程序流程图, 然后编写相关程序,这里程序的编制主要是用 keilc51 软件来完成;三是在 keil 上用已经编好的程序生成.hex 文件载入到 proteus 中,实现 proteus 与 keil 的 联调,完成调试和仿真,观察调试结果是否满足设计要求,若不满足需要继续检 查程序和其他情况直至实现正确的仿真为止。四是按成功仿真的原理购买电子元 件进行硬件实物焊制,完成整个系统设计。交通信号控制器设计的具体流程图如 图 2-1 所示: 电子科技大学成都学院学士学位论文 4 确定设计方案 使用 protel 设计电路图 根据电路图编写程序流程图 使用 keil 编写程序 调试 在 proteus 中仿真 生成.hex 文件 购买元件焊制硬件实物 完成设计 不成功 成功 不成功 成功 图 2-1 交通信号控制器设计的具体流程图 3 交通灯系统硬件设计 5 3 交通灯系统硬件设计 3.1 单片机概述 单片机是由运算器、控制器、存储器、输入设备以及输出设备共五个基本部 分组成的。单片机是把包括运算器、控制器、少量的存储器、最基本的输入输出 口电路、串行口电路、中断和定时电路等都集成在一个尺寸有限的芯片上。 通常,单片机由单个集成电路芯片构成,内部包含有计算机的基本功能部件: 中央处理器、存储器和 i/o 接口电路等。因此,单片机只需要和适当的软件及外 部设备相结合,便可成为一个单片机控制系统。 单片机经过 1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向 发展,它们的 cpu 功能在增强,内部资源在增多,引脚的多功能化,以及低电压、 低功耗。 可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已 进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称 pc 机。它由主 机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算 机就是把智能赋予各种机械的单片机。顾名思义,这种计算机的最小系统只用了 一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械 的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个 装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工 控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到 使产品升级换代的功效,常在产品名称前冠以形容词“智能型” ,如智能型 洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品, 不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未 使用单片机或其它可编程逻辑器件上。 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机 的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传 输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能 ic 卡,民用 豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩 具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智 电子科技大学成都学院学士学位论文 6 能仪表、医疗器械了。它主要是作为控制部分的核心部件。因此,单片机的学习、 开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 3.2 系统构成 电路板一块,at89c51 单片机一片,74ls164 芯片两片,七段数码管两个。 74ls04 反向器一片,发光二极管 12 个(红、黄、绿各四个) ,5 伏电源一个,一 条数据下载线。 系统工作流程: (1)程序设置初始时间,通过 at89c51 单片机内部相应寄存器来实现。 (2) 由 at89c51 单片机的定时器每秒钟通过 p3.0 口向 74ls164 的数据端口 送信息,由 74ls164 的输出口显示红、绿、黄灯的燃亮时间情况;由 at89c51 的 p1.0、p1.1、p1.2、p1.3 口显示每个灯的燃亮情况。 (3) at89c51 通过程序设置各个信号灯的燃亮时间,通过程序设置黄、绿、 红时间依次为 2 秒、20 秒、25 秒循环,由 at89c51 的 p3 口向 74ls164 的数据口 输出。 (4) 通过 at89c51 单片机的 p3 口来控制系统是工作。 (5) 74ls164 的 a、b 口用于串行输出时间位,经过串并转换送到七段数码 管的八的引脚。而 p1 口用于输出控制信号而通过 74ls04 反向器实现控制各个 灯的情况它采用 5v 的直流电来驱动二极管。 (6) at89c51 本身集成了看门狗指令,当系统出现异常看门狗将发出溢出中 断。通过专用端口输出,引起 reset 复位信号复位系统。 3.3 芯片选择与介绍 3.3.1 at89c51 芯片 at89c51 是美国 atmel 公司生产的低电压,高性能 cmos8 位单片机,内含 4k bytes 的可反复擦写的只读程序存储器(perom)和 128bytes 的随机存取数据存 储器(ram) ,器件采用 atmel 公司的高密度、非易失性存储技术生产,兼容标准 mcs-51 指令系统,片内置通用 8 位中央处理器(cpu)和 flash 存储单元,功能 强大 at89c51 单片机可为您提供许多高性价比的应用场合,可灵活应用各种控制 3 交通灯系统硬件设计 7 领域。 主要特性:主要特性: 与 mcs-51 兼容 4k 字节可编程闪烁存储器 寿命:1000 写/擦循环 数据保留时间:10 年 全静态工作:0hz-24hz 三级程序存储器锁定 128*8 位内部 ram 32 可编程 i/o 线 两个 16 位定时器/计数器 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 图 3-1 at89c51 引脚结构 引脚功能说明: 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 电子科技大学成都学院学士学位论文 8 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 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 口,可接收输出 4 个 ttl 门电流。当 p3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作 为输入,由于外部下拉为低电平,p3 口将输出电流(ill)这是由于上拉的缘故。 p3 口也可作为 at89c51 的一些特殊功能口,如表 3-1 所示。 表 3-1 特殊功能口 rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期 的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址 的地位字节。在 flash 编程期间,此引脚用于输入编程脉冲。在平时,ale 端以 不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对 外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时, 将跳过一个 ale 脉冲。如想禁止 ale 的输出可在 sfr8eh 地址上置 0。此时, ale 只有在执行 movx,movc 指令是 ale 才起作用。另外,该引脚被略微拉高。如果 3 交通灯系统硬件设计 9 微处理器在外部执行状态 ale 禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每 个机器周期两次/psen 有效。但在访问外部数据存储器时,这两次有效的/psen 信号将不出现。 /ea/vpp:当/ea 保持低电平时,则在此期间外部程序存储器(0000h- ffffh) ,不管是否有内部程序存储器。注意加密方式 1 时,/ea 将内部锁定为 reset;当/ea 端保持高电平时,此间内部程序存储器。在 flash 编程期间,此引 脚也用于施加 12v 编程电源(vpp) 。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 3.3.2 74ls164 芯片介绍 74ls164 为串行输入、并行输出移位寄存器,74ls164 为单向总线驱动器。 在串行口为方式 0 状态,即工作在移位寄存器方式,波特率为振荡频率的十 二分之一。器件执行任何一条将 sbuf 作为目的寄存器的命令时,数据便开始从 rxd 端发送。在写信号有效时,相隔 一个机器周期后发送控制端 send 有效,即 允许 rxd 发送数据,同时,允许从 txd 端输出移位脉冲。第一帧(8 位)数据发 送完毕时,各控制信号均恢复原状态,只有 ti 保持高电平,呈中断申请状态。 第一个 74hc164 把第一帧数据并行输出,led1 显示该数据。然后,用软件将 ti 清 0,发送第二帧数据。第二帧数据发送完毕,led1 显示第二帧数据,第一帧数 据串行输入给第二个 74hc164,led2 显示第一帧数据。依此类推,直到把数据区 内所有数据发送出去。应该注意,数据全部发送完后,第一帧数据在最后一个 led 显示。由于 txd 端最多可以驱动 8 个 ttl 门。 注意:当 led 显示器超过 8 个时,我们采用 74hc244 芯片驱动。每个 74hc244 有 8 路驱动,每一路可驱动 8 个 led,即每增加一个 74hc244,可增加 64 个 led 驱动。 七段数码管,用于显示 09 的数字。 3.3.3 74ls04 输出信号与信号灯 要使行人能看见信号灯的情况,必须把 p1 口输出的信号进行放大,这里我 们用 74ls04 反向器,当极性为高电平时晶闸管导通,该支路指示灯亮;当极性 电子科技大学成都学院学士学位论文 10 为低电平时关断,该支路指示灯灭。 led 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否 点亮。如下图: 而七段数码管的显示及与 74hc164 的连接显示不同的字形如 sp,g,f,e,d,c,b,a 管角上加上 0fe,所以上为伏,不亮其余为 高电平,全亮则显示为。 采用共阴极连接: 表 3-2 驱动代码表 显示数值 a b c d e f g dop 驱动代码(16 进制) 01 1 1 1 1 1 1 1 0fch 1 0 0 0 0 0 1 1 060h 2 1 1 0 1 1 0 1 00dah 3 1 1 1 1 0 0 1 00f2h 4 0 1 1 0 0 1 1 066h 5 1 0 1 1 0 1 1 00b6h 6 1 0 1 1 1 1 1 00beh 7 1 1 1 0 0 0 0 00e0h 8 1 1 1 1 1 1 1 00feh 9 1 1 1 1 0 1 1 00f6h 74ls04(6 反向器)主要对信号起了反向作用。 3.3.4 at89c51 单片机的复位电路和时钟振荡电路 复位是使单片机或系统中的其他部件处于某种确定的初始状态。单片机的工 作就是从复位开始的。8051 的复位引脚(rst)是第 9 脚,当此引脚连接高电平 超过 2 个机器周期(一个机器周期为 6 个时钟脉冲) ,即可产生复位的动作。当 在 80c51 单片机引脚引入高电平并保持 2 个机器周期时,单片机内部就执行复位 操作(如果 rst 引脚继续保持高电平,单片机就处于循环复位状态) 。复位操作 有两种基本形式:一种是上电复位,另一种是上电与按键均有效的复位。如图 3- 2 所示。 3 交通灯系统硬件设计 11 vcc c 9 rst r vcc c 9 rst r at89s52at89s52 s 、power on reset、reset、 、reset 图 3-2 单片机复位电路 at89c51 中有一个用于构成内部振荡器的高增益反相放大器,引脚 xtal1 和 xtal2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石 英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图 3-3、3-4。 图 3-3 单片机晶振内部振荡电路 电子科技大学成都学院学士学位论文 12 图 3-4 单片机晶振外部振荡电路 3.3.5 交通灯控制线路图 图 3-5 系统线路图 4 交通灯软件设计 13 南北方向红灯亮,东西方向绿 灯亮,延时 南北方向红灯亮,东西方向绿 灯闪烁,延时 3 秒 南北方向绿灯亮,东西向方绿 灯亮,延时 2 秒 东西向方红灯亮,南北方向绿 灯亮,延时 东西方向红灯亮,南北方向绿 灯闪烁,延时 3 秒 东西方向红灯亮,南北方向黄 灯亮,延时 2 秒 4 交通灯软件设计 4.1 交通信号灯模拟控制系统设计程序流程图 开始 图 4-1 程序流程图 电子科技大学成都学院学士学位论文 14 4.2 交通信号灯控制程序代码 编程提示: (1) 通过 74ls164 控制发光二极管,以模拟交通灯的控制。 (2) 程序中设定好计数初值,开始倒数。 (3) 各发光二极管共阴极,使其点亮应使对应的端口输出高电平。 ;=交通灯控制器 = second1equ30h;东西路口计时寄存器 second2equ31h;南北路口计时寄存器 dbufequ40h;显示码缓冲区 1 tempequ44h;显示码缓冲区 2 led_g1 bitp2.1;东西路口绿灯 led_y1 bitp2.2;东西路口黄灯 led_r1 bitp2.3;东西路口红灯 led_g2 bitp2.4;南北路口绿灯 led_y2 bitp2.5;南北路口黄灯 led_r2 bitp2.6;南北路口红灯 org0000h ljmpstart org0100h start: movtmod,#01h;置 t0 为工作方式 1 movth0,#3ch;置 t0 定时初值 50ms movtl0,#0b0h clrtf0 setbtr0;启动 t0 clra movp1,a;关闭不相关的 led ;* loop:movr2,#20;置 1s 计数初值,50ms*20=1s movr3,#20;红灯亮 20s movsecond1,#25;东西路口计时显示初值 25s movsecond2,#25;南北路口计时显示初值 25s lcalldisplay 4 交通灯软件设计 15 lcallstate1;调用状态 1 wait1: jnbtf0,wait1;查询 50ms 到否 clrtf0 movth0,#3ch;恢复 t0 定时初值 50ms movtl0,#0b0h djnzr2,wait1;判断 1s 到否?未到继续状态 1 movr2,#20;置 50ms 计数初值 decsecond1;东西路口显示时间减 1s decsecond2;南北路口显示时间减 1s lcalldisplay djnzr3,wait1;状态 1 维持 20s ;* movr2,#5;置 50ms 计数初值 5*4=20 movr3,#3;绿灯闪 3s movr4,#4;闪烁间隔 200ms movsecond1,#5;东西路口计时显示初值 5s movsecond2,#5;南北路口计时显示初值 5s lcalldisplay wait2: lcallstate2;调用状态 2 jnbtf0,wait2;查询 50ms 到否 clrtf0 movth0,#3ch;恢复 t0 定时初值 50ms movtl0,#0b0h djnzr4,wait2;判断 200ms 到否?未到继续状态 2 cplled_g1;东西绿灯闪 movr4,#4;闪烁间隔 200ms djnzr2,wait2;判 1s 到否?未到继续状态 2 movr2,#5;置 50ms 计数初值 decsecond1;东西路口显示时间减 1s decsecond2;南北路口显示时间减 1s lcalldisplay djnzr3,wait2;状态 2 维持 3s ;* 电子科技大学成都学院学士学位论文 16 movr2,#20;置 50ms 计数初值 movr3,#2;黄灯闪 2s movsecond1,#2;东西路口计时显示初值 2s movsecond2,#2;南北路口计时显示初值 2s lcalldisplay wait3: lcallstate3;调用状态 3 jnbtf0,wait3;查询 100ms 到否 clrtf0 movth0,#3ch;恢复 t0 定时初值 100ms movtl0,#0b0h djnzr2,wait3;判断 1s 到否?未到继续状态 3 movr2,#20;置 100ms 计数初值 decsecond1;东西路口显示时间减 1s decsecond2;南北路口显示时间减 1s lcalldisplay djnzr3,wait3;状态 3 维持 2s ;* movr2,#20;置 50ms 计数初值 movr3,#20;红灯闪 20s movsecond1,#25;东西路口计时显示初值 25s movsecond2,#25;南北路口计时显示初值 25s lcalldisplay wait4: lcallstate4;调用状态 4 jnbtf0,wait4;查询 100ms 到否 clrtf0 movth0,#3ch;恢复 t0 定时初值 100ms movtl0,#0b0h djnzr2,wait4;判断 1s 到否?未到继续状态 4 movr2,#20;置 100ms 计数初值 decsecond1;东西路口显示时间减 1s decsecond2;南北路口显示时间减 1s lcalldisplay djnzr3,wait4;状态 4 维持 20s 4 交通灯软件设计 17 ;* movr2,#5;置 50ms 计数初值 movr4,#4;红灯闪 20ms movr3,#3;绿灯闪 3s movsecond1,#5;东西路口计时显示初值 5s movsecond2,#5;南北路口计时显示初值 5s lcalldisplay wait5: lcallstate5;调用状态 5 jnbtf0,wait5;查询 100ms 到否 clrtf0 movth0,#3ch;恢复 t0 定时初值 100ms movtl0,#0b0h djnzr4,wait5;判断 200ms 到否?未到继续状态 5 cplled_g2;南北绿灯闪 movr4,#4;闪烁 200ms djnzr2,wait5;判断 1s 到否?未到继续状态 5 movr2,#5;置 100ms 计数初值 decsecond1;东西路口显示时间减 1s decsecond2;南北路口显示时间减 1s lcalldisplay djnzr3,wait5;状态 5 维持 3s ;* movr2,#20;置 50ms 计数初值 movr3,#2;红灯闪 2s movsecond1,#2;东西路口计时显示初值 2s movsecond2,#2;南北路口计时显示初值 2s lcalldisplay wait6: lcallstate6;调用状态 6 jnbtf0,wait6;查询 100ms 到否 clrtf0 movth0,#3ch;恢复 t0 定时初值 100ms movtl0,#0b0h djnzr2,wait6;判断 1s 到否?未到继续状态 6 电子科技大学成都学院学士学位论文 18 movr2,#20;置 100ms 计数初值 decsecond1;东西路口显示时间减 1s decsecond2;南北路口显示时间减 1s lcalldisplay djnzr3,wait6;状态 6 维持 2s ljmploop;大循环 ;* state1:;状态 1 setbled_g1;东西路口绿灯亮 clrled_y1 clrled_r1 clrled_g2 clrled_y2 setbled_r2;南北路口红灯亮 ret state2:;状态 2 clrled_y1 clrled_r1 clrled_g2 clrled_y2 setbled_r2;南北路口红灯亮 ret state3:;状态 3 clrled_g1 clrled_r1 clrled_g2 clrled_y2 setbled_r2;南北路口红灯亮 setbled_y1;东西路口绿灯亮 ret state4:;状态 4 clrled_g1 clrled_y1 4 交通灯软件设计 19 setbled_r1;东西路口红灯亮 setbled_g2;南北路口绿灯亮 clrled_y2 clrled_r2 ret state5:;状态 5 clrled_g1 clrled_y1 setbled_r1;东西路口红灯亮 clrled_y2 clrled_r2 ret state6:;状态 6 clrled_g1 clrled_y1 setbled_r1;东西路口红灯亮 clrled_g2 clrled_r2 setbled_y2;南北路口红灯亮 ret display:;数码显示 mova,second1;东西路口计时寄存器 movb,#10;16 进制数拆成两个 10 进制数 divab movdbuf+3,a mova,b movdbuf+2,a mova,second2;南北路口计时寄存器 movb,#10;16 进制数拆成两个 10 进制数 divab movdbuf+1,a mova,b movdbuf,a 电子科技大学成都学院学士学位论文 20 movr0,#dbuf movr1,#temp movr7,#4 dp10:movdptr,#ledmap mova,r0 movca,a+dptr movr1,a incr0 incr1 djnzr7,dp10 movr0,#temp movr1,#4 dp12:movr7,#8 mova,r0 dp13:rlca movp3.0,c clrp3.1 setbp3.1 djnzr7,dp13 incr0 djnzr1,dp12 ret ledmap: db 3fh,06h,5bh,4fh,66h,6dh;0,1,2,3,4,5 db 7dh,07h,7fh,6fh,77h,7ch;6,7,8,9,a,b db 58h,5eh,7bh,71h,0,40h;c,d,e,f, ,- end 运行实验程序 编译程序时,在系统“p.”状态后,运行程序时 l1l12 发光二极管模拟交 通灯显示。 4 交通灯软件设计 21 4.3 程序运行后状态表 其中 0 代表灯灭,1 代表灯亮。 表 4-1 运行状态 南东北西 黄绿红黄绿红黄绿红黄绿红 状态 pb 3 pb 2 pb 1 pb 0 pa 7 pa 6 pa 5 pa 4 pa 3 pa 2 pa 1 pa 0 南北红灯亮, 东西绿灯亮 001010001010 南北红灯亮 ,东西黄灯 亮 001100001100 南北绿灯亮, 东西红灯亮 010001010001 该四 个工 作状 态按 此次 序将 重复 出现 南北黄灯亮, 东西红灯亮 100001100001 电子科技大学成都学院学士学位论文 22 5 调试与检测 5.1 硬件检测 硬件检测又分为,静态检测和动态检测。 5.1.1 静态检测 第一步:目测,检查外部的各种元件或则电路是否有断点; 第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各 种电源线与地线之间是否有短路现象; 第三步:加电检测。给板加电,检测所有的插座或是器件的电源端是否符合 要求的值; 第四步:是联机检查。因为只有用单片机开发系统才能完成对用户系统的调 试。 5.1.2 动态检测 动态检测是在用户系统工作的情况下发现和排除用户系统硬件中存在的器 件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近 及远、由分到合。由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块, 当调试电路时,与该元件无关的 器件全部从用户系统中去掉,这样可以将故障 范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中, 在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既 告完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及 远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去, 就会定位故障元件了。 5.2 软件调试 软件调试是通过对拥护程序的汇编、连接、执行来发现程序中存在的语法错 误与逻辑错误并加以排除纠正的过程。程序后,编辑,查看程序是否有逻辑错误。 4 交通灯软件设计 23 6 实验平台 25 6 实验平台 6.1 实验平台 6.1.1 keil 软件介绍 keil 是美国 keil 公司的 c51 编译器,它被嵌入到了 keil uvision 集成开 发环境中。keil 是目前最常用的编译器,支持浮点等到类型,支持多维数组,能 生成对应的汇编代码,能直接编译汇编代码程序和内嵌多种工具,可以方便的链 接,生成可执行文件。keil uvision 2 ide 是 keil software 公司的产品,它 集项目管理、编译工具、代码编写工具、代码调试以及完全仿真于一体,适合个 人开发或人数少、对开发过程的管理还不成熟的开发团体。这一功能强大的软件 提供简易的开发平台,可以让开发者在开发过程中集中精力于项目本身,加快开 发速度。如图 3-2 为 uvision2 的界面。 keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 windows 界面,如图 3.2 所。另外重要的一点,只要看一下编译后生成的汇编代 码,就能体会到 keil c51 生成的目标代码效率非常之高,多数语句生成的汇编 代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势10。 c51 工具包的整体结构,如图(1)所示,其中 uvision 与 ishell 分别是 c51 for windows 和 for dos 的集成开发环境(ide),可以完成编辑、编译、连接、调 试、仿真等整个开发流程。开发人员可用 ide 本身或其它编辑器编辑 c 或汇编源 文件。然后分别由 c51 及 a51 编译器编译生成目标文件(.obj)。目标文件可由 lib51 创建生成库文件,也可以与库文件一起经 l51 连接定位生成绝对目标文件 (.abs)。abs 文件由 oh51 转换成标准的 hex 文件,以供调试器 dscope51 或 tscope51 使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也 可以直接写入程序存贮器如 eprom 中10。 电子科技大学成都学院学士学位论文 26 图 6-1 uvision2 的界面图 uvision / ishell 集成开发环境 c51 编译器 a51 编译器 c 库文件lib51 库管理 bl51 连接 rtx51 实时操作系统 oh51 转换器 图 6-2 c51 工具包整体结构 6 实验平台 27 6.1.2 程序编写与调试 使用 keil 软件工具时,项目开发流程和其它软件开发项目的流程极其相似。 用它来完成一个工程的步骤简要描述如下10: (1) 创建一个项目,从器件库中选择目标器件,配置工具设置。 (2) 用 c 语言或汇编语言创建源程序。 (3) 用项目管理器生成应用。 (4) 修改源程序中的错误。 (5) 测试,生成.hex 文件,连接应用。 按照上述步骤进行程序编制,设置好相应配置后进行调试。 6.1.3 proteus 软件介绍 proteus 软件是来自英国 labcenter electronics 公司的 eda 工具软件。 proteus 软件有十多年的历史,在全球广泛使用,除了其具有和其它 eda 工具一 样的原理布图、pcb 自动或人工布线及电路仿真的功能外,其革命性的功能是, 他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟 原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后 输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等。proteus 组合了高级原理布图、混合模式 spice 仿真,pcb 设计以及自动布线来实现一个完 整的电子设计系统。此系统受益于 15 年来的持续开发,被电子世界在其对 pcb 设计系统的比较文章中评为最好产品“the route to pcb cad” 。proteus 产品系列也包含了我们革命性的 vsm 技术,用户可以对基于微控制器的设计连同 所有的周围电子器件一起仿真。用户甚至可以实时采用诸如 led/lcd、键盘、 rs232 终端等动态外设模型来对设计进行交互仿真。其功能模块:个易用而又 功能强大的 isis 原理布图工具;prospice 混合模型 spice 仿真; ares pcb 设 计。prospice 仿真器的一个扩展 proteus vsm:便于包括所有相关的器件的基于 微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开 关,按钮,leds 甚至 lcd 显示 cpu 模型11。 proteus 的特点主要有11: (1)支持许多通用的微控制器,如 pic,avr,hc11 以及 8051; (2)交互的装置模型包括:led 和 lcd 显示,rs232 终端,通用键盘; (3)强大的调试工具;包括寄存器和存储器,断点和单步模式; 电子科技大学成都学院学士学位论文 28 (4)iar c-spy 和 keil uvision2 等开发工具的源层调试; (5)应用特殊模型的 dll 界面-提供有关元件库的全部文件。 以下再对 protues 的工作过程、元件库、仪表库以及调试手段作简要介绍: (1)proteus 的工作过程 运行 proteus 的 isis 程序后,进入该仿真软件的主界面。在工作前,要设 置 view 菜单下的捕捉对齐和 system 下的颜色、图形界面大小等项目。通过工具 栏中的 p(从库中选择元件命令)命令,在 pick devices 窗口中选择电路所需的 元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序; 在 source 菜单的 definecode generation tools 菜单命令下,选择程序编译的 工具、路径、扩展名等项目;在 source 菜单的 add/removesource files 命令 下,加入单片机硬件电路的对应程序;通过 debug 菜单的相应命令仿真程序和电 路的运行情况11。 (2)proteus 软件所提供的元件资源 proteus 软件所提供了 30 多个元件库,数千种元件。元件涉及到数字和模 拟、交流和直流等11。 (3)proteus 软件所提供的仪表资源 对于一个仿真软件或实验室,测试的仪器仪表的数量、类型和质量,是衡量 实验室是否合格的一个关键因素。在 proteus 软件包中,不存在同类仪表使用数 量的问题。proteus 还提供了一个图形显示功能,可以将线路上变化的信号,以 图形的方式实时地显示出来,其作用与示波器相似但功能更多11。 (4)proteus 软件所提供的调试手段 proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模 拟信号和数字信号。对于单片机硬件电路和软件的调试,proteus 提供了两种方 法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。 对于总体执行效果的调试方法,只需要执行 debug 菜单下的 execute 菜单项或

温馨提示

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

评论

0/150

提交评论