内容
控制蜂鸣器发出声音,一段时间后关闭
蜂鸣器简介
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件;
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型:
- 压电式蜂鸣器,主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成;多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声
- 电磁式蜂鸣器,由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成;接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声;
区别:压电式蜂鸣器发声,需提供一定频率的脉冲信号;电磁式蜂鸣器发声,只需提供电源即可;
我们开发板上使用的蜂鸣器是无源蜂鸣器,属于压电式蜂鸣器类型;
这里说的有源和无源,并不是指电源的意思,而是指蜂鸣器内部是否含有振荡电路:
- 有源蜂鸣器内部自带振荡电路,只需提供电源即可发声;
- 无源蜂鸣器需提供一定频率的脉冲信号才能发声,频率大小通常在1.5-5KHz之间;
- 对于无源蜂鸣器,改变频率就可以调节蜂鸣器音调,产生各种不同音色、音调的声音;改变输出电平的高低电平占空比,则可以改变蜂鸣器的声音大小;
- 对于有源蜂鸣器,通常内部已经固定了频率,对于调节频率或占空比可能改变不了蜂鸣器的音调和音量,当然也有的有源蜂鸣器可以实现和无源蜂鸣器一样的效果;
原理图
线路图
由线路图可知,蜂鸣器连接p25管脚,并且使用ULN2003D芯片来驱动(当P25输出高电平,BEEP则输出低电平;当P25输出低电平,BEEP则输出高电平,类似一个非门)
思路
通过不断改变BEEP的电平来使蜂鸣器发出声音,改变其高低电平时间的占比来改变音调;
编码
main.c
/*
* @Description: 使蜂鸣器发出声音,一段时间后停止
*/
#include "reg52.h"
typedef unsigned int u16; // 对系统默认数据类型进行重定义
typedef unsigned char u8;
sbit BEEP = P2 ^ 5; // 将P2.5管脚定义为BEEP
/**
* @description: 延时函数(循环一次大约10us)
* @param {u16} ten_us
* @return {*}
*/
void delay_10us(u16 ten_us)
{
while (ten_us--)
;
}
void main()
{
u16 i = 2000;
while (1)
{
while (i--) // 循环2000次
{
BEEP = 1; // 通过不断改变BEEP的电平来使蜂鸣器发出声音
delay_10us(100); // 通过改变其高低电平时间的占比来改变音调
BEEP = 0;
delay_10us(100);
}
i = 0; // 清零
BEEP = 0; // 关闭蜂鸣器
}
}
编译和结果
按F7编译,无错误,生成.hex文件,使用pz-isp将hex文件下载到单片机
结果:蜂鸣器发出声音,一段时间后关闭