打印
[经验分享]

检测按键的几种用法

[复制链接]
950|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 | 只看该作者
对于有多个按键的情况,可以通过扫描的方式逐个查询每个按键的状态。

使用特权

评论回复
5
caigang13| | 2023-12-6 11:19 | 只看该作者
一般就是查询法和中断法。

使用特权

评论回复
6
cashrwood| | 2023-12-6 17:33 | 只看该作者
在矩阵键盘的检测中,可以使用中断处理来快速检测到按下的按键,并执行相应的程序或操作。

使用特权

评论回复
7
wilhelmina2| | 2023-12-8 09:16 | 只看该作者
在一些实时性要求较高的应用中,可以使用带有中断功能的按键检测方式。

使用特权

评论回复
8
rosemoore| | 2023-12-8 10:06 | 只看该作者
中断法是通过检测按键引脚的中断请求来判断按键是否被按下。当按键被按下时,按键引脚会产生中断请求,单片机响应中断请求后,可以执行相应的按键处理程序。

使用特权

评论回复
9
claretttt| | 2023-12-9 15:02 | 只看该作者
可以检测多个按键,但是需要合理设置扫描的时间间隔,以避免出现漏检或误检的情况。

使用特权

评论回复
10
robincotton| | 2023-12-9 16:08 | 只看该作者
单片机通过逐行或逐列扫描按键矩阵, 确定哪个按键被按下。

使用特权

评论回复
11
wilhelmina2| | 2023-12-10 16:12 | 只看该作者
当按键被按下时,会产生一个中断信号,单片机会在中断服务程序中处理按键事件。

使用特权

评论回复
12
pl202| | 2023-12-10 18:06 | 只看该作者
通过检测按键的输入引脚是否有低电平信号来判断按键是否被按下。

使用特权

评论回复
13
fengm| | 2023-12-10 18:21 | 只看该作者
通过定时器定期查询按键的状态,当定时器的定时时间到达时,查询按键的状态。

使用特权

评论回复
14
uptown| | 2023-12-12 12:39 | 只看该作者
使用计时器、比较器等电路来实现按键的检测。

使用特权

评论回复
15
abotomson| | 2023-12-12 14:51 | 只看该作者
通过行列交叉的方式检测按键是否按下。

使用特权

评论回复
16
uiint| | 2023-12-13 10:44 | 只看该作者
由于机械按键在按下和弹起时会产生抖动,导致按键引脚的电平变化不稳定。为了消除按键抖动的影响,可以使用软件的方法来实现抖动消抖。

使用特权

评论回复
17
youtome| | 2023-12-13 18:39 | 只看该作者
带有去抖动功能的按键检测              

使用特权

评论回复
18
1988020566| | 2023-12-14 16:48 | 只看该作者
中断法按键检测              

使用特权

评论回复
19
mattlincoln| | 2023-12-14 19:48 | 只看该作者
当需要检测多个按键时,可以使用矩阵按键检测方式。

使用特权

评论回复
20
tpgf| | 2023-12-15 14:40 | 只看该作者
长按和短按的延时方式怎么定呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

1126

帖子

0

粉丝