1.单个i/o口一个按键:
在一般电路中我们,我们会对每一个按键对应一个gpio口进行检测,如下:
2.矩阵检测
每个io口对应一个按键会浪费gpio口,那么利用矩阵进行检测就可以省下一些,例如
我们常用的键盘,就是利用矩阵检测,如下:
原理解析:
当按键没有按下时,所有的输入端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低;
这样,通过读取输入线的状态就可得知是否有键按下了。
M*N阵矩阵式按键至少也需(M+N)个1/0口,比如4*4共16个按键的矩阵共需8个1/0口;
当按键没有按下时,所有的输入端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低;
这样,通过读取输入线的状态就可得知是否有键按下了。
M*N阵矩阵式按键至少也需(M+N)个1/0口,比如4*4共16个按键的矩阵共需8个1/0口;
3.专用芯片检测:
比如TM1638,这款芯片使用的比较广泛,占用单片机的三个IO口。除了可以检测按键外,还可以用来控制发光二极管。
4.AD口检测按键:
解析:可以通过单片机的AD口检测电压的不同,用来识别不同的按键,这种方法简单有效。
如上图所示, C1用于消除按键的抖动。为了识别更多的按键,电阻的精度需达到1%或更高。
无任何按键按下, AD口电压为3.3V,检测到某个按键的电压范围后,并不是马上响应,
只有再次恢复到3.3V时再作响应,用于防止按键贴连。
如上图所示, C1用于消除按键的抖动。为了识别更多的按键,电阻的精度需达到1%或更高。
无任何按键按下, AD口电压为3.3V,检测到某个按键的电压范围后,并不是马上响应,
只有再次恢复到3.3V时再作响应,用于防止按键贴连。
利用3.3v连接一个电阻在与不同电阻串联在与每一个按键串联,使每个按键按下时导通到地后检测的分压值不同
从而通过AD转化出来的数值不同,用来检测哪个按键被按下了,从而让触发相应的事件;
从而通过AD转化出来的数值不同,用来检测哪个按键被按下了,从而让触发相应的事件;
转载请注明:首页 > 模块资料 > 原理图 ? 单个I/O口检测多个按键