C语言的按键开关防抖程序~
4个回答
展开全部
外部中断,要求是低电平/下降沿触发。
你应该把按键改成接地,不要接电源。
另外,程序缺少延时,这样,按一下键,会加上很多次的。
试试如下程序:
#include <reg52.h>
unsigned char code tab[] = {
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
unsigned char a, b, c;
//-------------------------------
void delay(unsigned int k)
{
unsigned int i, j;
for(i = 0; i < k; i++)
for(j = 0; j < 121; j++);
}
//-------------------------------
void main()
{
IT0 = 1;
EX0 = 1;
EA = 1;
while(1) {
P0 = tab[c];
}
}
//-------------------------------
void key()interrupt 0
{
c++;
if(c > 10) c = 0;
delay(200); //延时一会
}
//-------------------------------
你应该把按键改成接地,不要接电源。
另外,程序缺少延时,这样,按一下键,会加上很多次的。
试试如下程序:
#include <reg52.h>
unsigned char code tab[] = {
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
unsigned char a, b, c;
//-------------------------------
void delay(unsigned int k)
{
unsigned int i, j;
for(i = 0; i < k; i++)
for(j = 0; j < 121; j++);
}
//-------------------------------
void main()
{
IT0 = 1;
EX0 = 1;
EA = 1;
while(1) {
P0 = tab[c];
}
}
//-------------------------------
void key()interrupt 0
{
c++;
if(c > 10) c = 0;
delay(200); //延时一会
}
//-------------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两个思路:
第一个是,若有按键按下,添加延迟程序,延迟过后若按键还是按下,则判断为确定按下
第二个是,若你用的硬件有中断,则用中断。中断设置为下降沿有效(低电平有效的话就是出现一次低电平就中断一次,达不到防抖效果)。
第一个是,若有按键按下,添加延迟程序,延迟过后若按键还是按下,则判断为确定按下
第二个是,若你用的硬件有中断,则用中断。中断设置为下降沿有效(低电平有效的话就是出现一次低电平就中断一次,达不到防抖效果)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己定义
前者类似PC键盘,长时间按键被当做按了多次
后者则是将一对“按下-释放”动作当做按键一次
前者类似PC键盘,长时间按键被当做按了多次
后者则是将一对“按下-释放”动作当做按键一次
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询