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

发布时间:2023-07-18  

前言

前篇教程我们已经介绍了如何控制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);


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    如何用STM32单片机蜂鸣器来演奏音乐;本文用STM32单片机蜂鸣器来演奏音乐,用的开发软件是STM32CubeIDE。 蜂鸣器 有源蜂鸣器 内部有震荡源,只要通电就会有响声,但是......
    STM32蜂鸣器音乐播放实例教程;本文用STM32单片机蜂鸣器来演奏音乐,用的开发软件是STM32CubeIDE。 蜂鸣器 有源蜂鸣器 内部有震荡源,只要通电就会有响声,但是声音频率固定。 无源蜂鸣器......
    基于51单片机实现无源蜂鸣器控制;前言 前篇教程我们已经介绍了如何控制51 单片机的IO 口输出高低电平,本章我们通过另外一个实验来讲述51单片机IO口的输出。通过单片机的一个IO口控制板载无源蜂鸣器......
    点报时和闹钟功能。 4、具有高低温报警功能,上下限值可调,蜂鸣器提醒。 5、可以通过按键调整年月日时分秒和闹钟功能,具有闰年判断,自动计算星期功能。 需注意仿真中51单片机芯片是兼容的,AT89C51......
    为本设计资料展示图: 2.仿真结果 开始仿真 打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。 开始仿真后,调整温度变大,当温度106℃大于温度上限值105℃后蜂鸣器报警,温度......
    整点报时功能,多少点蜂鸣器响多少次; 6、具备闰年判断功能,设置日期的时候遵守正常大小月规律。 需注意仿真中51单片机芯片是通用的,AT89C51,AT89C52都是51单片机的具体型号,内核是兼容的。相同......
    51单片机常用器件的驱动电路;1. IO介绍 51单片机总的管脚有40个,但是其中能够作为IO使用的只有32个,每8个分为一组,共4组。单片机要想实现预定功能必然要使用到各种IO口,来完......
    基于51单片机实现旋转LED灯报警(Proteus仿真);具体功能实现: 当按下开关时,蜂鸣器报警,同时LED旋转式亮灯。 使用器件: AT89C51、按键、电阻、蜂鸣器(SOUNDER)、8只......
    。 在没有学过微机原理的情况下学习单片机要注意哪些问题? 答:该课程就是给没有计算机基础的大二同学讲的,只要坚持就能学会学好。 51 单片机是最基础的单片机,是不是相当于打基础?换用其他类型的单片机......
    基于51单片机的计时器设计;一.系统概述 系统使用的模块有AT89C51单片机+74HC573锁存器+8位共阴数码管+按键+小灯+蜂鸣器。 本设计采用51单片机为核心控制器,系统内设置了24秒的......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>