CW32数字电压电流表软件教程(二):按键检测的控制原理解析
- 时间:1个月前
- 作者: LPL电竞下注官网
独立按键其实就是一个非自锁的轻触开关,有左右两个触点,当按下时左右两个触点闭合,当松开时左右两个触点断开。
对于IO扫描的方式而言,需要单片机以比较高的频率去不间断地判断IO口的输入电平,随后根据IO电平来执行后续的逻辑。外部中断的方式会在章节十二中进行详细介绍,本章着重介绍IO扫描的控制方式。(单片机通过检验测试按键按下前后的高低电平变化,来判断按键是否按下。通过程序的控制,就能轻松实现不同的功能与设置。机械式按键在按下或者释放时,由于机械弹性作用的影响,通常伴随有一段时间的触点机械抖动,然后其触点才稳定下来。抖动时间长短与开关的机械特性有关,一般为5-10ms。在触点抖动期间检测按键的按下与否,有几率会使判断错误,为客服机械抖动所产生的影响,一定要采取消抖措施,可分为硬件消抖和软件消抖。)
对于一个IO而言,在将其配置为输入模式之后,该引脚上的电平受外部电路影响,基本能分为三种状态:高电平、低电平、浮空。高低电平很好理解,这里说明浮空的意义,浮空就是不对该IO进行任何电气属性的连接,此时该IO上的电平是未知的(虽然从直观感受上来看此时IO电压应该是0,但是空气中会有噪声,电路板上也会有噪声,某些电磁干扰也会充当噪声,所以浮空输入的IO电压实际上是未知的)。
当开关闭合,IO电压等于VCC电压,当开关断开,IO电压未知,此时IO电压可能会受到不明来源的干扰,如果使用该电路作为IO扫描的电路方案,抗干扰能力会不好,容易造成误触发,故此应用场景下不考虑使用该电路。
和浮空输入相比,比较好的办法是使用上拉电阻或下拉电阻将IO的电压固定下来,带上拉电阻或下拉电阻电路如图3-2所示:
上拉电阻可以将IO电压固定在VCC电压,当开关闭合时,IO接地使其电压变为GND电压;下拉电阻可以将IO电压固定在GND电压,当开关闭合时,IO电压其实就是电阻R2的电压,此时R2的电压就是VCC。使用上拉/下拉电阻可以很好地提高IO扫描的抗干扰性能,一般情况这两个电路不会有很大区别,挑一个你喜欢的用就好。
按键通过金属导体的相互接触来控制电信号,由于机械特性,这种接触实际上并不可靠,手指按下按键不代表按键真的闭合且保持稳定,这种情况就是按键抖动,抖动过程中按键控制的信号处于亚稳态,亚稳态的信号不可靠,不能将其作为IO扫描的最终结果,为了获取正确的按键状态,我们需要对按键进行消抖处理,按键消抖大概可大致分为两种方式:
硬件消抖:硬件消抖一般会在按键两端并联电容,通过电容的充放电作用将按键按下时的高频振荡吸收掉,当开关处于亚稳态时,IO电压不规则变化,电容会吸收这些不稳定电压进行充电,这对IO电压有平缓的效果,以此达到消抖的目的,硬件消抖电路如图3-3所示。
简单的软件消抖:极为简单的软件消抖一般是通过延时的办法来跳过亚稳态阶段,当检测到按键按下时,不会立即去检测电平,而是经过短暂的延时之后,再去检测当前引脚的电平,这能在一定程度上消除亚稳态带来的影响,但需要对按键按下和抬起都进行延时判断才能更为有效。
更好的软件消抖:在监测到IO电平发生变化后的一小段时间内快速采集IO的电平状态,如果这一小段时间内IO电平全都属于有效电平,则认为按键已按下(这种利用数学进行消抖的方式达到了对数字信号的筛选作用,所以他也是一种简易滤波器)。
在条件允许的情况下,硬件消抖的效果会更好,如果PCB没有多余的空间留给这个消抖电容,使用软件消抖同样是一个不错的方案。
CW32F003核心板上一共有两个按键,一个复位和一个用户按键,复位作为单片机的特殊功能,不可以作为按键使用,故只有用户按键可以作为按键使用。 CW32F003核心板关于独立按键的原理图如图3-4所示。
通过上面的原理图可以了解到,按键的一端接到了地,另一端接到单片机的PB2引脚上。通过检测PB2引脚的电平状态,判断按键是否按下。当按键松开的时候,PB2检测到的电平为高电平,当按键按下的时候,PB2检测到的电平为低电平。
外部电路不含上下拉电阻,对IO而言是浮空输入,因此需要使用单片机内部的上下拉电阻;电路不含消抖电容,故编程上需要对按键进行软件消抖。
从开发板原理图了解到按键接的是单片机的PB2。我们要使能按键就需要配置GPIOB端口。下面我们就以按键连接的PB2进行介绍。
由于时钟的配置在之前的章节已有说明,故不再赘述,我们直接对端口进行初始化。初始化的代码与上文GPIO输出的配置略有不同,完整代码如下:
本次实验采用软件消抖,消抖函数的编写思路为:设置按键检测标志位(Flag_Key),当单片机检测到按键按下,即PB2为低电平时,将标志位置1;在后续的条件判断中如果标志位为1,则检测按键是否松开,若已松开则完成本次判断,认为按键已经按下过一次。这种方式可以不用延时判断,节约软件资源。
审核编辑:刘清声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。举报投诉上拉电阻上拉电阻+关注
文章出处:【微信号:武汉芯源半导体,微信公众号:武汉芯源半导体】欢迎添加关注!文章转载请注明出处。
产品方案 /
标定是通过测量标准器的偏差来补偿仪器系统误差,从而改善仪器或系统准确度、精度的操作。为了提高
标定 /
同时显示 /
有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m为该模板中包含当前像素在内的像素总个数。这本是
信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的
-实验五:ADC采样及显示 /
5.1.数码管动态显示原理 所谓动态扫描显示即轮流向各位数码管送出段码和位码,利用发光管的余辉和人眼视觉暂留作用,使人眼的感觉好像各位数码管同时都在显示。明确了原理,我们要使
-实验四:数码管动态显示 /
其实就是一个非自锁的轻触开关,有左右两个触点,当按下时左右两个触点闭合,当松开时左右两个触点断开。 3.1.2.独立
2.1.LED灯基础知识 2.1.1.LED灯结构组成 LED灯,也称发光
极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的内部是一个半导体的晶片,晶片的一端
-实验一:LED原理与驱动 /
(五):ADC采样及显示 /
极管共阴极或者共阳极组成的成“8”字形的显示器件。数码管通过不同的组合可用来显示
(一):LED原理与驱动基础知识详解 /
的同款接口(XH2.54+CH3.96),方便通用 3、最大40V的表头供电
-产品硬件设计要点 /
运放规格书中的“输入电压噪声”有什么用?如何用它计算运放电路输出端产生的失调电压?
带Eco-mode™和LDO调节器的40-V降压转换器TPS65320-Q1数据表
请问mateXT鸿蒙 4.2.0.130, 如何能安装并正常使用goople play store?
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监视测定之AHT20传感器介绍