找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1951|回复: 13
收起左侧

单片机2路AD、多路AD做组合按键程序,如何实现呢?

[复制链接]
ID:731155 发表于 2021-12-22 21:39 | 显示全部楼层 |阅读模式
30黑币
比如2路AD同时按下时,获取到2路AD值怎么处理转为定义的组合键。

最佳答案

查看完整内容

当ADC1=一个值,且ADC2=一个值,就执行对应条件
回复

使用道具 举报

ID:339654 发表于 2021-12-22 21:39 | 显示全部楼层
当ADC1=一个值,且ADC2=一个值,就执行对应条件
回复

使用道具 举报

ID:213173 发表于 2021-12-23 06:34 | 显示全部楼层
一般利用单路AD作多按键识别可以节省IO口,但不适合用于组合键。如2路AD同时按下,系统也得逐路读取AD值,那么扫描结果无非是00 01 10 11四种状态,由此判断即可。多路AD作多按键识别不如直接读IO口电平简单可靠且显得多此一举。
回复

使用道具 举报

ID:407019 发表于 2021-12-23 08:29 | 显示全部楼层
如果是51单片机的话,那就定义一个全局变量,不同按键按下对应不同的地址命令数值,读取函数依据命令来读取不同的通道(以XPT2046为例,不同的通道分别对应不同的命令)

如果是STM32的化,Init初始化里面要多初始化几个通道,按键按下的时候读取函数的通道参数对应不同即可   这个是程序大概的思路
回复

使用道具 举报

ID:731155 发表于 2021-12-23 10:18 | 显示全部楼层
wulin 发表于 2021-12-23 06:34
一般利用单路AD作多按键识别可以节省IO口,但不适合用于组合键。如2路AD同时按下,系统也得逐路读取AD值, ...

IO口要2个以上IO,2路AD可以有很多按键。
回复

使用道具 举报

ID:116978 发表于 2021-12-23 10:27 | 显示全部楼层
按下不同按键取不同AD值,考虑到误差至少要相差1V左右。
回复

使用道具 举报

ID:161164 发表于 2021-12-23 14:24 | 显示全部楼层
hei51com 发表于 2021-12-23 10:18
IO口要2个以上IO,2路AD可以有很多按键。

单路AD已经可以有很多按键
可苦还要2路AD组合?
回复

使用道具 举报

ID:624769 发表于 2021-12-23 15:05 | 显示全部楼层
如果,你AD按键是并联按键的话, 1路就能组合键了.   按照 并联电阻计算公式只要每个按键电阻是倍率, 比如 1K,2K,4K,8K,  那么其中任意两个,甚至3个,4个组合,都能产生 唯一的阻值, 根据阻值就能确切的知道哪几个按键被按下,
回复

使用道具 举报

ID:731155 发表于 2021-12-23 21:37 | 显示全部楼层
lkc8210 发表于 2021-12-23 14:24
单路AD已经可以有很多按键
可苦还要2路AD组合?

单路AD不好做组合键,2路AD方便做组合键,
比如1路是key1,key2,key3,另一路是key4,key5,key6,
组合键,就有key1+key4,key2+key5,key3+key6,key2+key4.....
回复

使用道具 举报

ID:624769 发表于 2021-12-23 22:08 | 显示全部楼层
hei51com 发表于 2021-12-23 21:37
单路AD不好做组合键,2路AD方便做组合键,
比如1路是key1,key2,key3,另一路是key4,key5,key6,
组合键 ...

在程序上,单路远比两路好做组合键,当然前提是并联电阻按键。
比如按键: Key1, Key2, Key3, Key4
分别对应: 1K      2K      4K      8K
那么:  Key1+Key2  = 0.666K,   Key1+ Key3 = 0.75K     Key1+ Key4  = 0.8K
          Key2 + Key3 = 1.2K  Key2 + Key4 = 1.333K     Key3+Key4 =  1.715K
还可以三键组合: Key1 + Key2 + Key3 = 0.545K    Key1 + Key2 + Key4 = 0.571K
                         Key1 + Key3 + Key4 = 0.631K    Key2 + Key3 + Key4 = 0.923K

而不需要去写 特殊的代码, 因为你的组合键,对于程序而言就是一个不同阻值的新按键。
回复

使用道具 举报

ID:213173 发表于 2021-12-24 06:22 | 显示全部楼层
hei51com 发表于 2021-12-23 10:18
IO口要2个以上IO,2路AD可以有很多按键。

由于轻触开关的固有缺陷,日久后接触电阻增大且不稳定,AD多键识别误码率会逐渐提高,在关键设备设计中遭弃用。
回复

使用道具 举报

ID:731155 发表于 2022-3-12 15:12 | 显示全部楼层
wulin 发表于 2021-12-24 06:22
由于轻触开关的固有缺陷,日久后接触电阻增大且不稳定,AD多键识别误码率会逐渐提高,在关键设备设计中遭 ...

是的,GPIO 按键最稳定,但费IO或加成本
回复

使用道具 举报

ID:47286 发表于 2022-3-12 19:50 | 显示全部楼层
AD按键的双按键键值写起来比独立和矩阵键盘麻烦的多 而且响应也会慢 因为最终出来的是键值 而人同时按2~3个按键的间隔远大于只按1个按键 如果不设定更大的等待 最终键值就不对 但留更大等待 按1个键时反应又太迟钝了 所以AD按键的优势在于单一IO可以接很多独立按键 但多按键同时操作的效果并不好 个人经验 供楼主参考
回复

使用道具 举报

ID:47286 发表于 2022-3-12 19:52 | 显示全部楼层
wulin 发表于 2021-12-24 06:22
由于轻触开关的固有缺陷,日久后接触电阻增大且不稳定,AD多键识别误码率会逐渐提高,在关键设备设计中遭 ...

您这个提醒不错 我也遇到了 在容错方面 AD按键比独立和矩阵按键差很多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表