汇编语言:矩阵式键盘扫描实验

要求:

利用4x4矩阵键盘和一个LED数码管构成简单的输入显示系统,实现对键盘的扫描和LED数码管的显示键盘按下键的键号。共有4x4个按键和一个数码管,16个按键的键号分别对应十六进制数字:0~F。单机相应按键,数码管就会显示相应的数字。

电路原理图

数码管:这里采用共阳极数码管

CA为共阳极数码管

CC为共阴级数码管

矩阵键盘扫描步骤:

 

示范程序:

  ORG 0000H
  AJMP KEY2
  ORG 0100H
KEY2: LCALL KS	    ;调用键盘检测走程序KS;调用键盘检测子程序KS,如有键按下A中内容非0
  JNZ K1            ;A中内容非0,则可能键按下,跳K1
  LCALL D10ms       ;调用10ms延时去抖 
  AJMP KEY2         ;无键按下,返回KEY2处继续检测按键是否按下
K1:  LCALL D10m     ;可能有键按下,调用延时10ms子程序(见例5-8)去抖动,
  JNZ K2            ;再调用键盘检测子程序      
  AJMP KEY2         ;无键按下返回继续检测
K2:  MOV R2,#0EFH   ;将列扫描值P1.4为“0”送入R2暂存
  MOV R4,#00H       ;将第0列号送入R4 (列号计数器)暂存
K3:  MOV P1,R2      ;将R2的列扫描值值送P1口,驱动P1.4为低
L6:  JB P1.0,L1     ;判行线电平,P1.0等于1,则0行无键按下跳L1,检测1行
  MOV A,#00H        ;将0行的首键号送入ACC
  AJMP LK           ;跳转到键号计算程序
L1:  JB P1.1,L2     ;P1.1等于1跳转到L2,检测2行
  MOV A,#04H        ;将1行的首键号送入ACC
  AJMP LK           ;跳转到键号计算程序
L2:  JB P1.2,L3     ;P1.2等于1跳转到L3,检测3行
  MOV A,#08H        ;将2行的首键号送入ACC
  AJMP LK           ;跳转到键号计算程序
L3:  JB P1.3,NEXT   ;P1.3等于1跳转到NEXT处,为扫描下一列做准备
  MOV A,#0CH        ;将3行的首键号送入ACC
LK:  ADD A,R4       ;行值与列值相加后的键值送入A
  PUSH ACC          ;将A中的键号送入堆栈暂存
  LCALL DISPLAY     
NEXT:  INC R4       ;将R2的列扫描值送入A
  MOV A,R2          
  JNB ACC.7,KEY2
  RL A
  MOV R2,A
  AJMP K3
K4:  LCALL KS
  JNZ K4
  POP ACC
  RET
KS:  MOV P1,#0FH
  MOV A,P1
  XRL A,#0FH
  RET    
DISPLAY: MOV DPTR,#TABLE
   MOVC A,@A+DPTR
   MOV P2,A
   RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H
  DB 92H,82H,0F8H,80H,90H,88H
  DB 83H,0C6H,0A1H,86H
  DB 8EH
  D10ms:  MOV R7,#25
D1:   MOV R6,#200
   DJNZ R6,$
   DJNZ R7,D1
   RET
  END

效果图:

 

主要是矩阵键盘的扫描过程。知道如何去判断矩阵式键盘是否有键按下有键按下之后在判断是哪一个键被按下,并输出显示。

1、行扫描,全部输出零,读列线状态,若列线读入为零,代表有键按下。

2、判断哪个按键被按下,逐行输出零,依次读列线状态,如:i 行 j 列。

3、给按键赋值:按键有两种赋值方式:一种是直接赋值,另一种是顺序赋值。

4、提取按键值后,行线送出低电平,读入列线电平状态。若列线全为高电平,就表示按键已被释放。

  • 11
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值