Advertisement

51单片机蜂鸣器实验

阅读量:

一、蜂鸣器介绍

蜂鸣器作为一种一体化电子设备,在各种家用电器中都发挥着声音输出的作用。例如,在计算机、打印机、复印机以及电话机等设备中都可以看到其身影。其供电系统一般采用直流电源,并主要分为两种类型:一种是基于压电式的发声装置,另一种则是利用电磁式的振动机构进行发声。

压电式蜂鸣器主要组成部分包括多谐振荡器、压电振动片、阻抗匹配模块、共鸣箱以及外壳等关键部件。这些谐振电路组件通常由晶体管或集成电路进行集成制造,在施加1.5至15伏的直流电压时发生振动并产生音频信号。该音频信号经阻抗匹配处理后驱动作用于压电振动片上以实现发声功能。

主要由驱动电路(如振荡器)、绕线组(如电磁线圈)、磁体组件(如磁铁)、振动机构(如振动膜片)以及外壳组成。在通电后,在驱动电路产生的音频信号电流作用下,绕线组会产生特定磁场,在该磁场与磁体组件的配合下,在其内部产生的机械运动将使振动机构产生周期性运动从而发出声音。

简单来说,在声学性能上存在明显差异。只有当外部施加特定频率的脉冲信号时(即输入特定频率的电压),压电式蜂鸣器才会发出声音;而电磁式蜂鸣器则无需额外控制信号(即无需施加额外电压),只要有电输入即可正常运作)。

我们的开发板配备了无源式蜂鸣器设备,它属于此类别的压电式发声设备。在"有源"与"无源"这一区分中,并非以是否具备电源电压作为判断标准,而是指蜂鸣器内部是否集成振荡电路系统。配备独立的振荡电路系统的有源型蜂鸣设备在安装好电源后即可正常发出声音,而只有在接收到频率介于1.5至5kHz之间的脉冲信号时才可能正常运作。为了直观展示该类设备的特点,以下附有相关产品的实物图片集

d4d79ff4ea534e099e2aabc649bdf6a2.jpeg

无源蜂鸣器的独特之处在于:通过调整频率值即可实现声音高低的变化;因此会产生丰富多彩且具有独特风格的声音。除此之外,在控制输出电压的高低以及占空比方面进行相应调整,则可有效调控蜂鸣器的声音大小

有源蜂鸣器的特性与无源型存在显著差异,在大多数情况下其内部固定了工作频率这一特点使得无法通过调节频率或占空比来实现声音参数的有效控制然而值得注意的是少数具有独特的设计方案的有源蜂鸣器仍然能够实现与无源设备相同的功能即通过调整参数可以实现声音特性的调控

二、硬件设计

我们开发板上的蜂鸣器模块电路如下图所示:

d65aa0288254428b8e46ec6ab9f3c393.png

观察图形可知,接线情况表明,蜂鸣器控制管脚直接连接至所选用的51单片机之P2.5端子上.值得注意的是,本电路并未采用三极管作为电流放大元件,而是采用了ULN2003芯片来进行驱动操作.关于ULN2003芯片的具体工作原理将在后续章节中详细介绍,目前只需掌握其基本功能即可:当P25引脚施加高电平时,BEEP引脚相应置低;而当P25引脚处于低电平状态时,BEEP引脚则被拉高,这与非门逻辑功能相吻合.

在开发板上安装的是一个无源型蜂鸣器芯片。该蜂鸣器芯片要求通过发送特定的高频与低频电脉冲信号来产生声音。进而要求我们让P25引脚持续输出特定的高频与低频电脉冲信号才能实现蜂鸣器的声音控制功能。

三、软件设计

我们的功能目标是使蜂鸣器产生声音,并在一段时间内处于关闭状态。通过 P2.5 管脚输出特定频率的脉冲信号(高低电平),即可控制无源蜂鸣器工作。代码如下

复制代码
 #include "reg52.h"

    
  
    
 typedef unsigned int u16;//对系统默认数据类型进行重新定义	
    
 typedef unsigned char u8;
    
  
    
 sbit BEEP=P2^5;	//将P2.5管脚定义为BEEP
    
  
    
  
    
 void delay_10us(u16 ten_us)
    
 {
    
 	while(ten_us--);	
    
 }
    
  
    
  
    
 void main()
    
 {	
    
 	u16 i=2000;
    
  
    
 	while(1)
    
 	{
    
 	   	while(i--)//循环2000次
    
 		{
    
 			BEEP=!BEEP;//产生一定频率的脉冲信号
    
 			delay_10us(100);
    
 		}
    
 		i=0;//清零
    
 		BEEP=0;//关闭蜂鸣器
    
 	}		
    
 }

在main.c源文件中运行该程序时会遇到一些困难

主函数的实现相对而言较为简便,在程序执行开始时立即进入 while 循环,在此之后内部嵌套了一个 while 循环。值得注意的是尽管这是一个无限循环但其实际运行次数由变量 i 来决定初始设置时将变量 i 设为 2000 因此该内层循环将持续执行 2000 次每一次执行中系统会对 BEEP 进行持续地取反操作并紧跟一个延时动作从而使 P2.5 引脚能够在固定时间间隔内轮流输出高电平和低电平从而导致蜂鸣器发出声音。当变量 i 的值逐步减少至零时内层 while 循环将会退出随后系统会将 i 值归零并重置 BEEP 输出状态为此整个过程提供了高度可控的音频调节机制。

如欲调节音高,则需对延时时间进行相应设置。切记频率不宜过高也不宜过低。具体数值范围则建议各位自行测试并加以优化。如欲调节音量大小,则应关注BEEP输出端高电平信号的时间段设定。操作如下:

复制代码
 BEEP=1;

    
 delay_10us(190);
    
 BEEP=0;
    
 delay_10us(50);

四、实验现象

通过 USB 数据线实现开发板与电脑的正确连接,并以确保电脑能够顺利识别开发板上的 CH340 串口的前提下,在此进行操作。随后,在完成编译生成的.hex 文件之后,请将其准确无误地烧录至芯片中。当完成上述操作后,请即可听到开发板上的蜂鸣器传来的悦耳声音。其声音会在几秒钟后自然关闭。

全部评论 (0)

还没有任何评论哟~