前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。
目录
[一. 蜂鸣器的介绍](#一. 蜂鸣器的介绍)
[2.压电式蜂鸣器 (无源蜂鸣器)](#2.压电式蜂鸣器 (无源蜂鸣器))
[3.电磁式蜂鸣器 (有源蜂鸣器)](#3.电磁式蜂鸣器 (有源蜂鸣器))
[二. 蜂鸣器放大电路原理](#二. 蜂鸣器放大电路原理)
[1. 三极管放大电路](#1. 三极管放大电路)
[三. 程序设计](#三. 程序设计)
[四. 实验现象](#四. 实验现象)
一. 蜂鸣器的介绍
1.蜂鸣器介绍
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计 算机、 打印机、 复印机、 报警器、 电子玩具、 汽车电子设备、 电话机、 定 时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
2.压电式蜂鸣器 (无源蜂鸣器)
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳 等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V 直流工 作电压),多谐振荡器起振,输出 1.5~5kHZ 的音频信号,阻抗匹配器推动压电 蜂鸣片发声。
3.电磁式蜂鸣器 (有源蜂鸣器)
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电 源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜 片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
4.区别
对于无源蜂鸣器,如果改变频率就可以调节蜂鸣器音调,产生各种不同音色、 音调的声音。如果改变输出电平的高低电平占空比,则可以改变蜂鸣器的声音大小。
对于有源蜂鸣器,通常内部已经固定了频率,对于调节频率或占空比可能改 变不了蜂鸣器的音调和音量,当然也有的有源蜂鸣器可以实现和无源蜂鸣器一样的效果。
其实一句话就可概括它们之间的区别,想要压电式蜂鸣器发声,需提供一定 频率的脉冲信号;想要电磁式蜂鸣器发声,只需提供电源即可。
注意:有源与无源指的是内部有无LCD振荡电路。
5.本单片机所使用的蜂鸣器
我们开发板上使用的蜂鸣器是无源蜂鸣器,属于压电式蜂鸣器类型。这里说 的有源和无源,并不是指电源的意思,而是指蜂鸣器内部是否含有振荡电路,有源蜂鸣器内部自带振荡电路,只需提供电源即可发声,而无源蜂鸣器则需提供一 定频率的脉冲信号才能发声,**频率大小通常在 1.5-5KHz 之间。**蜂鸣器实物图如 下图所示:
这里的蜂鸣器长脚为正,短脚为负。
二. 蜂鸣器放大电路原理
由于单片机内直接产生的电流过小无法使蜂鸣器正常工作,因此我们需要运用放大电路进行电流放大,下面是两种不同的放大方式:
1. 三极管放大电路
(1)三极管介绍
1.半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,共用的一个电极成为三极管的基极(用字母b表示)。其他的两个电极成为集电极(用字母c表示)和发射极(用字母e表示)。由于不同的组合方式,形成了一种是NPN型的三极管,另一种是PNP型的三极管。
- 晶体三极管,是半导体基本元器件之一,具有电流放大作用,是电子电路的核心元件。它最主要的功能是电流放大和开关作用。三极管是在一块半导体基片上制作两个相距很近的PN结,两个PN结把正块半导体分成三部分,中间部分是基区,两侧部分是发射区和集电区,排列方式有PNP和NPN两种。
两种不同的三极管内部电流:
3.对于单片机运用而言的一些使用区别:
PNP、NPN 表示的意思是什么。P表示正、N表示负。
NPN表示平时为高电平输入,信号到来时信号为低电平输出.
PNP表示平时为低电平输入,信号到来时信号为高电平输出。
4.以NPN为例图解放大电路
(2)三极管放大电路
左图为共阳极,右图为共阴极,且图中Buzzer指蜂鸣器。
2.ULN2003介绍
本单片机通过达林顿晶体管阵列组成的电路模块ULN2003实现电流放大
(1)ULN2003模块
右边BEEP指定就是蜂鸣器,左边连接P2^5口。
(2)ULN2003介绍
ULN2003是一个单片高电压、高电流的达林顿品体管阵列集成电路。它是由7对NPN达林顿管组成的,它的高电压输出特性和阴极箱位二极管可以转换感应负载。单个达林顿对的集电极电流是500mA。达林顿管并联可以承受更大的电流。此电路主要应用于继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(LED气体放电),线路驱动器和逻辑缓冲器。
(3)ULN2003电路
其本身也运用三极管放大原理,这里我们不做深入。
3.蜂鸣器模块图
三. 程序设计
1.设计原理
这里我们设计主要结合LED灯,独立按键和蜂鸣器。
由上图可见对于蜂鸣器的使用由P2^5口控制,需要产生一定频率的脉冲即高低频率交替。
2.设计程序
对于程序设计的介绍可以见下面程序中的注释:
cpp
#include <REGX52.H>
unsigned int i; //定义变量i用于控制蜂鸣器鸣叫的时间
sbit BEEP=P2^5; //定义BEEP为P2^5口
//延时函数
void Delay(unsigned int xms) //@11.0592MHz
{
unsigned char data i,j;
while(xms)
{
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
//这里新定义一个延时函数,该延时函数以10us为一个单位时间
void delay_10us(ten_us)
{
while(ten_us--);
}
void main()
{
i=500;
while(1)
{
if(P3_1==0) //按键K1按下
{
Delay(20);
while(P3_1==0);
Delay(20);
P2_0=0; //LED1亮起
while(i--)
{
BEEP=!BEEP; // 这里主要为产生一定频率的脉冲(高低电平交替)
delay_10us(50); //高低电平交替的时间,用于控制频率从而控制音调
}
i=0;
BEEP=0; //令i等于0,鸣音结束
}
}
}
注意:设计的频率太高或太低都不行,即对于蜂鸣器部分的高低电平交替的时间要取好。
四. 实验现象
1.实验现象
当按键K1按下时,LED1亮起,并且蜂鸣器响起,蜂鸣器响起一定时间后不再响起(注意不要让蜂鸣器长时间工作,会造成损坏)。
2.实验视频
51单片机蜂鸣器实验
感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。