微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51 独立按键控制数码管进行加运算 有时会出现数字+2的现象

51 独立按键控制数码管进行加运算 有时会出现数字+2的现象

时间:10-02 整理:3721RD 点击:
代码就五行麻烦各位大神瞅两眼..小弟感激不尽.
就是有时会按下去+1 然后抬手时再+1
基本出现+2的情况都是 释放按键的时候多加了1
而且从来没有+3的情况...
但是我把delay调成50000就没有+2的情况了..
望大家不吝赐教。
k1是按键 delay是延迟 作用是消抖
P0是数码管的管脚 a数组就是不同的数字
main里就是while(1) push();
void push()
{
        if(k1==0)
        {
                delay(1000);
                P0=a[i++];
                if(i>9) i=0;
                while(!k1);
        }         
}

最后的while(!k1);之后最好加一个小延时,然后再执行一次while(!k1);,前面的延时可以缩短,防抖是防抖,判断按键释放是判断按键释放,你现在的情况有可能是没能正确的判断按键释放,假如前面的防抖延时短了,结果后面判断按键释放时,按键的抖动就当成了释放,之后则又检测到按键按下,这样就判断成多次按键了

恩恩 我的防抖少了一个步骤 我改成底下这样就可以了 感觉和你说的是一个意思 谢谢啦~
if(k1==0)
        {
                delay(1000);
                if(k1==0)
                {
                        P0=a[i++];
                        if(i>9) i=0;
                        while(!k1);
                }
        }

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top