交通灯

更新时间:2024-05-14 01:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

武汉理工大学《微机原理与接口技术》课程设计说明书

摘 要

随着交通的不断发展和交通指挥的需要,交通灯的控制指挥系统自始至终都显得尤为重要。本课题旨在设计一种交通灯控制指挥系统,以实现对交通的有效控制。在十字路口,当南北方向红灯亮,东西方西绿灯亮时,南北方向车辆禁止通行,东西方向允许通行;反之,南北方向允许车辆通行,东西方向禁止车辆通行。当发生危急情况时,可使所有路口红灯点亮,禁止所有车辆通行。

本系统使用8255可编程接口进行数据的输入输出,计时器使用软件编程进行延时。通过本课程设计,可巩固和加深课堂所学知识;熟悉各种指令的应用及条件;深入了解与掌握8255A在PC机系统的典型接法和8255A的工作方法及应用编程。对仿真软件Proteus的熟练使用,掌握其基本规则,能解决一些常见问题与错误,能实现Proteus与emu8086的联合调试

关键词:交通灯 汇编语言 8255

1

武汉理工大学《微机原理与接口技术》课程设计说明书

1. 设计任务与要求

采用 16 位微处理器 8086 CPU 以及 86 系列微型计算机的指令系统;

软件设计平台可使用 EMU8086 等汇编语言软件,仿真设计平台可采用 Proteus 软件。 设计微型计算机最小系统,实现交通灯模拟功能,具体功能要求如下: (1)输入设备:启动、停止按钮;输出设备:指示灯(模拟交通灯) ;

(2)按下启动按钮,即按自定义的控制方式模拟交通灯变化,直至按下停止按钮,交通灯全灭。

2. 总体方案论证

城市十字交叉路口红绿灯控制系统,主要负责控制东西走向和南北走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,而方案的主要不同便是延时方法的不同,有以下两种方案:

方案一:考虑到题目要求黄灯闪烁的频率为1HZ,既每秒1次,那么前0.5秒黄灯亮,后0.5秒黄灯灭,所以最小的定时单位为0.5秒,频率为2HZ,30秒即为60个0.5秒。

显然一个计数器无法完成,所以采用两个计数器级联的方式,将计数器0的输出OUT0接到计数器1的输入端CLK1,CLK0=1MHZ,计数值为50000=C350H,OUT0=20HZ,CLK1=20HZ,记数值=10,OUT1=2HZ。并且计数器0工作于方式3用于产生方波信号,计数器1工作方式2,产生负脉冲信号,计数器1的输出端OUT1接入8255芯片的PC5口,用于读取负脉冲个数,以完成计时功能。 8086及8255设置同方案一,8086则每隔0.5秒变换一次黄灯的状态,持续五次,完成闪烁的功能。

方案二:因为程序中多次用到延时程序,鉴于某一段代码能完成一项特定的功能,并具有公用性,重复性,相对独立性的某段程序应设计成子程序。延时子程序模块的编写方法多种,8086CPU频率为5M,执行一条代码需要时间2.4us,若要实现短暂而精确的延时可以用nop,然而此处数码管的延时精度不要求那么高,所以写一个嵌套的延时子程序即可。在写此系统程序中,采用的是嵌套结构编写延时程序,把子程序两层循环所用到的寄存器中原有的值推入堆栈,延时过后再出栈。

1

武汉理工大学《微机原理与接口技术》课程设计说明书

这种子程序的结构会给程序设计和调试带来许多方便,实现比较简单,还可以简化硬件电路连接,所以选择了方案二。

3. 总体设计

3.1 基本原理

此方案是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过软件延时的方法,来实现十字路口交通灯的模拟控制。本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。七段数码管(不加小数点)加上段选一共八位,可以用一个P口来控制,两组数码管就分别占用了PA和PB,剩下的PC口用来控制交通灯。

3.2 实现思路

1) 输入设备:启动、停止按钮;这部分不需用8259来进行中断管理,直接用NMI即可。

