当前位置:文档之家› 微机原理课程设计 流水灯控制系统

微机原理课程设计 流水灯控制系统

微机原理课程设计
流水灯控制系统
姓名: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、心得体会
这次的课程设计结果虽然简单,可是过程很复杂,我们用的时间也比较长,主要是自己的只是水平不高,花费了大量的时间,最后却
选择了一个最简单的设计。

通过这次设计实验,觉得自己的水平的确有待提高。

学习不踏实,以为学懂了,其实只是学了表面,细节根本没有注意到,以至于花费了时间,却没有出结果。

这也是一个自我检测的过程,发现自己的不足,弥补自己的缺点,给了我一个很大的启发。

相关主题