经典按键扫描消抖算法实例仿真对比

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典按键扫描消抖算法实例仿真对比相关的知识,希望对你有一定的参考价值。

经典按键扫描消抖算法实例仿真对比

经典按键扫描程序算法实现方式

  • Proteus仿真效果对比

这种算法摒弃了加延时的常规做法,

算法实现代码

#include <REGX52.H>
#include <intrins.h>
sbit KeyValue=P3^7;
unsigned char code segment[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//定义共阳数码管显示0~9
unsigned char Trg;
unsigned char Cont;
static char count=1;
void KeyRead( void )
{
    unsigned char ReadData = KeyValue^0x01;   // 
    Trg = ReadData & (ReadData ^ Cont);   // 按键触发为1
    Cont = ReadData;                     // 长按触发为1
	
}

void main() {
		P3=0XFF;
    P0=segment[0]; //开始运行显示0
    while(1) {
			KeyRead();
        if(Trg==1) {
            P0=segment[count];
            count++;
            if(count>=10) {  //超过0~9,数码管显示回到0
                count=0;
            }
        }
    }
}

没有消抖处理代码

#include <REGX52.H>
#include <intrins.h>
sbit KeyValue=P3^7;
unsigned char code segment[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//定义数码管显示0~9

unsigned char Trg;
unsigned char Cont;
    static char count=1;
void main() {
		P3=0XFF;
    P0=segment[0]; //开始运行显示0
    while(1) {
		
        if(KeyValue==0) {
            P0=segment[count];
            count++;
            if(count>=10) {  //超过0~9,数码管显示回到0
                count=0;
            }
        }
    }
}

以上是关于经典按键扫描消抖算法实例仿真对比的主要内容,如果未能解决你的问题,请参考以下文章

最好的按键扫描和消抖方法,适用于复合长按按下或抬起响应按键

按键消抖,矩阵键盘原理和矩阵键盘的仿真模型

按键消抖,矩阵键盘原理和矩阵键盘的仿真模型

FPGA按键防抖

FPGA按键防抖

FPGA按键防抖