微机原理课程设计
流水灯控制系统
姓名 :XX
学院:物理电气信息学院
班级: 2010 电子
姓名 :12010245
流水灯控制系统
一、设计内容:
本课程设计选用8086 对 8255A的 A口控制来实现模拟流水灯功能的
实现。
编写相关程序,通过proteus仿真软件来实现我名字“安亮”
两个字的闪烁,“安”字接 8255 的 A 口的 P0,“亮”字接 A 口的 P1。
先让“安”字和“亮”字同时点亮,再让两个字同时暗,接着让“安”字点亮,再让“亮”字点亮,然后让“安”字和“亮”字同时亮暗闪
烁八次,再跳到开始,以此循环。
二、设计目的:
1、了解流水灯的基本工作原理
2、熟悉 8255A 并行接口的各种工作方式和应用
3、利用 8255A 接口,LED 发光二极管,设计一个流水灯模拟系统,让我的名字“安亮”两个字按一定规律点亮。
三、实验原理
在 8086 系统中,采用 16 位数据总线,进行数据传输时,CPU
总是将低 8 位数据线上的数据送往偶地址端口,而过高8位数据线上
的数据送往奇地址端口反过来,从偶地址端口取得的数据总是通过低
8 位数据线传送到CPU,从奇地址端口取得的数据总是通过高8 位数据线送到 CPU。
在 8086 系统中,将 8255A的 A1端和地址总线的 A29255A 在对 CPU并且,相连, A1 端和地址总线的 A0 的 8255A 而将相连,
的端口进行访问时,将地址总线的 A0 位总是设置为 0。
本课程设计通
过对 8255A 的 A 口控制来实现模拟流水灯功能的实现。
“安”接 A 口
的 P0,“亮”接 A口的 P1,实现两个字按一定规律的一个闪烁。
8255 的内部结构
255A 内部结构由以下四部分组成:数据端口A、B、C;A组控制和 B 组控制;读 / 写控制逻辑电路;数据总线缓冲器。
端口 A:包括一个 8 位的数据输出锁存 / 缓冲器和一个 8 位的数据
输入锁存器,可作为数据输入或输出端口,并工作于三种方式中的任何一种。
端口 B:包括一个 8 位的数据输出锁存 / 缓冲器和一个 8 位的数据输入缓冲器,可作为数据输入或输出端口,但不能工作于方式2。
端口 C:包括一个 8 位的数据输出锁存 / 缓冲器和一个 8 位的数据,端口上和下)C(位的端口 4 可在方式字控制下分为两个输入缓冲器,每个 4 位端口都有 4 位的锁存器,用来配合端口 A 与端口 B 锁存输出控制信号和输入状态信号,不能工作于方式1或2。
A组和 B 组控制的作用如下:
A组控制逻辑控制端口A及端口 C的上半部;
B组控制逻辑控制端口B及端口 C的下半部。
2.8255A 芯片介绍
芯片引脚图:
(和外设一边相连的):
PA7-PA0:A 组数据信号
PB7-PB0:B 组数据信号
PC7-PC0:C组数据信号
(和 CPU一边相连的):
RESET:复位信号,低电平有效。
当RESET信号来到时,所有内部寄存
器就被清除,同时, 3 个数据端口被自动设为输入端口。
的数据线,和系统数据总线相连。
8255A:它们是 D7-D0.
CS:芯片选择信号,低电平有效。
在一个系统中,一般根据全部接口
芯片来分配若干较低位地址(比如A5、A4、A3)来组成各种芯片选
择码,当这几位地址组成某一个代码时,译码器便往8255A的 CS端输出一个低电平,于是8255A被选中。
只有当CS有效时,读信号RD 和写信号 WR才对 8255A有效。
RD:芯片读出信号低电平有效。
WR:芯片写入信号低电平有效。
A1、A0:端口选择信号。
8255A 内部有 3 个数据端口和一个控制端口,共四个端口。
规定当A1、A0为 00 时,选中 A 端口;为 01 时,选中
B端口;为 10 时,选中 C 端口;为 11 时,选中控制口。
3.8255A 控制字
方式选择控制字
控制字 0置1/置 C端
口.
2.8255A 工作方式
方式 0:基本输入 / 输出方式
方式 0 是 8255A的基本输入 / 输出方式,其特点是与外设传送数据时,
不需要设置专用的联络(应答)信号,可以无条件的直接进行I/O 传送。
A,B,C 3 个端口都可以工作在方式0。
A 口和B 口工作在方式0 时,只能设置为以 8 位数据格式输入 / 输出。
C口工作在方式 0 时,
可以高 4 位和低 4 位分别设置为数据输入或数据输出方式。
方式 1:单向选通输入 / 输出方式
方式 1 是一种带选通信号的单方向输入/ 输出工作方式,其特点是:
与外设传送数据时,需要联络信号进行协调,允许用查询或中断方式传送数据。
由于 C 口的 PC0,PC1和 PC2定义为 B 口工作在方式 1 的联络信号线,PC3,PC4和 PC5定义为 A 口工作方式 1 的联络信号线,因此只允许 A 口和 B 口工作在方式 1。
如果 8255A 的端口 A 和端口 B 都工作在方式 1,那么,端口 C中就有 6 位被规定为配合方式 1 位扔作为输入或输出。
2 工作的信号,剩下的.方式 2:双向选通输入 / 输出方式
方式 2 为双向选通输入 / 输出方式,是方式 1 输入和输出的组合,即同一端口的信号线既可以输入又可以输出。
由于 C口的 PC7-PC3定义为A口工作在方式 2 时的联络信号线,因此只允许 A口工作在方式 2。
PA7-PA0为双向数据端口,既可以输入数据又可以输出数据。
方式 2 只适用于端口 A。
端口 A 工作于方式 2 时,端口 C用 5 个数位自动配合端口 A 提供控制信号和状态信号。
四、实验器材:
8086、8255、二极管、电源等
五、设计步骤
1)硬件原理图
2)软件流程图
3)程序设计清单
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS
MOV DS,AX
MOV AL,80H
L: OUT 06H,AL;将 80H 送给 06H,10000000
MOV AL,0FCH
OUT 00H,AL ;将0FC 送给00H,11111100 (亮、亮)LOOP $ ;延时0.25 秒
MOV AL,0FFH
OUT 00H,AL ;11111111 (灭、灭)
LOOP $ ;延时0.25 秒
MOV AL,0FEH
;11111110 (灭、亮)
OUT 00H,AL
LOOP $ ; 延时0.25 秒
MOV AL,0FDH ;11111101 (亮、灭)
OUT 00H,AL
秒 0.25;延时 LOOP $
MOV BX,7 ;闪烁 8 次
L1: MOV AL,0FFH
OUT 00H,AL;11111111 (灭、灭)
MOV CX,6000
LOOP $;延时
MOV AL,0FCH
OUT 00H,AL;将 0FC 送给 00H,11111100 (亮、亮)MOV CX,6000
LOOP $;延时
DEC BX
JNZ L1
JMP L;跳到 L 循环
MOV AH,4CH
INT 21H
CODES ENDS
END START
六、实验结果
七、调试过程与分析
1、出现的问题
proteus刚开始,我们准备设计一个方波发生器,写好了程序,用
进行了仿真,结果出现了问题,无法仿真,我和合作者开始寻找错误,先从程序开始,请教同学,修改程序,之后看proteus的连线,也没有发现问题,但是还是无法仿真,就做了两天,没有做出来,我和合
作者商量果断放弃了方波发生器的设计,因为毕竟时间有限。
我们决定做流水灯,既简单,学的内容又可以充分利用。
在做流水灯的时候,我们想着,这次吸取教训,从简单入手,程序也简单,进行仿真后很
快成功,我们的设计也算完成。
2、心得体会
这次的课程设计结果虽然简单,可是过程很复杂,我们用的时间也
比较长,主要是自己的只是水平不高,花费了大量的时间,最后却
选择了一个最简单的设计。
通过这次设计实验,觉得自己的水平的确有待提高。
学习不踏实,以为学懂了,其实只是学了表面,细节根本没有注意到,以至于花费了时间,却没有出结果。
这也是一个自我检测的过程,发现自己的不足,弥补自己的缺点,给了我一个很大的启发。