输出设备:指示灯(模拟交通灯)和数码管;

2) 按下启动按钮,即按自定义的控制方式模拟交通灯变化,以下任意时刻按下停止按钮,

交通灯和数码管全灭;

3) 东西方向绿灯通车(time-13)秒钟(time的值可以在程序中设定),南北方向红灯禁行; 4) 一段时间后,数码管开始10秒倒计时,直至为零,绿灯变为黄灯; 5) 黄灯持续时间为3秒,此时数码管闪烁进入3秒倒计时 6) 南北方向绿灯通车(time-13)秒钟,东西方向红灯禁行;

7) 一段时间后,数码管开始10秒倒计时,直至为零,绿灯变为黄灯; 8) 黄灯持续亮3秒,此时数码管闪烁进入3秒倒计时,然后进入重复步骤3.

2

武汉理工大学《微机原理与接口技术》课程设计说明书

图2-1 东西通行图

南北通行的情况与上类似。

4. 单元电路设计与说明

4.1 8255A工作方式及数据I/O操作

8255A共有三种工作方式,即方式0、方式1、方式2. (a)方式0 基本输入/输出方式

方式0下,可供使用的是两个8位口(A口和B口)及两个4位口(C口高4位部分和低4位部分)。四个口可以是输入和输出的任何组合。

方式0适用于无条件数据传送,也可以把C口的某一位作为状态位,实现查询方式的数据传送。

(b)方式1 选通输入/输出方式

A口和B口分别用于数据的输入/输出。而C口则作为数据传送的联络信号。具体定义见表7–2。可见A口和B口的联络信号都是三个,如果A或B只有一个口按方式1使用,则剩下的另外13位口线仍然可按方式0使用。如果两个口都按方式1使用,则还剩下2位口线,这两位口线仍然可以进行位状态的输入输出。 方式1适用于查询或中断方式的数据输入/输出。 (c)方式2 双向数据传送方式

只有A口才能选择这种工作方式,这时A口既能输入数据又能输出数据。在这种方式下需使用C口的五位线作控制线,信号定义如表7–2所示。方式2适用于查询或中断方式的双向数据传送。如果把A口置于方式2下,则B口只能工作于方式0.

本设计中只需采用方式0即可完成全部功能,并且都是输出。

3

武汉理工大学《微机原理与接口技术》课程设计说明书

4.2 锁存控制电路

在微控制器单元(MCU)中,寄存器是十分重要的资源。寄存器的主要作用是快速寄存算术逻辑运算单元(ALU)运算过程中的数据,其锁存功能利用74LS273来实现, (1) 锁存使能控制端 LE。 (2) 控制输入端 (3) 数据输入端

通过锁存器74LS273把数据存储于集成块中,当LE锁存控制端为1, \\OE使能端为0时,其具有输入功能,反之其具有锁存功能,在此系统中充当一个桥梁的作用,将部分数据传送给8255A的A0,A1,和CS片选等等,从而驱动发光二级管显示不同的颜色。

因为在总线周期的前半部分,CPU总是送出地址信号和BHE(总线高允许)信号,为了通知地址已经准备好了,可以被所存,CPU会送出高电平允许所存信号ALE。此时地址信号和BHE信号被锁存。

由于有了锁存器对地址信号和BHE信号的锁存,CPU在总线周期的后半部分,地址和数据都在地址总线和数据总线上,确保了CPU对锁存器和I/O接口的读/写操作。

U6AD0AD1AD2AD3AD4AD5AD6AD7347813141718111D0D1D2D3D4D5D6D7CLKMR74273A13A14A15Q0Q1Q2Q3Q4Q5Q6Q7256912151619A8A9A10A11A12A13A14A15Q0Q1Q2Q3Q4Q5Q6Q7256912151619A0A1A2A3A4A5A6A7A9A10A11A12ADR[0..19]U3NOTU7AD83AD94AD107AD118AD1213AD1314AD1417AD1518111D0D1D2D3D4D5D6D7CLKMR74273U10AD16AD17AD18AD19347813141718111D0D1D2D3D4D5D6D7CLKMR74273Q0Q1Q2Q3Q4Q5Q6Q7256912151619A16A17A18A19BHE图3-1 锁存控制电路74LS273

