微机原理键盘扫描及显示设计实验

更新时间:2023-10-22 06:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、 实验名称:

键盘扫描及显示设计实验

二、 实验目的

1.学习按键扫描的原理及电路接法;

2.掌握利用8255完成按键扫描及显示。

三、实验内容及步骤

1. 实验内容

编写程序完成按键扫描功能,并将读到的按键值依次显示在数码管上。实验机的按键及显示模块电路如图1所示。按图2连线。

图1 键盘及显示电路

图2 实验连线

2. 实验步骤

(1)按图1接线;

(2)键入:check命令,记录分配的I/O空间; (3)利用查出的地址编写程序,然后编译链接; (4)运行程序,观察数码管显示是否正确。

四、流程图

开 始

无按键 初始化缓冲用于存放键值 初始化8255工作方式 显示刷新及清屏

扫描小键盘按键 有按键 显示刷新及清屏 无按键 扫描小键盘按键 有按键 依次检测1-4列,确定是第几行按键按下 将按键保存到缓冲区 显示刷新及清屏

否 否 按键是否弹起 是 是否检测完

五、源程序

是 ;Keyscan.asm

;键盘扫描及数码管显示实验

;***************根据CHECK配置信息修改下列符号值******************* IOY0 EQU 9800H ;片选IOY0对应的端口始地址

;***************************************************************** MY8255_A EQU IOY0+00H*4 ;8255的A口地址 MY8255_B EQU IOY0+01H*4 ;8255的B口地址 MY8255_C EQU IOY0+02H*4 ;8255的C口地址

MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址

STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS

DATA SEGMENT DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATA ENDS ;键值表,0~F对应的7段数码管的段位值

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX

MOV SI,3000H ;建立缓冲区,存放要显示的键值 MOV AL,00H ;先初始化键值为0 MOV [SI],AL MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV DI,3003H

MOV DX,MY8255_MODE ;初始化8255工作方式

MOV AL,81H ;方式0,A口、B口输出,C口低4位输入

OUT DX,AL

BEGIN:

CALL DIS ;显示刷新 CALL CLEAR ;清屏 CALL CCSCAN ;扫描按键 JNZ GETKEY1 ;有键按下则跳置GETKEY1

MOV AH,1 ;判断PC键盘是否有按键按下 INT 16H

JZ BEGIN ;QUIT:

MOV AX,4C00H ; INT 21H

GETKEY1:

CALL DIS ; CALL DALLY CALL DALLY

CALL CCSCAN ; JNZ GETKEY2 ; JMP BEGIN ;

GETKEY2:

MOV CH,0FEH MOV CL,00H ;COLUM:

MOV AL,CH ; MOV DX,MY8255_A OUT DX,AL

MOV DX,MY8255_C ; IN AL,DX

L1:TEST AL,01H ; JNZ L2 ; MOV AL,00H ;JMP KCODE

L2:TEST AL,02H ; JNZ L3 ;无按键则跳回继续循环,有则退出 返回到DOS 显示刷新 再次扫描按键 有键按下则跳置GETKEY2 否则跳回开始继续循环 设置当前检测的是第几列 选取一列,将X1~X4中一个置0 读Y1~Y4,用于判断是哪一行按键闭合 是否为第1行 不是则继续判断

设置第1行第1列的对应的键值 是否为第2行 不是则继续判断

本文来源:https://www.bwwdw.com/article/3v7f.html

Top