本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
关于消抖,我现在想到的方法只有两种,一种是延时跳过抖动再检测;另一种也就是本贴的思路:就是把抖动灭掉,不让它抖动,而不是跳过抖动,如下图:
测试代码:
#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【i】;
}
} |