| 根据图上看出单片机是通过用两个ADC IO口读取4按键按下的电压来判断是那个按键 |
|
如果PCB还没有打样出来,那就还来得及,赶紧改原理图,更新layout。下面的一堆就不用看了。 NetInto1和NetInto2是否有接到MCU的GPIO呢? 如果有的话可以分时将KEY0/1和KEY_MOD输出低电平。然后检测NetInto1和NetInto2对应的GPIO的电平状态来判定按键。 如果没有的话,把R32和R36更改为相差较大一点的阻值,然后使用ADC读取KEY0/1和KEY_MOD的电压值,根据电压值不同可以确定是否有按键按下、那个按键被按下。 一个按键简简单单多好,硬是要花式玩,何必为难自己呢。 ![]() |
|
原理图画的不直观, 对于新手来说, 还是容易导致误解. 这个原理图和普通的4独立按键软件处理方法是一样的. 要注意R2,R36的电阻值不能太大.不然IO读入的电压值偏低导致1/0逻辑不稳定. |
ty4444 发表于 2023-8-7 11:19 R2,R36上拉电阻多大. 如果远大于10K(100K或以上), IO设置为高阻方式,读为0则有对应按键按下, 为1无键按下. 如果上拉电阻不够大, 按键按下时电平不够低(单片机不能识别0), 可用AD的方式识别按键, 检测IO电压, 不按或按下电压是不同的. 看你IO上有电容, 也可用测时间的方式检测按键, 置IO推挽方式, IO置0, 给电容充分放电(注意时间不要太短), 检测时, IO置高阻, 同时打开定时器定时, 检测IO跳为1时的时间, 按键不按或按下的时间应该不同. 后面二种麻烦(如按下检测不了0时才用) |
lzts88 发表于 2023-8-6 09:10 刚刚已经补了 |
hhdsdy 发表于 2023-8-6 10:28 怎么区分KEY0/1或KEY_MOD左右按键哪个被按下呢? |
爱电子998 发表于 2023-8-5 20:45 有意义的,中间有网络端子,只是这图画得很不直观而已。 分别检测KEY0/1和KEY_MOD是否为高电平就可以判断是否有按键按下了 |
| 多补下画电路图吧. KEY0/1和KEY_MOD接了下拉电阻, 你要在开关的中间要加下拉电阻到地呀. 要是这电阻为0, 大家是不是瞬间明白怎样识别了 |
| 如果图中标号是连接4个IO口,这个接法是2*2矩阵。识别方法与4*4矩阵相似。貌似采用这种接法没有什么实际意义。 |
| 建议4个按键用4个IO口,这样编程最简单,适合新手。 |
| 按照这个电路图接没有意义啊?如果有用也是二个按键同时按才能有用,好奇怪 |