蜂鸣器介绍
蜂鸣器分为压电式蜂鸣器和电磁式蜂鸣器。
压电式蜂鸣器需要电压、一定频率的脉冲信号;电磁式蜂鸣器需要电源即可。
开发板上面是压电式蜂鸣器,是无源蜂鸣器(无振荡电路),因此可以手动改变蜂鸣器的频率产生不同音色、音调,而改变高低电平占比可以改变声音大小。
硬件设计
压电式蜂鸣器需要的电压不可能由单片机的I/O口提供,因为I/O口的驱动能力很弱(加上上拉电阻也不强),在开发板原理图上:
开发板原理图中,P2^5引脚直接连接蜂鸣器,并不是直接连接单片机,也没有先连接到三极管放大,还使用UNL2003芯片驱动。
给UNL2003芯片的P2^5端口输入低电平时,BEEP输出高电平,输入高电平时,BEEP输出低电平(类似非门电路)。
无源蜂鸣器需要一定频率的脉冲信号(高低电平),因此需要P2^5管脚不断输出高低电平信号。
软件设计
#include "reg52.h"//响声周期与频率的影响条件???typedef unsigned char u8;
typedef unsigned int u16;sbit BEEP = P2^5;void delay(u16 i)
{
while (i--);
}void main()
{
u16 i= 500;//定义一个变量i,形式为整形,代表发声时间.while(1){
while(i--)//时间i从2000递减,并不是死循环!而是不断递减后退出循环{
BEEP = !BEEP;//对蜂鸣器按位取反,高低电平不断变化,生成脉冲信号delay(100);//数字乘10us,周期为其2倍}i = 0;//清零BEEP = 0;//虽然是0,但是不表示开启,而是关闭(非门电路)}
}