新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 4×4矩阵键盘的工作原理与编程

4×4矩阵键盘的工作原理与编程

作者:时间:2016-11-26来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/201611/321762.htm

=====================================================

矩阵键盘键值查找程序

键值存入30H单元

=====================================================

KEY_SCAN:;识别键盘有无键按下子程序

MOVP1,# 0F0H;置列线为0,行线为1

MOVA,P1;读P1口

ANLA,#0F0H;取出高四位

MOVB,A;暂存到B

MOVP1,#0FH;置列线为1,行线为0

MOVA,P1;读P1口

ANLA,#0FH;取出低四位

ORLA,B;高四位与低四位逻辑或运算重新组合

CJNEA,#0FFH,KEY_IN1;0FFH为无按键按下

RET

KEY_IN1:;识别具体按键值子程序

MOVB,A;将按键的特征编码暂存于B

MOVDPTR,#KEYTABLE

MOVR3,#0FFH

KEY_IN2:

INCR3;顺序码加1

MOVA,R3

MOVCA,@A+DPTR;查表

CJNEA,B,KEY_IN3;比较,若相同则找到按键的特征编码。

MOVA,R3;找到特征编码后,取顺序码

MOV30H,A;存入30H单元

RET

KEY_IN3:

CJNEA,#00H,KEY_IN2;末完,继续查

RET;00H为结束码

;特征编码与顺序编码的对应关系表

KEY_TABLE:

DB0EEH,0EDH,0EBH,0E7H,0DEH;0,1,2,3,4,顺序码

DB0DDH,0DBH,0D7H,0BEH,0BDH;5,6,7,8,9,顺序码

DB0BBH,0B7H,07EH,07DH,07BH, 077H;A,B,C,D,E,F顺序码

DB00H;结束码

2、8位数码管显示程序的编程方法

根据要使用的数码管的具体位置来确定扫描初值和扫描方向。

根据使用数码管的个数来确定扫描的位数。

准备好要显示的数据,放入相应的显示单元中。

===========================================================

8位数码管显示子程序

;从右至左依次点亮8个数码管

===========================================================

DISPLAY:

MOV R1,#07FH;扫描初值送入R1

MOV R2,#08H;扫描位数送入R2

MOV R0,#30H;开始填充显示单元

DISP1:MOV A,@R0;显示内容送入A

MOV DPTR,#TABLE;获得表头

MOVC A,@A+DPTR;查表获得显示数据

MOV P0,A;显示单元数据

MOV P2,R1;开始显示当前位

MOV A,R1;准备显示下一位

RR A

MOV R1,A

INC R0;取下一个单元地址

LCALL DELAY2MS;延时2 MS

DJNZ R2,DISP1;重复显示下一个

RET;显示完成,返回

因键值显示只需用一位数码管,可将上面的显示程序进行优化,得到下面的显示程序。

====================================================

键值显示子程序

====================================================

KEY_PLAER:

MOVA,30H;键值数据送入A

MOVDPTR,#TABLE;取段码表地址

MOVCA,@A+DPTR;查显示数据对应段码

MOVP0,A;段码送入P0口

CLRP2.7;第一个数码管显示

CALLDELAY2MS

SETBP2.7

RET

TABLE:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH;0-F

三、演示程序的功能

当你按下矩阵键盘中的任何一个键,蜂鸣器响一声,并在数码管上显示相应的键值。图4为ME300B开发系统的实际演示图片。

图4ME300B开发系统显示键值“E”


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