4

武汉理工大学《微机原理与接口技术》课程设计说明书

4.3 地址译码电路

译码为编码的逆过程。它将编码时赋予代码的含义“翻译”过来。实现译码的逻辑电路成为译码器。译码器输出与输入代码有唯一的对应关系。74LS154是输出低电平有效的4线-16线译码器。它在这里与锁存电路相连,主要用于实现提供端口地址的作用。

ADR[0..19]A9A10A11A1223222120U5ABCDE1E2012345678910111213141512345678910111314151617IO0IO1IO2IO3IO4IO5IO6IO7IO8IO9IO10IO11IO12IO13IO14IO15U3M/IO1819NOTU2:AA131A142A151374277415412 图3-2 地址译码电路

4.4 显示电路

本设计的显示电路主要由四个数码管,以及12个led灯组成。其中红灯,绿灯,黄灯各有四个,在每个方向的路口各有一个,数码管也是如此。且该显示电路有明显的对称性,任意时刻正对的两个方向必定只亮一种颜色的灯,且数码管示数同步,所以灯和数码管都分成了两组。

1#PC1PC2PA0PA1PA2PA3PA4PA5PA6PA7PC0 图3-3 显示电路

5

武汉理工大学《微机原理与接口技术》课程设计说明书

4.5 输入电路

U1221222418313023173319RESETAD[0..15]READYA[16..19]INTA/QS1INTRALE/QS0HOLD/GT1BHEHLDA/GT0DT/R/S1TESTDEN/S2NMIRDMN/MXWR/LOCKCLKM/IO/S08086R2R1停止10k10k2322322启动 图3-4 启动与停止按钮

NMI(不可屏蔽中断)是02号中断,上跳沿触发,所以要上拉电阻。按下“停止”按钮后上升沿触发中断,中断服务程序可以让PC口全部置零,PA、PB全部置“1”,这样灯和数码管就全部熄灭了。

在READY信号为低电平时8086不工作,所以可以利用READY下拉电阻接地,经“启动”按钮接到电源正极。当按下“启动”按钮时8086就会正常工作。

4.6 总体电路图

出于美观性考虑,电路图采用分等级设计,所有的控制部分集合成了一个子模块,使内外接点的名称相同便可实现电气连接。父电路图如图3-5所示,子电路图如图3-6所示。

6

武汉理工大学《微机原理与接口技术》课程设计说明书

PC0PC1PC2PC3PC4PC5PC6PC7PC0PC1PC2PC3PC4PC5PC6PC7PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB71#南北停止启动NMIPC1PC2READYPA0PA1PA2PA3PA4PA5PA6CCT001PC3PA7SUB1PC0PC5PB0PB1PB2PB3PB4PB5PB6PB7东西PC4东西PB7PB6PB5PB4PB3PB2PB1PB0PC4PC5PC31#PC1PC2PA0PA1PA2PA3PA4PA5PA6PA7南北PC0 图3-5 总体电路图

