单片机蜂鸣器音乐代码_51单片机蜂鸣器

蜂鸣器实验
* 蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(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单片机蜂鸣器_第1张图片



ULN2003D 拥有相当于三级管的功能。当J7接低电平时,三极管导通,蜂鸣器可以接收电流,当J7为高电平时,三极管截止。(有源蜂鸣器)。
而对于无源蜂鸣器,不仅要要考虑高低电平,还要产生一定频率的脉冲,
蜂鸣器才能正常工作。
如图:

单片机蜂鸣器音乐代码_51单片机蜂鸣器_第2张图片


3.ULN2003D

单片机蜂鸣器音乐代码_51单片机蜂鸣器_第3张图片


如图,左图为逻辑框图,由7对NPN管组成。图右反相器内部示意图。
特点:
ULN 2003D是一个单片高电压、高电流的达林顿晶体管阵列集成
电路。它是由7对NPN达林顿管组成的, 它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是500mA。达林顿管并联可以承受更大的电流。此电路主要应用于继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(LED气体放电),线路驱动器和逻辑缓冲器。
ULN2003D的每对达林顿管都有一个2.7kQ串联电阻, 可以直接和TTL或5VCMOS装置。
主要特点
500mA额定集电极电流(单个输出)
高电压输出:50V
输入和各种逻辑类型兼容
继电器驱动器
4.改变单片机引脚输出波形的频率就可以调整控制蜂鸣器音调,产生不同音色音调的声音。
* 代码实现

#include 
#include 
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); //可以通过调节延时,来调节周期进而引起频率变化对蜂鸣器音色进行调节
 
}

你可能感兴趣的:(单片机蜂鸣器音乐代码)