搜索
bottom↓
回复: 31

用1个IO(8位AD)做按键最多可以做几个

[复制链接]

出0入0汤圆

发表于 2007-1-11 10:12:05 | 显示全部楼层 |阅读模式
我现在做按键,IO口不够了,想用AD口做,我想问大家一下,我把通道设成8位,最多可以做几个?有什么注意事项?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2007-1-11 13:41:46 | 显示全部楼层
我用过的 做了4个键

出0入0汤圆

发表于 2007-1-11 13:49:48 | 显示全部楼层
3.3V,我做过10个

出0入0汤圆

 楼主| 发表于 2007-1-11 14:21:50 | 显示全部楼层
哦!我的项目有8个按键,这样分辨率为256/8=32,我担心分辨率太低,采集按键不准确,造成程序不稳定!!

我想问"dgxll",你做了10个,分辨率为256/10=25.6,按键采集怎么样?有没有乱采的时候!!

出0入0汤圆

发表于 2007-1-11 14:25:48 | 显示全部楼层
不会,没有误判,  32一级足够了
-----此内容被dgxll于2007-01-11,14:30:05编辑过

出0入0汤圆

 楼主| 发表于 2007-1-11 15:20:59 | 显示全部楼层
好的,谢谢!!我试试看,有问题再请教大家!!

出0入0汤圆

发表于 2007-1-11 15:43:18 | 显示全部楼层
这个主意很希奇。能否说一下八个安键在一个线实现电路。想学习一下。thanks!

出0入0汤圆

发表于 2007-1-11 16:04:53 | 显示全部楼层
AD键盘好容易误识别的,很少键还可以,我做过16键,经常误识别

出1000入0汤圆

发表于 2007-1-11 16:08:46 | 显示全部楼层
按键电阻要按权电阻分配,否则组合键就会误判为其它键。

出0入0汤圆

 楼主| 发表于 2007-1-11 17:01:22 | 显示全部楼层
8位做8个按键好象比较难,我的电阻分配出来分压分别为VCC,10/11VCC,10/12VCC,10/13VCC,10/14VCC,10/15VCC,10/16VCC,10/17VCC;AD值最小的差别为10,我看可能不行,要把通道改成10位的,请大家发表一下意见.

出0入0汤圆

发表于 2007-1-11 17:06:30 | 显示全部楼层
要是担心不稳定的话,。建议做个频率键盘,一个按钮一个频率,做个振荡器。

出0入0汤圆

发表于 2007-1-11 17:25:28 | 显示全部楼层
用10 bit AD,我做按摩椅时做过 24个 按键,用 MEGA48,基本上没有误判。

出0入0汤圆

 楼主| 发表于 2007-1-12 08:50:25 | 显示全部楼层
我想问一下11楼,你的24个按键不是一个IO口吧?你的差值最小是多少?

最小差值是10个有误判吗?

出0入0汤圆

发表于 2007-1-12 12:12:15 | 显示全部楼层
最近准备做一个,至于误判可能是电路问题,但是这种方法不大好实现组合键功能。如果用单键,用软件进行消抖动处理,或者是延时处理。将端口上拉(用外部电阻),然后另外的分压电阻只对地连接,这样可以防止出现多键同时按下影响采样的现象。这样如果发生多键同时按下,执行的是最下面的那个按键的功能。

出0入0汤圆

 楼主| 发表于 2007-1-13 08:59:20 | 显示全部楼层
谢谢大家的指点!!AD做按键没有复合键,其实蛮好的!!

出0入0汤圆

发表于 2007-1-13 09:46:33 | 显示全部楼层
俺是菜鸟,有见别人做过,但不知道其中的道理,哪未大虾能具体讲解一下!!

出0入0汤圆

 楼主| 发表于 2007-1-13 14:52:37 | 显示全部楼层
其实就是利用不同的AD值,来区别按键的,这样节省IO资源!!

出0入0汤圆

发表于 2007-1-14 09:21:34 | 显示全部楼层
如果不要求检多键 可以这样接

   ------------------------------------------------------> ADC

  |           |            |               |

  -           |            |               |

