一、设计目的
通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识与实际相联,更进一步地深入学习8255A、8086、8253等芯片的相关知识,以及学习使用POTEUS软件来进行模拟仿真,进一步学习微机原理与接口技术的相关知识,为以后学习打下良好的基础。
二、设计内容
利用8255实现花式跑马灯,跑马灯的运行状态可由开关控制。图中包括由7段数码管组成的日期显示电路,由开关控制的发光二极管流水灯电路和由8253控制的定时闪烁灯的电路
三、设计要求
利用8255实现花式跑马灯,跑马灯的运行状态可由开关控制。图中包括由7段数码管组成的日期显示电路,由开关控制的发光二极管流水灯电路和由8253控制的定时闪烁灯的电路。开关控制功能见下表。
K0 |
K1 |
K2 |
K3 |
电路运行结果 |
打开 |
打开 |
打开 |
打开 |
7段数码管显示开发者代号 |
打开 |
打开 |
打开 |
打开 |
发光二极管流水灯亮,模式0 |
打开 |
闭合 |
打开 |
打开 |
发光二极管流水灯亮,模式1 |
打开 |
打开 |
闭合 |
打开 |
发光二极管流水灯亮,模式2 |
— |
— |
— |
闭合 |
闪烁灯亮 |
四、设计原理及方案
1、花式跑马灯实验电路用元件清单
元件名称 |
功能说明 |
8086 |
微处理器 |
74273 |
八D型触发器(带清除端) |
NOT |
非门 |
74154 |
4-16译码器 |
4078 |
8输入与非门 |
8255A |
可编程24位接口 |
8253 |
8位定时/计数器 |
SWITCH |
开关 |
LED-BIBY |
LED发光管 |
7SEG-MPX4-CA |
4位共阳极7段数码管 |
7SEG-MPX6-CA |
6位共阳极7段数码管 |
POWER |
电源 |
GROUND |
地 |
2、主要芯片功能
8255A是一种可通过编程并行I/O接口芯片。广泛应用于几乎所有系列的的微机系统中,8255A具有三个带锁存或缓冲数据端口,可与外设并行进行数据交换,8255A有多种操作方式,通用性较强,可为CPU与外设之间提供输入/输出通道。8255A和各端口具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换,使用条件传输方式时可用“联络”线进行控制。在本次课程设计中,8255A起到为CPU与外设之间提供输入输出通道来实现对跑马灯花样变换的控制。
8086微处理器,选择最小工作模式(MN/MX引脚接至电源(+5V)),所有的总线控制信号均由8086产生。8086CPU的地址线/数据总线AD15-AD0和地址/状态总线A16/S3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线分类离。
3、设计原理图
4、程序代码
I00 EQU 00H
IO1 EQU 10H
IO2 EQU 20H
IO3 EQU 30H
IO4 EQU 40H
IO5 EQU 50H
IO6 EQU 60H
IO7 EQU 70H
IO8 EQU 80H
IO9 EQU 90H
IO10 EQU 0A0H
IO11 EQU 0B0H
IO12 EQU 0C0H
IO13 EQU 0D0H
IO14 EQU 0E0H
IO15 EQU 0F0H
DATA SEGMENT
OUTBUFF DB 1,2,0,4
LEDTAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,88H ;C口低四位输出B口8位输出 工作在方式0 C口高四位输入 A口8位输出 A工作方式0
MOV DX,IO3+6
OUT DX,AL ;将控制字写入8255A控制端口,设置各端口的工作方式
;8253初始化
MOV AL,00110000B ;二进制计数,选择方式0,选择16位,选择计数器0
MOV DX,IO5+6
OUT DX,AL ;将控制字写入8253控制端口
MOV DX,IO5
MOV AX,500
OUT DX,AL ;将初值低8位输出到计数通道0端口IO5
MOV AL,AH
OUT DX,AL ;将初值高8位输出到计数通道0端口IO5
;8253计数器0的初始化
MOV AL,01110110B ;
MOV DX,IO5+6
OUT DX,AL
MOV DX,IO5+2
MOV AX,5
OUT DX,AL
MOV AL,AH
OUT DX,AL
AGAIN: MOV DX,IO3+2
MOV AL,0H
OUT DX,AL ;清屏
MOV DX,IO3+4
IN AL,DX
TEST AL,20H
JZ L1 ;k0闭合
TEST AL,40H
JZ L2 ;k1闭合
TEST AL,80H
JZ L3 ;k2闭合
JMP LOP1
L1: MOV CL,06H
AGAIN1: MOV DX,IO3+2
MOV AL, CL
OUT DX,AL
MOV BX,10
CALL DELAY
ROL CL,1
MOV DX,IO3+4
IN AL,DX
TEST AL,20H
JZ AGAIN1
JMP AGAIN
L2:
MOV CL,0FFH
AGAIN2: MOV DX,IO3+2
MOV AL,CL
OUT DX,AL
MOV BX,10
CALL DELAY
NOT CL
MOV DX,IO3+4
IN AL,DX
TEST AL,40H
JZ AGAIN2
JMP AGAIN
L3:
MOV CL,55H
AGAIN3:
MOV DX,IO3+2
MOV AL,CL
OUT DX,AL
MOV BX,10
CALL DELAY
NOT Cl
MOV DX,IO3+4
IN AL,DX
TEST AL,80H
JZ AGAIN3
JMP AGAIN
LOP1: CALL DISP
JMP AGAIN
DISP PROC NEAR
AGAIN4:
MOV CL,08H
LEA SI,OUTBUFF
LEDDISP:
MOV AL,CL ;输出位码
MOV DX,IO3+4
OUT DX,AL
LEA BX,LEDTAB
MOV AL,[SI]
XLAT
MOV DX,IO3 ;输出段码
OUT DX,AL
CALL DELAY_1S ;请求延迟1S
MOV AL,0FFH
MOV DX,IO3
OUT DX,AL
CMP CL,01H
JZ NEXT
INC SI
ROR CL,1 ;右移一位
JMP LEDDISP ;跳转到LEDDISP
NEXT:
RET
DISP ENDP
DELAY_1S PROC ;延时子程序
PUSH CX
PUSH BX
MOV BX,01H
D1: MOV CX,0FH
D2: LOOP D2
DEC BX
JNZ D1
POP BX
POP CX
RET
DELAY_1S ENDP
DELAY PROC NEAR ;延时子程序
PUSH BX
PUSH CX
WAIT0: MOV CX,2801
WAIT1: LOOP WAIT1
DEC BX
JNZ WAIT0
POP CX
POP BX
RET
DELAY ENDP
CODE ENDS
END START
5、仿真结果
开关全打开
开关0闭合
开关1闭合交替闪烁
开关2闭合