51单片机之蜂鸣器驱动

1.简介

  蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、 复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

  压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V 直流工作电压),多谐振荡器起振,输出 1.5~5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。

  电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

两者之间本质区别为:想要压电式蜂鸣器发声,需提供一定频率的脉冲信号;想要电磁式蜂鸣器发声,只需提供电源即可。

  本次开发板上使用的蜂鸣器是无源蜂鸣器,属于压电式蜂鸣器类型。这里说的有源和无源,并不是指电源的意思,而是指蜂鸣器内部是否含有振荡电路,有源蜂鸣器内部自带振荡电路,只需提供电源即可发声,而无源蜂鸣器则需提供一定频率的脉冲信号才能发声,频率大小在1.5-5KHz之间。

2.硬件接口

  根据硬件原理图,可以看到蜂鸣器是通过P2^5引脚进行驱动。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。其内部相当于非门电路,即输入高电平输出为低电平,输入为低电平输出为高电平(需外接上拉电阻)。因此P2^5输出高电平,则BEEP为低电平;若P2^5输出高电平,则BEEP为低电平;

3 软件设计

3.1 BEEP引脚定义

  对于蜂鸣器BEEP,仅占用P2^5一个位,可以使用sbit进行引脚定义,定义方式如下所示:

c 复制代码
sbit BEEP=P2^5;

3.2 BEEP驱动

  本次使用的蜂鸣器是无源蜂鸣器,因此需要产生1.5-5KHz的频率才能正常实现蜂鸣器驱动,实现方式如下:

c 复制代码
void BEEP_Ctl(u16 time)
{
  if(time<=0)return ;
  while(time--)
  {
    BEEP=!BEEP;
    Delay_Us(50);//频率2~5KHZ
  }
}

  实现蜂鸣器约500ms翻转一次。

c 复制代码
int main()
{
  u8 i=0;
  while(1)
  {
    BEEP_Ctl(500);
    Delay_Ms(100);
    BEEP_Ctl(0);
    Delay_Ms(100);
	}	
}
相关推荐
智者知已应修善业14 小时前
【51单片机8个LED,已经使用了D1D2,怎么样在不动D1D2的前提下实现D6~D8的流水灯】2024-1-19
c++·经验分享·笔记·算法·51单片机
点灯小铭17 小时前
基于51单片机的LED点阵汉字显示系统设计
数据库·单片机·嵌入式硬件·毕业设计·51单片机·课程设计·期末大作业
清风6666661 天前
基于单片机的罐体压力控制器设计与实现
单片机·嵌入式硬件·毕业设计·51单片机·课程设计·期末大作业
wengqidaifeng1 天前
嵌入式小白第三站:UART、I2C、SPI、ADC 怎么学?从传感器读数到完整小项目
stm32·单片机·嵌入式硬件·51单片机
智者知已应修善业3 天前
【51单片机使用IO组赋值方法实现无源蜂鸣器响时LED12亮不响时34亮】2024-3-7
c++·经验分享·笔记·算法·51单片机
智者知已应修善业3 天前
【51单片机0.1秒计时到21.0时点亮LED】2024-1-5
c++·经验分享·笔记·算法·51单片机
智者知已应修善业4 天前
【51单片机按键控制1分钟正计时倒计时暂停复位】2024-1-2
c++·经验分享·笔记·算法·51单片机
F137298015574 天前
WD5081,85V转5V,1A异步降压芯片
stm32·单片机·嵌入式硬件·51单片机
iCxhust4 天前
如何查看一个51单片机的库文件内容
单片机·嵌入式硬件·51单片机
Lucky_ldy4 天前
51单片机的学习下(结合中科协的个人自用笔记)
笔记·学习·51单片机