基于C语言的抗干扰消抖按键程序设计.docx

基于C语言的抗干扰消抖按键程序设计抗干扰消抖按键程序设计

一、引言

按键作为常见的人机交互方式,应用广泛。然而,在实际应用中,由于环境干扰和按键的本身特性,容易产生按键的抖动和误触发现象,影响按键的可靠性和精度。为此,需要设计一种可抗干扰、消除按键抖动的按键处理程序,以提高按键的可靠性和稳定性。

二、按键的特性和干扰情况分析

1.按键的特性

2.干扰情况

按键在使用过程中可能会受到各种干扰,主要包括:电源噪声或干扰;周围环境的振动或震动干扰;按键自身的抖动(主要是机械振动导致的)。

三、抗干扰消抖按键程序设计

1.概述

2.程序设计思路

①按键输入检测:

首先,需要对按键输入信号进行检测,以判断按键是处于松开状态还是按下状态。实现的方法是通过检测按键所对应的IO口的电平状态,当该IO口的输入电平为高电平时,说明按键未按下,当输入电平为低电平时,说明按键已经按下。

②滤波处理:

③抗干扰处理:

为了增强程序的抗干扰性能,还可以采取以下措施:

1)采用硬件滤波电路:可以通过在按键的输入端添加RC滤波器等硬件电路来消除电源噪声和瞬间信号变化对按键输入的影响。

2)增加重复检测次数:在程序中设置重复检测次数,如果连续检测到多次信号变化,才认为按键状态发生了改变,从而可以减少误触发的概率。

3.代码实现

基于以上设计思路,本程序的主要代码实现如下:

#include

sbitbtn=P1^0;

unsignedinttimer_cnt;

unsignedintslide_window[8];

unsignedintslide_idx=0;

voiddelay(unsignedintt)

{

while(t--){;}

}

voidTimer_Init()

TMOD|=0x01;

TH0=0x3C;

TL0=0xB0;

EA=1;

ET0=1;

TR0=1;

voidTimer_ISR()interrupt1

timer_cnt++;

unsignedintcheck_btn()

unsignedintstable_cnt=0;

unsignedintstable_avg=0;

unsignedintbtn_state=0;

unsignedinti;

