《课程设计交通灯指挥系统.pdf》由会员分享,可在线阅读,更多相关《课程设计交通灯指挥系统.pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 1 摘要:红绿交通灯是我们日常生活经常见到也是必不可少的,随着城市社会经济的发展,城市道路交通供给和需求的矛盾日益突出,并引发很多交通问题。当今,红绿灯安装在各个交通路口上,已经成为疏导交通车辆最常见和最有效的手段。绿灯是通行信号,面对绿灯的车辆可以直行、左转弯和右转弯。面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。我们设计的交通灯就是依据上述思路控制十字路口南北东西四个方向车辆通行的。经过上学期的基础以及前一阶段的学习,利用彩灯我们做出了一个简单的交通灯指挥系统,通过控制彩灯的亮灭来达到红绿灯的效果,从而控制交通。之前我们学习了微机原理与接口技术这门
2、课程,课上我们学到了一些计算机硬件工作的基本原理,以及一些简单的汇编语言程序设计方法并了解了一些芯片的功能。根据题目以及老师上课的要求,我用微机原理与接口实验仪来进行交通灯指挥系统的设计。实验中用到芯片 8253、芯片 8255、芯片 8279、LED 灯、数码管等,利用这些器件的工作原理以及通过组合可以模仿各种彩灯的正常工作亮灭,特殊情况下的手动键盘开关以及恢复等一系列过程。在实现运行的过程中,通过汇编语言,利用上述几种芯片,进行编程设计,最终顺利完成了实验,并进行了书本上的理论与实践完美结合,获益匪浅。2 交通灯指挥系统 1、需求分析与总体设计方案.5 1.1 需求分析.5 1.2 总体设
3、计方案.5 2、硬件说明.5 2.1 硬件使用说明.6 2.2 芯片简介.6 2.2.1 8253 芯片简介.6 2.2.1.1 8253 功能介绍.6 2.2.1.2 8253 工作原理.8 2.2.1.3 8253 内部结构.8 2.2.1.4 8253 的通道的工作方式.12 2.2.1.5 读取计数器的当前值.13 2.2.1.6 8253 的级联和地址分配.13 2.2.2 8255 芯片简介.14 2.2.2.1 8255 基本工作原理.14 2.2.2.2 8255 基本结构.16 2.2.2.3 8255 引脚功能说明.16 2.2.2.4 8255 的读写控制.17 2.2.
4、3 8279 芯片简介.17 2.2.3.1 8279 功能介绍.19 2.2.3.2 8279 内部结构.19 2.2.3.3 8279 管脚简介.19 2.2.3.4 8279 工作方式.20 2.2.3.5 8279 命令功能表.21 3、硬件连接说明与程序流程.23 3.1 硬件连接说明.23 3 3.2 硬件连接图.23 4、程序代码.24 4.1 程序流程图.24 4.2 程序代码及说明.25 5、问题分析与解决方案.37 6、程序测试与分析.37 6.1 实验连线图.38 6.2 程序测试结果.38 6.3 结果分析.38 7、心得体会.39 8、参考文献.41 4 1、需求分析
5、与总体设计方案 1.1 需求分析 交通灯是我们日常生活经常见到也是必不可少的。随着城市社会经济的发展,城市道路交通供给和需求的矛盾日益突出,并引发很多交通问题。现今,交通指挥灯已成为疏导交通车辆最常见和最有效的手段。交通灯使得人们出行更加的方便、安全、有序。因此,对交通指挥灯的研究已变成一个十分重要的课题。1.2 总体设计方案 十字路口的交通灯包括东西南北四个方向,而通常情况下东西路口的交通灯的亮灭情况是相同的,南北方向交通灯的亮灭情况是相同的,所以将十字路口的交通灯简化为:东西方向的交通灯为同一组,南北方向的交通灯为同一组。交通指挥灯的设计不仅需要满足平常情况下指挥交通的作用,还需满足紧急情
6、况的手动闸。正常情况下:状态一:南北红灯,东西绿灯 状态二:南北红灯,东西黄灯 状态三:南北绿灯,东西红灯 状态四:南北黄灯,东西红灯 状态五:重复以上四种状态 紧急情况下(键盘控制):数字 0:恢复 数字 1:南北红灯,东西绿灯 5 数字 2:南北绿灯,东西红灯 数字 4:东西南北全红 数字 5:东西南北全绿 数字 6:东西南北全黄 2、硬件说明 2.1.硬件使用说明 用实验箱中提供的二极管作为南北路口和东西路口的模拟交通灯;用可编程并行接口芯片 8255 控制模拟交通灯的亮与灭;用可编程定时器/计数器芯片 8253 实现模拟交通灯亮与灭的时间延迟的控制;用可编程逻辑器件 8279 实现交通
7、灯倒计时的显示。2.2.芯片简介 2.2.1 8253 芯片简介 2.2.1.1 8253 功能介绍 intel8253 是 NMOS 工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如 8253(2.6MHz),8253-5(5MHz)。6 图 2-1 8253 引脚图 8253 内部有三个计数器,分别称为计数器 0、计数器 1 和计数器 2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端 CLK,一个为门控信号输入端 GATE,
8、另一个为输出端 OUT。每个计数器内部有一个 8 位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。执行部件实际上是一个 16 位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器 OL 用来锁存计数执行部件 CE 的内容,从而使 CPU 可以对此进行读操作。顺便提一下,CR、CE 和 OL 都是 16位寄存器,但是也可以作 8 位寄存器来用。7 2.2.1.2 8253 工作原理 8253 具有 3 个独立的计数通道,采用减 1 计数方式。在门控信号有效时,每输入 1 个计数脉
9、冲,通道作 1 次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。2.2.1.3 8253 内部结构 8253 芯片有 24 条引脚,封装在双列直插式陶瓷管壳内。图 2-2 8253 内部结构框图 (1)数据总线缓冲器 数据总线缓冲器与系统总线连接,8 位双向,与 CPU 交换信息的通道。这是 8253 与 CPU 之间的数据接口,它由 8 位双向三态缓冲存储器构成,是 CPU 与 8253 之间交换信息的必经之路。(2)读/写控制 8 表 2.1 8253 端口选择 读/写控制分别连接系统的 IOR#和 IOW#,由 CPU 控制着访问 8253的内部通道。接收 CPU 送入的读
10、/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是 8253 芯片内部的控制器。A1A0:端口选择信号,由 CPU 输入。8253 内部有 3 个独立的通道,加上控制字寄存器,构成 8253 芯片的 4 个端口,CPU 可对 3 个通道进行读/写操作3 对控制字寄存器进行写操作。这 4 个端口地址由最低 2 位地址码 A1和 A0 来选择。如表所示。(3)通道选择 CS片选信号,由 CPU 输入,低电平有效,通常由端口地址的高位地址译码形成。RD、WR读/写控制命令,由 CPU 输入,低电平有效。RD 效时,CPU 读取由 A1、A0 所选定的通道内计数器的内容。WR 有效时
11、,CPU 将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。CPU 对 8253 的读/写操作。9 (4)计数通道 02 每个计数通道内含 1 个 16 位的初值寄存器、减 1 计数器和 1 个 16位的(输出)锁存器。8253 内部包含 3 个功能完全相同的通道,每个通道内部设有一个 16 位计数器,可进行二进制或十进制(BCD 码)计数。采用二进制计数时,写入的初值范围为 0000H0FFFFH,最大计数值是0000H,代表 65536。采用 BCD 码计数时,写入的初值范围为 00009999,最大计数值是 0000,代表 10000。与此计数器相对应,每个通道内设有
12、一个 16 位计数值锁存器。必要时可用来锁存计数值。(特别说明:8253计数器的值先减 1 再判断是否为 0,为 0 就中断了,所以最大初始值为0,这样减 1 以后,不为 0,所以为最大的,取决于 CF 标志位)当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从 CLK 端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。OUT 端将有输出。表示计数次数到。当某个通道用作定时器时。由 CLK 输入一定频率的时钟脉冲。根据要求定时的时间长短确定所需的计数值。并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”。OUT
13、将有输出,表示定时时间到。允许从 CLK 输入的时钟频在 12MHz 范围内。因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。而后者是内时钟脉冲进行减“1”计数。作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:10 定时系数=需要定时的时间/时钟脉冲周期 设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;计数/定时:向通道写入计数值,启动计数操作;读取当前的计数值:向指定通道读取当前计数器值时,8253 将计
14、数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。计数到:当计数器减 1 为 0 时,通过引脚 OUT 向外输出“到”的脉冲信号。计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。(5)方式选择控制字 图 2-3 8253 方式控制字 8253的初始化编程就是对其工作方式的确定。具体实现就是在8253上电后,由 CPU 向 8253 的控制寄存器写入一个控制字,就可以规定 8253 11 的工作方式、计数值的长度以及计数所用的数制等,另外根据要
15、求将计数值写入 8253 的相应通道。8253 的一个方式控制字只决定一个技术通道的工作模式。2.2.1.4 8253 的通道工作方式 8253 中各通道可有 6 种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。在这次设计中我们只用到了方式 2 和方式 3,8253 的这两种工作方式如下:(1)方式 2:速率波发生器 工作方式 2 被称作速率波发生器。进入这种工作方式,OUT 输出高电平,装入计数值 n 后如果 GATE 为高电平,则立即开始计数,OUT 保持为高电平不变;待计数值减到“1”和“0”之间,OUT 将输出宽度为一个 CLK 周期的负脉冲,计数值为“0”时,自动重新装
16、入计数初值 n,实现循环计数,OUT 将输出一定频率的负脉冲序列,其脉冲宽度固定为一个 CLK 周期,重复周期为 CLK 周期的 n 倍。如果在减“1”计数过程中,GATE 变为无效(输入 0 电平),则暂停减“1”计数,待 GATE 恢复有效后,从初值 n 开始重新计数。这样会改变输出脉冲的速率。如果在操作过程中要求改变输出脉冲的速率,CPU 可在任何时候,重新写人新的计数值,它不会影响正在进行的减“1”计数过程,而是从下一个计数操作用期开始按新的计数值改变输出脉冲的速率。(2)方式 3:方波发生器 工作方式 3 被称作方波发生器。任一通道工作在方式 3,只在计数 12 值 n 为偶数,则可
17、输出重复周期为 n、占空比为 1:1 的方波。进入工作方式 3,OUT 输出低电平,装入计数值后,OUT 立即跳变为高电平。如果当 GATE 为高电平,则立即开始减“1”计数,OUT 保持为高电平,若 n 为偶数,则当计数值减到 n/2 时,OUT 跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值 n,实现循环计数。这时 OUT 端输出的周期为 nCLK 周期,占空比为 1:1 的方波序列;若 n 为奇数,则 OUT 端输出周期为 nCLK 周期,占空比为(n+1)/2)/(n-1)/2)的近似方波序列。如果在操作过程中,GATE 变为无效,则暂停减“1”计数过程,直到 GAT
18、E 再次有效,重新从初值 n 开始减“l”计数。如果要求改变输出方波的速率,则 CPU 可在任何时候重新装入新的计数初值 n,并从下一个计数操作周期开始改变输出方波的速率。2.2.1.5 读取计数器的当前值 直接读计数器:输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。但由于计数器处于工作状态,读出值不一定能稳定。先锁存再读取:通过方式选择控制字对指定通道(SC1、SC0)的计数值锁入锁存器(RL1RL0=00),锁存器一旦锁存了当前计数值,就不再随计数器变化直到被读取。读计数器通道(有锁存器)。2.2.1.6 8253 的级联和地址分配 13 8
19、353 采用级联方式。此实验中使用 8253 的 0 通道和 1 通道以实现级联。通道 0 的工作在实验中起到的作用是在 OUT0 端输出一个比较合适的时钟频率,然后用通道 1 进行时间的控制。通道 1 在控制灯闪烁的时候采用的工作方式是方式 3,这样可以让 8255 的 A 端口检测到输出端的方波信号。2.2.2.8255 芯片简介 2.2.2.1 8255 的基本工作原理 8255 是 Intel 公司生产的可编程输入输出接口芯片,它是具有 3个 8 位的并行 I/O 端口,具有三种工作方式,被广泛地使用于单片机的并行 I/O 端口。工作方式 0:基本输入输出方式 工作方式 1:选通输入输
20、出方式 工作方式 2:双向传送方式 65412345678910111213141516171819204039383736353433323130292827262524232221P A3P A2P A1P A0RDCSGNDA0A1P A7P A6P A5P A4P A0P A1P A2P A3P B0P B1P B2P A5P A6P A7P A0WRRESETD0D1D2D3D4D5D6D7VccP A7P A6P B5P B4P B38255 图 2-4 8255 引脚图 14 图 2-5 8255 工作方式控制字 图 2-6 8255 C 口按位置位控制字 D7D6D5D4D3D
21、2D1D01C口(低4位)B口方式选择010101输出输入输出输入方式0方式1B组控制输入1方式选择方式1方式000C口(低4位)输入输出输出A组控制A口100方式2101XD7D6D5D4D3D2D1D01C口(低4位)B口方式选择010101输出输入输出输入方式0方式1B组控制输入1方式选择方式1方式000C口(低4位)输入输出输出A组控制A口100方式2101X 15 2.2.2.2 8255 的内部结构 图 2-7 8255 内部结构 2.2.2.3 8255 引脚功能说明 RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有 I/O 口均被置
22、成输入方式。PA0PA7:端口 A 输入输出线,一个 8 位的数据输出锁存器/缓冲器,一个 8 位的数据输入锁存器。PB0PB7:端口 B 输入输出线,一个 8 位的 I/O 锁存器,一个 8 位的输入输出缓冲器。PC0PC7:端口 C 输入输出线,一个 8 位的数据输出锁存器/缓冲器,16 一个 8 位的数据输入缓冲器。端口 C 可以通过工作方式设定而分成 2 个4 位的端口,每个 4 位的端口包含一个 4 位的锁存器,分别与端口 A和端口 B 配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许 8255 与 CPU 进行通讯。R
23、D:读信号线,当这个输入引脚为低电平时,允许 8255 通过数据总线向 CPU 发送数据或状态信息,即 CPU 从 8255 读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,允许 CPU 将数据或控制字写 8255。D0D7:三态双向数据总线,8255 与 CPU 数据传送的通道,当 CPU 执行输入输出指令时,通过它实现 8 位数据的读/写操作,控制字和状态信息也通过数据总线传送。2.2.2.4 8255 的读写控制 8255 的读/写控制逻辑电路接受 CPU 发来的控制口号 RD、WR、RESET和地址信号 A1A0。然后根据命令端口,控制信号的要求,将端口的数据读出选信 CPU
24、 或者将 CPU 送来的数据写入端口,各端口的工作状态。如表所示。通过用输出指令对 8255A 的控制字寄存器编程,写入设定工作方式的控制字,可以让 3 个数据口以不同的方式工作,端口 A 可工作于 3 种方式的任一种,端口 B 只能工作于方式 0 和方式 1,端口 C 除了用于输入输出端口外,还能配合 A 口和 B 口工作,为这两个端口的输入输出操 17 作提供联系信号。2.2.3 8279 芯片简介 2.2.3.1 8279 功能介绍 8279 是可编程的键盘、显示接口芯片。它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。8279 内部有键盘 FIFO(先进先出堆栈)/
25、传感器,双重功能的 8*8=64B RAM,键盘控制部分可控制 8*8=64 个按键或 8*8 阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。显示 RAM 容量为 16*8,最大配置可达 16 位 LED 数码显示。图 2-8 8279 芯片管脚图 18 2.2.3.2 8279 内部结构 图 2-9 8279 内部结构图 2.2.3.3 8279 管脚简介(1)数据线 DB0DB7 是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送 CPU 和 8279 之间的数据和命令。(2)地址线 CS=0 选中 8279,当 A0=1 时,为命令字及状态字地址;当 A0=0 时,
26、为片内数据地址,故 8279 芯片占用 2 个端口地址。(3)控制线 19 CLK:8279 的时钟输入线。IRQ:中断请求输出线,高电平有效。/RD、/WR:读、写输入控制线。SL0-SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。RL0-RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。SHIFT:来自外部键盘或传感器矩阵的输入信号,它是 8279 键盘数据的次高位即 D6 位的状态,该位状态控制键盘上/下档功能。在传感器方式和选通方式中,该引脚无用。CNTL/S:控制/选通输入线,高电平有效。键盘方式时,键盘数据最高位(D7)的信号输入到该引脚,以扩充键功能;选通
27、方式时,当该引脚信号上升沿到时,把 RL0-RL7 的数据存入 FIFO RAM 中。OUTA0-OUTA3:通常作为显示信号的高 4 位输出线。OUTB0-OUTB3:通常作为显示信号的低 4 位输出线。/BD:显示熄灭输出线,低电平有效。当/BD=0 时将显示全熄灭。2.2.3.4 8279 的工作方式 8279 有三种工作方式:键盘方式、显示方式和传感器方式。(1)键盘工作方式 8279 在键盘工作方式时,可设置为双键互锁方式和 N 键循回方式。20 双键互锁方式:若有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最后一个被释放的键,并把该键值送入 FIFO RAM中。N 键循回
28、方式:一次按下任意个键均可被识别,按键值按扫描次序被送入 FIFO RAM 中。(2)显示方式 8279 的显示方式又可分为左端入口和右端入口方式。显示数据只要写入显示 RAM,则可由显示器显示出来,因此显示数据写入显示 RAM 的顺序,决定了显示的次序。左端入口方式即显示位置从显示器最左端 1 位(最高位)开始,以后显示的字符逐个向右顺序排列;右端入口方式即显示位置从显示器最右端 1 位(最低位)开始,已显示的字符逐个向左移位。但无论左右入口,后输入的总是显示在最右边。(3)传感器方式 传感器方式是把传感器的开关状态送入传感器 RAM 中。当 CPU 对传感器阵列扫描时,一旦发现传感器状态发
29、生变化就发出中断请求(IRQ 置 1),中断响应后转入中断处理程序。2.2.3.5 8279 命令功能表 21 表 2.2 8279 命令功能表 22 3、硬件连接说明与程序流程 3.1 硬件连接说明 8253 通道 0 的地址端口为 208H,通道 1 的地址端口为 209H,通道2 的地址端口为 20AH,8253 的控制端口的地址为 20BH,通道 0 和通道 1级联,用来得到实验所需的频率,OUT1 与 8255 的 PA0 口连接。8255 A 口地址为 200H,B 口地址为 201H,控制口地址为 203H,8255的 PA0 口接入 8253 的脉冲,B 口用于输出,连接彩灯。
30、8279 芯片的地址为 210H,用于显示彩灯的倒计时。3.2 硬件连接图 图 3-1 硬件连接图 23 4、程序代码 4.1 程序流程图 24 4.2 程序代码与说明 Z8279 EQU 212H D8279 EQU 210H CODE SEGMENT ASSUME CS:CODE DS:DATA DATA SEGMENT A DB 1 DUP(?)B DB 1 DUP(?)C DB 1 DUP(?)COUNT1 DB 0 COUNT2 DB 0 DATA ENDS START:MOV DX,20BH MOV AL,00110111B OUT DX,AL MOV DX,208H MOV AL
31、,00H OUT DX,AL MOV AL,50H 25 OUT DX,AL MOV DX,20BH MOV AL,01110111B OUT DX,AL MOV DX,209H MOV AL,00H OUT DX,AL MOV AL,02H OUT DX,AL ;8253 初始化 MOV DX,203H MOV AL,10010000B OUT DX,AL ;8255 初始化 L0:MOV A,19H MOV B,14H MOV C,05H L1:MOV DX,201H 26 MOV AL,01111011B ;南北红,东西绿 OUT DX,AL MOV CL,A CALL SHOW CAL
32、L yanshi CALL shoudong DEC A CMP A,05H JNZ L1 PP:MOV DX,201H MOV AL,01110111B ;南北红,东西黄 OUT DX,AL MOV CL,A CALL SHOW CALL yanshi CALL shoudong 27 DEC A CMP A,00H JNZ PP L4:MOV DX,201H MOV AL,11001111B ;南北绿,东西红 OUT DX,AL MOV CL,B CALL SHOW CALL yanshi CALL shoudong DEC B CMP B,00H JNZ L4 L5:MOV DX,201
33、H MOV AL,10101111B ;南北黄,东西红 OUT DX,AL 28 MOV CL,C CALL SHOW CALL yanshi CALL shoudong DEC C CMP C,00H JNZ L5 JMP L0 yanshi PROC MOV COUNT1,0FFH MOV COUNT2,0FFH SECD:DEC COUNT2 JNZ SECD DEC COUNT1 JNZ SECD RET yanshi ENDP 29 SHOW PROC NEAR MOV DX,Z8279 MOV AL,00H OUT DX,AL MOV AL,38H OUT DX,AL;初始化 82
34、79 MOV DX,D8279 MOV AL,00H OUT DX,AL OUT DX,AL OUT DX,AL OUT DX,AL OUT DX,AL OUT DX,AL OUT DX,AL OUT DX,AL;熄灭 8279 MOV AL,CL MOV AH,0 MOV DL,10 30 DIV DL ;AL/DL=AL.BH MOV BL,AH ;将余数(即秒的个位)放在 BL 中 MOV BH,AL ;将商(即秒的十位)放在 BH 中 CALL TRANS;调用 8279 显示秒的个位 MOV BL,BH CALL TRANS;调用 8279 显示秒的十位 RET SHOW ENDP
35、TRANS PROC NEAR;数码管显示程序 ONE:CMP BL,1 JNZ TWO MOV AL,00000110B TWO:CMP BL,2 JNZ TRI MOV AL,01011011B TRI:CMP BL,3 JNZ FOR 31 MOV AL,01001111B FOR:CMP BL,4 JNZ FIV MOV AL,01100110B FIV:CMP BL,5 JNZ SIX MOV AL,01101101B SIX:CMP BL,6 JNZ SEV MOV AL,01111101B SEV:CMP BL,7 JNZ EIT MOV AL,00000111B EIT:CMP
36、 BL,8 JNZ NIN MOV AL,01111111B NIN:32 CMP BL,9 JNZ ZRO MOV AL,01101111B ZRO:CMP BL,0 JNZ SHW MOV AL,00111111B SHW:MOV DX,D8279 OUT DX,AL RET TRANS ENDP shoudong PROC NEAR ;手动开关 MOV DX,Z8279 IN AL,DX AND AL,0FH CMP AL,00H JE JIESHU MOV AL,40H OUT DX,AL MOV DX,D8279 33 IN AL,DX NHDL:CMP AL,02D JNZ NLD
37、H MOV DX,201H;8255B MOV AL,01111011B ;南北红东西绿 OUT DX,AL CALL HUIFU NLDH:CMP AL,10D JNZ HH MOV DX,201H;8255B MOV AL,11001111B ;南北绿东西红 OUT DX,AL CALL HUIFU HH:CMP AL,01D JNZ LL MOV DX,201H;8255B 34 MOV AL,01101111B ;红红 OUT DX,AL CALL HUIFU LL:CMP AL,09D JNZ YY MOV DX,201H;8255B MOV AL,11011011B ;绿绿 OUT
38、 DX,AL CALL HUIFU YY:CMP AL,33D JNZ JIESHU MOV DX,201H;8255B MOV AL,10110111B ;黄黄 OUT DX,AL CALL HUIFU JIESHU:RET 35 shoudong ENDP HUIFU PROC NEAR WAITS:MOV DX,Z8279 IN AL,DX AND AL,0FH CMP AL,00H JE WAITS MOV AL,40H OUT DX,AL MOV DX,D8279 IN AL,DX CMP AL,03D JNZ WAITS RET HUIFU ENDP CODE ENDS END S
39、TART 36 5、问题分析与解决方案 在实验过程中遇到过一些问题,也通过查资料或者问老师、同学得到了解决。在此列举:(1)在数码管显示数字时,数字跳转的周期太短,不到一秒;解决办法:重新设计了延时小程序,MOV COUNT1,0FFH MOV COUNT2,0FFH SECD DEC COUNT2 JNZ SECD DEC COUNT1 JNZ SECD RET(2)在设置红黄绿灯的时间时,遇到了麻烦,由于原程序设置的时间太短,所以需要延长各个灯的时间;解决办法:先通过查阅书籍等,仔细地看了整个程序,并画了程序流程图,认真地了解了整个代码,然后根据对程序的了解将彩灯的时间改成了自己满意的时长
40、。6、程序测试与分析 37 6.1 实验连线图 图 6-1 实验连线图 6.2 程序测试结果 拿到实验箱,我首先对所要用的芯片做简单的检查,将试验箱连接电脑,发现没有问题,便继续做实验。然后将试验箱按照上述的硬件连接要求将其连接,并调试程序。设计按照题目的要求顺利地完成了以下各种功能。(1)运行程序,小灯泡按照之前设定的规则依次亮灭,并且数码管显示亮灯的倒计时。(2)特殊情况下的键盘控制,也按照之前设定的发挥各自的功能。6.3 结果分析 实验表明我的硬件连接以及程序都没有出问题,实验结果很好。38 7、心得体会 在设计交通指挥灯系统的过程中,我认真查阅资料,学习关于这方面的知识,比如 8279
41、 芯片的使用,如何使之显示所需的倒计时以及交通有哪些规则等.在理论学习的基础上,又下了一次苦工夫,算是明白了设计一个系统的过程;也让我体会到要想成功地设计某个东西,光学好专业知识是不够的,必须要系统的知识,无论在哪方面都要有个明白的概念,只有这样才不至于在设计过程中摸不着头脑,知道去哪些是需要查的资料,还有一点,我觉得我的汇编语言学得不够好,以至于我只能借助参考资料,查每一条指令的作用与功能,才能掌握整个程序,这样一来又巩固了我的对汇编语言的了解.整个过程用到了三个芯片,电路连接并不复杂,只不过在设计时我们花费了很大的功夫。并且 8253、8255 芯片我们上学期在微型计算机原理与接口技术一门
42、课中学过,但是还是不太熟悉,又翻阅了之前学习的课本,才又拾回来一些。如此,我体会到学习理论知识固然重要,但在你学完了之后,你不在实践中运用你所学的知识,我想学是白学了,过一段时间后,你可能什么都记不起来了,或许在学的时候心里有一个概念,认为这个知识我曾经学得不错,我现在怎么想不起来了,一心想依赖课本;如果我们用实践来学习知识,你会努力地去搜索你想要需要的东西,即使是过了一段时间后,你也会记得你曾经对这点不明白认真地查阅过,所以你不容易忘记!而且在用 8279 完成数码管显示时,由于我们对 8279 不太熟悉,我们花了一段时间来研究芯片,但经过努力,最终成功地编程实现了。39 这门硬件课程设计,
43、让我们获益匪浅。这个过程中我们学到了很多的东西,而且最后的结果也让我们比较满意的。刚开始接触题目时,觉得没有思路,感觉很难,尽管老师已经帮我们把题目分析得比较细了,在翻阅书籍以及借助网络资源,我们渐渐有了很大的进展。而且我们通过画流程图逐步解决问题,对汇编语言又有了深刻的认识,对一些指令的使用也更加熟悉了。而且以前上课学的一些知识只是学会了,并不知道如何去用,或者应该应用在哪里,但通过这次课程设计,让我们可以将课本上机械的理论知识转化为灵活的实践中去,让记忆更加深刻,让设计变得简单易懂,锻炼了自己的动手能力,巩固了理论知识,激发了学习的兴趣。通过这次课程设计丰富了我的理论知识,也丰富了自己的学
44、习阅历,让自己对计算机专业有了更深的认识和理解,也坚定了自己将来在这一行业继续努力的决心。同时遇到不懂的问题要主动思考,但也要和其他同学进行讨论,而且还要认真向老师讨教。在我的整个的课程设计中,期间我遇到过一些问题经过老师的开导我们逐步攻克难关,将实验顺利进行下去。感谢老师的指导。总之,这次实验我收获很大。但也认识到了自己的知识储备量有限,自己能力还有待于进一步的提高。前方困难重重,需要再接再厉,需要不停攀登,需要加倍努力。40 8、参考文献 1 周荷琴 吴秀清,微型计算机原理与接口技术(第四版),合肥,中国科学技术大学出版社,2008;2张瑜,计算机硬件类课程难点辅导,北京,北京航天航空大学出版社,2006;3邹逢兴,陈立刚,计算机硬件技术基础(第 2 版),北京,高等教育出版社,2009;4彭介华,电子技术课程设计指导,北京,高等教育出版社,1997;5孙德文,微型计算机技术M,北京,清华大学出版社,1993;