因为最近开发一个项目需要用到3*4的矩阵键盘,所以我就写了一下相关的矩阵键盘的内容,分享出来供大家参考。
特别感谢:Yeah__binbin
我所用到的矩阵键盘是3*4的矩阵键盘实物图如下
其中是4行3列,示意图如下
采用循环扫描的方式主要是应用while循环来进行,优点是可以进行快速反应,缺点是占用较多的机时,CPU卡在这个循环里出不来。
具体的思想就是通过变换GPIO的引脚电平来读取具体是哪个按键被按下。
首先是将行中连接的引脚设置为上拉输入模式,将列中引脚设置为推挽输出模式,并将列的引脚都定义为低电平。
如果有按键按下,行输入就会得到低电平信号,就可以确定是哪一行的按键被按下。当测出哪一行的按键被按下后,再反过来,将行的引脚都设置为推挽输出模式,定义为高电平;将列的引脚都设置为下拉输入模式。
这样再通过列的扫描,如果列得到高电平,就可以确定是哪一列的按键被按下。通过两次循环扫描可以定位到具体是哪个按键按下,返回键值后就可以进行后续操作。
效果图
按下#号键
按下7
按下8
代码的大致思想如下