8255芯片实现7段LED显示器

题目是:
软件:Proteus、emu8086

  • 在最小系统和译码电路的基础上,学习使用8255芯片。开关设置的二进制信息由B口输入,经程序转换成对应的七段LED段码后,通过A口输出,由七段LED显示开关二进制的状态值。注:若B口读入的值为0000,则LED显示器将显示0,以此类推,若B口读入的值为1111,则LED显示器将显示F。
    预期效果:
    8255芯片实现7段LED显示器_第1张图片
    思路:
    就是通过B端口进行数据输入,然后通过A端口进行输出,1-4排成从低到高的二进制数,然后再通过根据输入具体数据找到相对应A端口中7个引脚的输出关系,从而达到控制电子数字显示的功能;
  1. 第一步:因为7引脚的LED显示屏中有七个不同块,由七个引脚分别控制,所以需要找出在相应0-F的显示下7个引脚的状态;
    注:当相应引脚为低电平时,引脚控制相应的块就会亮;
    8255芯片实现7段LED显示器_第2张图片
  2. 第二步:找出0-F对应的编码。

040H,0F9H,024H,030H,019H,012H,02H,078H,00H,010H,08H,03H,046H,21H,06H,0EH

  1. 第三步、编码编译
 ;端口地址
INB EQU 2B2H    ;portB读入
OUTA EQU 2B0H   ;portA输出
CTL  EQU 2B6H   ;控制字端口  
;输出端口        0    1    2    3   4   5    6   7    8   9    A    B   C    D    E   F      
DigitalLED  DB 040H,0F9H,024H,030H,019H,012H,02H,078H,00H,010H,08H,03H,046H,21H,06H,0EH
CODE SEGMENT
	ASSUME CS:CODE 
	;初始化控制配置端口
START:MOV DX,CTL 
    MOV AL,10000010B  ;控制字
	OUT DX,AL         ;控制字输入到控制端口 
	;实现B口进,A口出   
INPUT:MOV DX,INB
	IN  AL,DX  			;接收B端口输入的数据
	AND AL,0FH    		;取最低4位 
	MOV BX,OFFSET  DigitalLED   ;将输入字对应内容偏移量送到BX
	XLAT                        ;命令含义:AL<-(DS*16+BX+AL)
	
    MOV DX,OUTA
	OUT DX,AL
	JMP INPUT       ;转回重新B端口输入
CODE ENDS
	END START
  1. 执行查看效果:
    8255芯片实现7段LED显示器_第3张图片
    8255芯片实现7段LED显示器_第4张图片

最难的部分应该是当时想到对应的转换关系,然后想到OFFSET以及XLAT指令选择不同的输出,比一开始纯用CMP和JZ好太多了;

你可能感兴趣的:(汇编,学习总结,微机原理)