标题: 单个按键的另类消抖方法 [打印本页]

作者: zhanglei    时间: 2013-6-19 03:17
标题: 单个按键的另类消抖方法
关于消抖,我现在想到的方法只有两种,一种是延时跳过抖动再检测;另一种也就是本贴的思路:就是把抖动灭掉,不让它抖动,而不是跳过抖动,如下图:

#include<AT89X55.H>
#define uchar unsigned char
#define uint unsigned int
sbit key=P1^3;
uchar i;
uchar code num[]=
{0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/
0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/
0xF8,/*7*/0x80,/*8*/0x90,/*9*/};
void keysan()//按键扫描
{
     bit flag;
     uint keysta;
     if((!key)&amp;(!flag))
    {
         key=0;//消抖
         i++;
         if(i&gt;9)  
         i=0;  
         flag=1;
     }
      if(!key)
     {
          keysta++;  
          if(keysta==10000)
          {
              key=1;//拉高  
              keysta=0;  
              flag=0;
           }  
      }
}

void main()
{
      while(1)
     {
         keysan();  
         P0=0xf0;
         P2=num;
     }
}

电路仿真.rar (24.54 KB, 下载次数: 20)


作者: 小新灬    时间: 2014-3-18 21:12
拿来试试
作者: kmtbm    时间: 2015-6-28 17:38
准备下载,看能不能参考
作者: 淡然若梦    时间: 2016-9-1 16:27
不怎么好用
作者: lxa0    时间: 2016-9-1 19:41
楼主是咋样把抖动给“灭”掉的?
我都是调用显示子程序消抖动的
作者: 鬼推磨    时间: 2020-3-7 12:02
没用。仿真测试了,按了,从0跳到2了。有时不准




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1