一.蜂鸣器的介绍
1.压电式蜂鸣器 (无源蜂鸣器)
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳 等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V 直流工 作电压),多谐振荡器起振,输出 1.5~5kHZ 的音频信号,阻抗匹配器推动压电 蜂鸣片发声。
2.电磁式蜂鸣器(有源蜂鸣器)
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电 源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜 片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
3.区别
对于无源蜂鸣器,如果改变频率就可以调节蜂鸣器音调,产生各种不同音色、 音调的声音。如果改变输出电平的高低电平占空比,则可以改变蜂鸣器的声音大小。
对于有源蜂鸣器,通常内部已经固定了频率,对于调节频率或占空比可能改 变不了蜂鸣器的音调和音量,当然也有的有源蜂鸣器可以实现和无源蜂鸣器一样的效果。
其实一句话就可概括它们之间的区别,想要压电式蜂鸣器发声,需提供一定 频率的脉冲信号;想要电磁式蜂鸣器发声,只需提供电源即可。
注意:有源与无源指的是内部有无振荡电路。
原理图介绍
如图所示,我们可以看到图中用的是一个共阳极的三极管,我们只需要知道当基极为低电平是,PNP导通。当基极为高电平时,NPN导通,所以当BEEP端输出高电平时这个三极管导通。我们可以看到该图中我们接了一个 R33的电阻,究其原因是当单片机上电的一瞬间属于浮空状态,引脚状态是不确定的,所以接一个10k的下拉电阻是保证在浮空状态时给一个稳定的低电平。
程序设计
当我们确认了原理图之后我们就可以开始写程序了。
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_8 ;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz ;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_ResetBits(GPIOB,GPIO_Pin_8); //配置完我们给一个低电平
}
int main(void)
{
BEEP_Init();
delay_init();
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_8);
delay_ms(200);
GPIO_SetBits(GPIOB,GPIO_Pin_8);
delay_ms(200);
}
}
当我们给一个稳定的高电平后,蜂鸣器就可以叫了。