您的位置  > 互联网

单片机)按键检测电路设计-1简单介绍(21种按键)

上一篇文章《单片机》-21种按键电路设计-1简介

(21种方案原理图展示,并简单介绍原理)

按钮作为输入模块,在单片机开发板中是必不可少的。 本文讨论按钮的设计。 本文长1600字。 关键的编程部分以后可能会分析(可能会以视频的形式,打字太多了)

按键模块的编程实际上是根据检测端口的电平变化和按键电路的状态来判断按键模块中哪个按键真正被按下。 按钮编程最基本的就是区分各个按钮。 依次是长按、短按和双击各个按钮。 最后就是组合键。 组合键是指同时按下多个键的情况。 例如,计算机键盘上有 3 个键同时按下。 当同时按下多个按钮时,独立按钮更容易处理,因为不存在电路问题。 其他按钮电路,有些电路不能容忍多个按钮同时按下,例如ADC检测按钮,而其他电路,检测过程可能比较复杂,这里不再赘述。

按键模块的设计主要包括:按键数量和所需IO口数量。 当然,一些不常见的按键电路需要其他器件和芯片辅助才能完成。

下表是按键设计的一些解决方案(占用IO口数量在8个IO口以内,可以使用扩展芯片。只列出了一部分。一些特殊的按键检测芯片,因为我没有使用过,这里就不列出来了欢迎在评论区留言。

表1 部分关键检测方案

方案1和方案2的电路图类似,编程也基本相同。 但为了保证3X3矩阵按钮不影响8个IO口中剩余的两个,需要对4X4矩阵按钮的代码进行一些优化,这里不再展开。 。 下图是4X4矩阵按键和3X3矩阵按键的示意图。

方案3-6似乎是增加按钮数量和重复电路。 事实上,对于不同数量的按钮,编程可能会有所不同。 比如最常见的独立按键编程只检测1个按键,那么如何编程2个独立按键程序呢? 再次复制并编写相同的函数? 这样的效率其实是很低的。 独立按钮示意图如图所示。 同时可以在独立按钮上添加一个0.1Uf的电容进行去抖处理,这样我们的代码中就不需要软件去抖了。

方案7和8都是按钮与二极管结合,导致更少

IO口可检测更多按键。 这两个我之前已经分析过,也分享过视频,这里就不展开了。

选项 9,

4个IO口检测52个按键。 这里使用了更多的二极管。 检测原理与方案7、8类似,这里不再展开。 我还没有测试过。 但原理上是没有问题的。 同时,四个IO口理论上可以检测更多的按钮,但二极管的数量仍需要增加。

方案10,解码器+IO口方案,这实际上是扫描方案。 如果你的电路中出现了数码管,可以结合数码管的位选择来减少单片机使用的IO口数量。 当然,你的代码可能会更复杂。

方案11,1个IO口检测2个按钮。 这样的设计可能有点超出大多数人的理解,但是这样的设计确实可以存在。 通过判断IO电平拉高还是拉低来区分两个按钮的动作。

方案12,矩阵按钮8X8,是我之前做过的一个项目。 它使用解码器来扫描和读取按钮的状态。 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个按键方案的电路图。 我分享了一些方案的视频,每个方案都是可行的(如果有疑问可以问他们)。 之后,可能会对每个方案有一些疑问。 编程思路将会详细讲解,敬请期待。