找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2650|回复: 14
收起左侧

单片机键盘消抖,不用延时还能用什么?中断轮询程序怎么写呢?

  [复制链接]
ID:340765 发表于 2021-3-31 20:37 | 显示全部楼层 |阅读模式
上网查了用中断轮询,但是具体要怎么写,无从下手。有哪个大佬有演示程序给我参考一下吗?
回复

使用道具 举报

ID:584814 发表于 2021-3-31 21:06 | 显示全部楼层
键盘消抖原理就是延时,认为超短的时间内能按多次就是抖,硬件软件都是绕着这个转的。
中断轮询就象一个简单的操作系统,弄个定时中断,以不同的间隔时长(中断)执行不同的函数(程序)。
试过也就扔一边了毕竟只是业余玩玩实用为主,网上可以找到如果真的很神奇早就必学了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:46065 发表于 2021-3-31 21:39 | 显示全部楼层
并一个103电容也可以,但成本会上去一点
回复

使用道具 举报

ID:592807 发表于 2021-4-1 08:47 | 显示全部楼层
我用STM8S做过。
就是中断函数里面检测到是下降沿中断(按下按键),就将标志位置1(flag = 1),上升沿(抬起)就将标志位置0(flag = 0).
在对应的执行函数内部多执行几次判断(if(flag == 1))

回复

使用道具 举报

ID:390416 发表于 2021-4-1 09:10 | 显示全部楼层
参考这个贴子 短按+长按 http://www.51hei.com/bbs/dpj-201806-1.html
回复

使用道具 举报

ID:342822 发表于 2021-4-1 09:13 | 显示全部楼层
本帖最后由 taotie 于 2021-4-1 10:21 编辑

用硬件74c922。怎么用本坛搜哦。
回复

使用道具 举报

ID:517951 发表于 2021-4-1 09:30 | 显示全部楼层
不想用延时, 可以考虑加门电路去抖动, 要增加硬件成本开销. 还是在软件中做延时,消抖简单又节省成本.
回复

使用道具 举报

ID:382454 发表于 2021-4-1 10:06 | 显示全部楼层
一般都是延时,几个ms级,也可以用定时器。定她个ms级。
回复

使用道具 举报

ID:487569 发表于 2021-4-1 14:10 | 显示全部楼层
搞个计时,每10ms检测一次按键,如果连续累计7~8次都都能检测到,认为按键按下,若是某次检测不到,则清除计数。
回复

使用道具 举报

ID:883031 发表于 2021-4-1 15:19 | 显示全部楼层
用硬件电路去抖,会增加成本。
如果不影响软件的执行效率,没必要去计较这些吧。
回复

使用道具 举报

ID:553939 发表于 2021-4-1 20:34 | 显示全部楼层
硬件消抖:按键上并联一个0.1uF的电容;软件消抖:除去延时消抖之外可以利用定时器消抖
回复

使用道具 举报

ID:553939 发表于 2021-4-1 20:36 | 显示全部楼层
硬件消抖:按键并联一个0.1uF的电容但往往效果不是很好;软件消抖:利用定时器消抖
回复

使用道具 举报

ID:63132 发表于 2021-5-14 15:57 来自手机 | 显示全部楼层
还是硬件消抖好点,两个电阻一个电容
回复

使用道具 举报

ID:554500 发表于 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;
    }
}

回复

使用道具 举报

ID:922008 发表于 2021-5-16 08:58 | 显示全部楼层
按键加小电容呀。那样不用对按键程序延时
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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