1.蜂鸣器介绍
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
(1)压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
(2)电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。
左有源 右无源
2.蜂鸣器模块电路
3.编写蜂鸣器控制程序
蜂鸣器控制程序主要分为 2 大块:
(1)使能蜂鸣器端口时钟、初始化GPIO。APP新建文件夹beep
(2)主函数控制。
beep.c
#ifndef _beep_H
#define _beep_H
#include "system.h"
#define BEEP_Pin (GPIO_Pin_8) //定义BEEP管脚
#define BEEP_Port (GPIOF) //定义BEEP端口
#define beep PFout(8) //BEEP PF8
void BEEP_Init(void);
#endif
beep.h
#include "beep.h"
/*******************************************************************************
* 函 数 名 : BEEP_Init
* 函数功能 : 蜂鸣器初始化
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); //使能端口F时钟
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; //输出模式
GPIO_InitStructure.GPIO_Pin=BEEP_Pin;//管脚设置F8
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//速度为100M
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉
GPIO_Init(BEEP_Port,&GPIO_InitStructure); //初始化结构体
GPIO_SetBits(BEEP_Port,BEEP_Pin); //关闭蜂鸣器
}
main.c
/*******************************************************************************
* 实 验 名 : 蜂鸣器实验
* 实验说明 :
* 连接方式 :
* 注 意 : 蜂鸣器驱动程序在beep.c内
*******************************************************************************/
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "beep.h"
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
int main()
{
SysTick_Init(168);
LED_Init();
BEEP_Init();
while(1)
{
led1=!led1;
beep=!beep;
delay_ms(1000); //精确延时1s
}
}