基于51单片机实现无源蜂鸣器控制

前言
前篇教程我们已经介绍了如何控制51 单片机的io 口输出高低电平,本章我们通过另外一个实验来讲述51单片机io口的输出。通过单片机的一个io口控制板载无源蜂鸣器,实现蜂鸣器控制。学习可以参考前面led实验教程内容。
一、蜂鸣器介绍
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15v 直流工作电压),多谐振荡器起振,输出1.5~5khz 的音频信号,阻抗匹配器推动压电蜂鸣片发声。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
其实一句话就可概括它们之间的区别,想要压电式蜂鸣器发声,需提供一定频率的脉冲信号;想要电磁式蜂鸣器发声,只需提供电源即可。
我们开发板上使用的蜂鸣器是无源蜂鸣器,属于压电式蜂鸣器类型。这里说的有源和无源,并不是指电源的意思,而是指蜂鸣器内部是否含有振荡电路,有源蜂鸣器内部自带振荡电路,只需提供电源即可发声,而无源蜂鸣器则需提供一定频率的脉冲信号才能发声,频率大小通常在1.5-5khz 之间。
对于无源蜂鸣器,如果改变频率就可以调节蜂鸣器音调,产生各种不同音色、音调的声音。如果改变输出电平的高低电平占空比,则可以改变蜂鸣器的声音大小。
对于有源蜂鸣器,通常内部已经固定了频率,对于调节频率或占空比可能改变不了蜂鸣器的音调和音量,当然也有的有源蜂鸣器可以实现和无源蜂鸣器一样的效果。
二、硬件设计
在前面章节中我们已经对51 单片机的gpio 做了简单介绍,并且还使用了其中io 口直接控制开发板上的led。对于本章要实现蜂鸣器的控制,我们能否直接使用单片机的io 口驱动呢?答案是否定的,因为51 单片机io 口的驱动能力较弱(即使外接上拉电阻),而蜂鸣器驱动需要约30ma,所以非常困难,即使可以驱动,那对于整个芯片的其它io 剩下驱动能力就更加弱甚至无法工作。所以我们不会直接使用io 口驱动蜂鸣器,而是通过三极管把电流放大后再驱动蜂鸣器,这样51 单片机的io 口只需要提供不到1ma 的电流就可控制蜂鸣器。所以我们也经常说到51 单片机是用来做控制的,而不是驱动。
我们开发板上的蜂鸣器模块电路如下图所示:
从图中可以看出,蜂鸣器模块独立,j7 端子可接任意io 控制,因此可直接连接到51 单片机的p2.5 管脚上。图中使用三极管进行电流放大,从而驱动蜂鸣器,当p2.5 输出高电平,三极管截止,蜂鸣器不得电;当p25 输出低电平,三极管导通,蜂鸣器得电。
开发板上使用的是无源蜂鸣器,它需要一定频率的脉冲(高低电平)才会发声,因此需要让p25 脚以一定频率不断输出高低电平信号才能控制蜂鸣器发出声音。
三、软件设计
我们所要实现的功能是:让蜂鸣器发出声音,一段时间后再关闭,即让p2.5管脚输出一定频率的脉冲信号(高低电平)控制无源蜂鸣器。
#includetypedef unsigned int u16;typedef unsigned char u8;sbit beer=p2^5;void delay_10us(u16 ten_us){ while(ten_us--);}void main(){ u16 i=2000; while(1) { while(i!=0) { beer=!beer; i--; } i=0; beer=0; }}main.c 文件内代码非常少也很简单,首先将51 单片机的头文件包含进来,然后使用sbit关键字来定义p2.5 管脚,定义好后即可使用beep 来替代p2.5口的操作。主函数功能非常简单,直接进入while 循环,在循环内再次套用了一个while 循环,只不过这里并非死循环,而是通过变量i 值来决定何时退出,i值初始化为2000,即该循环会执行2000 次,此循环内不断对beep 取反,然后延时一定时间,即p2.5 间隔一定时间输出高低电平,这样就会产生脉冲信号控制蜂鸣器发出声音,当i 值递减到0 时则退出while 循环,然后将i 值清零,且将beep 输出0。若修改变量i 的值可以改变蜂鸣器发声时间。
若要改变音调可以修改延时时间,但要注意频率不能太大或者太小,具体大家可以试着调试。若要改变音量,可以修改beep 输出高电平时间,如下:
beep=1;delay_10us(190);beep=0;delay_10us(10);

滤波器的基本原理与功能!
影响焊锡膏贴片加工中焊点光亮的因素有哪些?
使用Eclipse插件调试AT32系列芯片
能实现电池反接校正的MAX4636,max4636 circuit
基于EFM32的红外测温仪应用案例
基于51单片机实现无源蜂鸣器控制
一加在欧洲发布一加Nord系列新成员一加Nord N10
LG Q8震撼上线,LG Q8意大利首发,骁龙820加平行双摄,售价4700!
测量三防漆厚度方法与如何准确掌控三防漆喷涂厚度
示波器光标测量与自动测量哪个更准确?
Alpha Data FPGA加速器卡增强您的HPC应用
荣耀手环4测评 更为贴近消费者的使用习惯
最大工作电压和额定工作电压
Cocos区块链游戏技术大会 发布全球首个区块链游戏开发环境
美团全国各配送站机房配备钡铼技术工业物联网监测终端S270,实现远程数据监测
高性能激光测距传感器OSM41,轻松应对各种复杂高精度检测挑战!
笔记本处理器品牌一览
步进电机的基本工作原理
ODG将出售专利组合 公司可能在大规模销售R-9增强现实眼镜之前倒闭
华为Mate9Pro售价超五千 能否抢夺苹果/三星的高端市场?