• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

萌新想请问一下单片机大佬怎么实现同一个按钮第一次按下和第二次

258e0be21adcaf66 2020-08-12 浏览量:671
具体来说就是第一次按下按钮小灯会亮10S,如果在小灯亮的10S之内再次按下开关,小灯就会熄灭。麻烦各位大佬了!
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这单就你提出来的问题来说,上面提到的状态机原理就好了。

    其实这个问题,你需要更多理一下整个逻辑状态的变化,看需要多少变量来存储对应信息。

    从你的表述来说有

    1. 按钮按下和释放状态(按下为1,释放为0)

    2. 灯的状态(亮为1,灭为0)

    3. 计数器

    灯的状态最多在计数器工作的10s内可能是亮的,所以对应的状态变化是

    按钮按下,且灯为灭时, 灯转为亮,且开始计数

    如果计数到10s对应数字,灯自动转换为灭,计数器复位且停止计数。

    如果在计数中再按下按钮,则强制让灯为灭,计数器复位且停止计数。

    • 发布于 2020-08-13
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 1-初始化定时器

    2-在判断到按下的瞬间,判断标志位,如果标志位为许可状态(标志位自己设定一个)启用定时器,并把标志位设定为不允许状态

    3-定时器达到后(10s)重新把标志位变成许可状态

    • 发布于2020-08-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种一般用状态机,就是按下按钮一次为状态1,到了10s或者再次按下按钮为状态2,通过判断状态1 2确定当前LED那个脚要输出高电平还是低电平
    • 发布于2020-08-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 用一个标志位,一个计数变量和一个定时器就可以实现,主循环判断标志位和按键状态,按键按下改变状态,通过标志位开启和关闭led,定时器对计数变量加加,每次到10s让状态关闭,
    • 发布于2020-08-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 在一个定时周期内,测到两次按下就是双击,一次就是单击了。

    在定时器中断中查询按下次数与按下时间间隔

    • 发布于2020-08-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 按下后,定时器启动,设置标志位测试是不是又有按下了,定时器中断中,清标志
    • 发布于2020-08-27
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

萌新想请问一下单片机大佬怎么实现同一个按钮第一次按下和第二次