找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7858|回复: 32
收起左侧

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

  [复制链接]
ID:743654 发表于 2021-10-13 08:59 | 显示全部楼层 |阅读模式
#include <reg51.h>
sbit Beep=P3^0;        

void main()
{
        Beep=0;
        while(1);
}
VDD=5V,Beep已经置零了,为什么一上电蜂鸣器还会响一声?




51hei图片20211013085505.jpg
回复

使用道具 举报

ID:277550 发表于 2021-10-13 10:07 | 显示全部楼层
蜂鸣器分有源、无源。  

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

使用道具 举报

ID:554500 发表于 2021-10-13 10:10 | 显示全部楼层
上电默认高电平,IO口置0也需要时间,还是给三极管基极加下偏置电阻吧。
回复

使用道具 举报

ID:960157 发表于 2021-10-13 10:12 | 显示全部楼层
三极管基极对地接一个10uf 电解电容器。
回复

使用道具 举报

ID:971637 发表于 2021-10-13 10:26 | 显示全部楼层
上电的时候是默认高电平,IO口置0也需要时间,需要给三极管基极加下偏置电阻
回复

使用道具 举报

ID:937788 发表于 2021-10-13 10:26 来自手机 | 显示全部楼层
基极需要加一个下偏置电阻就阔以咯
回复

使用道具 举报

ID:57657 发表于 2021-10-13 10:57 | 显示全部楼层
IO口上电瞬间高电平,需要等待一段时间才会执行用户程序,可以换PNP管驱动。
回复

使用道具 举报

ID:743654 发表于 2021-10-13 14:27 | 显示全部楼层
18701931930 发表于 2021-10-13 10:10
上电默认高电平,IO口置0也需要时间,还是给三极管基极加下偏置电阻吧。

已经有加15K电阻,还是不起作用
回复

使用道具 举报

ID:743654 发表于 2021-10-13 14:27 | 显示全部楼层
ZQ01 发表于 2021-10-13 10:26
上电的时候是默认高电平,IO口置0也需要时间,需要给三极管基极加下偏置电阻

已经有加15K电阻,还是不起作用
回复

使用道具 举报

ID:831736 发表于 2021-10-13 14:49 | 显示全部楼层
是加了一个电感吗?电感的电压不能突变
回复

使用道具 举报

ID:883242 发表于 2021-10-13 16:39 | 显示全部楼层
8051的IO端口默认上拉,也就是按你的电路图在你的代码执行前蜂鸣器是一直在响的。当然我也会在某些场合故意这么设计,提示蜂鸣器是好的。
回复

使用道具 举报

ID:743654 发表于 2021-10-13 16:54 | 显示全部楼层
Hephaestus 发表于 2021-10-13 16:39
8051的IO端口默认上拉,也就是按你的电路图在你的代码执行前蜂鸣器是一直在响的。当然我也会在某些场合故意 ...

我的目的不想让蜂鸣器一上电就响,不然我每次开机就响一声,而是需要用时再让Beep=1;
回复

使用道具 举报

ID:678280 发表于 2021-10-13 17:32 | 显示全部楼层
代码改成低电平发声,NPN管改用PNP管。
回复

使用道具 举报

ID:236035 发表于 2021-10-14 08:42 | 显示全部楼层
15K不是偏置电阻,是限流用的。
回复

使用道具 举报

ID:680011 发表于 2021-10-14 09:20 | 显示全部楼层

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

void main()

{
        Beep=0;
        while(1);
}
回复

使用道具 举报

ID:680011 发表于 2021-10-14 09:21 | 显示全部楼层

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

void main()
{
Beep=0;
{
        Beep=0;
        while(1);
}
}
回复

使用道具 举报

ID:743654 发表于 2021-10-14 11:49 | 显示全部楼层
ly1972001 发表于 2021-10-14 08:42
15K不是偏置电阻,是限流用的。

是在基极对地加偏置电阻吧,这个阻值要怎么计算呢?
回复

使用道具 举报

ID:810165 发表于 2021-10-14 11:51 | 显示全部楼层
基极接大电容到低是比较可行的办法
回复

使用道具 举报

ID:743654 发表于 2021-10-14 13:21 | 显示全部楼层
mayouzhen2008 发表于 2021-10-14 11:51
基极接大电容到低是比较可行的办法

要多大才有用,我接10uF和22uF都不起作用
回复

使用道具 举报

ID:304725 发表于 2021-10-14 15:49 | 显示全部楼层
Beep上电高电平,应该改成低电平
回复

使用道具 举报

ID:57657 发表于 2021-10-14 16:19 | 显示全部楼层
cheney03 发表于 2021-10-14 13:21
要多大才有用,我接10uF和22uF都不起作用

接电容做什么? 声音可能会变异。
回复

使用道具 举报

ID:624769 发表于 2021-10-14 16:26 来自手机 | 显示全部楼层
cheney03 发表于 2021-10-14 13:21
要多大才有用,我接10uF和22uF都不起作用

电容你要考虑你单片机复位时间,以及你正常驱动时可能产生的延时,不值得。
你这个要求最好的方法就是换pnp三极管,或者换到单片机可以选择启动后为低电平的端口,一般单片机都有那么几个上电后输出低电平的io。
回复

使用道具 举报

ID:743654 发表于 2021-10-14 17:10 | 显示全部楼层
npn 发表于 2021-10-14 16:19
接电容做什么? 声音可能会变异。

是的,声音变了
回复

使用道具 举报

ID:587810 发表于 2021-10-14 18:35 | 显示全部楼层
建议换一个三极管,学一学三极管原理,低电平导通,正好启动了你的蜂鸣器。。。
回复

使用道具 举报

ID:641629 发表于 2021-10-15 09:48 | 显示全部楼层
换成PNP管子  蜂鸣器下拉
回复

使用道具 举报

ID:71233 发表于 2021-10-15 10:27 | 显示全部楼层
liuxuhe 发表于 2021-10-15 09:48
换成PNP管子  蜂鸣器下拉

十分支持!我设计的电路都是用PNP管的。
回复

使用道具 举报

ID:856329 发表于 2021-10-15 10:34 | 显示全部楼层
我也遇到过一样的问题,将BEEP=0;放到while()循环之前,就解决了,以下是仿真和程序,仅供参考。
Snipaste_2021-10-15_22-47-51.png
Snipaste_2021-10-15_22-46-45.png

评分

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

查看全部评分

回复

使用道具 举报

ID:964308 发表于 2021-10-16 14:47 来自手机 | 显示全部楼层
上电后io口置位需要一定时间
回复

使用道具 举报

ID:339654 发表于 2021-10-26 23:01 | 显示全部楼层
是不是用错蜂鸣器了
回复

使用道具 举报

ID:420836 发表于 2021-10-27 09:19 | 显示全部楼层
部分单片机的GPIO在初始化时处于高电平状态。
回复

使用道具 举报

ID:517951 发表于 2021-10-27 20:23 | 显示全部楼层
有源的蜂鸣器里面有振荡电路,只要两端直流压差和电流满足条件,就能发声。
如果换成无源的,需要给PWM波形,才能出声,固定的高低电平是不会出声的。
回复

使用道具 举报

ID:975477 发表于 2021-10-27 22:03 | 显示全部楼层
上电的时候是默认高电平,IO口置0也需要时间,
回复

使用道具 举报

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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