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