用51单片机做一个键盘,按一下数码管加1,可是无论我怎么消抖动,总是有多次响应!望高手帮我解决啊!

最好能写一下C的代码!或者发到我邮箱:1135521360@qq.com 谢谢!

你可以在去抖程序里加入检测松手程序例如
……
……

if(!key) //检测键盘是否按下
delay()://去抖延时一般是50ms
if(!key)//再次检测键盘是否按下
×××++: //这里写数码管加"1"程序
while(key);//加入写句,目的是等待key变为原来的状态才会执行下一条指令!
希望可以帮到你!
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-21
增加延时时间,几年前做过,记得延时时间在50ms以上。
如果还不行,重新设计硬件,使用防抖动的电路。本回答被网友采纳
第2个回答  2010-12-21
第3个回答  2010-12-21
同意灰 TAI狼001 的说法,你可能没有检测按键是否松开!

用51单片机做一个键盘,按一下数码管加1,可是无论我怎么消抖动,总是有...
你可以在去抖程序里加入检测松手程序例如 ………if(!key) \/\/检测键盘是否按下 delay():\/\/去抖延时一般是50ms if(!key)\/\/再次检测键盘是否按下 ×××++: \/\/这里写数码管加"1"程序 while(key);\/\/加入写句,目的是等待key变为原来的状态才会执行下一条指令!希望可以帮到你!

请教高手,用51单片机独立按键控制数码管数字加减,为什么在按下独立按...
1、改进按键扫描 2、改进数码管显示 3、用嵌入式系统 以上三选一即可解决

51单片机中如何按下按键时数码管正常显示而不闪烁,并且实现长按连续
k=11;\/\/按键1长按 } else { k=1;\/\/按键1短按 } } i=0;while(!KEY2)\/\/如果按键2按下 { xianshi(neirong);\/\/执行显示 delay_ms(1);\/\/延时 i++;\/\/每次i自加1 if(i>=1000){ k=21;\/\/按键2长按 } else { k=2;\/\/按键2短按 } } i=0;\/\/在下一个按键按下之前清空i的...

51单片机怎么用按键控制一个数码管,按一下显示一
\/*---名称:单个共阳数码管动态显示变化数字内容:通过循环检测P1口按键输入值,然后用数码管输出,没有按键按下时原值不变---*\/#include\/\/包

51单片机按键时,数码管会闪烁一下.原因是什么
原因很简单,这是代码和数码管驱动的问题 按键会影响数码管显示,这是单片机直接驱动数码管会出现的问题,而数码管则是工作在动态扫描方式的,若是采用带有锁存器件的数码管驱动,则不会出现此类现象,因为单片机是周期性的扫描工作方式,单片机直接驱动数码管的电路,当单片机扫描到按键的时候,数码管部分...

51单片机设计一个程序:按键每按一次,数码管加1;当数码管加到9后又...
]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){ uint16 i=1000;while(i--);} void main(){ uchar n ;P2=0xfe;P1=0xff;while(1){ if(k1==0){ if(n>=9) n=0;else n++;P1=shuzu[n];while(!k1);delay();while(!k1);} } } ...

单片机C51实现按键一次数码管加1程序问题。高手进。
设计一个单片机C51程序,实现功能是,1、按KEY1只有红灯亮,KEY2只有黄灯亮,KEY3只有绿灯亮。2、开始右数码管显示0,每按KEY1一次数码管显示加1,至9后再循环。先已经编好程序,第一个实现,但第二个总弄不对。感觉问题很简单,就是差一点,高手帮我看一下。... 展开 #...

51单片机汇编语言按键控制数码管加1加到999
思路是对的,细节描述有问题,算法描述要严谨。为什么要99时清零啊,这可能就是错误的地方了。系统初始化时,清除使用到的寄存器!!然后,当需要加1时做如下动作 寄存器a = a+1 如果寄存器a == 100,{寄存器b=b+1;寄存器a = 0} 这样就可以了,b中的1代表100,a中的1就是1 ...

51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示
1、首先,要把代码写好,点亮数码管。2、代码写完后,要确认原先写好的代码是不是正确的。3、确认代码无误后,进入下一步,就是在这一行代码(箭头所指)的地方,将这四个字删去。4、然后如图所示,四个字已经删去,只要改成数字相应的代码即可。5、这里改成的是代表数字0的代码,如图所示。6、...

51单片机里用一个按键让一个两位数加一并显示在两个数码管上,但是在按...
你的数码管显示应该是扫描方式,所以按键按下时,单片机不能直行显示扫描了,只会亮一个。你可以在定时器中显示数码管。

相似回答