单片机按键编程去抖动!
展开全部
看你的要求了,
一般软件去抖就可以了,
原理:
判断按键是否按下,
延时一小段时间,
判断按键是否仍然是按下状态,
是的话进入按键按下流程,
否则。。。
一般软件去抖就可以了,
原理:
判断按键是否按下,
延时一小段时间,
判断按键是否仍然是按下状态,
是的话进入按键按下流程,
否则。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好单片机如何去除按键抖动
按键消除抖动用硬件的方法是单稳态电路,或者采用专用芯片,而单片机本身是智能芯片,用软件消除抖动是最佳选择,这样性价比高,可靠性也高,多用一个器件就多一份成本,多一个故障点,设计智能化产品的原则是优先考虑采用软件解决问题。
按键消除抖动用硬件的方法是单稳态电路,或者采用专用芯片,而单片机本身是智能芯片,用软件消除抖动是最佳选择,这样性价比高,可靠性也高,多用一个器件就多一份成本,多一个故障点,设计智能化产品的原则是优先考虑采用软件解决问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据去除抖动的时长来编程.举个例子,比如200毫秒以内的算抖动,去除,超过200毫秒认为有效.
在程序中设置一个寄存器,程序开始时,把寄存器值初始化为0,另外在程序中设置一个定时器,比如10毫秒.
10毫秒定时到了,可以调用一个判断按键是否按下得子程序.
如果没有采集到按键按下去信号,就返回主程序;
如果采集到按下去信号,就让寄存器的值累加1,判断寄存器的值是否为20,
如果为20,则说明已经连续采集到了20*10=200毫秒,设置按键被按下去的
标志,同时把寄存器清零,下次继续从0开始累加;
如果寄存器的值没到20,则返回主程序.
在程序中设置一个寄存器,程序开始时,把寄存器值初始化为0,另外在程序中设置一个定时器,比如10毫秒.
10毫秒定时到了,可以调用一个判断按键是否按下得子程序.
如果没有采集到按键按下去信号,就返回主程序;
如果采集到按下去信号,就让寄存器的值累加1,判断寄存器的值是否为20,
如果为20,则说明已经连续采集到了20*10=200毫秒,设置按键被按下去的
标志,同时把寄存器清零,下次继续从0开始累加;
如果寄存器的值没到20,则返回主程序.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
key
=
0;
if
(
P0.0
==
0
)
{
delay_20ms();
if
(
P0.0
==
0
)
{
key
=
1;
}
else
{
key
=
0;
}
}
if
(
key
==
1
)
{
//
do
something
}
=
0;
if
(
P0.0
==
0
)
{
delay_20ms();
if
(
P0.0
==
0
)
{
key
=
1;
}
else
{
key
=
0;
}
}
if
(
key
==
1
)
{
//
do
something
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询