我代码是这么写的,应该没错的,但是蜂鸣器就是不响,换网上的样例代码也不响,想请问下是出了什么问题,单片机未损坏
可能蜂鸣器管脚错了,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口。