AD[0..15]AD0AD1AD2AD3AD4AD5AD6AD7347813141718111U6D0D1D2D3D4D5D6D7CLKMR74273AD[16..19]25342726322928A131A142A1513Q0Q1Q2Q3Q4Q5Q6Q7256912151619A8A9A10A11A12A13A14A15Q0Q1Q2Q3Q4Q5Q6Q7256912151619A0A1A2A3A4A5A6A7A9A10A11A12ADR[0..19]23222120U5ABCDE1E2012345678910111213141512345678910111314151617IO0IO1IO2IO3IO4IO5IO6IO7IO8IO9IO10IO11IO12IO13IO14IO15U3M/IO1819NOTU1221222418313023173319RESETAD[0..15]READYA[16..19]INTA/QS1INTRALE/QS0HOLD/GT1BHEHLDA/GT0DT/R/S1TESTDEN/S2NMIRDMN/MXWR/LOCKCLKM/IO/S08086LOAD_SEG=0x0800NET=PC10U2:A12U8AD83AD94AD107AD118AD1213AD1314AD1417AD1518111U7D0D1D2D3D4D5D6D7CLKMR74273R2R110k10kNMIREADY742774154NOTRDWRM/IOU1AD[0..7]AD0AD1AD2AD3AD4AD5AD6AD7343332313029282753698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC78255ATRACE=143214039383718192021222324251415161713121110PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7AD[16..19]U10AD16AD17AD18AD19347813141718111D0D1D2D3D4D5D6D7CLKMR74273Q0Q1Q2Q3Q4Q5Q6Q7256912151619A16A17A18A19BHERDWRA1A2IO1 图3-6 子层电路图

7

武汉理工大学《微机原理与接口技术》课程设计说明书

5. 软件设计

开始 8255初始化 东西方向绿灯亮, 南北方向红灯亮 延时若干秒 东西方向数码管 令CX=9 数码管显示 CX自减 延时1秒 CX=0? 东西方向黄灯亮, 南北方向红灯亮 关掉数码管0.5S 1 4-1

1 东西方向数码管亮 令CX=3 数码管显示 延时0.5秒 关数码管 CX自减 延时0.5秒 CX=0? 东西方向黄灯亮, 南北方向红灯亮 南北方向通行, 情况与上类似 JMP 跳至东西通行处,死循环 交通灯主要模块流程图

8

武汉理工大学《微机原理与接口技术》课程设计说明书

5.1 延时函数

本设计中采用的延时函数主要是运用了调用子程序的形式。通过子程序中loop函数的循环来实现延时。延时函数采用给CX和BX 赋值,双层循环得到的,所以在此之前需要将BX和CX中的内容入栈,LOOP完了之后再出栈即可。因为8086工作频率是5MHz,所以执行一步需要2.4us,据此设计CX和BX 的初值。

5.2 中断

本设计的中断采用不可屏蔽中断NMI。即无论状态寄存器中 IF 位的状态如何,CPU收到有效的NMI必须进行响应;NMI是上升沿有效;中断类型号固定为2;它在被响应时无中断响应周期。LED是共阳极的,数码管是共阴极的,所以中断服务程序里面就给PC口赋值00H,PA、PB赋值80H(最高位置1),这样灯数码管就都不会亮了。

5.3 设计电路的正确顺序

设计一个电路时,要一步一步来,这次我们一开始看到题目就觉得特别简单,本来只要

求做灯的我们想都没想直接把数码管倒计时功能加上去就开始做,然后出现很多错误了还不知道在哪个环节,搞到一度快要崩溃了,所以 “万丈高楼平地起”,还是一步一步的从简单到复杂实现比较好。比如说:8086的M/IO一直都是高电平导致与之相连的CS一直都是高,所以后面的8255也不正常,看起来好像所有的都不正常了,这样有可能把正确的部分又改错了。

5.4 锁存

在8086系统中,地址线和数据线是复用的,这些复用的管脚在某时刻只能体现地址线或者数据线之一,所以在对存储器访问时,首先要将地址输出。此时,复用的管脚是地址线,然后利用地址锁存器保存这些地址。之后,这些管脚才是数据线,将数据读出或者写入到存储器。在某一时刻,处理器把某个存储单元的地址发送到地址总线上,经锁存器将这些地址保存起来,只有这样,处理器才能把数据通过某些共享的管脚送到数据总线上,完成对存储器的读/写操作。所以,在8086最小模式系统中,数据缓冲器是不必要的。

9

武汉理工大学《微机原理与接口技术》课程设计说明书

6. 问题及解决方案

6.1 8086的问题

开始把asm文件加载到proteus中的8086中,发现灯全亮,数码管全不亮,很不正常,后面才发现它运行的是exe文件而不是asm文件。还有它的存储容量需要设置,不然仿真会出错。它不需要提供5M方波和工作电源,都是默认的。

