问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一文掌握51单片机蜂鸣器使用:原理、电路到编程实战

创作时间:
2025-01-22 02:07:31
作者:
@小白创作中心

一文掌握51单片机蜂鸣器使用:原理、电路到编程实战

蜂鸣器是单片机应用中常见的输出设备,可以发出声音信号,用于提示或报警。本文将详细介绍蜂鸣器的类型、工作原理以及在51单片机中的使用方法,包括硬件连接和软件编程。

一. 蜂鸣器的介绍

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型的三极管。

2.晶体三极管,是半导体基本元器件之一,具有电流放大作用,是电子电路的核心元件。它最主要的功能是电流放大和开关作用。三极管是在一块半导体基片上制作两个相距很近的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.设计程序

对于程序设计的介绍可以见下面程序中的注释:

#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单片机蜂鸣器实验

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号