单片机消抖延时程序

如何消除键盘的抖动,编写一段消抖程序???(延时程序)要求要用C语言,有关键的语句的注释!!!!!!!... 如何消除键盘的抖动,编写一段消抖程序???(延时程序)
要求要用C语言,有关键的语句的注释!!!!!!!
展开
 我来答
启岩
推荐于2018-03-20 · TA获得超过1851个赞
知道小有建树答主
回答量:809
采纳率:0%
帮助的人:646万
展开全部
#include<reg52.h>

bit KEYFlag = 1; //指示按键状态,'1'为弹起态,'0'按下态

/********************************
按键去抖
*********************************/
void KEYDelay()
{
unsigned char i = 200;
while(i--);
}
/********************************
键翻译
*********************************/
unsigned char KEY_Tran(unsigned char Key)
{
switch(Key)
{
case 0xee: return 0; break; //根据按键编码返回对应的键值
case 0xde: return 1; break;
case 0xbe: return 2; break;
case 0x7e: return 3; break;
case 0xed: return 4; break;
case 0xdd: return 5; break;
case 0xbd: return 6; break;
case 0x7d: return 7; break;
case 0xeb: return 8; break;
case 0xdb: return 9; break;
case 0xbb: return 0x0a;break;
case 0x7b: return 0x0b;break;
case 0xe7: return 0x0c;break;
case 0xd7: return 0x0d;break;
case 0xb7: return 0x0e;break;
case 0x77: return 0x0f;break;
default: break;
}
}
/********************************
键扫描
*********************************/
unsigned char KEY_Scan()
{
unsigned char KEY_Value;
P2 = 0x0f;
KEY_Value = P2;
P2 = 0xf0;
KEY_Value |= P2;
return KEY_Value;
}
/********************************
查键
*********************************/
void KEY()
{
static bit KEYFlag = 1;
static unsigned char KEYCode;
if(KEYFlag)
{
if(KEY_Scan()!=0xff)
{
KEYCode = KEY_Scan();
KEYDelay();//有按键按下延时去抖
if(KEYCode==KEY_Scan())
{
// 键号 = KEY_Tran(KEYCode);
// 此处添加功能模块
KEYFlag = 0;
}
}
}
else
{
if(KEY_Scan()==0xff)
{
KEYDelay();//按键弹起延时去抖
if(KEY_Scan()==0xff)
KEYFlag = 1;
}
}
}
ufvntjj
2009-12-28 · TA获得超过122个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:145万
展开全部
晕~~ 就是单片机做延时 按键抖动MS级的 让单片机延时跳过那个时间就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
holp1024
2009-12-28 · TA获得超过163个赞
知道答主
回答量:198
采纳率:0%
帮助的人:90.9万
展开全部
这个你一点没学过么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式