6.2 延时程序的编写

DELAYX PROC NEAR

PUSH BX PUSH CX PUSH AX

#¥#¥@%¥¥??¥ POP AX POP CX POP BX RET DELAYX ENDP

在写此系统程序中,采用的是嵌套结构编写延时程序,注意一开始得把它所用到的寄存器中原有的值推入堆栈,延时过后再出栈。开始写的时候把入栈的三条语句直接复制粘贴到下面,把PUSH改成了POP就没在意了,要注意先入后出!

6.3 偏移地址的误写入

在仿真过程中,出现以上两行的错误,太多的迭代没有收敛性,和某个汇编语言在编码过程中的地址不正确。

10

武汉理工大学《微机原理与接口技术》课程设计说明书

说明程序代码过于分散,没有模块化,之后再将程序能够模块化的地方尽量改善,达到更加简洁易读易运行的目的由于程序中定义了

TAB DB

06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH(1-9共阴极编码)。在最初调试的时候variable里面elements的值总是显示1,然而此处共有9个值,AL共需要在此取8个偏移地址,所以改成8后,程序调试运行正常。

6.4 内存空间分配问题

汇编语言的重要特点之一是能够直接利用机器指或者伪指令为数据或者代码程序分配内存空间,86系列(如8086微处理器)的存储器结构是分段的,有代码段,数据段,堆栈段或附加段,在程序设计时要充分考虑分段结构,要执行的程序段应设在当前段(活动段)中;分配内存空间:直接在proteus里面将8086CPU的internal memory size设置成一个足够用的空间大小,如0x10000,默认的空间大小是0x00000,如不改则仿真不成功。程序在运行时所需要的工作单元应尽可能的设在CPU寄存器中,这样存取速度快,而且操作方便;在此系统源程序中都采用8086CPU的全部通用寄存器:累加器AX,基数寄存器BX,基数寄存器CX,数据寄存器DX;和堆栈指针寄存器SI。

6.5 按键问题

因为在仿真中,某点经按键接地,如果按键断开,相当于还是接地,即开关不起作用,此时需要上拉电阻。

11

武汉理工大学《微机原理与接口技术》课程设计说明书

结束语

经过这两周的课程设计, 做关于交通灯系统设计,我认真查阅资料,学习关于这方面的知识,比如说要了解8086芯片中各个引脚的功能,怎么样去使用8255这个可编程并行接口芯片,怎么样使用8253来定时及输出一定频率的脉冲,怎么样用8282这个地址锁存器来存储高位地址和低位地址以及交通有哪些规则.在理论学习的基础上,又下了一次苦工夫,算是明白了设计一个系统的过程;也让我体会到要想成功地设计某个东西,光学好专业知识是不够的,必须要系统的知识,无论在哪方面都要有个明白的概念,只有这样才不至于在设计过程中摸不着头脑,知道去哪些是需要查的资料,还有一点,我觉得我在芯片编程方面,特别是在初始化方面是我最大的困难,或许是我的汇编语言学得不够好,我只能借助参考资料,查每一条指令的作用与功能,这样一来又巩固了我的对汇编语言的了解。 如此,我体会到学习理论知识固然重要,但在你学完了之后,你不在实践中运用你所学的知识,我想学是白学了,过一段时间后,你可能什么都记不起来了,或许在学的时候心里有一个概念,认为这个知识我曾经学得不错,我现在怎么想不起来了,一心想依赖课本;如果我们用实践来学习知识,你会努力地去搜索你想要需要的东西,即使是过了一段时间后,你也会记得你曾经对这点不明白认真地查阅过,所以你不容易忘记!

12

武汉理工大学《微机原理与接口技术》课程设计说明书

参考文献

[1] 彭虎,周佩玲,傅忠谦 .微机原理与接口技术第二版.北京:电子工业出版社,2008 [2] 艾德才等. Pentium/80486实用汇编语言程序设计. 清华大学出版社,1997. [3] 谭浩强. 微型计算机原理及运用. 清华大学出版社,2006.

