找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

单个按键的另类消抖方法(转)

[复制链接]
admin 发表于 2012-8-24 11:38:55 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
关于消抖,我现在想到的方法只有两种,一种是延时跳过抖动再检测;另一种也就是本贴的思路:就是把抖动灭掉,不让它抖动,而不是跳过抖动,如下图:
5_46080_ac3e22118637896.jpg 测试代码:
#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】;
}
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 13:36 , Processed in 0.059190 second(s), 13 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表