毕业设计161基于8086微处理器的交通信号灯控制设计.doc
毕业设计161基于8086微处理器的交通信号灯控制设计
收藏
资源目录
压缩包内文档预览:(预览前20页/共27页)
编号:546093
类型:共享资源
大小:756.86KB
格式:ZIP
上传时间:2015-12-01
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
电气电子毕业设计论文
- 资源描述:
-
毕业设计161基于8086微处理器的交通信号灯控制设计,电气电子毕业设计论文
- 内容简介:
-
基于 8086 微处理器的交通 信号 灯 控制 设计 第 1 页 摘 要 随着现代科学技术的发展,人民生活水平的提高,汽车已走进千家万户。而由之带来的交通问题也越发的普遍和严重,这些交通问题在城市中 表现得尤为突出。 十字路口的交通状态控制已显得尤为重要,人们既不愿意在十字路口等待过久又不能陷入无休无止的堵塞状态。于是一种新型的交通灯设计迫在眉睫,它既能满足普通的控制指挥要求,又能根据不同的车流量路段或是不同的时间段设定不同的通行时间。 本交通灯设计就是在新的设计要求下,利用 8086 系统开发出来的。它基本上可以满足不同路段和时间段的通行时间设定,即保证在源 程序不变的情况下,通过硬件接口(键盘)设定通行时间。 关键字 : 8086 微处理器、可编程并行 I/O 接口芯片 8255A、 8253 可编程定时器 /计数器、 8259A 可编程中断控制器 、 8284A 时钟发生器 、中断与查询方式相结合键盘 。 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 2 页 一、方案论证与比较 1.1 总体方案比较 在进行交通灯设计前定下一 设计 原则 :在可以满足设计要求的前提下,运用已学到的知识,以最简单明了的设计思路进行交通灯控制设计。 对于本次交通灯设计现提出三种方案,分别比较如下: 方 案 1: 利用纯数字电路实现交通信号灯设计。 该种方案的系统框图如图 1.1.1 所示: 由系统框图可以知道,整个系统包括秒脉冲发生器、分频器、控制器、计数译码器等电路组成。秒信号发生器产生整个定时系统的时基脉冲,通过减法计数器实现秒脉冲个数进行减计数,完成每一种工作状态的持续时间。 整个电路基本上由数字电子器件组成,电路以及控制逻辑较复杂 。设计的功能实现全部是由电路或是某些器件来保证的, 若要适当的改变计数时间 或是其他功能 ,则必须改动硬件电路 或是某些器件,因而纯电子电路实现起来比较机械,不如软硬 件结合的电路灵活。 方案 2: 利用 51 单片机进行交通 信号灯 设计。单片机将控制器、运算器、存储器以及输入输出端口集于一体的高性能处理器。利用 51 单片机开发系统,外围元件少,电路简单,实时性高。对于本系统完全可以利用 51 单片机实现,且 51 单片机实现起来硬件电路和程序设计思路都比较简单,还可以应用一些仿真软件对设计的系统进行仿真,从而在理论与实际中保证设计的可行性。但由于知识水平的限制,还是不能很好的驾驭 51 单片机系统设计的 经 脉。 该方案可用方框图表示如图 1.1.2 所示; 图 1.1.1 纯数字电路系统框图 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 3 页 方案 3:利用 8086CPU 进行设计。以 8086 微处理器为中心,通过扩展外围器件,实现设计所需的功能。 8086 处理器虽说需要拓展一些外围器件 如 8259A、 8253A、 8255 等 ,增加 了 电路的复杂性,但它仍具有 功能丰富 、 实时性高 等 特点,对于本设计来说,它完全可以满足。特别是对于 8086 系统实现所需芯片在本学期已经学习,所以对 8086 构造的系统还是容易接受的。 结合设计原则比较上叙三种方案后,决定选用第三种方案作为本次设计方案。 1.2 单元电路比较 1.2.1 显示电路 显示电路在此处主要指秒倒计时显示电路。 根据显示器件的选用,有两种方式: LED 数码管和 LCD 液晶显示。 LED 数码管显示又可以分为动态显示和静态显示。 LED 显示亮度高,不需要额外的驱动电路,实现方便简单。对于 LED 的动态显示和静态显示 方式,两者显示原理一致,只是实现亮灭 状态 采用不同的方法。动态显示所占用的 I/O 口比静态显示少,需要结合模拟器件实现对各个 LED 的选通,从而硬件电路较静态 显示 复杂 , 动态显示程序也较静态显示复杂。 LCD 显示需要额外的驱动电路,显示程序复杂。显示亮度虽高,但在此处交通灯倒计时还是不方便的。综合考虑后,设计中采用 LED 静态显 示方式。 1.2.2 键盘 键盘在此设计中主要实现对不同路段或不同时间段的通行时间设定。 方案 1:采用独立键盘,该键盘电路结构简单、使用方便,软件实现简单,但是随着键数的增多,占用的 I/O 口的数目也随之增多。 方案 2:采用矩阵式键盘。在相同键数下,占用的 I/O 口的数目较独立键盘少,该键89C51 8255A DATA07 LED 显示 键盘 图 1.1.2 用 51 单片机实现交通灯系统框图 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 4 页 盘需要不断的扫描,占用大量 CPU 时间,将影响单片机实时处理特性。 方案 3:采用中断与查询相结合的键盘 ,如图 1.2.1 所示 。该键盘较方案一、二优越。 该类键盘最大的特点是: 该键盘的特 点在于占用 CPU 少,即没有按扭按下时,主程序循环运行。当某按扭按下后使原本输出高电平的 74LS21 或 74LS11 翻转而输出低电平,致使单片机的 P3.3 电平翻转而产生中断或是通过一个 74LS04 接至 8259A 产生中断, 程序进入 预先编制的 中断 子程序, 以查询的方式判断键值,最终确定键值而完成一次按键输入。 本设计采用第三种方案,由于设计的键比较的少,所以这里采用图 1.2.1 中的第一种方式。 图 1.2.1 中断与查询方式键盘 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 5 页 二、系统框图 本交通信号灯设计主要完成对东西南北四方向的车辆通行进行指挥。 设计的系 统框图如图 2.1.1 所示。 由系统框图 2.1.1 可知, 8284A 为 8086 和 8253A 提供时钟源, 8253A 通过 8259A 产生一个秒中断,供系统倒计时需要。 8259A 则将外部的中断与系统设定的中断对号入座。8255A 主要作为输出输入端口,在 8086 的控制下实现秒倒计时和红、绿、黄灯的亮灭。 根据 现实 情况 ,加设一键盘作为各不同路段和时间段的通行时间设定。 整个系统在 8086 的控制下完成交通信号灯控制,从而完成对车辆通行 控制 。 由于不会影响系统软件的编制, 本交通信号灯控制设计 只选取东西方向、南北方向各一条通道进行设计,只要在硬件上稍做添加就可以 实现 对四道的交通信号灯控制。系统初态为 4 道红灯全亮,运行时红灯亮 35s,绿灯亮 30s,黄灯亮 5s,各灯的亮灭时间段可以用图 2.1.2 表示。 图 2.1.1 交通信号灯控制系统框图 绿灯亮( 30s) 黄灯( 5s) 绿灯亮( 30s) 红灯亮( 35s) 黄灯( 5s) 红灯亮( 35s) t/s 30 35 65 70 0 东西方向 南北方向 A B C D 图 2.1.2 交通信号灯亮灭示意图 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 6 页 三、系统主要单元电路设计 以 8086CPU 为核心构造的交通信号灯控制系统主要由 4 个单元电路组成。它们分别是以 8284A、 8253A、 8259A、 8255A 构造的时钟发生电路、定时电路、中断系统电路、 LED显示和键盘电路。下面分别 从各电路的主要芯片来 介绍这四种单元电路 。 3.1 时钟发生电路 时钟发生为整个系统提供稳定有序的脉冲,它是系统正常工作的前提。时钟发生电路在本设计中主要是为 8086CPU 和 8253A 提供时序脉冲。 以 8284A 构造的时钟发生电路与 8086CPU 的连接关系如图 3.1.1 所示。 RES 一个低电平有效信号,它的作用是产生RESET 信号。在系统正常运行时,它必须为高电平 (图 3.1.1 中 RES 接电源) ,否则系统一直处于复位状态。 8284A 所接外部时钟源有两种 方式:一种是将 CF/ 置高电平,通过 EFI 引脚输入外部脉冲信号;另一种是将 CF/ 接低电平,通过 X1 和 X2 与晶振相连。虽说两种时钟输入方式有所不同,但有一个 共同点 两种方式下的输入频率必须是CPU 的 3 倍。 图 3.1.1 中外部时钟是由晶振产生的,所以 CF/ 必须接低电平(图 3.1.1 中 CF/ 接地)。本系统设定 CPU 的时钟频率为 5MHz,所以外接晶振频率为 15 MHz,通过 8284A 的 CLK引脚将频率为 5 MHz,占空比为 33%的时钟 输入到 CPU。 本设计中只用到一片 CPU 和一片 8284A,所以 CSYNC(时钟同步信号:高电平有效,作用是对连接在一起的多个 8284A芯片进行同步处理)接低电平 , RDY1 和 AEN1 (分别是高电平和低电平有效信号,它们合起来的作用是向微处理器提供准备就绪信号, 从而在 CPU 的读写时钟周期中插入一个WAIT 信号 ) 分别接高电平、低电平, RDY2 和 AEN2 ( 作用与 RDY1 和 AEN1 完全相同,只不过用于多处理器中,在本系统中只用到一片 8086,所以必须永久禁用这种功能 ) 分别接低电平和高电平 。 ASYNC 被称为“就绪同步信号”,它是一个低电平有效 信号 ,用于那些无法满足 RDY 的严格时序要求 的设备。 RESET 是一个高电平信号,作用是为 8086 和其图 3.1.1 时钟发生电路 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 7 页 他外围设备提供复位信号,它由 RES 激活。 REDAY 引脚连接到 CPU 的 REDAY 引脚,当外围设备速度跟不上时, REDAY 信号可以告诉 8086 应插入等待状态。 PCLK 引脚输出的频率为 CLK 的 1/2,即晶振频率的 1/6,占空比为 50%,在本设计中它与 8253A 的 CLK1相连,为 8253A 提供有效时序。 3.2 定时 电路 定时电路在本设计中主要提供一秒的定时。外部频率通过 CLK1 引脚 输入到 8253A 中,在预先设定的程序指导下,通过 OUT0 向 8259A 产生一秒定时中断。 8253A 与 8259A 的连接关系如图 3.2.1 所示 8253 的基本功能: 3 个独立的 6 位计数器,最大计数范围为 065535;每个计数器均可以按二进制或二 -十进制计数;计数速率可达 2MHz;可编 程六种不同的工作方式;所有输入输出都与 TTL 兼容 。所以 8253 具有较好的通用性和使用灵活性,几乎适合于任何一种微处理器组成的系统。 与 CPU 的接口信号: ( 1) D0D7 三态双向数据线。与 CPU 数据总线相连,用于传递 CPU 与 8253 之间的数据信息、控制信息和状态信息。 ( 2) CS 片选信号,低电平有效。表示 8253 被选中,允许 CPU 对其进行读 /写操作,本设计中与 74LS138 的输出引脚相连。 ( 3) WR 写信号,输入,低电平有效。用于控制 CPU 对 8253 写操作,可与 A1、 A0 信号配合以决定是 写入控制字还是计数初值。 ( 4) RD 读信号,输入,低电平有效。用于控制 CPU 对 8253 读操作,可与 A1、 A0 信号配合读取某个计数器的当前计数值。 ( 5) A0、 A1 地址输入线。用于 8253 内部寻址的 4 个端口,即 3 个计数器和一个控制字寄存器。一般与 CPU 的低位的地址线相连。本设计中与 8086 的 A1、 A2 相连。 图 3.2.1 定时电路 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 8 页 本设计中 8253A 各计数器的工作方式: 设计 中 8253A 只用到了其中两个计数器:计数器 0 和计数器 1。两个计数器均工作在方式 2 速率发生器、分频器。 方式 2 的功能如同一个 N 分频计数器,输出的是输入时钟按照计数值 N 分频后的一个连续脉冲。 ( 1)计数过程 写入控制字后的时钟上升沿,输出端 OUT 变成高电平。若 GATA=1,写入计数初值后的第一个时钟下降沿开始减 1 计数。减到 1 时,输出端变成低电平,减到 0 时,输出 OUT又变成高电平,从初值开始新的计数过程,即方式 2 能自动重装初值, 输出固定频率的脉冲。因此若装入计数初值为 N,则 OUT 引脚上每隔 N 个时钟脉冲 就输出一个负脉冲,其频率为输入时钟脉冲频率的 1/N,故方式 2 也称分频器。 在本次设计的硬件电路中,在 8255A 的 OUT0 和 8259A 的 IR1 间加上一个非门,当一秒计数尚未完成时, OUT0 输出高电平,通过非门后转变为低电平;当计数完成后, OUT0输出低电平,通过非门后转变为高电平,从而产生中断。 ( 2) GATE 信号的影响 方式 2 中, GATE 信号为低电平终止计数,而由低电平恢复为高电平后的第一个时钟下降沿重新从初值开始计数。由此可见, GATE 一直处于高电平时,计数器方能作为一个N 分频器。 ( 3) 新的计数初值对计数过程的影响 如果在计数过程中写入新的初值,且 GATE 信号一直维持高电平,则新的计数初值不会立即影响当前的计数过程,但在计数结束后的下一个计数周期将按新的初值计数,即新的处置下次有效。 根据硬件电路图,本设计中 8253A 的端口地址(即 3 个计数器和一个控制字寄存器)具体 见附录中 表 1。 根据设计要求和电路 8253A 的各个控制字如附录中表 2 所示。 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 9 页 3.3 中断系统电路 由 8259A 构造的中断系统电路如图 3.3.1 所示。 外部 中断系统犹如一座桥梁将外部中断源与 CPU 内部程序对应的中断向量一一对应起来,使系统有序运行。本设计中有两个中断源:一个是由 8253A 的 OUT0 产生;另一个是由键盘产生。当没有中断产生时系统循环运行主程序;当外部有中断产生时, 转入到中断子程序运行,从而使整个系统有条不紊运行。 8259A 的功能:具有 8 级优先权,并可通过级联扩展至 64 级;可通过编程屏蔽或开放接于其上的任一中断源;在中断响应周期能自动向 CPU 提供可编程的标识码,如 8086 的中断类型号;可编程选择各种不同的工作方式。 8259A 部分 引脚介绍: ( 1) D7D0:双向三态数据线,与 CPU 数据总线直接相连或与外部数据缓冲器相连。本设计中由于只有 3 块芯片有数据线,所以没有加数据缓冲器 。 ( 2) CS :片选信号,低电平有效,通常与 CPU 的高位地址线或地址译码器的输出相连。本设计中 CS 与地址译码器 74LS138 的输出相连。 ( 3) INT:中断请求信号输出端。用于向 CPU 发出中断请求信号。 图 3.3.1 中断系统电路 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 10 页 ( 4) INTA :中断响应输入信号。用于 接收 CPU 的中断响应信号。 ( 5) A0:地址线,通常与 CPU 的 低位地址总线相连,如 8086 的 A1, A0=0 是偶地址,A0=1 是奇地址。本系统中 8259A 的 A0 与 CPU 的 A1 相连。 ( 6) IR7IR0: 与外部中断请求信号相连,通常 IR0 的优先权最高, IR7 的优先权最低,按序排列。 ( 7) CAS0CAS2:级联信号线,主片位输出,从片为输入,与 EN/SP 配合,实现级联。 ( 8) EN/SP :主从 /允许缓冲线。在缓冲工作方式下,用作输出信 号,以控制总线缓冲器的接收和发送 ( EN ) 。在非缓冲工作方式下,用作输入信号,表示该 8259A 是主片( 1SP )或从片( 0SP )。 由于本设计中只用到一片 8259A,所以 该引脚直接接低电平。 本设计中 8259A 的工作方式: 1、中断触发方式 本设计中的中断触发方式为电平触发方式。 电平触发方式是指中断请求输入端 IRi 出现高电平时,即为有效的中断请求信号这样一种中断触发方式。使用该方式时应注意, 在 CPU 响应中断后( ISR 相应位置位后),必须撤销 IRi 上的高电平,否则会发生第二次中断请求。 该方式由初始化命令字 ICW1 的 D3 位置 1 来设置。 2、中断屏蔽方式 这里采用普通屏蔽方式。 按 IMR 给出的结果,屏蔽或开放该级中断,同时允许高级的中断源中断低级的中断服务程序,不允许同级的中断源或低级的中断源中断目前正在执行的中断服务程序 ,这样一种工作方式就是普通屏蔽方式。 普通屏蔽方式通过写入屏蔽字 OCW1 来设置, OCW1 的内容存放在 IMR 中,对应位置 1,屏蔽该中断,对应位为 0,开放该中断。 3、优先级设置方式 本设计优先级设置为普通全嵌套方式。 该方式生活 8259A 最常用的方式,简称为全嵌套方式。 8259A 初始化后未设置其它优先级方式,就按该方式工作,所以普通全嵌套方式是 8259A 的缺省工作方式。 普通全嵌套工作方式下, IR7IR0 优先级由低到高按序排列,且只允许高级的中断源中断低级的中断服务程序。在该方式下,先要使 AEOI=0,使 中断结束处于正常方式。否nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 11 页 则,低级的中断源也有可能打断高级的中断服务程序,使中断优先级次序发生错乱,不能实现全嵌套。 4、中断结束方式 当中断服务结束时,必须给 8259A 的 ISR 相应位清 0,表示该中断源的中断服务已经结束,使 ISR 相应位清 0 的操作称为中断结束处理。 本设计中采用一般的中断结束方式。 该方式通过中断服务程序中设置 EOI 命令,使 ISR 中的级别最高的那一位清 0,只适用于全嵌套方式。因为该方式中 ISR 中的级别最高的那一位就是当前正在处理的中断源的对应位。 该方式通过初始化命令字 ICW4 的 D1 位清 0,同时将 OCW2 的 D7D6D5 设置为001 来实现。 根据硬件电路图,本设计中 8259A 的端口地址(奇地址和偶地址)具体见附 录中表 1。 根据设计要求和电路 8259A 的各个控制字如附录中表 2 所示。 3.4 键盘和显示电路 作为人机接口的键盘电路和倒计时显示、信号灯指示电路如图 3.4.1 所示。 图 3.4.1 键盘与显示电路 D034D133D232D331D430D529D628D727V C C26A09A18CS6RD5WR36R E S E T35GND7P A 04P A 13P A 22P A 31P A 440P A 539P A 638P A 737P B 018P B 119P B 220P B 321P B 422P B 523P B 624P B 725P C 014P C 115P C 216P C 317P C 413P C 512P C 611P C 710U68 25 5 AA7B1C2D6LT3BI/RBO4RBI5a13b12c11d10e9f15g14U77 44 8A7B1C2D6LT3BI/RBO4RBI5a13b12c11d10e9f15g14U87 44 8a1b2c3d4e5f6g78L E DL E D 1a1b2c3d4e5f6g78L E DL E D 2红灯 1红灯 2绿灯 1绿灯 2黄灯 1黄灯 2S1S2S3S4R71 0KR81 0KR91 0KR101 0KR11 0KR41 0KR21 0KR51 0KR31 0KR61 0KV C CV C CV C C&U97 4 L S 1 11U 1 07 4 L S 0 4nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 12 页 键盘在本次设计中主要作用是设置不同路段和时间断的通行时间, LED 显示则主要是显示通行剩余时间,所有的接口均连接在 8255A 上。 8255A 是 INTEL86 系列微处理器的配套并行接口芯片,它可为 86 系列 CPU 与外部设备之间提供并行输入 /输出通道。由于它是可编程的,可以通过软件来设 置芯片的工作方式,因此,用 8255A 连接外部设备时,通常不用再附加外部电路,使用较为方便。 8255A 的部分引脚介绍: ( 1) CS 片选信号,低电平有效。表示 8255 被选中,允许 CPU 对其进行读 /写操作,本设计中与 74LS138 的输出引脚相连。 ( 2) WR 写信号,输入,低电平有效。用于控制 CPU 对 8255 写操作,可与 A1、A0 信号配合以决定是写入控制字还是计数初值。 ( 3) RD 读信号,输入,低电平有效。用于控制 CPU 对 8255 读操作,可与 A1、A0 信号配合读取某个计数器的当前计数值。 ( 4) A0、 A1 地址输入线。用于 8255 内部寻址的 4 个端口,即 3 个输入输出口和一个控制字寄存器。一般与 CPU 的低位的地址线相连。本设计中与 8086 的 A1、 A2 相连。 根据设计原则,只要能够满足设计的要求,追求最简单化。 8255A 的 3 个口在这次设计中均工作于方式 0。 其中 A、 B 口作为输出口, C 口作为输入口。 工作方式 0 时 8255A 的基本输入 /输出方式。它只完成简单的并行输入输 出操作, CPU可以从指定端口输入信息,也可以向指定端口输出信息。如果 3 个端口均处于工作方式 0,则可以由工作方式控制字定义 16 种工作方式的组合。 图 3.4.1 中两个 LED 显示通行剩余时间,通过 7448 直接将二进制码转换为 BCD 码输出。 B 口 接两组不同的信号灯, C 口接 5 个按键 。 其中 2 个 按键 是修改 黄红两 种信号灯的亮状态时间 (因为黄绿灯持续亮总时间即红灯持续亮的时间,修改黄红灯时间时,绿灯时间也在改变,因而没有设置修改绿灯时间的按键合程序) ,同时在输入端并接上了 74LS11,当它们中有一个按键按下后, 74LS11 输出 翻转为 0,再经过 74LS04 翻转为 1。 另外两个按键 的功能是向上加、向下减时间。 根据硬件电路图和程序设计,交通信号灯的指示逻辑如附录中表 3 所示, 8255A 的各端口地址( A、 B、 C 口 地址,控制字地址 ) 如附录中表 1 所示 。 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 13 页 四、软件设计 交通信号灯的程序设计, 主要子程序 以流程图的形式表示出来,具体程序见附录。 4.1 主程序流程图 在编写 交通信号灯控制的 主程序前先做好的工作有三个:第一是确定各个芯片的端口地址;第二个是对各个芯片的工作方式的确定,即对各个芯片的状态字或控制字的确定 ;第三是 完成一些细致 工作,如联系硬件电路图对中断向量和其他一些逻辑量确定。 由于前期工作的 准备较充分 ,所以 主程序 编写起来思路较清晰。主程序 的任务有三个:第一是完成对各个芯片的工作方式和状态字的确定 ,即各个芯片的初始化 ;第二是 完成对中断向量的定义;第三个就是等待中断的出现,中断出现后,将需要处理的数据或者要实现的功能转交给中断子程序完成。 需要说明的是,本次设计的键盘中断优先级高于 1s 定时中段。 主程序的流程图如图 4.1.1 所示。 初始化 等待中断 有中断否? 进入按键中断程序 1s定时中断? 按键中断? 进入 1 秒定时中断程序 YYNNNY图 4.1.1 主程序流程图 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 14 页 4.2 LED 时间显示和红绿灯控制 LED 时间显示和红 绿灯控制子程序的流程图如图 4.2.1 所示。 关中断 ,保护现场 计时器减 1 输出 计时器计数值大于黄灯显示时间否 ? 计时器计数值大于黄灯显示时间否 ? 黄灯显示闪烁效果 显示状态 A 显示状态 C 黄灯显示闪烁效果 显示方式取反 显示方式比较 计时器计数值为 0否 ? 恢复现场 ,开中断 退出 Y Y Y N N N WAY=0 WAY=1 图 4.2.1 LED 时间显示和红绿灯控制 程序流程图 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 15 页 4.3 键盘 键盘在本系统中是设置不同路段和时间段的通行时间的人机接口,键盘子程序的流程图如图 4.3.1 所示。 初始化 ,保护现场 ,关中断 判断是否有键按下 ? 按键为 S# #灯延长 1S #灯缩短 1S 恢复现场 ,开中断 退出 N N Y Y S4S# S5S#5S 内是否有键按下 ? 图 4.3.1 键盘子程序流程图 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 16 页 五、系统调试与仿真 5.1 软件调试 ( 1)调试环境 本次软件调试 软件 为 MASM FOR WINDOWS 集成实验环境共享版。 ( 2)调试步骤 1、导入源程序到 MASM FOR WINDOWS 集成实验环境 ,截图如图 5.1.1 所示。 2、 编译源程序 在程序运行前,源程序必须先通过编译, 生成 OBJ 文件 ,同时可以观察源程序是否有语法错误 。源程序 编译 的 截图如图 5.1.2 所示。 3、生成 EXE 文件 程序正式运行前,源程序必须通过编译生成 OBJ 文件,再生成 EXE 文件。 源程序生成 EXE 文件的截图如图 5.1.3 所示。 ( 3)调试时间 2007-1-4 19: 30 图 5.1.1 导入源程序到编译环境 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 17 页 图 5.1.2 编译源程序 图 5.1.3 生成 EXE 文件 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 18 页 六、 设计结论 本次设计的交通信号灯控制基本上可以实现 课题 所要求的功能。在设计之初,考虑到现实中的一些实际情况,于是在本设计中附加了一个键盘模块。键盘模块主要是 根据 不同的 路段和时间段 实现对车辆 通行时间的设定 ,以改善车辆通行状况。由于自身知识水平 以及现实条件 的限制, 不能很好的对系统的可行性进行验证分析。 七、 实习体会 为期两周的微机原理及应用实习已经告一段落,回首两周所作的工作,感受颇多。 总结起来有 4 点: 1、本次设计得出一点小体会。 本次设计的工作顺序是:大致确定各个芯片的工作方式、画硬件电路图、以表格形式编写各个芯片的地址和控制字、确定主程序流程图 、确定子程序流程图、编写各子程序、编写主程序。 发现这种工作顺序的一个有点就是前后联系紧密,且不容易漏掉 事项,最重要的是似乎自身站在一个最高点,总揽全局 , 这对自身来说是很重要的,因为设计思路一直保持清晰 ,不会走弯路或少走弯路。 2、 凡事需量力而行。量力而行首先体现在选课题时, 选课题要根据自身知识水平来进行。 虽说只是一次课程设计,但也有其实现 难 度。 运用自身最熟悉的知识完成一次设计,未必不是件有意义的事。因为既提高自身对已学知识的进一步掌握,又可以增加对学习该门课程的信心。量力而行还体现在课题功能的扩充问题上。课 题要求的基本功能是根本,放弃根本而去追求上层的枝干可能让自己碰壁受挫。当反过头去实现基本功能时 ,都会觉得有难度。可谓 为 捡芝麻丢了西瓜 ,但结果是什么也没有捡到 。 3、 在作设计前,信心十足,希望把这次设计作的 尽量 完美 一些。但在实现起来感觉到困难重重,很多内容不是自己怎么想的就可以 怎么 实现。这需要耐心和恒心不断的摸索和论证,如一种工作方式的确定,它涉及到多方面的内容,需学会怎么协调,怎么取舍。 4、这点也是最重要的,在做一件事之前如果觉得自己做不好,那肯定做不好,因为在战争还未开始就已经认输了 ,做 事时肯定没什么信心 。 总之 , 这次实习有辛酸也有收获 。 芯片 及其对应端口 8086 地址口 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 19 页 附 录 电路原理图 A158 A7 A6 A5 A4 A3 A2 A1 A0 十六进制地址 8255A A 口 1 1 1 0 1 0 0 0 0 FFD0H B 口 1 1 1 0 1 0 0 1 0 FFD2H C 口 1 1 1 0 1 0 1 0 0 FFD4H 控制字 1 1 1 0 1 0 1 1 0 FFD6H 8259A 偶地址 1 1 1 0 0 0 1 0 0 FFC4H 奇地址 1 1 1 0 0 0 1 1 0 FFC6H 8253A 计数器 0 1 1 1 0 0 1 0 0 0 FFC8H 计数器 1 1 1 1 0 0 1 0 1 0 FFCAH 计数器 2 1 1 1 0 0 1 1 0 0 FFCCH 控制字 1 1 1 0 0 1 1 1 0 FFCEH 芯片及对应控制字 控制字 D7 D6 D5 D4 D3 D2 D1 D0 十六进制 8259A ICW1 0 0 0 1 1 0 1 1 1BH ICW2 1 0 0 0 0 0 0 0 80H ICW4 0 0 0 0 0 1 0 1 05H OCW1 1 1 1 1 1 1 0 0 FCH OCW2 0 0 1 0 0 1 1 1 27H 8253A 控制字 0 0 0 1 1 0 1 0 1 35H 控制字 1 0 1 1 1 0 1 0 1 75H 8255A 工作方式 1 0 0 0 1 0 0 1 89H 置位复位 0 1 1 1 1 1 1 1 9FH 道路 状态 黄灯 2 绿灯 2 红灯 2 黄灯 1 绿灯 1 红灯 1 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 十六进制 A 1 1 0 1 1 1 1 0 DEH B 1 0 1 1 1 1 1 0 BEH C 1 1 1 0 1 1 0 1 EDH D 1 1 1 0 1 0 1 1 EBH 附: 1 东西方向; 2 南北方向 A 东西方向的车禁止通行;南北方向的车可以通行( 红灯 1、绿灯 2 亮 ) B 东西方向的车禁止通行;南北方向的车可以通行( 红灯 1、黄灯 2 亮 ) C 东西方向的车 可以 通行;南北方向的车 禁止 通行( 绿 灯 1、 红 灯 2 亮 ) D 东西方向的车 可以 通行;南北方向 的车 禁止 通行( 黄 灯 1、 红 灯 2 亮 ) 表 1 所有芯片的编址表 表 2 所有芯片的控制字表 表 3 东西南北四方向的交通灯的亮灭逻辑表 D034D133D232D331D430D529D628D727VCC26A09A18CS6RD5WR36RESET35GND7PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710U6 8255AVCC40HOLD31HLDA30DT/R27DEN26TEST23READY22RESET21CLK19BHE/S734MN/MX33M/IO28NMI17A16/S338A17/S437A18/S536A19/S635AD016AD115AD214AD313AD412AD511AD610AD79AD88AD97AD106AD115AD124AD133AD142AD1539GND20ALE25INTR26INTA24WR29RD32U18086VCC24D08D17D26D35D44D53D62D71A019A120CS21GND12CLK09CLK115CLK218GATE011GATE114GATE216OUT010OUT113OUT217RD22WR23U58253AVCC28D011D110D29D38D47D56D65D74A027CS1RD3WR2CAS012CAS113CAS215GND14IR018IR119IR220IR321IR422IR523IR624IR725SP/EN16INT17INTA26U4 8259AA7B1C2D6LT3BI/RBO4RBI5a13b12c11d10e9f15g14U77448A7B1C2D6LT3BI/RBO4RBI5a13b12c11d10e9f15g14U87448A1B2C3G2A4G2B5G16Y77Y69Y510Y411Y312Y213Y114Y015U2 74138a1b2c3d4e5f6g78LEDLED1a1b2c3d4e5f6g78LEDLED2红灯1红灯2绿灯1绿灯2黄灯1黄灯2S1 S2 S3 S4X15MHZF/C13READY5EFI14CLK8CSYNC1PCLK2ASYNC15OSC12RESET10X117X216RDY14RDY26AEN13RES11AEN27U3 8284AC122pFC222pFR7 10KR8 10KR9 10KR10 10KR110KR410KR210KR510KR310KR610KVCCVCCVCCVCCVCCVCC&U974LS111U1074LS04VCCVCC1U1174LS04nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 20 页 源程序 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 21 页 主程序 DATAS SEGMENT ;此处输入数据段代码 TIME DB 23H ;初始化红灯亮时间为 35 秒 REDTIME DB 23H ;初始化红灯亮时间为 35 秒 YTIME DB 05H ;初始化黄灯亮时间为 5 秒 WAY DB 00H DATAS ENDS STACKS SEGMENT PARA STACKSTACK;此处输入堆栈段代码 DB 100 DUP (?) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START PROC FAR BEGIN:PUSH DS ;定义数据段 MOV AX,0 PUSH AX MOV AX,DATAS MOV DS,AX ; 8253初始化 ;一秒定时,计数器初值由时钟频率决定,本次计数时钟的频率为 CPU 时钟的 1/2,即 2.5MHz MOV DX, 0FFCEH MOV AL,35H ;将通道 0 设置成工作方式 2,十进制计数,先读写低 8 位后读写高 8 位 OUT DX,AL MOV DX,0FFC8H ;设置通道 0 的计数初值 MOV AL,88H ;先发送低 8 位后发送高 8 位( 5000 的十六进制为 1388H) OUT DX,AL MOV AL,13H OUT DX,AL MOV DX, 0FFCEH MOV AL,75H ;将通道 1 设置成工作方式 2,十进制计数,先读写低 8 位后读写高 8 位 OUT DX,AL MOV DX,0FFCAH ;设置通道 1 的计数初值 MOV AL,0F4H ;先发送低 8 位后发送高 8 位( 500 的十六进制为 1F4H) OUT DX,AL MOV AL,01H OUT DX,AL MOV DX, 0FFCEH MOV AL,35H ;将通道 2 设 置成工作方式 2,十进制计数,先读写低 8 位后读写高 8 位 OUT DX,AL MOV DX,0FFC8H ;设置通道 2 的计数初值 MOV AL,88H ;先发送低 8 位后发送高 8 位( 5000 的十六进制为 1388H) OUT DX,AL MOV AL,13H OUT DX,AL ; 8255初始化 MOV DX, 0FFD6H nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 22 页 MOV AL,89H ;设置 8255A 的工作方式: A 口、 B 口、 C 口均工作于方式 0 OUT DX,AL ; 8259初始化 ;送 8259A 的控制字 MOV DX,0FFC4H ;将 8259 控制字的偶地址送给 DX MOV AL,1BH ;将 ICW1 的控制字送给 AL OUT DX,AL ;发送 ICW1 MOV DX,0FFC6H ;将 8259 控制字的奇数地址送给 DX MOV AL,80H ;将 ICW2 的控制字送给 AL OUT DX,AL ;发送 ICW2 MOV AL,05H ;将 ICW4 的控制字送给 AL OUT DX,AL ;发送 ICW4 ;送 8259A 的状态字 MOV AL,0FCH ;发送 OCW1,屏蔽除 IR0、 IR1 外所有的中断 MOV DX,0FFC6H ;OCW1 必须发送到奇地址端口 OUT DX,AL MOV AL,27H ;发送 OCW2,工作方式为普通 EOI MOV DX,0FFC4H ;OCW2 必须发送到偶地址端口 OUT DX,AL ; 8253A 产生秒中断 向量定义 MOV AX,0 MOV ES,AX MOV BX,80*4 ; 中断类型号为 80 MOV AX,OFFSET YIMIAO1 ; 取 1S 计时中断子程序的偏移地址 MOV ES:WORD PTRBX,AX ; 将偏移地址存到 ES 的 2 个低字节地址 MOV AX,SEG YIMIAO1 ; 取 1S 计时中断子程序的段地址 MOV ES:WORD PTRBX+2,AX ; 将段地址存到 ES 的 2 个高字节地址 ; 按键中断向量定义 MOV AX,0 MOV ES,AX MOV BX,82H*4 ; 中断类型号为 82 MOV AX,OFFSET ANJIAN ; 取修改红绿灯持续时间子程序的偏移地址 MOV ES:WORD PTRBX,AX ; 将偏移地址存到 ES 的 2 个低字节地址 MOV AX,SEG ANJIAN ; 取修改时间子程序的段地址 MOV ES:WORD PTRBX+2,AX ; 将段地址存到 ES 的 2 个高字节地址 ;初始化 8255A各口 MOV AL, TIME ;初始化 8255A 的 A 口 ,初始状态为显示 总时间 MOV DX,0FFD0H ;取 A 口地址 OUT DX,AL MOV AL,0EEH ;初态设置为东西南北四方向的红灯全亮 MOV DX,0FFD2H ;取 B 口地址 OUT DX,AL MOV AL,0FFH ;设置 C 口为全高电平 MOV DX,0FFD4H ;取 C 口地址 OUT DX,AL STI ; 开中断 nts基于 8086 微处理器的交通 信号 灯 控制 设计 第 23 页 HERE:JMP HERE ; 等待中断 ,中断产生后,进入中断子程序 JMP HERE ;中断完成后 继续 等待下一次中断 RET START ENDP ; 8253A 产生秒中断 YIMIAO1 PROC FAR CLI ; 关中断 PUSH AX ; 保护现场 PUSH BX PUSH CX PUSH DX MOV AL,TIME DEC AL ;产生一秒中断将 AL 减 1(与时间显示无关系 ) MOV TIME,AL ;将变化的时
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
2:不支持迅雷下载,请使用浏览器下载
3:不支持QQ浏览器下载,请用其他浏览器
4:下载后的文档和图纸-无水印
5:文档经过压缩,下载后原文更清晰
|