目录
蜂鸣器介绍
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
蜂鸣器按其结构可分为电磁式蜂鸣器和压电式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳组成。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器以及共鸣箱、外壳等组成。压电式蜂鸣器是以压电陶瓷的压电效应,来带动金属片的振动而发声;而电磁式蜂鸣器则是用电磁的原理,通电时将金属振动 膜吸下,不通电时以振动膜的弹力弹回。由于两种蜂鸣器发声原理不同,电压式结构简单耐用但音调单一、音色差,适用于报警器等设备;而电磁式由于音色好,所以多用于语音、音乐等设备。
蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器
左为有源蜂鸣器,右为无源蜂鸣器
区别 |
有源蜂鸣器 |
无源蜂鸣器 |
---|---|---|
外形高度 |
高 |
低 |
引脚部位 |
黑胶封闭 |
绿色电路板 |
电压 |
高 |
低 |
响声 |
连续发声 |
响一次停一次 |
有源蜂鸣器:内部自带振荡源(LCD振荡电路),将正负极接上直流电压即可持续发声,频率固定。
无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。
注:人耳可以听到的声音频率在20Hz~20kHz之间的声波
模块接线
vcc接工作电压,Gnd接地,信号线接单片机IO口。
GPIO口驱动能力弱,不能直接驱动无源蜂鸣器,使用用三极管开关。
有源:低电平触发就是IO口输入为0就可发声。
无源:低电平时间在一个周期内越长声音越响。
有源蜂鸣器
有源蜂鸣器内部包含一个振荡电路,能将恒定的直流电转化为一定频率的脉冲信号,从而实现磁场交变,带动蜂鸣器振动发音。它不需要额外的驱动电路,只要接通直流电源即可工作
TMB12A05电磁式蜂鸣器采用直流电压供电,发声频率为2.4Khz(不可改变)。
驱动代码
该模块与单色LED模块驱动代码一样,将LED改成Buzzer即可
注意:
1.蜂鸣器的触发方式 2.撕掉蜂鸣器贴纸有惊喜!!!
buzzer.h
#ifndef _BUZZER_H_
#define _BUZZER_H_
#define Buzzer_ON 0
#define Buzzer_OFF 1
void Buzzer_Init(void);
void Buzzer_SetON(void);
void Buzzer_SetOFF(void);
void Buzzer_Turn(void);
#endif
buzzer.c
#include "stm32f10x.h" // Device header
#include "Buzzer.h"
void Buzzer_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
//GPIO默认输出低电平
GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)Buzzer_OFF); //输出高电平 GPIO_SetBits(GPIOA, GPIO_Pin_0)
}
void Buzzer_SetON(void)
{
GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)Buzzer_ON);
}
void Buzzer_SetO