(21种方案的原理图展示,及原理简单介绍)
按键作为一个输入模块,在单片机开发板中必不可少,本文来讨论按键的设计方案。本文1600字。之后可能对按键编程部分进行分析(可能是视频形式,打字的话,太多了)
按键模块的编程,实际上就是根据检测口的电平变化和按键电路的状态,判断出按键模块中哪个按键是真的按下了,按键编程的最基础,常用的就是区分出每一个按键,其次是每个按键的长按,短按,双击。最后才是组合按键的情况。组合按键是指多个按键同时按下的情况,比如电脑键盘存在3个按键同时按下的情况。多个按键同时按下,独立按键是比较好处理的,因为不存在电路问题,其他的按键电路,有的电路不能容忍多个按键同时按下,如,ADC检测按键,还有的电路,检测起来的程序可能更加复杂,这里就不进行展开了。
按键的模块的设计,主要内容是:按键数量和需要IO口的数量,当然有些不常见的按键电路,需要一些其他器件,芯片辅助完成。
下表为按键设计的一些方案(占用IO口数量在8个IO口以内,可使用扩展芯片。只列出来一部分,有些专用的按键检测芯片,因为本人没有使用过,所以这里没有列出来,欢迎评论区留言)
表1 一些按键检测方案
方案1,2的电路图相似,编程上也基本一致,但是要做到3X3矩阵按键不影响8个IO口剩下的两个,需要对4X4矩阵按键的代码做出一些优化,这里就不进行展开了。下图是4X4矩阵按键和3X3矩阵按键的原理图。
方案3-6,看似就是按键数量的增加,电路的重复,实际上针对不同的按键数量,他们的编程可能存在不同,比如最常见的独立按键编程,只检测一个按键,那如何编程2个独立按键的程序呢?复制,再写个一样的函数?这样做的效率其实很低。独立按键的原理图如图所示。同时独立按键可以加上0.1Uf的电容进行消抖处理,这样我们代码中就不需要软件消抖了。
方案7,8都是按键结合二极管,使得较少的IO口可以检测出较多的按键,这两个我之前都分析过的,也分享过视频,这里就不进行展开了。
方案9,4个IO口检测52个按键,这里使用了较多的二极管,这个的检测原理和方案7,8相似,这里不进行展开了,本人还没有进行测试。但是原理没有问题,同时4个IO口理论上可以检测更多的按键,不过还需要增加二极管的数量。
方案10,译码器+
IO口方案,这个其实就是一个扫描方案,如果你的电路中出现数码管,可以和数码管的位选进行结合,减少单片机IO口的使用数量,当然那样你的代码可能更加的复杂。
方案11,一个IO口检测两个按键,这个设计呢,可能有点超出大部人的理解,但这个设计确实可以存在。通过判断IO电平是被拉高还是拉低区分出两个按键的动作。
方案12,矩阵按键8X8,是一个我之前制作过的一个项目,使用译码器进行扫描,使用CD4051读取按键的状态,64个按键需要扫描64次才完成一轮,当检测按键按下时,停止扫描,进行按键的,短按,长按,双击判断,算是转化为普通的按键了。
方案13,ADC检测按键,这个方案作为最节省IO口的代表,每次我发其他类型的视频,总是有人推荐这个,有一说一,确实。但是这个是需要ADC口的,同时这个按键组合,一定不能存在两个按键同时被按下的情况。还有就是电路中的电阻精度,尽量选择1%,选择5%精度的电阻可能出现按键检测错误现象。
方案14-20,又是一系列方案,这个方案和方案7.8.9是一样的,从方案7,8,9演变而来,取消了方案7,8,9中的部分情况。
方案20,这个8个IO口检测64个按键,其中电路中二极管的数量为8个,这8个二极管的作用就是:区分出是IO1拉低了IO2,还是IO2拉低了IO1。区分出这些呢,一共是56种情况,加上最下边的8个独立按键,即可实现64个按键的区分。
方案21,8路触摸按键。这个方案我是测试过的,可行,但是电路需要较多的元件,因为这个电路是从最基础的部分做起。这个的原理就不分析了,分析起来能新开一篇文章。
至此,21个电路,12种按键方案的电路图已经分享完了,部分方案我是分享过视频的,而每一个方案都是可行的(如果问题,可以提出),之后呢,可能对每种方案的编程思想进行详解,敬请期待。
-
电路图
+关注
关注
10321文章
10718浏览量
528083 -
单片机
+关注
关注
6032文章
44513浏览量
632881 -
开发板
+关注
关注
25文章
4943浏览量
97185 -
按键电路
+关注
关注
1文章
35浏览量
21754 -
按键检测
+关注
关注
0文章
23浏览量
4829
发布评论请先 登录
相关推荐
评论