打印

一个IO 两个按键,这个电路可靠吗

[复制链接]
3908|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SeaSun|  楼主 | 2011-4-21 09:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 SeaSun 于 2011-4-21 10:43 编辑

使用查询检测方式,平时IO输出3V. 检测时,根据充电时间确定是哪个按键按下了.



参考别人的: http://forum.eet-cn.com/view_comments.jspa?entry_id=6674&from=RSS

相关帖子

沙发
原野之狼| | 2011-4-21 09:37 | 只看该作者
看起来貌似行 而实际上 抖动没有办法处理

使用特权

评论回复
板凳
SeaSun|  楼主 | 2011-4-21 09:44 | 只看该作者
抖动.....  如果Key1抖动, 会延长Key1的充电时间, 也就会误判为 Key2的动作.

那就增大 R31,改为100K,  这样Key1和Key1的充电时间差值就足够大.

先测试一下....

使用特权

评论回复
地板
joyme| | 2011-4-21 09:47 | 只看该作者
这个电路怎么实现按键响应?给电容充电的途径是IO口的电压小于Vdd(应该是3V吧),IO为3V,即使按键按下去没没法把IO口拉地(因为有电阻),电容也不能充电

还有就是将IO口设置为低电平输出电容才能充电,这样的话充电常数也不取决于这样个电阻,而是IO的灌电流充电,再说这个IO口应该要设置为输入口才能检测按键。

即使原理成立,普通的IO口也没法计算充电时间不一样而判断是个按键,除非是AD口,如果有AD口检测按键用分压方式可以检测n个按键,何必多次一举

使用特权

评论回复
5
aaron96031| | 2011-4-21 09:48 | 只看该作者
应该不可靠

使用特权

评论回复
6
SeaSun|  楼主 | 2011-4-21 10:38 | 只看该作者
这个电路怎么实现按键响应?给电容充电的途径是IO口的电压小于Vdd(应该是3V吧),IO为3V,即使按键按下去没没法把IO口拉地(因为有电阻),电容也不能充电

还有就是将IO口设置为低电平输出电容才能充电,这样的话充电 ...
joyme 发表于 2011-4-21 09:47


把IO设置成输入状态,无上拉(高阻态), 电容就会通过电阻充电. 电容一端的电压由VDD变为0V,在这个过程IO输入由高变低.  

用充放电测量温度计都是这样检测的.

使用特权

评论回复
7
ayb_ice| | 2011-4-21 10:43 | 只看该作者
理论上是可以的,但程序太繁锁,意义不大,
不如用程序实现一个按键实现多功能,这样更有意义

使用特权

评论回复
8
joyme| | 2011-4-21 11:27 | 只看该作者
这个电路怎么实现按键响应?给电容充电的途径是IO口的电压小于Vdd(应该是3V吧),IO为3V,即使按键按下去没没法把IO口拉地(因为有电阻),电容也不能充电

还有就是将IO口设置为低电平输出电容才能充电,这样的话充电 ...
joyme 发表于 2011-4-21 09:47
把IO设置成输入状态,无上拉(高阻态), 电容就会通过电阻充电. 电容一端的电压由VDD变为0V,在这个过程IO输入由高变低.  

用充放电测量温度计都是这样检测的.

高阻无上拉不是高电平(至少不是稳定的IO需要的高电平),再说你的从高到低算时间从什么时候开始计算?你都不知道按键什么时候按下,你怎么知道什么时候电容开始充电。按键松开后电容的放电回路怎么处理?这种方案明显不可取,或者按LS的程序实现一键多功能(加长按、短按等处理),或者用AD口检测按键

使用特权

评论回复
9
yjhon| | 2011-4-21 12:22 | 只看该作者
很强大啊

使用特权

评论回复
10
流行音乐| | 2011-4-21 18:13 | 只看该作者
我明白软件应该如何判断按键,此方案确实可行,只是不好区分两个按键同时按下和 Key1 单独按下,因为放电时间很接近。

使用特权

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

本版积分规则

30

主题

468

帖子

1

粉丝