本篇文章给大家谈谈c语言按钮防抖,以及按键消抖程序用c语言对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C语言的按键开关防抖程序~2、单片机键盘去抖动c语言程序!!!3、问一个关于单片机按键延时防抖方面的问题,使用软件防抖(汇编、C语言均可)!4、请教,51单片机C语言,按键防抖5、单片机 按键作为外部中断的输入,怎么使用软件防抖动?c语言,谢谢。6、c语言按键抖动问题
C语言的按键开关防抖程序~
key为按键,规定按下为低电平
if(key==0)
{
delay(50); //延时50ms,消抖
if(key==0) //再判断是否按下
{
while(!key); 松手检测
··················································
该按键按下要实现的功能程序
··················································
}
}
我的习惯是这样写
单片机键盘去抖动c语言程序!!!
使用这个到板子里面:
#include reg52.h
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit KEY1 = P2^4;
sbit KEY2 = P2^5;
sbit KEY3 = P2^6;
sbit KEY4 = P2^7;
unsigned char code LedChar[] = { //数码管显示字符转换表0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
void delay();
void main(){
bit keybuf = 1; //按键值暂存,临时保存按键的扫描值
bit backup = 1; //按键值备份,保存前一次的扫描值
unsigned char cnt = 0; //按键计数,记录按键按下的次数
ENLED = 0; //选择数码管 DS1 进行显示
ADDR3 = 1;
ADDR2 = 0;
ADDR1 = 0;
ADDR0 = 0;
P2 = 0xF7; //P2.3 置 0,即 KeyOut1 输出低电平
P0 = LedChar[cnt]; //显示按键次数初值
while (1){
keybuf = KEY4; //把当前扫描值暂存
if (keybuf != backup){ //当前值与前次值不相等说明此时按键有动作
delay(); //延时大约 10ms
if (keybuf == KEY4){ //判断扫描值有没有发生改变,即按键抖动
if (backup == 0){ //如果前次值为 0,则说明当前是弹起动作
cnt++; //按键次数+1
//只用 1 个数码管显示,所以加到 10 就清零重新开始
if (cnt = 10){
cnt = 0;
}
P0 = LedChar[cnt]; //计数值显示到数码管上
}
backup = keybuf; //更新备份为当前值,以备进行下次比较
}
}
}
}
/* 软件延时函数,延时约 10ms */
void delay(){
unsigned int i = 1000;
while (i–);
}
问一个关于单片机按键延时防抖方面的问题,使用软件防抖(汇编、C语言均可)!
D10mS:MOV R7,#50 ;延时的时间一般为 5-20mS
D1:MOV R6,#100 ;
D2:DJNZ R6,D2 ;
DJNZ R7,D1 ;
RET
D10mS就是一个延时程序,调用它后再进行判断电平判断,就避开了按键按下时的抖动.
请教,51单片机C语言,按键防抖
防抖?
if(0==sw1)
delay(100);//很短的延时,防抖
if(0==sw1)
{
……;
}
while(!sw) 的意思是松开按键才有效,就是松开按键才会执行下一条语句,不能起到防抖作用
单片机 按键作为外部中断的输入,怎么使用软件防抖动?c语言,谢谢。
进入中断后,关闭这个外部中断,同时启动一个50ms的定时器,退出这个外部中断。在那个50ms定时到时,判断这个外部中断引脚的电平 ,确定是否为抖动。
c语言按键抖动问题
第一,中断函数里面不能喂狗,本来看门狗也是一个高级别的中断,比定时器的优先级高,自然你的中断时间就不对了。
第二,你的是飞思卡尔的单片机吧,貌似单片机的IO口有数据方向寄存器,先要把按键的端口设置为输入,如果没有的话,默认引脚都会是高电平,所以你说检测松开能检测到,其实是端口一直是高电平。
只能帮你这么多,我没用过你这款单片机,猜一下是128不?另外按键去抖动用普通的delay函数就可以,何必搞中断,中断本来就是件麻烦事,对程序运行效果影响很大。
关于c语言按钮防抖和按键消抖程序用c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。