• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于51单片机按键长按与短按的设计问题

虽成朽木也要自雕 2019-05-21 浏览量:2200

个人不理解51单片机长按短按的c语言编写(只是略知要定时器):​

思路是,①利用定时器将某个变量自加大于2000ms时判断为长按,否则为短按,进入相应的程序中再次将该变量清零,但是不会用c语言表示出来:②想实现:短按数码管显示0,长按显示1并且蜂鸣器响一声,长按后显示,不是长按松开键后显示(基于你自己的原理图,最好可以附上原理图,谢谢)

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 实现长短按键的功能,我从学单片机开始,一直在写,一直改进

    直到2015年的时候,看了安富莱的开发板的按键代码,之后我再也不去研究了。

    他的代码实现了;按键滤波,长短按键,上下升沿检测,单次触发,连发等功能功能。非常完美。

    51上也是可以跑的,只要你明白了代码的思路,完全可以移植过去。

    【安富莱STM32-V6开发板试用体验】+1.STM32F429之经典按键检测

    https://bbs.icxbk.com/thread-102588-1-1.html
    (出处: ICKEY BBS)



    • 发布于 2019-05-22
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:4
  • 这个不需要定时器也可以判断长按短按的,延时检测我就不加了手机打字麻烦

    if(!key)

    {

    while(!key)

    {

    temp++;

    delayms(10);

    if(temp==200)

    {

    while(!key);

    长按执行的内容;

    }

    }

    if(i<200)断按执行内容;

    temp=0;

    }

    • 发布于2019-05-21
    • 举报
    • 评论 0
    • 1
    • 0

  • 一般按键处理(只有长短按区别时)可以不用到定时器的,一般都是采用延时检测

    在大循环中判断进入检测状态(就是有键按下)下面是伪C语言,你要具体实现

    if(  按键检测变量置位  ){

        delay(10); // 稍微延时去抖判断

        if( 按键检测变量置位  ){

             // 开始正式检测

            delay( 长按检测延时量 )

            if( 按键检测变量置位   ){

                 // 长按处理

            }else{

                // 短按处理

            }

        }else{

            //噪音,退出检测

        }

    }


    • 发布于2019-05-21
    • 举报
    • 评论 0
    • 1
    • 0

  • //以下程序采用非阻塞方式获取键值,可以参考
    //假定 P0_0连接key,低电平有效
    //key_val保存键值
    bit key_read_1;
    bit key_read_2;
    bit key_read_3;
    bit key_val;
    //5ms中断调用,三次采样滤波
    void keyscan(void)
    {
        key_read_1 = !P0_0;
        if((key_read_1 == key_read_2) && (key_read_1 == key_read_3))
        {
            key_val = key_read_1;
        }
        key_read_3 = key_read_2;
        key_read_2 = key_read_1;
    }
    • 发布于2019-05-21
    • 举报
    • 评论 1
    • 0
    • 0
虽成朽木也要自雕 回复了 apleilx :你好哦,再次打扰,我想知道你这个是不是与按键长按短按没有关联的呀 回复

  • 这个跟原理图又没关系,就是纯粹的软件设置延时,判定延时的时间来决定走哪个程序段,一般程序里都有固定的延时程序,直接调用就好,条件语句来判断实际按键的延时长短来决定执行什么动作的
    • 发布于2019-05-22
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于51单片机按键长按与短按的设计问题