[经验分享] 检测按键的几种用法

[复制链接]
2501|23
 楼主| benjaminka 发表于 2023-11-25 14:31 | 显示全部楼层 |阅读模式
按键,有多种用法,
1. 独立按键:按一个,对应一个动作,可以用扫描,也可用 中断方式;2. 矩阵按键:常用的 4*4 = 16, 3*8 = 24,... 主要在于将小数按键进行组合,达到 以少生多 的控制效果,节约 IO 控制端口;
3. 长按 短按:这个,是目前较为常用的一种思路,一个按键形成 多个 用途:给出MCU C语言代码框架,方便大家使用;


void Key()
{
      uchar count_x;                   // 定义 临时 变量,用于统计按键的 计时长度;
     if( !K1 )                               // 按键 按下;
    {
         Delay_Nms(30);               // 防抖;
         if(!K1)                           // 确定 按键 真实 按下;
         {
               count_x = 0;           // 记数清 0;
              do{     
                   count_x ++;        // 记录 长按 短按;
                  Delay_Nms(10);
                   if( count_x >= 20) break;    // 记到 20就封顶;
               } while(!K1);          // 设计到 1000ms ,就松手,就退出 计数;

      // 长按 短按 的 时间分界点:(0----20---30)
      if(count_x <= 20)  // 短按;   
       {
          ;         //短按对应 程序体1;
       }
       else      // 长按;
      {
           ;        //长按对应 程序体2;
        }
      }
    }
}

4. 计数按键:这个,通常会结合定时器使用,按下去后,在一个指时时间类,计下按下按键的次数,当时间停止后,对应按键次数,进入对应的 指定模块运行;
xiaoyaodz 发表于 2023-12-5 11:48 | 显示全部楼层
通过不断地查询按键的状态来判断是否有按键被按下
biechedan 发表于 2023-12-5 18:10 | 显示全部楼层
状态机法是通过检测按键引脚的电平变化和按键的状态变化来判断按键是否被按下。
zerorobert 发表于 2023-12-5 20:15 | 显示全部楼层
对于有多个按键的情况,可以通过扫描的方式逐个查询每个按键的状态。
caigang13 发表于 2023-12-6 11:19 来自手机 | 显示全部楼层
一般就是查询法和中断法。
cashrwood 发表于 2023-12-6 17:33 | 显示全部楼层
在矩阵键盘的检测中,可以使用中断处理来快速检测到按下的按键,并执行相应的程序或操作。
wilhelmina2 发表于 2023-12-8 09:16 | 显示全部楼层
在一些实时性要求较高的应用中,可以使用带有中断功能的按键检测方式。
rosemoore 发表于 2023-12-8 10:06 | 显示全部楼层
中断法是通过检测按键引脚的中断请求来判断按键是否被按下。当按键被按下时,按键引脚会产生中断请求,单片机响应中断请求后,可以执行相应的按键处理程序。
claretttt 发表于 2023-12-9 15:02 | 显示全部楼层
可以检测多个按键,但是需要合理设置扫描的时间间隔,以避免出现漏检或误检的情况。
robincotton 发表于 2023-12-9 16:08 | 显示全部楼层
单片机通过逐行或逐列扫描按键矩阵, 确定哪个按键被按下。
wilhelmina2 发表于 2023-12-10 16:12 | 显示全部楼层
当按键被按下时,会产生一个中断信号,单片机会在中断服务程序中处理按键事件。
pl202 发表于 2023-12-10 18:06 | 显示全部楼层
通过检测按键的输入引脚是否有低电平信号来判断按键是否被按下。
fengm 发表于 2023-12-10 18:21 | 显示全部楼层
通过定时器定期查询按键的状态,当定时器的定时时间到达时,查询按键的状态。
uptown 发表于 2023-12-12 12:39 | 显示全部楼层
使用计时器、比较器等电路来实现按键的检测。
abotomson 发表于 2023-12-12 14:51 | 显示全部楼层
通过行列交叉的方式检测按键是否按下。
uiint 发表于 2023-12-13 10:44 | 显示全部楼层
由于机械按键在按下和弹起时会产生抖动,导致按键引脚的电平变化不稳定。为了消除按键抖动的影响,可以使用软件的方法来实现抖动消抖。
youtome 发表于 2023-12-13 18:39 | 显示全部楼层
带有去抖动功能的按键检测              
1988020566 发表于 2023-12-14 16:48 | 显示全部楼层
中断法按键检测              
mattlincoln 发表于 2023-12-14 19:48 | 显示全部楼层
当需要检测多个按键时,可以使用矩阵按键检测方式。
tpgf 发表于 2023-12-15 14:40 | 显示全部楼层
长按和短按的延时方式怎么定呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

1615

帖子

0

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