首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C51 单片机开发按键软件消除的抖动

本篇文章中来整理一下关于按键抖动的问题。...0x01:按键抖动的产生 在日常生活中,我们使用各种遥控器的时候,可能会出现按键不灵的情况,比如空调的遥控器无法打开或关闭空调,电视遥控器无法切换电视台等。 按键抖动与此类似,不过现象刚好与此相反。...按键不灵是操作按键无法完成我们想要的功能,而按键抖动就是按键过于“灵敏”从而产生了我们不想要的情况。比如,我们可能是轻轻晃动了一下开发板,就完成了按键所要完成的功能。...比如,按下按键的功能是让 LED 灯亮起,那么可能我们并没有按下按键,只是轻轻地晃动一下开发板 LED 就亮了……!这不是灵异事件,而是按键抖动!...在我测试的时候,我的开发板不存在按键抖动的情况,因此我使用 2 秒是为了测试。当我短暂的按下按键时(小于 2 秒)并不会让 LED 灯亮起,这样可以模拟抖动

11110

【51单片机】利用【时间延迟】的原理规避【按键抖动问题】

【控制LED状态】 1.按键抖动问题 我们发现中间存在: 2个抖动时间段(按下时)(松开时) 1个中间时间段 我们要采用【时间延迟】的原理规避这一现象 2.我们要采用【时间延迟】的原理规避这一现象...自定义延时子程序传送门:传送门 我们在第一个抖动时间段(按下时)设置一个延时程序 在中间时间段时,设置一个判断按键状态的while循环while(P3_1==0);,使他实现【到达中间时间段,停下等待按钮状态...:实现按下进入循环,松手跳出循环继续程序】 我们在第二个抖动时间段(松手时)设置一个延时程序 #include void Delay(unsigned int xms) {...while(P3_1==0);//到达中间时间段,停下等待按钮状态:实现按下进入循环,松手跳出循环继续程序 Delay(20);//在后一段抖动时间延时...P2_0=~P2_0;//取反 } } } 现象:我们烧写入单片机后,可以发现按下k1按键,d1灯亮并保持;再次按下,d1灯灭并保持;

11710
您找到你想要的搜索结果了吗?
是的
没有找到

操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流

操作系统抖动 我最开始接触到“抖动”这个词啊,除了抖腿,就是这个操作系统抖动了、 话说过两天就要考操作系统了,顺带复习。...在操作系统中,抖动现象是指如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断,这种频率非常高的页面置换现象称为抖动。...背书,大佬勿喷··· 网络抖动 说网络抖动可能还不是那么的,大众化。就是网卡啦,打游戏460啦。 没那么夸张哈,抖动和延时,还是有那么点差别的。...抖动是基于延时产生的—具体而言,就是前后延时的值不一致。抖动是两个数据包延时值之间的差异。它通常会导致丢包和网络拥塞。虽然延时和抖动有很多共同点和关联,但是它们并不相同。...为了弥补抖动,在连接的接收端使用抖动缓冲区。抖动缓冲区收集并存储传入数据包,以便它可以确定如何以一致的间隔发送它们。 静态抖动缓冲—其在系统的硬件中实现,并且通常由制造商配置。

1.1K10

操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流,串讲

操作系统抖动 我最开始接触到“抖动”这个词啊,除了抖腿,就是这个操作系统抖动了、 话说过两天就要考操作系统了,顺带复习。...在操作系统中,抖动现象是指如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断,这种频率非常高的页面置换现象称为抖动。...---- 背书,大佬勿喷··· ---- 网络抖动 说网络抖动可能还不是那么的,大众化。就是网卡啦,打游戏460啦。 没那么夸张哈,抖动和延时,还是有那么点差别的。...抖动是基于延时产生的—具体而言,就是前后延时的值不一致。抖动是两个数据包延时值之间的差异。它通常会导致丢包和网络拥塞。虽然延时和抖动有很多共同点和关联,但是它们并不相同。...为了弥补抖动,在连接的接收端使用抖动缓冲区。抖动缓冲区收集并存储传入数据包,以便它可以确定如何以一致的间隔发送它们。 静态抖动缓冲—其在系统的硬件中实现,并且通常由制造商配置。

