51单片机蜂鸣器不响的问题

我代码是这么写的,应该没错的,但是蜂鸣器就是不响,换网上的样例代码也不响,想请问下是出了什么问题,单片机未损坏

img

可能蜂鸣器管脚错了,P1^5是旧一版的51单片机的管脚,我的单片机管脚是P2^5,(之前也踩过这个坑,凑巧才找到管脚还以为是蜂鸣器坏了),你可以找开发板上的版本,在官网上查出该版本原理图核对一下

delay(1)时间太短了,你搞个秒级的delay,就响了

不行啊,我换成两秒的都不行

先确认一下蜂鸣器是有源的还是无源的。

有可能你使用的是无源蜂鸣器。正极需要输入交流信号才会响

1.查看硬件问题
如果是开发板,一般查看提供的源码参考即可;自己设计电路的话,需要先知道蜂鸣器是有源还是无源,有源蜂鸣器内部包含振动源,只需要两端接电即可发生鸣叫。
2.程序问题
有源蜂鸣器,直接输出高或者低就可以,无源则需要利用延时给予振荡源。
3.程序源码

//有源
#include <REGX52.H>
#include "Delay.h"
void main(void)
{
    P1_5=1;//蜂鸣器不响时修改为P1_5=0;
    while(1);
}

//无源
#include <REGX52.H>
#include "Delay.h"
void main(void)
{
    
    while(1)
    {
        P1_5=!P1_5;
        Delay(20);
    }
}

p1_5换成P2_5试试

我也遇到了相同的问题,按照例程给的程序跑起来也不会响,看了你的问题后我把例程中的P2^5改成P1^5之后响了,看来我这个是旧版的开发板,但是给的原理图上是接的P2口。