找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机程序如何解决按键长按问题?

[复制链接]
跳转到指定楼层
楼主
ID:667149 发表于 2019-12-18 19:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如何解决案件长按问题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:10193 发表于 2019-12-18 22:53 | 只看该作者
确定长按的时间长短后,用一个定时器,利用定时器中断触发。
回复

使用道具 举报

板凳
ID:195446 发表于 2019-12-18 23:14 | 只看该作者
定义一个0.5s的时延函数,当按键按下时,计算0.5s时延函数执行的次数,比如3s以上是长按,以下是短按,那么只需判断次数是大于还是小于6即可。
void Scan_Keys()
{
  if(K1 == 0)
  {
    Delay(100);       //按键去抖动处理
    if(K1 == 0)       //确认有按键按下
    {
      count = 0;      //延时次数变量清0
      while(K1 == 0)  //按键按下状态
      {
        Delay(5000);   //0.5s时延
        count++;      //按键按下的时间是0.5s的个数
      }
      if(count < 6)  //短按
      {
        .............;  //do something.
      }
      else            //长按
      
        ............;{//do something.
      }
    }
  }
}
回复

使用道具 举报

地板
ID:470332 发表于 2019-12-19 09:00 | 只看该作者
按时间区分呀
回复

使用道具 举报

5#
ID:662518 发表于 2019-12-19 09:40 | 只看该作者
弄一个判断按键是否按下,延时一会之后判断是否放开的程序就行。
回复

使用道具 举报

6#
ID:839438 发表于 2021-5-17 21:24 | 只看该作者
恍然大悟,谢谢
回复

使用道具 举报

7#
ID:773168 发表于 2021-5-19 10:51 来自手机 | 只看该作者
就是防抖处理,按键按下后多加个延时
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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