打印
[经验分享]

只用一个IO口就可以检测多个按键

[复制链接]
1525|52
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
macpherson|  楼主 | 2025-5-14 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
但是在一些场合,单片机的管脚有限的情况下(出于成本上考虑),并没有那么多的管脚去检测多个独立按键,那该怎么办?
采用ADC的方式,利用单片机内置的ADC来实现多个按键的检测,当然了,前提是单片机得内置ADC,实现原理图如下:
R1为限流电阻,R2,R3,R4为不同阻值的电阻,当相对应的按键被按下时,R1就和R2,R3,R4中的其中一个组成电阻分压,从而使ADC输出不同的电压值,这时候程序里面就可以通过采集回来的电压去判断那个按键被按下了。

使用特权

评论回复
沙发
kmzuaz| | 2025-5-15 10:59 | 只看该作者
通过在每个按键上串联不同阻值的电阻,当不同的按键被按下时,会在I/O口产生不同的电压值。

使用特权

评论回复
板凳
dspmana| | 2025-5-15 11:45 | 只看该作者
需要单片机有内置的ADC,电阻的精度要求较高。

使用特权

评论回复
地板
ulystronglll| | 2025-5-15 12:25 | 只看该作者
TM1638等专用芯片              

使用特权

评论回复
5
1988020566| | 2025-5-15 12:57 | 只看该作者
将多个按键的一端共同连接到一个IO口(如P0),另一端分别通过二极管(防止按键短路)连接到不同的分压电阻。

使用特权

评论回复
6
minzisc| | 2025-5-15 13:44 | 只看该作者
通过串口或少量IO口与单片机通信,芯片内部完成多键检测和编码

使用特权

评论回复
7
beacherblack| | 2025-5-15 14:52 | 只看该作者
受电阻精度和AD分辨率限制              

使用特权

评论回复
8
deliahouse887| | 2025-5-15 15:35 | 只看该作者
通过按键产生不同数量的脉冲信号,单片机通过读取脉冲数量来判断哪个按键被按下

使用特权

评论回复
9
febgxu| | 2025-5-15 16:34 | 只看该作者
当不同的按键被按下时,I/O口会检测到不同的电压值,这些电压值可以通过ADC(模数转换器)读取并区分不同的按键。

使用特权

评论回复
10
i1mcu| | 2025-5-15 18:21 | 只看该作者
需精确计算分压电阻值,避免电平重叠;按键数量受ADC分辨率限制。

使用特权

评论回复
11
qiufengsd| | 2025-5-15 19:27 | 只看该作者
简单有效,不需要复杂的硬件。              

使用特权

评论回复
12
olivem55arlowe| | 2025-5-15 20:33 | 只看该作者
在IO口上并联电容,不同按键按下时电容充放电时间不同,通过检测充放电状态判断按键

使用特权

评论回复
13
backlugin| | 2025-5-15 22:38 | 只看该作者
通过不同电阻分压,将每个按键映射为不同的电压值。单片机通过AD采样IO口的电压,根据预设的电压范围判断按键状态

使用特权

评论回复
14
geraldbetty| | 2025-5-16 12:17 | 只看该作者
专用芯片法              

使用特权

评论回复
15
ulystronglll| | 2025-5-16 12:48 | 只看该作者
虽然通常用于多于一个IO口的情况,但在特定配置下也可用于仅用一个IO口进行操作。

使用特权

评论回复
16
updownq| | 2025-5-16 13:19 | 只看该作者
使用移位寄存器或多路复用器等              

使用特权

评论回复
17
pmp| | 2025-5-16 13:43 | 只看该作者
选择矩阵键盘              

使用特权

评论回复
18
everyrobin| | 2025-5-16 14:15 | 只看该作者
通过电阻分压网络,不同的按键按下会产生不同的电压值。单片机的ADC可以读取这些不同的电压值,从而判断哪个按键被按下。

使用特权

评论回复
19
usysm| | 2025-5-16 15:24 | 只看该作者
对电容和按键的稳定性要求高,易受干扰

使用特权

评论回复
20
nomomy| | 2025-5-16 16:15 | 只看该作者
矩阵键盘扫描的              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

1822

帖子

1

粉丝