您的位置 首页 应用

简谈单片机检测按键原理和中止按键检测的方法

简谈单片机检测按键原理和中断按键检测的办法-首先说一下独立键盘检测,在单片机外围电路中 ,通常用到的按键都是机械弹性开关,当开关闭合时,线路导通,开关断开时,线路断开。单片机检测按键的原理:按键的一端接地,另一端与单片机的某个I/O口相连,开始先给I/O赋一高电平,然后让单片机不断检测该I/O口是否变为低电平,当按键闭合时,相当于I/O口与地相连,就会变为低电平。

单片机检测按键原理

矩阵键盘的衔接方法,每一即将每个按键的一端衔接在一起构成行线,每一列将按键的另一端衔接在一起构成列线。这样的话,16个按键排成4行4列就只需8根线。它的按键检测,简略点说,便是先送一列低电平,其他均为高电平,然后轮番检测,承认队伍。

这儿就要说到别的一个东西,switch-case句子又称开关句子,它是一个专门用于处理多分支结构的条件挑选句子。运用switch句子可直接处理多个分支。

按键检测是初学单片机的同学玩的前几个例程,按键的品种有许多(一般按钮,矩阵键盘等等),按键检测的方法也有许多。关于一般按钮当然你会说规划一个外围电路经过GPIO口读一下还不简略,或许你说经过外部中止做边缘检测,关于矩阵键盘来说,往往你会经过队伍别离扫描的方法做按键检测,一般咱们会加一个按键防抖(经典的方法是经过延时二次承认的方法进行按键防抖,还有便是按键开释的时分你可能会经过while句子去防抖,也便是按键假如一向按下,让程序一向死在while里),这些都是初学者常用的方法,可是假如是一个大的程序,往往是不允许你有这么多延时和死循环的。

中止是一个常常运用的按键检测方法,中止之间的时刻就能够作为防抖的处理,并且这种方法适用于程序交融,由于其他传感器的数据读取一般也是经过中止的手法去做的(如摄像头)。我这儿给出一个问题和一个处理方法。

问题:规划一个按键检测程序(多按键),经过中止去读取,要求只要在按键更新的时分才会在主程序里做出呼应,不然不答理,要求规划防抖动,只要两次检测为真时,才进行键值的更新,真值表如下。

简谈单片机检测按键原理和中止按键检测的方法

IN_old_stable为旧的确认值。

IN_new_stable为新的确认值。

IN_old为前次读取的按键值。

IN_new为最新读取的按键值。

当然每次中止后都需求做一次迭代:

IN_old=IN_new;

IN_old_stable=IN_new_stable;

只要新的确认值是咱们值得信任的。

由真值表的核算规矩:

IN_new_stable: D

IN_old_stable: A

IN_old: B

IN_new: C

有:

所以有:

处理:我以STM32F103为例,需求读取GPIO,B口的低四位。

咱们首先在中止里最如下处理:

IN_old=IN_new;

IN_old_stable=IN_new_stable; //前面两行先做迭代。

IN_new=(GPIO_ReadInputData(GPIOB))&0x00001111;//读取GPIOB的低四位。

IN_temp=(IN_old^IN_new)&IN_old_stable; //中心变量

IN_temp|=IN_old&IN_new;

IN_new_stable=IN_temp;这就得到了咱们最新的键值,它是由曩昔旧的确认值,按键前后两次的值所决议的,所以您看,是不是至少得阅历三次中止才能把一个键值更新。

好了,到了这儿咱们把按键的值检测出来了,咱们还有一步,怎么奉告主函数有没有键值更新呢。

咱们剖析一下能够知道:假如咱们比较IN_new_stable和IN_old_stable两次确认值是不是就知道了

界说temp=IN_new_stable^IN_old_stable;假如低四位上有键值更新,则IN_new_stable和IN_old_stable前后两次确认值是不是就不相同了,经过异或核算就反映在了相应的位上。

好了咱们假定低四位在硬件规划时是拉高的,咱们初始化一个中心变量sthchange=0x00001111;

咱们把sthchange和temp进行异或就知道哪一位被置低了。

sthchange^=temp.

则把sthchange给主程序判别就行了,当没有键值更新的时分sthchange=0,有键值更新的时分sthchange》1,经过位运算不就知道哪个键值产生改变了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/347475.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部