[4] 康华光. [5] 李干林.

电子技术基础(数字部分),第四版. 高等教育出版社,2009. 微型计算机及接口实验指导书. 武汉理工大学出版社,2008.

13

武汉理工大学《微机原理与接口技术》课程设计说明书

附录:程序清单及注释

A_PORT EQU 0200H B_PORT EQU 0202H C_PORT EQU 0204H CTRL_PORT EQU 0206H TIME EQU 20

;周期为TIME=?+10+3 STACK1 SEGMENT STACK DW 20 DUP(?) STACK1 ENDS

DATA SEGMENT

TAB DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

;;;;;;;;;;;;;;;;;;;;;;;;中断向量;;;;;;;;;;;;;;;;;;;;;;;;;;;

START: MOV AX,DATA MOV DS,AX PUSH DS MOV AX,0 MOV DS,AX LEA DX,STOP MOV DS:[02H*4],DX MOV DX,SEG STOP MOV DS:[02H*4+2],DX POP DS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;东西方向通行;;;;;;;;;;;;;;;;;;;;;;;;;;;; 14

TIME必须大于13)

;1-9编码(共阴极)

武汉理工大学《微机原理与接口技术》课程设计说明书

MOV AL,80H ;8255初始化:A,B,C口均为方式0,输出

MOV DX,CTRL_PORT OUT DX,AL

EW:MOV DX,C_PORT

MOV AL,00001010B ;东西方向绿灯亮,南北方向红灯亮 OUT DX,AL

CALL DELAYX

MOV CX,9 LEA BX,TAB MOV AL,8 AA:PUSH AX XLAT

MOV DX,B_PORT OUT DX,AL

CALL DELAY1 POP AX DEC AL LOOP AA

MOV DX,C_PORT

MOV AL,00100010B OUT DX,AL

MOV DX,B_PORT

OR AL,80H OUT DX,AL CALL DELAY0.5

延时(TIME-13)秒 ;本阶段只有灯亮,数码管不亮 ;9次循环

;东西方向数码管开始倒计时10S(此时红灯亮) ;延时1秒 ;东西方向黄灯亮,南北方向还是红灯亮 ;10S倒计时完了先关掉数码管0.5S 15

; 武汉理工大学《微机原理与接口技术》课程设计说明书

MOV CX,3 ;3次循环 LEA BX,TAB MOV AL,2 AB:PUSH AX XLAT

MOV DX,B_PORT ;东西方向数码管开始倒计时3S(此时黄灯亮) OUT DX,AL CALL DELAY0.5

OR AL,80H ;最高位置1,关掉数码管 OUT DX,AL

CALL DELAY0.5 POP AX DEC AL LOOP AB

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;南北方向通行;;;;;;;;;;;;;;;;;;;;;;;;;;;; SN:MOV DX,C_PORT

MOV AL,00010001B ;南北方向绿灯亮,东西方向红灯亮 OUT DX,AL

CALL DELAYX ;延时(T-13)秒;本阶段只有灯亮,数码管不亮

MOV CX,9 ;9次循环 LEA BX,TAB MOV AL,8 AC:PUSH AX XLAT

MOV DX,A_PORT ;南北方向数码管开始倒计时10S(此时红灯亮) OUT DX,AL

16

武汉理工大学《微机原理与接口技术》课程设计说明书

CALL DELAY1 ;延时1秒 POP AX DEC AL LOOP AC

MOV DX,C_PORT

MOV AL,00010100B OUT DX,AL

MOV DX,A_PORT

OR AL,80H OUT DX,AL CALL DELAY0.5

MOV CX,3 LEA BX,TAB MOV AL,2 AD:PUSH AX XLAT

MOV DX,A_PORT OUT DX,AL CALL DELAY0.5

OR AL,80H OUT DX,AL

CALL DELAY0.5 POP AX DEC AL

LOOP AD

