标题: stm32F4驱动蜂鸣器有关问题 [打印本页]

作者: yezhaowei    时间: 2021-2-7 10:59
标题: stm32F4驱动蜂鸣器有关问题
某个宝买了一个有源蜂鸣器模块。在stm32F4的板子上直接置高电平 GPIO_SetBits(GPIOF,GPIO_Pin_8); 蜂鸣器就会很响。

但是在51单片机上 sbit beep=P1^5; beep=1就不会响,一定要取反加个延时 这样: beep = ~beep;  delay(10);才会响,而且比较小声。这是为什么呢?


我个人想实现按键一次蜂鸣器响一次,在STM32可以听到很大声,在51单片机基本上就一点点声几乎听不见。

作者: yezhaowei    时间: 2021-2-7 11:07
是不是51单片机给的高电平不够高?
作者: slf252    时间: 2021-2-7 13:06
最好通过三极管来驱动,单片机的IO口驱动电流比较小
作者: 学生1    时间: 2021-2-7 13:39
蜂鸣器依靠振动发出声响,振动频率不同,声音效果也不一样,beep直接等于1,输出电平不发生改变,就不能让蜂鸣器发声,beep=~beep时,高低电平不断改变,使蜂鸣器产生振动从而发出声音,声音效果不仅和电平高低有关还与高低电平变化频率有关
作者: 小文文    时间: 2021-2-7 14:44
本帖最后由 小文文 于 2021-2-7 14:53 编辑

蜂鸣器分有源和无源蜂鸣器,有源蜂鸣器直接给他上电就可以响,无源呢是靠震动响的,所以得高低电平不断出现,声调的高低和频率有关也就是你给得延时多久有关。蜂鸣器是需要驱动的,单片机出来的信号电流太小了,你得加个驱动放大电路,三极管就可以。你可以到网百度一下,单片机接无源蜂鸣器原理图。
作者: taotie    时间: 2021-2-7 15:24
51端口提供的电流很小,蜂鸣器直接端口会将电压拉低。加一个三极管扩流就OK了
作者: Hephaestus    时间: 2021-2-7 15:31
你去查下51的高电平输出能力。原始版本51用输出弱上拉实现双向口,即可以输入也可以输出,肯定推不动蜂鸣器。现代51很可能大不一样了,可以设置强推挽模式。这需要你自己去查你用的51具体手册了。
作者: cheney03    时间: 2021-2-8 09:00
跟IO口的驱动能力有关,不同单片机IO口输出电流有差异。
作者: TTQ001    时间: 2021-2-9 09:57
STM32具有比51系列单片机更好的电流驱动能力
作者: amandv    时间: 2021-2-12 15:25
51的引脚设置成强推挽输出




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1