求助!蜂鸣器为什么不响!
sbit buzzer=P0^0;
void delay(int);
void pulse_BZ(int,int,int);
void main()
{
while(1)
{
pulse_BZ(100,1,1);
delay(1000);
}
}
void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=1;j<=60;j++);
}
void pulse_BZ(int count,int th,int tl)
{
int i;
for(i=0;i<count;i++)
{
buzzer=1;
delay(th);
buzzer=0;
delay(tl);
}
}
程序测试也没问题的!
电路图
可能是脉冲频率太高了
脉冲频率是12000000Hz,正常的啊
LZ看看驱动蜂鸣器 (P0.0) 的脉冲频率是多少
不会是没开电脑的声音吧
既然是仿真,那就断开与单片机的连接处,看看响不,排除是不是元件或连线问题
你们的建议都试了,都没什么反应。把蜂鸣器换成灯泡就能亮,我猜是不是三极管的流向蜂鸣器的电流太小。最后我用了电流探针,蜂鸣器就响了。但本人电路知识还太薄弱了,不知怎么修改,望大神们多给点建议!
蜂鸣器missing是什么情况
电路貌似没有问题
没问题的。只是三极管部分处理不好,电流太小了。不知如何修改!
人耳能听到的声音频率最高一般到20KHz附近,如果再高就只有特异功能的人能感知。
蜂鸣器是电压型器件,需要提高电压。
仿真 —— 把蜂鸣器的驱动电路电压提高到+12V以上。
实物 —— 在蜂鸣器(片)上粘一个有弹性的“纸盆”。
貌似提高了电压也没用。看来问题没那么简单!
电流太大了吧。串个电阻试试。几百欧的。
直接弄个实物出来。仿真并不能代表实际,有时反而误导人去排除一些本来不存在的问题。
电流小了,再加个三极管放大一下就可以了,或者用运放也行。
蜂鸣器一般需要12v 或者9v电压来驱动,上拉12v试试
谢谢建议,已弄好了!
P0口要加上拉电阻才能输出正确的高低电平,你这图有问题,换P1口就好了,还有演示有点短,确保用的不是和频率有关的那种蜂鸣器!
P0口不是真正的IO口,要加上拉电阻才能输出正确的高低电平,换上P1口就好了(无需上拉),还有确保用的实物不是那种和频率有关的蜂鸣器呀!
P0口不是真正的IO口,要加上拉电阻才能输出正确的高低电平,换上P1口就好了(无需上拉),还有确保用的实物不是那种和频率有关的蜂鸣器呀!