|
我也遇到这样的问题了,我将端口赋值0放在了最前面,然后在开关MOS的gs之间加了电容也没改善。s接地,g连接电阻到单片机的一个io口。 |
| 上电的时候是默认高电平,IO口置0也需要时间, |
|
有源的蜂鸣器里面有振荡电路,只要两端直流压差和电流满足条件,就能发声。 如果换成无源的,需要给PWM波形,才能出声,固定的高低电平是不会出声的。 |
| 部分单片机的GPIO在初始化时处于高电平状态。 |
| 是不是用错蜂鸣器了 |
| 上电后io口置位需要一定时间 |
|
我也遇到过一样的问题,将BEEP=0;放到while()循环之前,就解决了,以下是仿真和程序,仅供参考。 |
Snipaste_2021-10-15_22-47-51.png (6.11 KB, 下载次数: 116)
Snipaste_2021-10-15_22-46-45.png (1.97 KB, 下载次数: 100)
liuxuhe 发表于 2021-10-15 09:48 十分支持!我设计的电路都是用PNP管的。 |
| 换成PNP管子 蜂鸣器下拉 |
| 建议换一个三极管,学一学三极管原理,低电平导通,正好启动了你的蜂鸣器。。。 |
npn 发表于 2021-10-14 16:19 是的,声音变了 |
cheney03 发表于 2021-10-14 13:21 电容你要考虑你单片机复位时间,以及你正常驱动时可能产生的延时,不值得。 你这个要求最好的方法就是换pnp三极管,或者换到单片机可以选择启动后为低电平的端口,一般单片机都有那么几个上电后输出低电平的io。 |
cheney03 发表于 2021-10-14 13:21 接电容做什么? 声音可能会变异。 |
| Beep上电高电平,应该改成低电平 |
mayouzhen2008 发表于 2021-10-14 11:51 要多大才有用,我接10uF和22uF都不起作用 |
基极接大电容到低是比较可行的办法![]() |
ly1972001 发表于 2021-10-14 08:42 是在基极对地加偏置电阻吧,这个阻值要怎么计算呢? |
|
#include <reg51.h> sbit Beep=P3^0; void main() { Beep=0; { Beep=0; while(1); } } |
|
#include <reg51.h> sbit Beep=P3^0; void main() { Beep=0; while(1); } |
| 15K不是偏置电阻,是限流用的。 |
| 代码改成低电平发声,NPN管改用PNP管。 |
Hephaestus 发表于 2021-10-13 16:39 我的目的不想让蜂鸣器一上电就响,不然我每次开机就响一声,而是需要用时再让Beep=1; |
| 8051的IO端口默认上拉,也就是按你的电路图在你的代码执行前蜂鸣器是一直在响的。当然我也会在某些场合故意这么设计,提示蜂鸣器是好的。 |
| 是加了一个电感吗?电感的电压不能突变 |
ZQ01 发表于 2021-10-13 10:26 已经有加15K电阻,还是不起作用 |
18701931930 发表于 2021-10-13 10:10 已经有加15K电阻,还是不起作用 |
| IO口上电瞬间高电平,需要等待一段时间才会执行用户程序,可以换PNP管驱动。 |
| 基极需要加一个下偏置电阻就阔以咯 |
| 上电的时候是默认高电平,IO口置0也需要时间,需要给三极管基极加下偏置电阻 |
| 三极管基极对地接一个10uf 电解电容器。 |
| 上电默认高电平,IO口置0也需要时间,还是给三极管基极加下偏置电阻吧。 |
|
蜂鸣器分有源、无源。 有源的,就是通电即beep beep。。。。。。。的。 |