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

[复制链接]
5064|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个按键,何必多次一举
aaron96031 发表于 2011-4-21 09:48 | 显示全部楼层
应该不可靠
 楼主| SeaSun 发表于 2011-4-21 10:38 | 显示全部楼层
这个电路怎么实现按键响应?给电容充电的途径是IO口的电压小于Vdd(应该是3V吧),IO为3V,即使按键按下去没没法把IO口拉地(因为有电阻),电容也不能充电

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


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

用充放电测量温度计都是这样检测的.
ayb_ice 发表于 2011-4-21 10:43 | 显示全部楼层
理论上是可以的,但程序太繁锁,意义不大,
不如用程序实现一个按键实现多功能,这样更有意义
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口检测按键
yjhon 发表于 2011-4-21 12:22 | 显示全部楼层
很强大啊
流行音乐 发表于 2011-4-21 18:13 | 显示全部楼层
我明白软件应该如何判断按键,此方案确实可行,只是不好区分两个按键同时按下和 Key1 单独按下,因为放电时间很接近。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

468

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部