蜂鸣器
1.代码
c
#include <reg51.h>
#include <intrins.h>
#define u16 unsigned int
#define u8 unsigned char
sbit BEEP = P2^5;
void delay_50ms(u16 us) {
while(us--);
}
void main() {
u16 i = 2000;
while(1) {
while(i--) {
// BEEP = ~BEEP;
// delay_50ms(100); //延时1ms 低电平执行1ms,高电平执行1ms T = 1/0.001 = 1000hz
BEEP = 0;
delay_50ms(10);
BEEP = 1;
delay_50ms(190);
}
i = 0;
BEEP = 0;
}
}
2.原理图

3.蜂鸣器发声原理
蜂鸣器分为有源和无源蜂鸣器,而有源蜂鸣器发声给它接通电源就可以发声了,而无源蜂鸣器需要给它一个脉冲信号才可以发出声音,就是一个低电平一个高电平,这么一个脉冲信号,对于无源蜂鸣器来说想要蜂鸣器越响则通过占空比控制的,占空比就是在一个周期内,调整高电平与低电平持续的时间从而改变蜂鸣器声音的大小。


用来更改一个周期内高电平与低电平所持续的时间就是占空比,通过调节占空比从而达到控制蜂鸣器声音大小,在代码中调整高电平与低电平持续时间用延时函数控制,例如一个周期内持续时间是2ms,低电平是1ms,高电平是1ms,那么通过延时函数控制低电平延时时间是0.5ms,高电平是1.5ms,那么在一个周期内,低电平持续的时间是0.5ms,高电平持续的时间是1.5ms,改变高低电平持续的时间从而实现控制蜂鸣器发声的大小。