找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机有源蜂鸣器不响求助 困扰我好几天了 附源程序

查看数: 6023 | 评论数: 48 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-9-5 16:58

正文摘要:

即将大二,有源蜂鸣器,用了三极管驱动,蜂鸣器一直不响,困扰我好几天了,求助!!!! 程序: #include <at89x52.h> //#define KEY1 P3_2 //#define KEY2 P3_3 //#define LED1 P3_4 //#define LED2 P3 ...

回复

ID:964197 发表于 2021-9-6 12:59
结语
重新焊了一下蜂鸣器终于响了,最终原因是有源蜂鸣器正负极接反了,改过来后可以正常响了,说明I/O口和电路都是没问题的。这是本人第一次在这个论坛发问题,感觉学习氛围很好,感谢各位大佬的解答,我从中学到了许多今天开学第一天,终于解决了这个问题,很开心,再次感谢各位!!!
ID:420836 发表于 2021-9-7 08:30
感谢更新,所以我们都知道蜂鸣器没有蜂鸣的原因。
ID:401564 发表于 2021-9-6 22:49
本帖最后由 Y_G_G 于 2021-9-6 23:05 编辑
ZMRGHY 发表于 2021-9-6 19:43
89C52IO口有强捡的模式吗???我没听说过呀

看错了,看错了,不好意思
ID:417092 发表于 2021-9-6 19:49
弄好了没有。。。。回复一下呀。。。。。
ID:417092 发表于 2021-9-6 19:43
Y_G_G 发表于 2021-9-6 09:31
这是一个很简单的问题,真的,经常动手的人,很快就能找到问题
1,先把单片机蜂鸣器的IO设定成强推挽输出模式( ...

89C52IO口有强捡的模式吗???我没听说过呀
ID:262 发表于 2021-9-6 18:54
优酷链接貌似发错了
ID:964197 发表于 2021-9-6 12:52
ID:964197 发表于 2021-9-6 12:43
把蜂鸣器反过来接终于可以响了
ID:950946 发表于 2021-9-6 11:00
按理说不应该,你拿仪表测一下io口。看是不是坏了
ID:428114 发表于 2021-9-6 10:38
有源蜂鸣器是有极性的。
不响,接反的可能性极大。
ID:401564 发表于 2021-9-6 09:31
这是一个很简单的问题,真的,经常动手的人,很快就能找到问题
1,先把单片机蜂鸣器的IO设定成强推挽输出模式(数据手册上有,自己设定)
2,不要三极管,直接把这个输出IO连接到蜂鸣器,不用分正负,没必要
3,不要任何按键什么的,直接给这个IO输出一个1KHZ的方波,可以用定时器
4,蜂鸣器响了,电路和程序就对了,蜂鸣不响,硬件电路或者程序有问题
蜂鸣器会响的,声音是小点而已,不分正负的
ID:417092 发表于 2021-9-5 23:53
LittleBoss 发表于 2021-9-5 23:15
明天去基地重新焊一下蜂鸣器试试

我在Proteus 仿真了一下。。仿真不出效果。。。。
需要知道,可以驱动蜂鸣器的最低电压,和蜂鸣器自身电阻。。。
你可以,测量一下驱动蜂鸣器的最低电压,和蜂鸣器自身电阻。
然后在Proteus 仿真了一下。。。
比自己计算电阻大小好用多了。。。。
使用Proteus 仿真可以,节省很少人工计算
ID:964197 发表于 2021-9-5 23:15
明天去基地重新焊一下蜂鸣器试试
ID:964197 发表于 2021-9-5 23:01
我刚刚给我师兄看了看板子他说我的蜂鸣器接反了,他的板子蜂鸣器没问题,我们用的是同一个电路,我打算重新接一下蜂鸣器试试
ID:417092 发表于 2021-9-5 22:57
188610329 发表于 2021-9-5 22:32
我前面很直接的说了一大堆原因了,你没看到么?
还有热心的15楼图都贴出来了,我也让他参考15楼的图了 ...

抱歉,网络问题。延时太多。只看到了。。。我的楼层上一层,你说让他把基极接地。。。。
前面的真的没看到
ID:624769 发表于 2021-9-5 22:47
ZMRGHY 发表于 2021-9-5 22:20
为什么,不直接说清原因呀

抱歉, 可能刷新的问题,是 16楼帖的图, 贴图的人还是你。 其实我们俩 和他传递的是一个信息。所以,你没必要和我辩论。我在最开始 6楼 就跟他说要三极管控制GND ,而不是控制 VCC 电阻要换到 470R, 你在16楼也贴了图,他坚持不改,你有别的办法么?
ID:624769 发表于 2021-9-5 22:32
ZMRGHY 发表于 2021-9-5 22:20
为什么,不直接说清原因呀

我前面很直接的说了一大堆原因了,你没看到么?
还有热心的15楼图都贴出来了,我也让他参考15楼的图了,你没看到?
他非要认死理,那么只能让他最简单的方法自己看到结果,然后再讲其他道理了。
ID:417092 发表于 2021-9-5 22:20
188610329 发表于 2021-9-5 22:03
我不知道你想说什么, 他打算 P17 = 0,让蜂鸣器响,我告诉他不会响,让他把打算通过 P17 拉到 0 的地方 ...

为什么,不直接说清原因呀
ID:624769 发表于 2021-9-5 22:03
ZMRGHY 发表于 2021-9-5 21:57
PNP三极管,b极对地电阻小于以c极电阻时,三极管不会导通。。
PNP使用时,c极直接,接地。。。。

我不知道你想说什么, 他打算 P17 = 0,让蜂鸣器响,我告诉他不会响,让他把打算通过 P17 拉到 0 的地方手动接到 GND, 来代替 P17 = 0, 看看是不是会响, 有什么问题么?
ID:417092 发表于 2021-9-5 21:57
188610329 发表于 2021-9-5 21:40
你直接飞线,把接P17这个地方接到GND 即手动代替 P17 拉低,看看响不响。就知道了。

PNP三极管,b极对地电阻小于以c极电阻时,三极管不会导通。。
PNP使用时,c极直接,接地。。。。
ID:624769 发表于 2021-9-5 21:56
LittleBoss 发表于 2021-9-5 21:40
更正一下,是0.3mA和13mA差了蛮远的

你 0.3MA 蜂鸣器响了么? 没响的话,这电流毫无意义。
ID:964197 发表于 2021-9-5 21:40
188610329 发表于 2021-9-5 21:28
你R7 为 100R   大多数单片机的IO,灌电流只能承受12MA 根本不可能把基极拉低到0。要么拉不低,要么烧IO.

更正一下,是0.3mA和13mA差了蛮远的
ID:624769 发表于 2021-9-5 21:40
LittleBoss 发表于 2021-9-5 21:31
我测了R7两端电压是1.3V,然后它的电流是13mA左右,现在我发现发射极与集电极间电压、蜂鸣器两端电压、R8 ...

你直接飞线,把接P17这个地方接到GND 即手动代替 P17 拉低,看看响不响。就知道了。
ID:417092 发表于 2021-9-5 21:40

把蜂鸣器从源极改到发射极。。。
去掉R8限流电阻。
R7换470欧,如果不响换成330欧,
ID:964197 发表于 2021-9-5 21:39
188610329 发表于 2021-9-5 21:28
你R7 为 100R   大多数单片机的IO,灌电流只能承受12MA 根本不可能把基极拉低到0。要么拉不低,要么烧IO.

奇怪了。。。我用万用电表电流档红黑表笔分别接基极和R7的靠近JP8的一端得到的电流值是0.3mA,和我用R7两端电压估算的1.3mA差了蛮远的。。。。
ID:964197 发表于 2021-9-5 21:31
188610329 发表于 2021-9-5 21:28
你R7 为 100R   大多数单片机的IO,灌电流只能承受12MA 根本不可能把基极拉低到0。要么拉不低,要么烧IO.

我测了R7两端电压是1.3V,然后它的电流是13mA左右,现在我发现发射极与集电极间电压、蜂鸣器两端电压、R8两端电压都是0V,感觉是这三个里面哪里出了问题
ID:624769 发表于 2021-9-5 21:28
LittleBoss 发表于 2021-9-5 21:11
到目前为止总结一下,希望大佬分析出问题出在哪:
1.蜂鸣器电池直接接上正负极可以响
2.R7和R8均为100欧 ...

你R7 为 100R   大多数单片机的IO,灌电流只能承受12MA 根本不可能把基极拉低到0。要么拉不低,要么烧IO.
ID:964197 发表于 2021-9-5 21:17
本帖最后由 LittleBoss 于 2021-9-5 21:23 编辑
LittleBoss 发表于 2021-9-5 21:11
到目前为止总结一下,希望大佬分析出问题出在哪:
1.蜂鸣器电池直接接上正负极可以响
2.R7和R8均为100欧 ...
R7 R8两端电压分别1.3V 、0V
ID:964197 发表于 2021-9-5 21:11
本帖最后由 LittleBoss 于 2021-9-5 21:26 编辑

到目前为止总结一下,希望大佬分析出问题出在哪:
1.蜂鸣器电池直接接上正负极可以响
2.R7和R8均为100欧姆,正常
3.焊接没问题,严格按照电路图焊接的
4.当主函数改成
void main()
{
LED1=0; LED2=0; BEEP=0;
while(1);
}
JP8打到ON
控制灯亮起,蜂鸣器响时,灯亮蜂鸣器不响
用万用电表测得以下数据
蜂鸣器两端电压是0V
三极管的发射极和基极的电压是0.7V
三极管的发射极和集电极的电压是0V
JP8的1和2间电压为0V
用万用表电流档红黑笔分别接JP8的2和1测得电0mA

如果还有什么需要测的就跟我说一下~


ID:624769 发表于 2021-9-5 21:01
LittleBoss 发表于 2021-9-5 20:26
主函数改成这样后在单片机上运行,两个LED灯均亮,用万用表测得蜂鸣器两端电压是3.3V左右

主函数这样,符合测试需要。
参考 15楼的 图,一般 单片机驱动蜂鸣器都应该这个样子。
确认一下 JP8 状态是否 闭合,
只要你是 有源蜂鸣器,应该能响。
ID:964197 发表于 2021-9-5 20:55
ZMRGHY 发表于 2021-9-5 20:47
蜂鸣器到底是有源还是无源

是有源的呀
ID:964197 发表于 2021-9-5 20:55
LittleBoss 发表于 2021-9-5 20:26
主函数改成这样后在单片机上运行,两个LED灯均亮,用万用表测得蜂鸣器两端电压是3.3V左右

测得基极和发射极间的电压为0.7V,发射极和集电极的电压为0
ID:417092 发表于 2021-9-5 20:47

蜂鸣器到底是有源还是无源
ID:964197 发表于 2021-9-5 20:42
LittleBoss 发表于 2021-9-5 20:26
主函数改成这样后在单片机上运行,两个LED灯均亮,用万用表测得蜂鸣器两端电压是3.3V左右

JP8接通,万用表短接JP8测得基极电流为0,短接蜂鸣器测得电流为47mA
ID:964197 发表于 2021-9-5 20:26
  1. void main()
  2. {  bit flag=0;
  3. LED1=0; LED2=0; BEEP=0;
  4.    while(1)
  5.    {
  6.   
  7.    }
  8. }
复制代码

主函数改成这样后在单片机上运行,两个LED灯均亮,用万用表测得蜂鸣器两端电压是3.3V左右
ID:964197 发表于 2021-9-5 20:18
用万用表测了R7 和 R8 的电阻都是100欧姆
ID:964197 发表于 2021-9-5 19:34
wysh_2004 发表于 2021-9-5 19:11
这个问题首先要区分是软件还是硬件造成的,1、取出单片机芯片用一条导线直接短接P17到GND,看蜂鸣器是否能 ...

我用电池直接接过蜂鸣器,是可以响的,在程序里将P17与P35交换应该不可行吧,硬件已经决定P1^7和P3^5本来就是分别控制蜂鸣器和LED2的了

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表