;南北方向黄灯亮,东西方向还是红灯亮 ;10S倒计时完了先关掉数码管0.5S ;3次循环 ;南北方向数码管开始倒计时3S(此时黄灯亮) ;最高位置1,关掉数码管 17

武汉理工大学《微机原理与接口技术》课程设计说明书

JMP EW

DELAY0.5 PROC NEAR ;0.5S延时 PUSH BX PUSH CX MOV CX,0180H B1:MOV BX,0140H B2:DEC BX JNZ B2 DEC CX JNZ B1 POP CX POP BX RET DELAY0.5 ENDP

DELAY1 PROC NEAR PUSH BX PUSH CX MOV CX,0100H C1:MOV BX,03C0H C2:DEC BX JNZ C2 DEC CX JNZ C1 POP CX POP BX RET DELAY1 ENDP

;1S延时 18

武汉理工大学《微机原理与接口技术》课程设计说明书

DELAYX PROC NEAR ;延时(TIME-13)秒 PUSH BX PUSH CX PUSH AX MOV CL,100 MOV AL,TIME SUB AL,13 MUL CL

E1:MOV BX,03C0H E2:DEC BX JNZ E2 DEC AX JNZ E1 POP AX POP CX POP BX RET DELAYX ENDP

STOP PROC FAR PUSHF

MOV DX,C_PORT MOV AL,00H OUT DX,AL

MOV DX,B_PORT MOV AL,80H OUT DX,AL

MOV DX,A_PORT

; ; 19

武汉理工大学《微机原理与接口技术》课程设计说明书

MOV AL,80H ; OUT DX,AL POPF

MOV AX,4C00H INT 21H IRET STOP ENDP CODE ENDS END START

20

目 录

摘要 -------------------------------------------------------------------------------------------------------------------------------------- 1 1. 设计任务与要求 ------------------------------------------------------------------------------------------------------------------ 1 2. 总体方案论证 --------------------------------------------------------------------------------------------------------------------- 1 3. 总体设计思想

3.1 基本原理 -------------------------------------------------------------------------------------------------------------------- 2 3.2 实现思路 -------------------------------------------------------------------------------------------------------------------- 2 4. 单元电路设计与说明: --------------------------------------------------------------------------------------------------------- 3

4.1 8255A工作方式及数据I/O操作 ------------------------------------------------------------------------------------ 3 4.2 锁存控制电路 ------------------------------------------------------------------------------------------------------------- 4 4.3 地址译码电路 ------------------------------------------------------------------------------------------------------------- 5 4.4 显示电路 -------------------------------------------------------------------------------------------------------------------- 5 4.5 输入电路 -------------------------------------------------------------------------------------------------------------------- 6 4.6 总体电路图----------------------------------------------------------------------------------------------------------------- 6 5. 软件部分 --------------------------------------------------------------------------------------------------------------------------- 8

5.1 延时函数 -------------------------------------------------------------------------------------------------------------------- 9 5.2 中断 -------------------------------------------------------------------------------------------------------------------------- 9 5.3 设计电路的正确顺序 ---------------------------------------------------------------------------------------------------- 9 5.4 锁存 -------------------------------------------------------------------------------------------------------------------------- 9 6. 问题及解决方案 -----------------------------------------------------------------------------------------------------------------10

6.1 8086的问题 ---------------------------------------------------------------------------------------------------------------10 6.2 延时程序的编写 ---------------------------------------------------------------------------------------------------------10 6.3 偏移地址的误写入 ------------------------------------------------------------------------------------------------------10 6.4 内存空间分配问题 ------------------------------------------------------------------------------------------------------ 11 6.5 按键问题 ------------------------------------------------------------------------------------------------------------------- 11 结束语 ----------------------------------------------------------------------------------------------------------------------------------12 参考文献 -------------------------------------------------------------------------------------------------------------------------------13 附录 -------------------------------------------------------------------------------------------------------------------------------------14

本文来源:https://www.bwwdw.com/article/ogc7.html

Top