微机原理流水灯的设计
微机原理课程设计报告书
课题名称流水彩灯的设计姓 名学 号 院、系、部物理与电信工程系专 业电子信息工程指导教师
7 月9日
一、设计任务及要求1、编写程序,使用8255的A口和B口均为输出,
实现16位流水灯显示效果。流水灯显示实验目的
2、掌握流水灯编程方法和芯片8255的逻辑功能及使用方法。
3、掌握一定的汇编语言知识,培养自己的动手操作能力。
4、学习程序设计的基本思路和方法
二要求、设计题目
编写程序,使用8255的A口和B口均为输出,实现16位流水灯显示效果。
、功能扩展
(1)、将流水灯设计成可以正着流水也可以选择倒着流水
(2)、通过开关可以对流水灯闪烁的速度进行控制,高电平时为快,低电平时为慢速。
1、 总体方案设计分析
在本实验中要求我们用8255的A口和B口做为输出,接16个发光二极管,从而实现16位流水灯的显示效果,故基本的接线可以如下面图A所示。在C口的低两位接2个开关,实现2个扩展功能的控制。
①基本流水灯显示电路
A和B两个端口不能同时赋值,从而在实验中我们可以用BX进行需要赋值的数据的存储,因为BX可以分从BH.BL两部分进行独立的操作,在本次实验中我们用BH对A口进行赋值,用BL对B口进行赋值,通过延时一段时间再对BH,BL进行移位和输出,实现了流水灯的效果。
②正反方向选择
把PC.0口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.0为高电平的时候则灯进行左移,低电平的时候则进行右移。同时B口与A口相反。
③快慢速度控制
把PC.1口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.1为高电平的时候则延时的时间缩短,使得流水灯的流水速度加快。低电平的时候则进行延时的时间变长,使得流水灯的流水速度加快。
电路及连线
1、该模块的WR、RD分别连到PC总线接口模块的IOWR、IORD。
2、该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到PC总线接口模块的数据(D0~D7)、地址线(A0~A7)。
3、8255模块选通线CS连到PC总线接口模块的IOY3。
4、8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连到发光二极管的L9~L16。5、8255的PC0、PC1分别连接在开关K0、K1
程序清单如下:
MY8255_A EQU 09860H
MY8255_B EQU 09861H
MY8255_C EQU 09862H
MY8255_MODE EQU 09863H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,MY8255_MODE
MOV AL,81H ;设置A口、B口方式0输出,C口低四位方式0输出
OUT DX,AL
MOV CL,0
XOR BX,BX ;将BX清零
MOV DX,MY8255_B
MOV AL,0FEH
MOV BL,AL
OUT DX,AL
MOV DX,MY8255_A
MOV AL,7FH
MOV BH,AL
OUT DX,AL ;对A口、B口赋值,并将值保存在BH BL中
A1:
ROL BL,1
ROR BH,1 ;对BH BL做出相应的移位
A3:
PUSH BX ;保护现场
CALL BREAK ;调用任意键退出程序
CALL DELAY ;调用延时程序
POP BX ;恢复现场
MOV DX,MY8255_A
MOV AL,BH
OUT DX,AL
MOV DX,MY8255_B
MOV AL,BL
OUT DX,AL ;将移位后的结果输出
MOV DX,MY8255_C
IN AL,DX ;将C都的数据输入
AND AL,01H ;查看PC0口是否有数据输入,改变流水灯的方向
JNZ A2
JMP A1
A2:
ROL BH,1
ROR BL,1
JMP A3
DELAY PROC NEAR ;延时程序
MOV CX,0FFFH
K1:
MOV BX,0FFFH
K2:
DEC BX
CMP BX,1000H
JNE