使用POTEUS软件来进行模拟仿真 8086汇编语言花式跑马灯课程设计及代码

一、设计目的

 通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识与实际相联,更进一步地深入学习8255A80868253等芯片的相关知识,以及学习使用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闭合

 

 

  • 20
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值