矩阵键盘及数码管显示

  • 格式:doc
  • 大小:32.50 KB
  • 文档页数:1

下载文档原格式

  / 1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ORG 0030H

MOV P2,#0FEH ;置数码管选择初值

TEST: ;按键检测程序

MOV P1,#0F0H ;读P1口高四位数据前先置1 MOV A,P1 ;读P1口高四位

ANL A,#0F0H ;将A低四位清零,便于检测是否

;有键按下

CJNE A,#0F0H,L1 ;有键按下就跳到L1

SJMP TEST ;没键按下就重新开始检测

L1: ;行扫描

MOV A,#0FEH ;置行扫描初值

L2:

PUSH ACC ;保存行扫描值

MOV P1,A

MOV A,P1 ;读P1口的值

ANL A,#0F0H

CJNE A,#0F0H,L3 ;该行有键按下,则转到延时程序L3 POP ACC ;没键按下则弹出行扫描值

RL A ;准备下一行扫描

CJNE A,#0EFH,L2 ;4行没扫描完就开始扫描下一行SJMP TEST ;4行扫描完则重新检测按键

L3: ;确定键编码

MOV A,P1 ;读P1口的值

ANL A,#0F0H ;保存列码

MOV R2,A ;将列码存入R2

POP ACC ;弹出行扫描值

ANL A,#0FH ;保存行码

ORL A,R2 ;得到完整的键码

MOV B,A ;将键码存入B

L4: ;检测是否有抖动或者键按住ACALL DELAY ;不放,直到抖动消失或按键MOV P1,#0F0H ;弹起,才显示按下的键所对MOV A,P1 ;应的字形

ANL A,#0F0H

CJNE A,#0F0H,L4

ACALL DISPLAY ;调用键值处理及显示程序SJMP TEST ;显示完后检测下一个按键DELAY: ;40ms延时去抖动子程序

MOV R5,#06H

D1:MOV R6,#0FAH

D2:DJNZ R6,D2

DJNZ R5,D1

RET

DISPLAY: ;键值处理及显示程序

MOV A,#00H ;置键码表偏移量初值

MOV DPTR,#TAB1 ;读入键码表表头地址

L5:

PUSH ACC ;保存偏移量

MOVC A,@A+DPTR ;读出键码

CJNE A,B,L6 ;将检测到的键码与键码表中的比

;较,若不相等,则转到L6 SJMP L7 ;若相等,转到L7

L6:

POP ACC ;弹出偏移量

INC A ;偏移量加1

CJNE A,#0FH,L5 ;若键码表未查完,则比较B与

;下一个键码

RET ;若查完,返回主程序

L7:

MOV DPTR,#TAB2 ;读入字型码表表头地址

POP ACC ;弹出检测到的键码所对应的

;偏移量

MOVC A,@A+DPTR ;得到键码所对应的字型码PUSH ACC ;保存字型码

MOV A,P2 ;暂存数码管选择位

RR A

MOV P2,A ;选择下一个数码管

POP ACC ;弹出字型码

MOV P0,A ;将字型码送数码管显示

RET ;返回主程序

TAB1: DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH, 0BBH,7BH,0E7H,0D7H,0B7H,077H

TAB2: DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H,0A9H,0A1 H,0B1H,34H,0ADH,0B0H

END