8086汇编程序:多位数码管动态扫描显示2023

实验目的

1.掌握8255A和8086CPU接口方法,掌握8255A的工作方式和编程原理。

2.掌握多位数码管动态扫描显示的工作原理和编程方法。

实验内容

设计8255A 与多位共阴极数码管接口电路,实现在四位LED共阴极数码管上显示数字2023

8255A工作在方式0基本输入输出方式

8255A方式控制字

D7

D6

D5

D4

D3

D2

D1

D0

1

A口方式

A口IO

C口高4位IO

B口方式

B口IO

C口低4位IO

硬件线路连接

在Proteus软件中绘制硬件电路图。8255A片上地址:PA端口地址为70H、PB端口地址72H、PC端口地址为74H、控制端口地址为76H

8086汇编程序:多位数码管动态扫描显示2023_第1张图片

共阴极数码管段码表

数值

dp

g

f

e

d

c

b

a

0

0

0

1

1

1

1

1

1

3F

1

0

0

0

0

1

1

0

0

06

2

0

1

0

1

1

0

1

1

5B

3

0

1

0

0

1

1

1

1

4F

4

0

1

1

0

0

1

1

0

66

5

0

1

1

0

1

1

0

1

6D

6

0

1

1

1

1

1

0

1

7D

7

0

0

0

0

0

1

1

1

07

8

0

1

1

1

1

1

1

1

7F

9

0

1

1

0

1

1

1

1

6F

A

0

1

1

1

0

1

1

1

77

B

0

1

1

1

1

1

1

1

7F

C

0

0

1

1

1

0

0

1

39

D

0

1

0

1

1

1

1

0

5E

E

0

1

1

1

1

0

0

1

79

F

0

1

1

1

0

0

0

1

71

程序代码 

DATA SEGMENT
;共阴极数码管段码表
	SEGTAB DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH,
	;显示字符  0    1    2    3    4    5    6    7    8    9  
		   DB 77H, 7CH, 39H, 5EH, 79H, 71H, 00H
	;显示字符  A    B    C    D    E    F   空

	OUTBUFF	DB 2,0,2,3	;显示字符             
DATA ENDS

STACK SEGMENT
S DB 100 DUP(0)

TOP EQU $-S
STACK ENDS

;声明端口地址
A_PORT    	EQU	70H
B_PORT    	EQU	72H
C_PORT    	EQU	74H
CRTL_PORT   EQU	76H

CODE SEGMENT
	ASSUME CS:CODE,DS:DATA,SS:STACK
START:
	MOV AX, DATA
	MOV DS, AX
	
	MOV AL, 10000000B	;8255A初始化
	OUT CRTL_PORT, AL	;写入控制字

LOOP1:	
	CALL DISP
	JMP  LOOP1			;无条件循环
	MOV AH, 4CH
	INT 21H  

;显示函数 子程序    
DISP  PROC

AGAIN:	
	MOV  CL, 0FEH		;位选, 第一位显示      
	LEA  SI, OUTBUFF 	;获取被显示字符的偏移地址

LEDDISP:
	MOV  AL, CL	   
	OUT  C_PORT, AL		;C口输出AL的内容,选中第一个数码管

	LEA  BX, SEGTAB		;获取段码表的偏移地址
	MOV  AL, [SI]       ;取出被显示的字符    
	XLAT				;换码[BX+AL]->[AL]   		
	OUT  B_PORT, AL		;换码后, AL内存的内容就是 数组SEGTAB[OUTBUFF]  
	
PUSH CX             ;延时程序
	MOV CX, 100
	Delay: LOOP Delay	
	
POP CX              ;延时结束 要POP CX
	MOV  AL, 0     	    ;清零操作
	OUT  B_PORT, AL   
	
CMP  CL, 0F7H		;比较指令,判断是否循环左移
	JE  NEXT
	INC SI
	ROL CL, 1			;1111 1110 不带进位的循环左移 P106
	
	JMP  LEDDISP

NEXT:RET
DISP ENDP

CODE ENDS
    END START

 
 

运行结果:

8086汇编程序:多位数码管动态扫描显示2023_第2张图片

暂停仿真效果:

8086汇编程序:多位数码管动态扫描显示2023_第3张图片

8086汇编程序:多位数码管动态扫描显示2023_第4张图片

你可能感兴趣的:(汇编语言,学习,汇编)