欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

51单片机蜂鸣器

程序员文章站 2022-06-08 19:55:04
...
蜂鸣器实验
  • 蜂鸣器
    蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压) , 多谐振荡器起振, 输出1.5~5kHZ的音频信号, 阻抗匹配器推动压电蜂鸣片发声。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
    其实一句话就可概括它们之间的区别,想要压电式蜂鸣器发声,需提供一定频率的脉冲信号;想要电磁式蜂鸣器发声,只需提供电源即可。
    还有一点要注意有源蜂鸣器和无源蜂鸣器,有源这的是有振荡器,不是电源的意思。
  • 工作原理
    1.和LED的不同
    我们都知道LED灯是单片机IO口直接控制的,那么蜂鸣器呢?
    答案是否定的, 因为51单片机IO口的驱动能力较弱(即使外接上拉电阻),而蜂鸣器驱动需要约30mA,所以非常困难,即使可以驱动,那对于整个芯片的其IO剩下驱动能力就更加弱甚至无法工作。所以我们不会直接使用IO口驱动蜂鸣器,而是通过三极管把电流放大后再驱动蜂鸣器,这样51单片机的IO口只需要提供不到1mA的电流就可控制蜂鸣器。所以我们也经常说到51单片机芯片是用来做控制的,而不是驱动。
    2.单片机通过P15引脚连接ULN2003D,ULN2003D连接蜂鸣器。ULN3D相当于当于一个集成的放大电路,起放大电流的作用。
    原理图如图:
    51单片机蜂鸣器
    ULN2003D 拥有相当于三级管的功能。当J7接低电平时,三极管导通,蜂鸣器可以接收电流,当J7为高电平时,三极管截止。(有源蜂鸣器)。
    而对于无源蜂鸣器,不仅要要考虑高低电平,还要产生一定频率的脉冲,
    蜂鸣器才能正常工作。
    如图:
    51单片机蜂鸣器
    3.ULN2003D
    51单片机蜂鸣器
    如图,左图为逻辑框图,由7对NPN管组成。图右反相器内部示意图。
    特点:
    ULN 2003D是一个单片高电压、高电流的达林顿晶体管阵列集成
    电路。它是由7对NPN达林顿管组成的, 它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是500mA。达林顿管并联可以承受更大的电流。此电路主要应用于继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(LED气体放电),线路驱动器和逻辑缓冲器。
    ULN2003D的每对达林顿管都有一个2.7kQ串联电阻, 可以直接和TTL或5VCMOS装置。
    主要特点
    500mA额定集电极电流(单个输出)
    高电压输出:50V
    输入和各种逻辑类型兼容
    继电器驱动器
    4.改变单片机引脚输出波形的频率就可以调整控制蜂鸣器音调,产生不同音色音调的声音。
  • 代码实现
#include <reg52.h>
#include <intrins.h>
typedef unsigned char u8; //重定义全局字符型变量
typedef unsigned int u16; //重定义全局整型变量
sbit beep=P1^5; //通过ULN2003D连接引脚P15

/*延时函数*/
void dealy(u16 i)
{
while(i--);
}

void main()
{ 
  beep=~beep;
   /*~为取反,我们知道默认引脚处的电平为高电平,所以取反为低电平。
  然后再循环不断变化就可以产生脉冲,
 无源蜂鸣器可以正常工作。*/
 dealy(1000); //可以通过调节延时,来调节周期进而引起频率变化对蜂鸣器音色进行调节
	 
}
相关标签: 51单片机入门