找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

蜂鸣器为什么一上电就响?附原理图与单片机程序

查看数: 12736 | 评论数: 32 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-10-13 08:59

正文摘要:

#include <reg51.h> sbit Beep=P3^0;         void main() {         Beep=0;         while(1); } VDD ...

回复

ID:1049587 发表于 2022-10-28 18:01
我也遇到这样的问题了,我将端口赋值0放在了最前面,然后在开关MOS的gs之间加了电容也没改善。s接地,g连接电阻到单片机的一个io口。

ID:975477 发表于 2021-10-27 22:03
上电的时候是默认高电平,IO口置0也需要时间,
ID:517951 发表于 2021-10-27 20:23
有源的蜂鸣器里面有振荡电路,只要两端直流压差和电流满足条件,就能发声。
如果换成无源的,需要给PWM波形,才能出声,固定的高低电平是不会出声的。
ID:420836 发表于 2021-10-27 09:19
部分单片机的GPIO在初始化时处于高电平状态。
ID:339654 发表于 2021-10-26 23:01
是不是用错蜂鸣器了
ID:964308 发表于 2021-10-16 14:47
上电后io口置位需要一定时间
ID:856329 发表于 2021-10-15 10:34
我也遇到过一样的问题,将BEEP=0;放到while()循环之前,就解决了,以下是仿真和程序,仅供参考。

Snipaste_2021-10-15_22-47-51.png (6.11 KB, 下载次数: 116)

Snipaste_2021-10-15_22-47-51.png

Snipaste_2021-10-15_22-46-45.png (1.97 KB, 下载次数: 100)

Snipaste_2021-10-15_22-46-45.png

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:71233 发表于 2021-10-15 10:27
liuxuhe 发表于 2021-10-15 09:48
换成PNP管子  蜂鸣器下拉

十分支持!我设计的电路都是用PNP管的。
ID:641629 发表于 2021-10-15 09:48
换成PNP管子  蜂鸣器下拉
ID:587810 发表于 2021-10-14 18:35
建议换一个三极管,学一学三极管原理,低电平导通,正好启动了你的蜂鸣器。。。
ID:743654 发表于 2021-10-14 17:10
npn 发表于 2021-10-14 16:19
接电容做什么? 声音可能会变异。

是的,声音变了
ID:624769 发表于 2021-10-14 16:26
cheney03 发表于 2021-10-14 13:21
要多大才有用,我接10uF和22uF都不起作用

电容你要考虑你单片机复位时间,以及你正常驱动时可能产生的延时,不值得。
你这个要求最好的方法就是换pnp三极管,或者换到单片机可以选择启动后为低电平的端口,一般单片机都有那么几个上电后输出低电平的io。
ID:57657 发表于 2021-10-14 16:19
cheney03 发表于 2021-10-14 13:21
要多大才有用,我接10uF和22uF都不起作用

接电容做什么? 声音可能会变异。
ID:304725 发表于 2021-10-14 15:49
Beep上电高电平,应该改成低电平
ID:743654 发表于 2021-10-14 13:21
mayouzhen2008 发表于 2021-10-14 11:51
基极接大电容到低是比较可行的办法

要多大才有用,我接10uF和22uF都不起作用
ID:810165 发表于 2021-10-14 11:51
基极接大电容到低是比较可行的办法
ID:743654 发表于 2021-10-14 11:49
ly1972001 发表于 2021-10-14 08:42
15K不是偏置电阻,是限流用的。

是在基极对地加偏置电阻吧,这个阻值要怎么计算呢?
ID:680011 发表于 2021-10-14 09:21

#include <reg51.h>
sbit Beep=P3^0;        

void main()
{
Beep=0;
{
        Beep=0;
        while(1);
}
}
ID:680011 发表于 2021-10-14 09:20

#include <reg51.h>
sbit Beep=P3^0;        

void main()

{
        Beep=0;
        while(1);
}
ID:236035 发表于 2021-10-14 08:42
15K不是偏置电阻,是限流用的。
ID:678280 发表于 2021-10-13 17:32
代码改成低电平发声,NPN管改用PNP管。
ID:743654 发表于 2021-10-13 16:54
Hephaestus 发表于 2021-10-13 16:39
8051的IO端口默认上拉,也就是按你的电路图在你的代码执行前蜂鸣器是一直在响的。当然我也会在某些场合故意 ...

我的目的不想让蜂鸣器一上电就响,不然我每次开机就响一声,而是需要用时再让Beep=1;
ID:883242 发表于 2021-10-13 16:39
8051的IO端口默认上拉,也就是按你的电路图在你的代码执行前蜂鸣器是一直在响的。当然我也会在某些场合故意这么设计,提示蜂鸣器是好的。
ID:831736 发表于 2021-10-13 14:49
是加了一个电感吗?电感的电压不能突变
ID:743654 发表于 2021-10-13 14:27
ZQ01 发表于 2021-10-13 10:26
上电的时候是默认高电平,IO口置0也需要时间,需要给三极管基极加下偏置电阻

已经有加15K电阻,还是不起作用
ID:743654 发表于 2021-10-13 14:27
18701931930 发表于 2021-10-13 10:10
上电默认高电平,IO口置0也需要时间,还是给三极管基极加下偏置电阻吧。

已经有加15K电阻,还是不起作用
ID:57657 发表于 2021-10-13 10:57
IO口上电瞬间高电平,需要等待一段时间才会执行用户程序,可以换PNP管驱动。
ID:937788 发表于 2021-10-13 10:26
基极需要加一个下偏置电阻就阔以咯
ID:971637 发表于 2021-10-13 10:26
上电的时候是默认高电平,IO口置0也需要时间,需要给三极管基极加下偏置电阻
ID:960157 发表于 2021-10-13 10:12
三极管基极对地接一个10uf 电解电容器。
ID:554500 发表于 2021-10-13 10:10
上电默认高电平,IO口置0也需要时间,还是给三极管基极加下偏置电阻吧。
ID:277550 发表于 2021-10-13 10:07
蜂鸣器分有源、无源。  

有源的,就是通电即beep beep。。。。。。。的。

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

Powered by 单片机教程网

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