21cnsound 发表于 2024-4-3 19:09:59

1楼键盘扫描代码放在1ms定时中断中用很好用,如果有双击的代码就更好了了。

大哲老师 发表于 2024-6-16 11:58:47

很有想法{:4_174:}

lyldzxx 发表于 2024-8-15 19:55:06

学习借鉴借鉴

weatt 发表于 2024-8-15 22:25:38

zhang32568 发表于 2024-4-3 18:12
一楼的我认为不能使用。首先 计数没有清零!这个不是问题好解决。但是如果第一个延时到了标志变成1.但是 ...

我直接做了一个一个计数,少于数字算短按,多于数字算长按,少于50MS算没按

vb2002 发表于 2025-1-18 13:25:39

大佬有不有带长按,和双击的版本,
用你这个代码好一段时间了.挺稳定的.就是缺个双击

vb2002 发表于 2025-1-19 23:44:27

已经在代码上加入了双击功能,
但是有个问题出来了.
进入省电模式后, 要两次单击(不是双击)才能唤醒单片机,第一次我用电流表量了.其实已经唤醒了. 但是没有执行其他代码, 第二次才进入
但是长按却可以一次唤醒.

vb2002 发表于 2025-1-19 23:45:08

这个是我添加双击的代码, 大佬帮看看可以吗
    if(!key)
    {
      if(!key_flag)
      {
            key_cnt++;
            if(key_cnt >= 25)                        //长按1s
            {
                key_Short_Flag = 0;                //清除短按标志
                key_Long_Flag = 1;                //设置长按标志
                key_flag = 1;                       //设置按键状态,防止重复触发
                key_Long_Function = 1;
            }
            else if(key_cnt >= 5)                //50ms防抖
            {
                key_Short_Flag = 1;                //设置短按标志
                       
            }
      }
    }
    else
    {
      if(key_Short_Flag)                        //判断是否短按
      {
            key_Short_Flag = 0;              //清除短按标志
//            key_Short_Function = 1;
                  key_cnt3=0;
                  key_timers++;                        //统计按键次数
                  if(key_timers ==1)
                  {
                  key_Short_Function = 1;       
                  }
                  else if(key_timers ==2)
                  {
                          
                  key_double_function=1;
                  }
      }
      key_cnt = 0;
      key_flag = 0;                                //按键释放
          
          if(key_timers>0)
          {
          key_cnt3++;
                  if(key_cnt3>20)
                  {
                  key_cnt3=0;                        //清楚双击时间计数       
                  key_timers =0;                        //清除按键次数       
                  }
          }
    }

}

vb2002 发表于 2025-1-20 00:15:41

21cnsound 发表于 2024-4-3 19:09
1楼键盘扫描代码放在1ms定时中断中用很好用,如果有双击的代码就更好了了。 ...

双击我弄出来了.但是不能唤醒省电模式
有点郁闷

tianjing818 发表于 2025-1-20 07:24:38

收藏学习

zhaoye818 发表于 2025-1-20 07:28:14

收藏学习
页: 1 [2] 3
查看完整版本: [分享]简单的按键扫描程序