2401_87732231 2024-11-28 00:33 采纳率: 42.9%
浏览 55
已结题

有源蜂鸣器,高电平输出怎么让它响?

我这样编代码,为什么它不发声?而且只有某一时刻才能发一瞬间的声音?最后就一直不响

img

img

img

img

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你给出的代码和描述来看,有几个可能的问题导致有源蜂鸣器不能正常工作或只发出一瞬间的声音。下面是一些建议和解决方案:

    1. 函数定义不完整:在图3和图4中,你定义的fmq_xiangfmq_ting函数缺少了函数的结束标志,这可能会导致编译错误或未定义的行为。正确的函数定义应该包含函数体和结束的大括号 }

    修改如下:

    void fmq_xiang() // 注意这里应该加上函数体和大括号结束
    {
        FMQ = 1; // 使蜂鸣器响的代码应该在这里添加延时函数以确保蜂鸣器能够持续发声。
    }
    
    void fmq_ting() // 同上,也应该加上函数体和大括号结束
    {
        FMQ = 0; // 使蜂鸣器停的代码也应该添加延时以确保蜂鸣器能够立即停止发声。
    }
    
    1. 延时问题:蜂鸣器可能只响一瞬间是因为没有延时函数。在控制蜂鸣器的函数中,需要添加适当的延时以确保蜂鸣器能够持续发声或停止发声。可以使用循环或其他延时函数来实现这一点。
    2. 循环逻辑问题:在main()函数中,while(1)意味着无限循环,因此你可能需要在这个循环中添加一些逻辑来确保蜂鸣器在正确的时刻发声和停止发声。如果逻辑设计不当,可能导致不正确的行为。例如,确保不会在未停声后立即重新启动发声的函数。考虑调整代码的逻辑或结构以确保正确的控制蜂鸣器的发声和停止发声。例如:在循环中加入延时或者在特定条件下调用蜂鸣器的控制函数。同时检查是否在其它部分有修改此位的逻辑存在竞争状态等问题导致逻辑不正确。还有要考虑该蜂鸣器的供电是否正常或信号路径是否有问题等硬件问题导致的不能正常工作。综合调整并检查逻辑以及硬件的可靠性是解决此问题的关键步骤。因此你的程序可能需要更复杂的逻辑来控制蜂鸣器的行为。例如:在每次循环开始时先停止蜂鸣器,然后等待一段时间再决定是否启动它。或者根据其他条件来决定是否启动蜂鸣器。确保你的程序逻辑是正确的并且符合你的需求。同时确保硬件连接是正确的并且功能正常。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日
  • 创建了问题 11月28日