新闻  |   论坛  |   博客  |   在线研讨会
几种按键检测的方式
Linux嵌入式 | 2022-12-31 09:14:54    阅读:7279   发布文章

在我们的实际应用中,按键我们经常见到会在很懂产品应用,因为它是人机交互最常用的一方式,下面就来总结一下常用的几种按键检测方式。

1、 一对一直接连接检测

这种实现按键检测的方法是每一个按键对应一个CPU的IO口,直接判断IO口的高低电平即可判断是哪个按键按下实现比较简单,但按键多的情况下比较浪费IO口。

2、 动态扫描的矩阵按键法

这种方式是将按键按照行列的方式排列,每一行共用一根行线,每一列共用一根列线,如上图所示,这样的话只用占用八个IO口比直接检测法省了一半的IO口。这中检测按键的原理是以扫描的方式检测莫格按键状态。见检测时可以将行的四个IO口IO1-IO4置低电平,在没有按键按下时IO4-IO8应全是高电平,当由按键按下时对应列的IO口会被拉低,这样就可以确定按键在那一列,然后将对应列的电平拉低,读出行的IO的电平,按键按下时行的IO电平会被拉低,这样就确定了按键的行列的位置,相当于确定了按键的坐标,就可以知道是哪个按键按下。

3、 利用AD采样

如上图所示我们可以利用电阻的分压,通过ADC引脚来检测电压,当不同的按键按下时要ADC引脚的电压会不一样,从而判断是哪个引脚按下,这种方式比较节省IO口资源,在程序处理时需要注意ADC采样的误差。

4、 两个IO口检测6个按键

检测过程:先将IO1,IO2输出高电平,当S1按下时,IO2为低电平,当S2按下,IO1为低电平,如果S3按下,IO1,IO2为0.7V(1N4148导通电压),还是低电平。再将IO1输出低电平,读出IO2的电平如果IO2输出为低电平,此时应该是S4或者S6按下。接下来将IO1输出高电平,IO2输出低电平,读IO1电平,如果为低电平则S4按下,否则S6按下,接下来将IO1输出高电平,IO2输出低电平读出IO1,S5按下时,IO1为低电平。如果IO1还是高电平,则S6按下了。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
工科男,多年嵌入式工作者,每日分享工作中常遇到的一些“坑”
推荐文章
最近访客