Skip to main content

我要叫-蜂鸣器的使用

选用模块

这个组件叫 Buzzer(蜂鸣器)

直接上库

先看提供了哪些函数:

实现代码(其实直接塞进去就ok)

Buzzer.c

#include <REGX52.H>


sbit Buzzer=P2^5;//蜂鸣器端口
void Buzzer_Delay500us() //@11.0592MHz
{
unsigned char i;

i = 227;
while (--i);
}

void Buzzer_Time(unsigned int ms)
{
unsigned int i;
for(i=0;i<ms*2;i++)
{
Buzzer=!Buzzer;
Buzzer_Delay500us();
}

}

Buzzer.h

#ifndef __BUZZER_H__
#define __BUZZER_H__
void Buzzer_Time(unsigned int ms);

#endif


这个库提供了哪些函数?

代码解读:

  1. Buzzer_Delay500us函数(私有的,你用不了,也没用):

    • 定义了一个500微秒的延时函数。
    • 利用寄存器值227控制延时,基于11.0592MHz的时钟频率计算。
    • 使用一个while循环,减小变量i,实现约500微秒的延时。
  2. Buzzer_Time函数(用这个):

    • 控制蜂鸣器工作一段指定时间。
    • 参数ms表示延时的毫秒数。
    • 函数逻辑:
      • 将输入的毫秒数ms转换为延时次数ms * 2(对应每次延时500微秒)。
      • 在循环中,利用Buzzer=!Buzzer翻转蜂鸣器的状态,产生声音。
      • 每次状态翻转后调用Buzzer_Delay500us延时。

Buzzer_Time函数通过翻转蜂鸣器的状态并延时,控制蜂鸣器发声的时间。

江协科技速览(本期跟密码锁关系不好评价)

这tm都要看?和密码锁啥关系。。。只用知道用这个函数叫就ok!

一、蜂鸣器相关知识

1. 蜂鸣器的基本介绍

  • 定义与用途:蜂鸣器是一种将电信号转换为声音信号的器件,常用于产生设备的按键音、报警音等提示信号,其音色单一,类似蜜蜂鸣叫。
  • 驱动方式分类
    • 有源蜂鸣器:内部自带振荡源,接上直流电压即可持续发声,频率固定,常用于固定提示,如按键音、报警音,驱动简单,通电就行。
    • 无源蜂鸣器:内部不带振荡源,需控制器提供振荡脉冲才可发声,通过调整振荡脉冲频率可发出不同频率声音。

2. 蜂鸣器在电路图中的符号及相关电路

  • 符号表示:蜂鸣器在电路图中的符号不固定,常见的有几种,工程师设计电路时较随意,看到相关提示符(如“buzzer”)可识别。
  • 驱动电路
    • 三极管驱动电路:由三极管(分为NPN和PNP两种类型)构成开关电路,可控制信号的导通和闭合,数字电路中三极管主要工作在截止和饱和状态,构成三极管开关。
    • 集成电路驱动:开发板采用ULN2003芯片驱动,它是达林顿晶体管阵列集成电路,由7对NPN达林顿管组成,可增大驱动能力,主要应用于继电器驱动器等多种驱动器,能提供500毫安电流、50伏高电压,与各种逻辑兼容。其工作原理是通过输入低电平使非门输出高电平,从而使蜂鸣器发声,输出电路需正极接好、负极接I/O口,且给高电平有驱动能力,给低电平则为高阻态。

3. 无源蜂鸣器的注意事项

  • 无源蜂鸣器不能一直通电,因其内部为线圈等结构,一直通电易造成烧毁,开发板设计虽借用驱动芯片ULN2003,但芯片逻辑取反,单片机上电后默认使蜂鸣器有电流,即使不使用蜂鸣器也通电,使用时需注意避免一直通电。

二、乐理知识

1. 钢琴键盘相关

  • 键盘分组:钢琴键盘分为大字组、小字组等,如中央C右边一组为小字一组,每组有七个白键和五个黑键,不同组同名音相差八度,相邻两个键(无论黑白)为半音关系,相邻两个半音构成纯音关系。
  • 简谱与键盘对应:简谱中数字1对应中央C,数字上加一点表示升高八度,下加一点表示降低八度,通过升降符号(如#升音、b降音)可表示黑键音高,从而可表示出钢琴键盘上所有音高。

2. 音符与时长表示

  • 音符类型:音符分为全音符、二分音符、四分音符、八分音符、十六分音符、三十二分音符等,一般以四分音符为时间基准,其时长可设定,如100毫秒或200毫秒等,其他音符时长与四分音符成倍数关系。
  • 时长表示方法
    • 简谱中数字后加横线表示延长该音符时长,如数字后加一条横线表示时长为四分音符的二倍(二分音符),加两条横线表示全音符;数字下加线表示缩短时长,如四分音符下加一条线时长减半为八分音符,下加两条线为十六分音符。
    • 附点音符表示延长原音符时长的二分之一,如四分音符加附点表示时长为四分音符加其一半时长。

3. 乐谱相关概念

  • 调号与拍号:如“1 = C”为C调,表示在钢琴上全弹白键;“4/4”为拍号,表示以四分音符为一拍,每小节有4拍,乐谱从左往右排,以小节线划分,每小节时长固定,通过音符组合保证每小节拍数。
  • 延音线:延音线连接相同音,表示按下去不放,保证两个音符时长,乐谱中拆分音符有时是为了使拍号清晰,方便演奏者识别节拍。

三、单片机控制蜂鸣器发声原理

1. 频率确定

  • 钢琴键盘频率以小字组的A(440赫兹)为基准,A到下一个A频率为二倍关系,中间12个键频率按等比数列评分,此频率确定规则满足12平均律。

2. 单片机产生频率方法

  • 利用定时器中断产生频率,先计算各频率周期值(周期 = 1/频率,单位换算为微秒),51单片机为12T单片机,机器周期是震荡周期的1/12,12兆震荡周期时机器周期为1微秒,产生周期需定时相应微秒数,翻转I/O口控制频率,注意翻转两次才是一个周期,计算周期取整后除以2得到计时器计数次数,重装载值 = 65536 - 计数次数,将重装载值高八位放TH、低八位放TL0,通过控制定时器中断并在中断里翻转I/O口可产生相应频率。