矩阵键盘的检测和独立按键有很大的区别

先说矩阵键盘,因为我写的组合键代码是在矩阵键盘的基础上写的,当然在独立按键上写组合键更简单一些。所以当你矩阵键盘的组合键会写的时候,你在独立按键上的组合键也就会写了。
矩阵键盘的检测和独立按键有很大的区别,但是究其本质还是一样的。
先看一下矩阵键盘的原理图:
矩阵键盘原理图
由于矩阵键盘中每一个按键的两个接线口都是接在io口上的,所以我们就必须在软件里面控制单片机在每个独立按键的两端加上不同的电平。
【注】:独立按键很简单,直接在一端接地就行了。
从上面的原理图中可以看出 p1 口的高四位控制 行,第四位控制 列;所以我们就可以写 p1 = 0x0f 或者写 p1 = 0xf0,这样就实现了在每一个独立按键两端加上不同的电平。
代码编写流程和独立按键一样,第一步要先检测到按键按下,根据上面的原理图,矩阵键盘检测按键是否按下只要给 p1 口赋值 0x0f,然后检测 p1 口的值是否还是 0x0f即可。
之后就要消除抖动,消除抖动的方法还是一样,延时一段时间即可,如图:
单片机矩阵键盘消除抖动
之后就判断具体是哪个按键按下就行了。
【注】矩阵键盘复杂就是复杂在这里。
判断到底是哪个按键按下的思路有两种:
1、逐行扫描
逐行扫描就是说先扫描第一行中的哪个按键按下了,如果没有再扫描第二行,看一下是不是第二行里的某个按键按下了,如果还没有找到按下的那个按键,那么就继续扫描第三行、第四行,知道找出哪个按键被按下了。这个代码实现比较简单,而且这种扫描方法不怎么常用,效率不高,所以这里我就不写了。
2、行列扫描
行列扫描就是说先扫描所有的行,确定是哪一行的按键被按下了,之后再扫描所有的列,找出哪一列有按键被按下了,这样只要扫描两次就可以确定出到底是哪个按键被按下了。
具体代码实现如下:
1、行扫描:
单片机矩阵键盘行扫描
2、列扫描:
单片机矩阵键盘列扫描
最后别忘了按键的松开检测:
单片机矩阵键盘按键松开检测
这样矩阵键盘的编写就说完了,下面说组合键,写第七篇的时候我给它起名字叫复合按键,现在觉得不太好,要不就叫组合键吧。
组合键就是说当按住一个按键的同时再按另一个按键的时候,会有不同的效果。比如:ctrl+c是复制、shift+数字键可以敲出特殊字符等等。
代码编写思路就是:当按住第一个按键的时候,只要这个按键不松开就一直检测能够和它组合的按键,根据按键的不同组合实现不同的效果。
代码如下:
单片机矩阵键盘组合键

高玩超频提升性能的同时,散热的选择也至关重要
爱芯元智AX650N成端侧、边缘侧Transformer最佳落地平台
LED分选方式:芯片与封装
基于INtime的雷达实时操控显示终端设计
雷军持续耍猴,小米6标准版需抢购
矩阵键盘的检测和独立按键有很大的区别
北斗智联出席雷诺·江铃集团合作伙伴大会
2012工业设计与用户体验大会
美国研发新算法 无人驾驶成了我们解决交通堵塞的最佳途径
拆解报告:Google Home Hub智能音箱
经历十年发展,4K电视才算见到了阳光
机器人走向行业应用 5G催生机器人产业新机遇
怎样的区块链落地才是真正的落地
持续创新 艾德克斯领跑汽车和新能源测试解决方案
有哪些PCB布局需要注意的事项
PID控制作用是什么
利用ZigBee开发套件实现设计智能无线管理系统
基于ZigBee无线网络节点的设计及应用研究
锂电池快充的实现原理
三相异步电动机的电磁转矩及机械特性