标题:
单片机键盘消抖,不用延时还能用什么?中断轮询程序怎么写呢?
[打印本页]
作者:
旁观者
时间:
2021-3-31 20:37
标题:
单片机键盘消抖,不用延时还能用什么?中断轮询程序怎么写呢?
上网查了用中断轮询,但是具体要怎么写,无从下手。有哪个大佬有演示程序给我参考一下吗?
作者:
man1234567
时间:
2021-3-31 21:06
键盘消抖原理就是延时,认为超短的时间内能按多次就是抖,硬件软件都是绕着这个转的。
中断轮询就象一个简单的操作系统,弄个定时中断,以不同的间隔时长(中断)执行不同的函数(程序)。
试过也就扔一边了毕竟只是业余玩玩实用为主,网上可以找到如果真的很神奇早就必学了。
作者:
wxxl
时间:
2021-3-31 21:39
并一个103电容也可以,但成本会上去一点
作者:
黄youhui
时间:
2021-4-1 08:47
我用STM8S做过。
就是中断函数里面检测到是下降沿中断(按下按键),就将标志位置1(flag = 1),上升沿(抬起)就将标志位置0(flag = 0).
在对应的执行函数内部多执行几次判断(if(flag == 1))
作者:
人人学会单片机
时间:
2021-4-1 09:10
参考这个贴子 短按+长按
http://www.51hei.com/bbs/dpj-201806-1.html
作者:
taotie
时间:
2021-4-1 09:13
本帖最后由 taotie 于 2021-4-1 10:21 编辑
用硬件74c922。怎么用本坛搜哦。
作者:
rayin
时间:
2021-4-1 09:30
不想用延时, 可以考虑加门电路去抖动, 要增加硬件成本开销. 还是在软件中做延时,消抖简单又节省成本.
作者:
univers
时间:
2021-4-1 10:06
一般都是延时,几个ms级,也可以用定时器。定她个ms级。
作者:
ZXWPL
时间:
2021-4-1 14:10
搞个计时,每10ms检测一次按键,如果连续累计7~8次都都能检测到,认为按键按下,若是某次检测不到,则清除计数。
作者:
cn_zhx
时间:
2021-4-1 15:19
用硬件电路去抖,会增加成本。
如果不影响软件的执行效率,没必要去计较这些吧。
作者:
yxh1010
时间:
2021-4-1 20:34
硬件消抖:按键上并联一个0.1uF的电容;软件消抖:除去延时消抖之外可以利用定时器消抖
作者:
yxh1010
时间:
2021-4-1 20:36
硬件消抖:按键并联一个0.1uF的电容但往往效果不是很好;软件消抖:利用定时器消抖
作者:
huagf007
时间:
2021-5-14 15:57
还是硬件消抖好点,两个电阻一个电容
作者:
18701931930
时间:
2021-5-14 16:18
关于按键去抖动。 去除低级的while和delay写法
硬件就是加个电容接地。
我常用的软件去抖动如下, //最好软硬件结合效果会更好!!!!!
void Key_scan()
{
static u8 i=0,j=0;
if(key==0)
{
if(i==0) {
if(key==0&&j++>100) //j的值根据函数调度周期调整
{
i=1;
//要执行的任务
}
}
}
else
{
i=0; j=0;
}
}
作者:
10220916
时间:
2021-5-16 08:58
按键加小电容呀。那样不用对按键程序延时
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1