if(!btn){

timer_cnt=0;

while(btn==0){}

delay(20);

while(1){

if(btn){

break;

if(timer_cnt>=500){

slide_window[slide_idx++]=timer_cnt;

slide_idx%=8;

if(slide_idx==0){

stable_avg=0;

for(i=0;i<8;i++){

stable_avg+=slide_window[i];

stable_avg=stable_avg>>3;

if(stable_avg>200){

stable_cnt++;

}else{

stable_cnt=0;

if(stable_cnt>=3){

btn_state=1;

returnbtn_state;

intmain()

Timer_Init();

if(check_btn()){

P1=0xFF;

delay(100);

P1=0x00;

四、结论

一、按键特性分析

1.1稳态电阻

按键的稳态电阻通常在10欧姆到10兆欧姆之间,取决于材料,设计和制造工艺。高质量的按键电路应该具有尽量小的电阻。

1.3机械振动

机械振动是指当按键连接时会产生的机械振动或抖动,因而可能导致抖动现象。振动的程度和频率通常与按键设计、材料和宏观环境有关。

二、干扰情况分析

2.1电源噪声

在信号传输中,电源噪声是一种常见的噪声源,会影响到使用噪音灵敏器件,例如来自关闭的继电器、电视等设备的干扰。电源排除方法包括使用稳定电源和内含电源保护的设备。

2.2振动干扰

振动干扰范围广泛,包括外部物体撞击和声音,它们都会对周围环境产生震动。这种干扰可以通过外表设计中的缓冲元件来减少。

2.3按键自身抖动

当按键连接时,机械振动会导致按键抖动,这些抖动信号可能会干扰系统的正确功能并导致误触发操作。按键抖动可以通过使用软件滤波线路来减少。

三、抗干扰消抖按键程序设计数据

为了设计用于抗干扰消抖按键的程序,需要考虑以下数据:

3.2滤波器设计

3.3抗干扰性能

抗干扰性能包括硬件和软件方面的措施。硬件方面,通过使用电源滤波器和隔离器件可以减少干扰;软件方面,可采用滤波器、重复检测等方法来防止误操作。

以上数据是设计抗干扰消抖按键程序的基础,它们可以帮助确定软硬件设计参数,并且最终确定抗干扰消抖按键程序的性能特点。下面介绍一些具体的技术手段。

四、设计技术和方法

4.1滑动窗口滤波器

滑动窗口滤波器是一种通常用于信号滤波的数字滤波器。其核心思想是维护一个由N个最新样本组成的滑动窗口,每次将新样本添加到窗口中,再将之前最老的样本从窗口中删除。这样,总是计算窗口中的平均值,以减少噪声干扰和抖动现象。在抗干扰消抖按键程序中,滑动窗口过大或过小都可能导致滤波器效果变差,因此需要进行适当的优化。

4.2重复检测

重复检测是指在连续检测到按键状态发生变化时,需要进行多次确认才可以生成相应的操作信号。这可以降低误触发的概率,提高按键的稳定性和可靠性。

4.3应对环境振动和机械振动的延时处理

在操作控制系统时,环境振动和机械振动都可能导致按键抖动,进

THE END
1.安卓系统TESTmob6454cc692b0f的技术博客问题又来了:什么时候进行两个buffer的交换呢? 假如是 Back buffer准备完成一帧数据以后就进行,那么如果此时屏幕还没有完整显示上一帧内容的话,肯定是会出问题的。看来只能是等到屏幕处理完一帧数据后,才可以执行这一操作了。 当扫描完一个屏幕后,设备需要重新回到第一行以进入下一次的循环,此时有一段时间空隙,称https://blog.51cto.com/u_16099219/12842983
2.爱科普避坑指南显示器响应时间GTG和MPRT的区别这么大94CTO搜一搜GTG和MPRT是衡量显示器性能的两个重要参数,它们在响应时间、刷新率以及色彩表现等方面存在区别。具体分析如下: 1. 响应时间 - GTG(Gtg):GTG指的是绿色子像素的响应时间,即绿色光从亮到暗所需的最短时间。这个参数对于游戏来说尤为重要,因为游戏中的大部分动作都是以绿色为背景的,如射击游戏中的子弹飞行轨迹。一https://www.94cto.com/search/content/id/154321
3.往年12月14日实时系统时间复杂度深度解析产品中心实时系统是一种能够在明确的时间约束内对外部请求做出响应并进行相应处理的计算机系统,这种系统对于响应时间、可靠性和实时性有着极高的要求,在往年12月14日这个时间点,许多实时系统已被广泛应用于军事指挥、航空航天、工业控制、自动驾驶等领域,实时系统的特点包括任务执行的紧迫性和高可靠性要求,它必须对外界的请求或http://www.hjdxxjc.com/post/44299.html
4.每个程序员都应该知道的计算机延迟数字腾讯云开发者社区并行化操作:通过多线程或异步机制减少等待时间。 批量处理:一次性传输更多数据以减少操作次数。 本地化数据:尽量将数据存储在更靠近计算单元的位置,例如内存。 结语 延迟是每个程序员都需要掌握的基础知识,它贯穿于软件开发的各个环节。从缓存的使用到网络优化,理解延迟数字可以帮助你写出更高效的代码。 https://cloud.tencent.com/developer/article/2479489
5.2024年软件实时运行特性与用户体验深度评测职称评定随着信息技术的飞速发展,软件对于实时时间运行的需求日益凸显,本文将介绍一款预定在2024年12月14日发布的软件,其显著特点在于实时时间运行功能,我们将从产品特性、使用体验、与竞品对比、优点和缺点以及目标用户群体分析等方面进行全面评测,以便为读者提供详尽的参考信息。 http://www.xuelai.net/post/43322.html
6.机械键盘轴体中机械轴与机械光轴有什么区别?鼠标键盘硬件教程6、0.1ms响应时间; 当然,0磨损的意思其实是光路通断信号没有物理接触,但是平常打字游戏时候按键触发还是会对按键以及弹簧有正常的损耗。 机械光轴键盘换轴时,使用拔键器(黑色)与拔轴器(钢片)配合使用。 取下后,可看到红外发射/接收装置。 如生活中,不小心洒进水或者饮料,可立即将键盘75度倾斜,控出水分; https://www.jb51.net/hardware/jianpan/511287.html
7.键盘性能如何检测键盘性能检测方法介绍常见问题什么是键盘性能检测? 键盘性能检测是指评估键盘各项功能和特性的过程,以确保其符合预期要求。 键盘性能检测方法 1. 按键响应时间 使用专门的软件或工具测量按下一个键到计算机接收信号之间的时间。 理想的响应时间通常在 0 到 20 毫秒之间。 2. 按键行程距离 https://m.php.cn/faq/730391.html
8.键盘按键响应时间越快越好吗其次,机械轴会因为弹片接触碰撞产生的冲击而产生杂讯,需要有一个处理杂讯的时间,从而影响了按键触发的速度。 而静电容的非接触式触发则不会出现因弹片接触产生的杂讯,避免了处理杂讯产生的延迟,按键响应更加稳定迅速,触发速度大幅度提升。 同样的按键过程,静电容轴相比机械轴要更加迅速和灵敏,能将玩家的极限操作立刻呈https://blog.csdn.net/weixin_32050773/article/details/112266124
9.甲醛检测仪的功能(精选14篇)甲醛模组内含放大电路、模数转换和甲醛传感器, 甲醛传感器的精度较高, 达0.01ppm[3]。甲醛模组向单片机发送数据, 单片机接收数据, 因此将甲醛模组的数据输出引脚接单片机的数据输入引脚。甲醛模组的响应时间≤60秒, 恢复时间小于60秒, 分辨率小于0.01ppm, 工作温度在50℃以内[6]。 https://www.360wenmi.com/f/file17zh9uit.html
10.androidstudio键盘响应时间延迟怎么处理进行点击Android studio菜单中的view的选项的菜单。这样就会弹出了下拉菜单中,进行选择下拉菜单中的“quickhttps://ask.zol.com.cn/x/8151849.html
11.ipu在汽车上是什么意思ipu在汽车上是什么意思 我要咨询 汽车IPU是指电机控制器。电机控制器是通过主动工作控制电机按照设定的方向、速度、角度和响应时间工作的集成电路。 以下是关于IPU的介绍: 电机的组成:电机、驱动器、电机控制器作为电动汽车的主要部件,在电动汽车的整个系统中起着非常重要的作用。电机由逆变器和控制器组成。https://3g.china.com/auto/mip/1152453.html
12.电脑显示器上auto指的是什么意思互联网科技电脑显示器上auto指的是什么意思 今天小编给大家分享一下电脑显示器上auto指的是什么意思的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。https://www.yisu.com/zixun/729784.html
13.响应时间测试中,启动时间的冷启动和热启动的定义到底是什么最近在测试响应时间,遇到冷热启动的时候,发现对这两个的时间定义有点疑问。 看网上有人说: app冷启动: 当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。 app热启动: 当应用已经被打开, 但是被按下返回键、Home键等按键时回到https://maimai.cn/article/detail?fid=351404623&efid=UCse0vOiJQPBqHO_HgRBXw
14.小车电子驻车什么意思人用手来拉放手刹的时间大概不超过0.3秒,而且人控比电控更灵活一些,而启动电子手刹需要有一个踩刹车的前提动作,和按键的响应时间(避免误操作),而且电机运行的时间也偏长,约0.5秒。即便是踩油门时,电子手刹自动解除,这个动作也未免有些突兀,所以自动驻车系统的功能实现是另外一种原理。https://www.yoojia.com/ask/6-9079034082335825195.html
15.鼠标按键响应越快越好吗?明的博客鼠标按键响应也叫做按键去抖,鼠标驱动里的这个数值真的设置的越快越好吗?其实并不尽然,理论上来说玩FPS,按键的速度尤为重要,但是如果响应太快,鼠标会反应不过来,从而导致反效果。 为什么叫做反效果?举个例子,如果按键响应时间调的过快,比如你玩穿越火线此类的FPS游戏,在用步枪发射子弹的时候,理论上点击一次就发射https://www.cnblogs.com/scrolllock/p/18156708
16.电脑硬件知识大全(热)1.什么是显示器的带宽? 显示器的带宽是反映显示器的显示能力,带宽越大、显示器的响应速度越快,信号失真越少。 2.买显示器时难免要提可视角、亮度、响应时间和对比度等,这些啥来的? 可视角度:就是大家站在位于屏幕正前方的某个位置,仍能清晰看见屏幕影像时的最大角度。从最左侧能高清楚到最右侧能看清画面所形https://www.oh100.com/peixun/yingjianweihu/478112.html
17.如何在《屏幕测试专家》中测试屏幕的虚拟按键响应速度?5. 优化虚拟按键响应时间:通过调整虚拟按键的功能和参数,优化其响应时间,从而提高测试结果的准确性。 四、讨论与结论 在《屏幕测试专家》中测试屏幕虚拟按键的响应速度,需要注意设备的连接稳定性、测试场景的设置以及虚拟按键的布局和大小。通过多次测试并取平均值,可以获得更准确的响应速度数据。此外,优化虚拟按键的功能https://www.sousou.com/bk/406923.html