没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
按键消抖的软硬件方法按键消抖的软硬件方法
刚才整理电脑时候发现的以前存的资料。整理了一些,分享给新手们~
我们所用的按键一般都是机械式的按键,因此在按下的时候并不立即导通,都有一定的抖动过程。在单片机的学习过程中,大
家都有了这样一个按键消抖的概念。记得博主的单片机老师在上课的时候苦口婆心地反复提这。
一、软件消抖:
其实包括课本,很多课外的资料都有些偷工减料的意思,按键消抖消得不科学。仅仅通过间隔一段时间的两次检测一般是无法
确定的一个按键确实按下是还是松开了。下面博主贴的软件消抖是通过一段时间内多次持续检测的方法来确定一个键值,这段
时间中如果有一次是高电平,就从头开始计,直到记够连续低电平的次数足够才确定按键按下,同样按键松开也是如此。
这个思路新手一般比较困惑,不过等以后遇到这类问题时候就会恍然大悟了。(当然大神们用脚趾头想想就get了。。。说得
好像大声脚趾头里有脑袋。。囧。)
下面介绍下编程的思路:
我们写这个按键函数取名为:MnKey(),倘若以后要用到按键的都可以偷懒调用这个按键函数啦~这个函数由下面这三个小函
数组成:
void KeyIn(void); voidKeyChk(void); voidKeyCvt(void)
(1)首先在编写程序的时候先定义一个键值:#define KeyTime 10 //防抖定时时间
(2)一些是这三个函数的具体内容及简单介绍:
//============================================
//函数功能:读入按键,并取反;
//输出参数:Keyport;输出参数:KeyInBuff
void KeyIn(void)
{
KeyInBuff = KeyPort;
KeyInBuff ^=0xff;
}
//============================================
//函数功能:按键防抖;
//输入参数:KeyInBuff;输出参数:KeyCvtBuff
void KeyChk(void)
{
if(KeyInBuff==KeyChkBuff)
{
if(KeyInFlag==0)
return;
else
{
DeKeyTime();
if(KeyTimeBuff!=0)
return;
else
资源评论
weixin_38616359
- 粉丝: 8
- 资源: 934
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功