找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2207|回复: 6
打印 上一主题 下一主题
收起左侧

MCU C语言程序检测按键的几种用法

[复制链接]
跳转到指定楼层
楼主
ID:880332 发表于 2023-6-12 10:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按键,有多种用法,
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. 计数按键:这个,通常会结合定时器使用,按下去后,在一个指时时间类,计下按下按键的次数,当时间停止后,对应按键次数,进入对应的 指定模块运行;

不知,大家还有什么 常用的 按键 知识,可以一起分享;

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:641483 发表于 2023-6-16 11:16 | 只看该作者
谢谢楼主分享 已收藏!这样长短安键 确实方便灵活
回复

使用道具 举报

板凳
ID:947230 发表于 2023-6-16 12:00 | 只看该作者
不能用中断计时来吗?
回复

使用道具 举报

地板
ID:140489 发表于 2023-6-16 13:44 | 只看该作者
按键消抖不要用延时,这种程序在开发板上玩玩可以,不要用在实际项目中
回复

使用道具 举报

5#
ID:1064915 发表于 2023-6-16 14:26 | 只看该作者
设计到1000ms ,就松手,就退出 计数,1000ms如何计算的?
回复

使用道具 举报

6#
ID:432633 发表于 2023-10-20 16:21 | 只看该作者
不用说delay  30ms了,就是10ms 实际产品中都不能使用,你还有while等按键松开。 不实用的代码。          时基和无阻塞 是最基本的入门技能,用delay这么长时间的,入门都还没入门  
回复

使用道具 举报

7#
ID:46750 发表于 2023-10-21 19:55 | 只看该作者
6楼说得对,建议楼主不要展示这种示例
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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