1.9K20

vim按键整理

vim按键整理 1 一般模式下光标移动、搜索替换、复制粘贴 光标移动 h / b / ← 光标向左移动一个字符 j / ↓ 光标向下移动一个字符 k / ↑ 光标向上移动一个字符 l / w / →...光标向下移动 n 行 (常用) 翻页 [Ctrl] + [f] 屏幕向『下』移动一页,相当于 [Page Down]按键 (常用) [Ctrl] + [b] 屏幕向『上』移动一页,相当于 [Page...Up] 按键 (常用) [Ctrl] + [d] 屏幕向『下』移动半页 [Ctrl] + [u] 屏幕向『上』移动半页 搜索替换 /word 向光标之下寻找一个名称为 word 的字符串 ?...word 向光标之上寻找一个名称为 word 的字符串 n n 是英文按键,重复前一个搜寻的动作 N N 是英文按键,反向进行前一个搜寻动作 :n1,n2s/word1/word2/g n1 与 n2...) :1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 (常用) 删除、复制、粘贴 x, X x 向后删除一个字符 ([del] 按键

1.4K50

Linux keypad 设备树,matrix_keypad 矩阵按键驱动分析

matrix_keypad 矩阵按键驱动分析 //主要函数调用过程 matrix_keypad_probe matrix_keypad_parse_dt //根据设备树构造 pdata pdata->num_row_gpios...,no-autorepeat”, NULL) of_get_property(np, “linux,wakeup”, NULL) of_get_property(np, “gpio-activelow”...int num_col_gpios; //多少个列线 unsigned int col_scan_delay_us; //扫描列线时间隔时间 unsigned int debounce_ms; //防抖动的间隔时间...unsigned int clustered_irq_flags; bool active_low; //键按下时,行线是否为低电平 bool wakeup; bool no_autorepeat; //按键按下时是否重复提交按键..., 设1就是不重复,设0重复 }; Linux中输入设备的事件类型有: EV_SYN 0x00 同步事件 EV_KEY 0x01 按键事件,如KEY_VOLUMEDOWN EV_REL 0x02 相对坐标

1.7K30

GPIO—按键轮询

常用的按键都是机械触点式按键,机械式按键在按下或释放的过程中,由于机械弹性作用的影响,会伴随机械抖动,如图 12.1.2 所示。 抖动的时长与机械开关特性相关,一般为5-10ms。...在这抖动过程中,会产生多次高低电平,导致被识别为多次按键操作。为了避免机械触点按键检测误判,必须消抖处理。按键消抖可以硬件上处理,即在按键旁并联电容,吸收抖动的电平。...也可以软件处理,即通过延时,避开抖动。 由此,首先获取对应引脚的电平得知按键状态,再硬件或软件消除抖动。...= false; void UpKeyPolling(void) { if(KEY_UP == PUSH_DOWN) // 如果检测到向上键被按下 { HAL_Delay(8); //延时 8ms 防按键抖动...,此时依旧按下,说明是正常按键操作,非抖动; 16行:将标志位置反,按键按一次置反一次(即0->1->0->1这样循环); 17行:熄灭红色LED灯; 18行:根据标志位“up_flag”的值,让绿色LED

1.9K20

DRV_05_GPIO按键驱动分析与使用

视频观看 百问网驱动大全 GPIO按键驱动分析与使用 参考资料: Linux 5.x内核 Documentation\devicetree\bindings\input\gpio-keys.txt...GPIO按键,都是一个子节点,有这些属性: gpios:使用哪个GPIO interrupts:对应的中断 linux,code:对应的按键值 注意:gpios和interrupts至少要保留一个,...不能都省略 debounce-interval: 消除抖动的间隔,单位:ms,默认是5ms 2.2 100ASK_IMX6ULL gpio-keys { compatible = "gpio-keys...如果不处理抖动的话,用户只操作一次按键,会发生多次中断,驱动程序可能会上报多个数据。 怎么处理按键抖动?...看下图: 核心在于:在GPIO中断中并不立刻记录按键值,而是修改定时器超时时间,10ms后再处理。 如果10ms内又发生了GPIO中断,那就认为是抖动,这时再次修改超时时间为10ms。

1.8K20
领券