矩阵键盘扫描方法

Posted bobuddy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵键盘扫描方法相关的知识,希望对你有一定的参考价值。

一、行列扫描法 (单片机为例)

单片机行列式键盘扫描原理如下:

1、行线P10~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P10~P13)全部输出低电平,列线通电阻上拉到VCC,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。

2、延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。当判断确实有键按下之后,行线轮流输出低电平根据读入列线的数据可以确定键值

3、单片机将P10输出为低电平,其它P11~P13输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将P11输出低电平,其它P10、P12、P13仍为高电平。

4、此时再来读取列线数据,发现列线读到的数据有低电平,数值为1011(0x0B),如果我们的键盘布局已经确定,那么0x0B就代表S5的值了。转到S5键功能处理子程序就可以达到目的。

 

二、行列反转法(单片机为例)

 

这里我们规定 P1.0~P1.3为列,P1.7~P1.4 为行

 

 如图所示:单片机键盘扫描方法两种 - 蓝调 - 蓝调电子

第一步: 行线IO P1.7~P1.4置低电平,列线IO P1.0~P1.3置高电平 ,假设K1按下,那么P1.0=0 读P1口 P1=00001110

第二步: 行线IO P1.7~P1.4置高电平,列线IO P1.0~P1.3置低电平假设K1按下,那么P1.7=0 读P1口 P1=01110000

第三步 : 两个字节相加,得到新数据:01111110(第一行 第一列)每按一个键我们都得到不同的字节,比对我们的字节是什么就可以知道键值是什么了。

以上是关于矩阵键盘扫描方法的主要内容,如果未能解决你的问题,请参考以下文章

扫描中矩阵需要多少

51单片机实现矩阵键盘行扫描

51单片机4x4矩阵键盘扫描+数码管显示

学习笔记之51单片机键盘篇(非编码键盘与编码键盘非编码键盘的扫描方式独立键盘矩阵键盘)

51单片机4x4矩阵键盘扫描+数码管显示

Proteus仿真51单片机4x4矩阵键盘扫描lcd1602显示