關于消抖,我現在想到的方法只有兩種,一種是延時跳過抖動再檢測;另一種也就是本貼的思路:就是把抖動滅掉,不讓它抖動,而不是跳過抖動,如下圖:

#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)&(!flag))
{
key=0;//消抖
i++;
if(i>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)
2013-6-19 03:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|