| |10M      KEY1         KEY2            KEYN

  -           |            |               |

  |--!~~~~!------!~~~~~!----- ..........------!~~~~~!---| +5V

  |   ~~~~        ~~~~~                        ~~~~~

  -    500         1K                           500

GND



这样可以避免多键引起的电阻值变化问题,无论按下多少个键只有一个键的键值. 只要电阻分配得当,ADC精度够高就行. 上面电路用8位AD检16键 有+_4 的容差.保险点全部用金膜或者8个键是没问题的.



还一种方式就是直接 按键电阻 并联 与 固定电阻 分压 进AD,这样可以检多键同按.但需要精确分配电阻,麻烦... 理论8个键就有2^8=256种组合电阻值,再和固定电阻分压. 只要能分辨出组合后的电阻值 就知道按下了 哪几个键. 8位AD(8位准确度)...6个键大致可以吧.



   ------------------------------------------------------> ADC

  |           |            |               |

  -           |            |               |

| |         KEY1         KEY2            KEYN

  -           |            |               |

  |           |            |               |

  |           -            -               -

  |          | |          | |             | |

  |           -            -               -

  |           |            |               |

  |            -----------------.....--------------------| +5V

  -

GND

出0入0汤圆

发表于 2007-1-15 09:01:22 | 显示全部楼层
请问电路是怎么样连接的?

出0入0汤圆

 楼主| 发表于 2007-1-15 09:05:10 | 显示全部楼层
谢谢"MY_OURAVR"的经典分析,我现在用的和你的提供第一种方案类似,没有组合键的功能!!



另:我想问一下第二种方案"理论8个键就有2^8=256种组合电阻值"是怎么计算的?

出0入0汤圆

发表于 2007-1-15 12:11:30 | 显示全部楼层
用ad口做按键检测,25个按键,电压分辨幅度为0.2v。大家看看如何来滤波,如何来做。



参考这个方案,也不错.

要能完全解析 多键同按的问题, 必须电阻值选取得当. 所以我说的是指 8种不同电阻值的组合,在和固定电阻分压,AD值的容差就更小了,一般没这么高要求,我们的键盘做的好的只保证7,8键同按吧还只限定某些键.

出0入0汤圆

 楼主| 发表于 2007-1-15 16:22:51 | 显示全部楼层
8种不同电阻值的组合是2^8=256种组合电阻值吗?我觉的好象比这个要多!!

出0入0汤圆

发表于 2007-1-15 17:39:25 | 显示全部楼层
那就不容易分辨了:



每个键值分别为1,2,4,8,16,32,64,128 的编码就可以实现,不过这个是理论上的。



8位AD 要分辨出 这么最小的分辨率是有困难的。



一般来讲,不会8个键一起往下按吧 ?还是一个一个来吧。最多用一个SHIFT 键,有14种功能键就行了。

出0入0汤圆

 楼主| 发表于 2007-1-16 09:01:55 | 显示全部楼层
用AD做按键最好不要有组合功能,要不做起来可能比较麻烦!!

出0入0汤圆

发表于 2010-10-20 16:24:32 | 显示全部楼层
谢谢了,要是有程序在上面就更好了

出0入0汤圆

发表于 2010-10-20 21:17:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-20 22:30:39 | 显示全部楼层
我想就是用按键和电阻组成一个DAC,每个按键对应DAC值中的一个位。这样做按键数会比较少,比如8位的只能做8个键,最后两位还不保险。如果不考虑组合键的话,就可以尝试通过将几个高位的键并联到一个新的键上,这样就是一个键对应多个位同时为1的状态。
建议看一下R-2R网络,只需要两种阻值的电阻就可以组建DAC,虽然电阻的数量是多了点,但只使用两种阻值的高精度电阻比用一堆各种阻值的更容易做的精确。

出0入0汤圆

发表于 2010-10-20 23:16:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-15 20:47:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-15 22:05:35 | 显示全部楼层
use a r2r network and you can uniquely define any key and read any key combination.

出0入0汤圆

发表于 2013-5-7 08:57:54 | 显示全部楼层
学习了

出0入0汤圆

发表于 2013-5-7 09:10:19 | 显示全部楼层
10的差距,8位分辨率,楼主的电阻选择需要下工夫!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 00:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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