蜂鸣器介绍
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作为发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
与LED相比,由于51单片机的I/O口的驱动电流不足,蜂鸣器无法直接使用其来驱动,而是通过放大电路实现驱动。
我们通过周期性地改变电流的大小和方向,使振动膜片产生稳定的振动,进而使蜂鸣器发声,因此蜂鸣器的控制需要脉冲信号而不是单一信号,且脉冲信号频率一般要求在1.5-5KHz。
实验2 蜂鸣器
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit BEEP = P2^5; //定义蜂鸣器控制管脚为BEEP,博主使用的单片机对应管脚为P2.5
void delay_10us(u16 time) //延时函数延用实验1程序
{
while(time --);
}
void main()
{
u16 i = 2000; //控制蜂鸣器发声时间的变量
while(1)
{
while(i--)
{
BEEP = !BEEP; //使蜂鸣器控制管脚输出在高电平和低电平之间切换
delay_10us(100); //控制输出信号脉冲周期2*100*10微秒
}
i = 0;
BEEP = 0;
}
}
蜂鸣器的音高取决于脉冲信号的周期(频率),周期越短(频率越高)音高越高。
蜂鸣器的音量取决于脉冲信号中高电平的占空比(即高电平输出时间在一个周期的占比),占空比越大音量越大。
以下是一个便于控制蜂鸣器的音量的内部循环。
while(i--)
{
BEEP = 0;
delay_10us(150); //低电平输出时间占75%
BEEP = 1;
delay_10us(50); //高电平输出时间占25%,相较于上一个程序蜂鸣器音量更小
}