- 有源蜂鸣器和无源蜂鸣器的区别
有源蜂鸣器:内置频率发生电路;通电就能发出声音;声音频率固定;成本较高
无源蜂鸣器:内部没有频率发生电路;需要外部给与频率;可以产生不同频率声音;成本较低 -
蜂鸣器的连接电路如下:
电路原理如下:三极管为PNP型,与NPN型三极管导通条件相反,B为基极,C为集电极,E为发射极,电阻R3是为了保护单片机IO口,当基极为低电平时,三极管E和C导通,蜂鸣器工作,当基极为高电平时,三极管E和C导通,蜂鸣器不工作
- 程序如下:
<buzzer.h>*************************
#ifndef __BUZZER_H
#define __BUZZER_H
#define BUZZERPORT GPIOB
#define BUZZER GPIO_Pin_5
void BUZZER_Init(void);//蜂鸣器初始化函数
void BUZZER_BEEP1(void);//蜂鸣器响应函数
#endif
<buzzer.c>*************************
#include "buzzer.h"
#include "delay.h"
void BUZZER_Init(void){
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = BUZZER;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //
GPIO_Init(BUZZERPORT, &GPIO_InitStructure);
GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1)); //蜂鸣器初始化,至高
}
void BUZZER_BEEP1(void){ //蜂鸣器响应函数
u16 i;
for(i=0;i<200;i++){
GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0)); //????????????0
delay_us(500); //???
GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1)); //????????????????1
delay_us(500); //???
}
}