矩阵键盘扫描方法
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(第一行 第一列)每按一个键我们都得到不同的字节,比对我们的字节是什么就可以知道键值是什么了。
以上是关于矩阵键盘扫描方法的主要内容,如果未能解决你的问题,请参考以下文章