北邮.微机原理硬件实验报告 下载本文

内容发布更新时间 : 2024/3/28 23:44:50星期一 下面是文章的全部内容请认真阅读。

可编辑版

两个并行端口的工作方式进行设置,使行线工作在输入方式,列线工作在输出方式,并且将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么在闭合键所在的行线上的值必定为0。这样,有按键时,可读得唯一的行值和列值。

2.设计时,行、列值应放在一个表中,通过查表确定按下的是哪个键。 3.键闭合时,注意加延时防抖动。 4.键松开时,加判断释放程序。 5.按下键盘某键能够返回系统。

(二)实验内容

1、编程:使得在小键盘上每按一个健,4位数码管上显示出相应字符,它们的对应关系如下:

2、接线: PC7~PC0 /8255 接 行3~列0 /4X4键盘 PA7~PA0 /8255 接 dp~a /LED数码管 CS/8255 接 Y1 /IO地址

PB3~PB0/8255 接 S3~S0/LED数码管

(或哪位数码管要显示则位选 S 接 +5V 即高电平,不想显示的数码管 S接 GND 即低电平)

三、硬件连接图和软件程序流程图

1、硬件连接

Word完美格式

可编辑版

3、软件程序流程图

开始 8255初始化C口高四位输出 低四位输入 C口高四位输出低电平 读入C口低四位 有键按下吗 Y 写控制字 ,C口高四

位输入 低四位输出

查询为低电平的行值

查表输出段码 Word完美格式

可编辑版

四、源程序

DATA SEGMENT TABLE1 DB 0,4,8,12 TABLE2 DB 1,5,9,13 TABLE3 DB 2,6,10,14 TABLE4 DB 3,7,11,15

TABLE5 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,53H,79H,71H DATA ENDS

STACK SEGMENT STACK 'STACK' DB 100 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA ,SS:STACK START: MOV DX,SEG DATA MOV DS,DX

MOV DX,OFFSET DATA PUSH DX

LOOPS:MOV DX,28BH ;控制口地址 MOV AL,81H ;控制字10000001 OUT DX,AL

MOV DX,28AH; C口 MOV AL,0FH ;行赋0 OUT DX,AL

IN AL,DX; 读入列值在高4位 MOV CL,AL ;保存列值 CALL DELAY;延迟函数 MOV DX,28AH;再读一遍 MOV AL,0FH ; OUT DX,AL IN AL,DX

CMP AL,CL; 两次读入列值相同,说明不是抖动产生 JNZ LOOPS

TEST AL,08H; 按键是否在第一列

JZ COL1 TEST AL,04H JZ COL2 TEST AL,02H JZ COL3

Word完美格式

可编辑版

TEST AL,01H

JZ COL4 ;没有键值输入

MOV DX,289H 位选第4个LED,B口地址 ; MOV AL,0H ;

OUT DX,AL;熄灭数码管 MOV AH,01H INT 16H

JNZ ENDD; 有键输入则跳出 JMP LOOPS

COL1: CALL JROW;返回行值在AL中 MOV BX,OFFSET TABLE1 JMP NEXT COL2: CALL JROW

MOV BX,OFFSET TABLE2 JMP NEXT COL3: CALL JROW

MOV BX,OFFSET TABLE3 JMP NEXT COL4: CALL JROW

MOV BX,OFFSET TABLE4 JMP NEXT

NEXT: XLAT ;AL中行值对应查列所在的表 MOV BX,OFFSET TABLE5

XLAT ;根据下标查到数码管对应显示 MOV CL,AL ;保存到CL中

MOV DX,289H ;位选第4个LED,B口地址 MOV AL,0H

OUT DX,AL; 熄灭数码管 MOV DX,288H; A口地址 MOV AL,CL ;段选写CL OUT DX,AL

MOV DX,289H ;位选第4个LED,B口地址 MOV AL,08H OUT DX,AL MOV AH,01H INT 16H

JNZ ENDD;有键输入则跳出 JMP LOOPS ENDD: MOV AX,4C00H INT 21H JROW PROC NEAR

PUSH AX ;AL中为已产生的列值 MOV DX,28BH ;控制口地址

MOV AL,88H ;控制字10001000

Word完美格式

可编辑版

OUT DX,AL POP AX OR AL,0F0H ;

MOV DX,28AH; 把列值输入 OUT DX,AL

MOV DX,28AH ;把列值输入

IN AL,DX ;读入行值,高四位 TEST AL,80H JZ ROW0 TEST AL,40H JZ ROW1

TEST AL,20H JZ ROW2

MOV AL,3 ;都不满足则在第3行 JMP EXIT

ROW2: MOV AL,2 JMP EXIT

ROW1: MOV AL,1 JMP EXIT

ROW0: MOV AL,0 EXIT: RET JROW ENDP

DELAY PROC NEAR ;延迟子程序 PUSH CX MOV CX,100H

LOOP1:LOOP LOOP1 POP CX RET

DELAY ENDP

CODE ENDS END START

五、实验结果

键盘输入与数码管的显示一一对应。例如键盘按下B,数码管显示b 。 六、实验总结 键盘扫描程序比较困难。

七、 实验收获与心得体会

本实验对于8255的应用与前面两个实验没有什么大的差别。比较困难的是,键盘扫描程序的设定。实验中采用了先行扫描再列扫描的方式确定按下的位置,再通过查表方式显示。

Word完美格式