找回密码
 立即注册
查看: 36|回复: 2

打卡第七集

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-04-14 11:55:10
已绑定手机

6

主题

-4

回帖

6

积分

新手上路

积分
6
发表于 2025-4-14 12:12:15 来自手机 | 显示全部楼层 |阅读模式
本节课讲解了如何用按键对小灯泡进行控制,我按照冲哥的程序,在按下按键时灯泡点亮,但是松开按键时灯泡不熄灭。
于是我就找原因,这程序的逻辑没有问题,为啥换一块板子就出问题了呢。
于是我将冲哥if语句中嵌套的if语句删除了,直接用if和else控制灯亮和熄灭,效果很成功。
于是我就查找资料,得到了原因(可能是):由于在短时间内(10毫秒延时)内立即检测按键状态,可能会导致按键抖动问题,从而导致灯在松开按键时仍然保持亮着。
希望可以领到板子
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-14 12:18:00 | 显示全部楼层
关于按键控制小灯泡问题的分析与解决方案

在第七集的学习中,您通过按键控制小灯泡的实验,发现了一个值得深入探讨的问题:按下按键时灯泡点亮,但松开按键时灯泡并未熄灭。经过您的调试和逻辑修改,问题得到了解决。以下是对该问题的专业分析与总结。

问题描述
您按照冲哥的程序编写了按键控制小灯泡的代码,逻辑上按下按键时灯泡点亮,松开按键时灯泡熄灭。然而,在实际运行中,松开按键后灯泡仍然保持亮着。您尝试删除嵌套的if语句,直接使用if和else控制灯亮和熄灭,问题得到了解决。通过进一步查阅资料,您推测问题可能与按键抖动有关。

问题分析
1. 按键抖动现象  
   按键在按下和松开的瞬间,由于机械接触的不稳定性,会产生多次电平跳变,这种现象称为“按键抖动”。抖动时间通常在几毫秒到几十毫秒之间。如果在抖动期间检测按键状态,可能会导致误判,从而影响程序的逻辑执行。

2. 程序逻辑问题  
   您的原始代码中可能包含嵌套的if语句,这种结构在检测按键状态时,如果未对抖动进行处理,可能会导致逻辑判断错误。例如,在抖动期间,程序可能误判按键仍然处于按下状态,从而导致灯泡无法熄灭。

3. 延时问题  
   您在分析中提到,程序中使用了10毫秒的延时。这种短时间的延时可能不足以完全消除按键抖动的影响,尤其是在抖动较为严重的情况下。

解决方案
1. 按键消抖处理  
   为了消除按键抖动的影响,可以在程序中加入消抖逻辑。常见的消抖方法包括硬件消抖和软件消抖。软件消抖的实现方式通常是在检测到按键状态变化后,延时一段时间(如20毫秒)再次检测,以确保状态稳定。

2. 简化逻辑结构  
   您通过删除嵌套的if语句,直接使用if和else控制灯亮和熄灭,成功解决了问题。这种简化逻辑的方式减少了程序在抖动期间的误判概率,是一种有效的解决方案。

3. 优化延时时间  
   如果程序中使用了延时,建议将延时时间适当延长,以确保按键状态稳定。例如,将10毫秒的延时调整为20毫秒或更长,可以有效减少抖动的影响。

总结
按键抖动是嵌入式开发中常见的问题,尤其是在按键控制的应用中。通过加入消抖处理、简化逻辑结构以及优化延时时间,可以有效解决类似问题。您的调试过程体现了对问题的深入思考和动手实践能力,值得肯定。希望您在后续的学习中继续探索,不断提升技术水平。

最后,祝您顺利领到板子,并在未来的项目中取得更多成果!

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:163
  • 最近打卡:2025-05-02 13:26:59
已绑定手机

56

主题

1319

回帖

2942

积分

荣誉版主

无情的代码机器

积分
2942
发表于 2025-4-14 12:58:56 | 显示全部楼层
截图202504141258532138.jpg
新手必读你是一行都不看啊。
https://www.stcaimcu.com//forum. ... mp;extra=#pid154960
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:47 , Processed in 0.179962 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表