资讯详情

STM32F103单片机驱动蜂鸣器

??蜂鸣器在电子产品中很常见,几乎所有的家用电器都有,主要用于声音提示。

蜂鸣器可分为压电蜂鸣器和电磁蜂鸣器。

??压电式蜂鸣器: 压电蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器、共振箱、外壳等组成。

??电磁蜂鸣器:电磁蜂鸣器由振荡器、电磁线圈、磁铁、振动膜和外壳组成。

蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。

??有源蜂鸣器:内部有驱动电路,只要外部供应点,内部电路就会工作,驱动蜂鸣器内部的线圈振动,发出声音。

??无源蜂鸣器:内部没有振荡电路。当蜂鸣器直接提供直流电时,蜂鸣器不会发出声音。只有当蜂鸣器外部提供方波时,蜂鸣器才能发出声音。

驱动方式:

??无源蜂鸣器驱动相对简单,直接使用单片机IO将方波信号发送到蜂鸣器。

image.png

??驱动有源蜂鸣器时,外部需要驱动电路。

??常用的驱动方式是直接由三极管驱动,主要用于放大电流,因为蜂鸣器响时所需的电流相对较大。一般来说,单片机口不能直接提供这么大的电流。蜂鸣器反向并联二极管,延长蜂鸣器的使用寿命。由于蜂鸣器内部有一个线圈,相当于一个电感,当蜂鸣器关闭时,线圈上会产生一个反向电势,当蜂鸣器关闭时,二极管可以放电线圈。

??用这个驱动电路驱动蜂鸣器时,在上电的那一刻,有时会听到蜂鸣器滴滴的声音,此时因为在单片机上电时,IO口未初始化前,有的IO默认情况下,口腔会是高电平,所以当单片机上电时,三极管基极会立即再次高电平,蜂鸣器会响,当IO口初始化完成后,IO当三极管不导通时,口设置为低电平,蜂鸣器不响。为了避免这种情况,基极通常会增加较大的下拉电阻。

??给基极加一10K这样,在上电的瞬间,下拉电阻将三极管基极的电平拉至0,蜂鸣器在上电的瞬间不会响。

??有源蜂鸣器用于驱动蜂鸣器。虽然驱动电路有点复杂,但程序控制相对简单。IO蜂鸣器的声音或声音可以通过高低电平来控制。蜂鸣器的初始化代码如下:

#define BEEP PBout(8) //BEEP 蜂鸣器接口  void BEEP_Init(void) {     GPIO_InitTypeDef GPIO_InitStructure;      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     GPIO_Init(GPIOB, &GPIO_InitStructure);      GPIO_ResetBits(GPIOB, GPIO_Pin_8); } 

驱动蜂鸣器的嘴PB8设置为普通IO嘴,推拉输出就够了。当蜂鸣器响起时,直接给它PB八口给高电平。

int main(void) {     delay_init();       //延时函数初始化     LED_Init();         ///初始化和LED连接的硬件接口     BEEP_Init();  ///初始化蜂鸣器     while(1)     {             BEEP = 1;         delay_ms(200);   //延时300ms               BEEP = 0;         delay_ms(200);  //延时300ms           } } 

让蜂鸣器在主程序中循环打开和关闭,这样你就可以听到蜂鸣器的声音。

标签: 连接器pb2911000家电连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台