hulx 发表于 2010-5-14 20:18

新手来说,只有偷偷看的份~

lcmcu 发表于 2010-5-14 21:46

brief110 发表于 2010-5-22 13:14

还是没有搞明白
:'(

xiaoaihua 发表于 2010-5-22 16:24

ucharbdata   KeyVal=0;
sbitKey0=KeyVal^0;
....
sbitKey7=KeyVal^7;
ucharbdata   KeyLast=0;
sbitKeyLast0=KeyLast^0;
....
sbitKeyLast7=KeyLast^7;


if(FClk_100ms) {
                              KeyVal=KeyLast^P1;
                              KeyLast=P1;
                              if(KeyVal!=0)
                              {if(KeyLast0==0) Key0=1;
                                    ....
                                    if(KeyLast7==0) Key7=1;
                               }
                        }

lovewwy 发表于 2010-5-22 21:53

mark 。

呆板书生 发表于 2010-5-23 07:35

键盘去抖,只有两种情况下用,

1.检测长按键
2.检测2个按键同时按下

其他情况下,本书生从来不用去抖,在处理按键后,检测按键是否释放。我想,这种方法,可能就是被hotpower称为0耗时方式,

这个方法,本书生已经用了20多年了,产品的种类无数。某些人所说的干扰问题,其实是另一个话题,那是干扰情况下,输入IO的软积分处理。

xwj 发表于 2010-5-23 08:00

LS,你说的可并不是“0耗时方式”哦

ritamm66 发表于 2010-5-23 12:52

现在都是这样做的啦,还有谁去延时啦?其它事都不用做啦?

liaojihua2010 发表于 2010-7-5 13:42

我发现了生活的最大乐趣就是在二姨家

kingshen23 发表于 2010-7-5 20:05

长见识了·

高建明 发表于 2010-7-5 20:15

唉,我觉得有些人什么都不知道,还在那里误导别人。机械式的按键怎么能不去抖动?见过真正的干扰没有?见过电火花没有?见过电焊没有?做过这样的产品没有?不去抖你会哭的。。。。。。。。。

高建明 发表于 2010-7-5 20:15

按键确认,按键释放都要去抖。

开始的梦想 发表于 2010-7-6 18:53

看看

红金龙吸味 发表于 2010-10-9 16:07

:)

xieshenkui 发表于 2010-10-31 12:33

深受其害!

呆板书生 发表于 2010-10-31 23:25

什么叫真正的干扰,先要问干扰信号的功率有多大,

机械按键,按键的导通电阻和断开电阻分别有多大?从硬件上看,这个很明显就分别出来,除非你的环境的干扰功率大得连这个都分辨不出,那我无话可说,不过,这样的单片机的其他功能,如输出等,是否还能正常工作?这个硬件可靠性也大打折扣。

只要把这个解决了,那当检测到按键第一次导通的时刻,只有一种可能性,就是按键已经按下了,该干嘛就干嘛,

至于如何区分这个键是按下抖动,或者是释放抖动,那是算法问题。

本书生20多年来,做过的项目超过100个,既有娱乐玩具类,也有高尖端类,有电池供电,也有220V驱动继电器,可控硅的,大部分都是进行了量产。在这么多产品设计中,有多次失手的经历,包括IC驱动能力,复位,各种元件的温飘,电源波动等,更多的是软件设计理念失手。

幸运的是,暂时没有产品在按键问题上失手。或者有些更恶劣环境,本书生没遇到。

zq1987731 发表于 2010-11-1 00:17

呵呵~~老帖了,半夜看见还是忍不住顶冷漠及顶书生!
真正的干扰没有?见过电火花没有?见过电焊没有?做过这样的产品没有?
“真正的干扰”,当年做PLC时别说电焊机了,汽车打火都上了,很遗憾,能量大到足以改变电平的干扰脉冲,我是没见到过,后面用过整套大家熟知的EMC设备轮番试过无数回,更是如此!
二姨上就是有些人,天天把干扰看成牛鬼蛇神!还老说“这种东西,计算是没用的,要凭经验”,哼哼...其中尤其是“打火机对IC引脚放电”,很遗憾,用不起高端仪器的小作坊出身的人你们不过是瞎子摸象而已,玩EMC么...根本没这资格!(实话实说而已,不同于现在,当年我也是“没资格”的一员)
“按键看似简单要做好它其实是很难的”、“这都是干扰引起的”——这些都不过是一些设计频繁失误的无能工程师为自己开脱的接口罢了!按键这种简单得要死的东西还拿来当成一门学问的话,很遗憾,这种水准6K封顶!

yqc6768011 发表于 2010-11-2 14:48

:lol受教了 ~~~~~

ninibaba 发表于 2010-11-2 15:43

1、你的方法与传统方法比较起来,哪个程序处理的快些?
2、100ms 的按键时间,是有统计的,正常情况下,基本就在这个数左右

虽然我提出问题
但并不代表我守旧
我还是支持LZ的新思维的
只要方法对
以后就用又何妨

ddtx 发表于 2010-11-2 17:45

貌似这个思想用的挺多的,我们做空调一直在用啊,按下以后,都是轮询检测,通过定时器计时。将按键扫描分为好几个阶段,按下,确认按下,弹起,确认弹起,确保不会出现误动作。不过100MS这个时间太长了,不需要那么长时间。
页: 1 2 3 4 [5] 6 7
查看完整版本: 按键可有**了,能体现一个人的编程水平