51单片机入门:蜂鸣器

蜂鸣器介绍

蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。

蜂鸣器的种类

1、从结构上:压电式蜂鸣器电磁式蜂鸣器

压电式蜂鸣器 :通过压电陶瓷的压电效应原理工作的。当加有交变电压时,压电陶瓷产生机械振动,使蜂鸣器发声。通常用一体化结构。

电磁式蜂鸣器 :利用电磁感应原理工作的。它主要由线圈和磁铁组成,当电流通过线圈时产生磁场,与磁铁相互作用,使蜂鸣器发声。通常采用分体结构。

2、从驱动方式上:有源蜂鸣器无源蜂鸣器

有源蜂鸣器

内部包含一个振荡电路,能将恒定的直流电转化为一定频率的脉冲信号,从而实现磁场交变,带动蜂鸣器振动发音。它不需要额外的驱动电路,只要接通直流电源即可工作。

缺点:由于内部包含振荡电路,成本相对较高,且声音频率单一。

无源蜂鸣器

需要接收 2K~5K 左右的方波信号才能工作,即:通过外部电路产生振荡信号来驱动蜂鸣器发音。

调节 :通过调整输入方波信号的占空比,可以控制蜂鸣器的音量;改变输入方波信号的频率,可以控制蜂鸣器的音调(音量指声音的强弱,即声音的振动幅度;音调指声音的高低,即声音的振动频率)。可实现音乐播放。


蜂鸣器驱动电路

在蜂鸣器电路中,蜂鸣器电流通常相对较大(约40mA),这就意味着直接将蜂鸣器连接到单片机的输出引脚可能会超过设备的最大驱动能力,从而导致单片机的输出引脚过载,因此可能会导致设备损坏或者蜂鸣器无法正常工作。

例如:STM32的I/O口最大输出电流不要超过25mA;51单片机I/O口最大输出电流不要超过10mA;树莓派 8mA;ESP32 16mA;arduino比较给力,可以达到40mA,所以arduino可以直接接蜂鸣器,不用外围电路(当然这样也不是最佳实践)其他的则必须利用驱动电路放大电流了。

为了解决这个问题,一般常用三极管驱动和集成电路ULN2003驱动的方法。

三极管驱动

其中,三极管起放大作用、电阻R52和R7起限流作用,重点讨论二极管D4。

续流二极管:首先说明这是二极管的功能而不是种类,通常配合电感性负载使用。当电感性负载的电流有突然的变化或减少时,电感会阻碍电流的变化(两端会产生反向电动势,即:尖峰电压),可能会破坏其他元件。配合续流二极管时,其电流可以较平缓地变化,避免突波电压的发生。

集成电路ULN2003

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。可直接驱动蜂鸣器、续电器等电路。

在普中开发板电路的原理图中如下:

可以看出BEEP(蜂鸣器)由P25控制。


代码设计

Buzzer.c

cpp 复制代码
#include <REGX52.H>
#include <Delay.h>

//蜂鸣器端口
sbit Buzzer=P2^5;

/**
  *功能:蜂鸣器发声时间
  *参数:时间(毫秒)
	*返回值:无
	*/
void Buzzer_Time(unsigned int ms){
	unsigned int i;
	for(i=0;i<ms;i++){
				Buzzer=!Buzzer;
				Delay();//通过延时来调节频率(音调)
			}
}

Buzzer.h

cpp 复制代码
#ifndef __BUZZER_H__
#define __BUZZER_H__

void Buzzer_Time(unsigned int ms);

#endif

main.c

cpp 复制代码
#include <REGX52.H>
#include "Delay.h"
#include "shuma.h"
#include "Key.h"
#include "Buzzer.h"

sbit Buzzer=P2^5;
unsigned char KeyNum;
unsigned int i;

void main (){
	while(1){
		KeyNum=Key();//获取键码
		if(KeyNum)
		{
			Buzzer_Time(1000);
			shuma(1,KeyNum);
		}
	}
}
相关推荐
小僧景贤2 小时前
单片机全方位调试实战指南:串口/RTT/逻辑分析仪/示波器/内核排错分层避坑教程
单片机·嵌入式硬件·物联网
2401_827501286 小时前
【无标题】
arm开发·嵌入式硬件
LeoZY_6 小时前
LinkScope 使用笔记:基于 OpenOCD 的通用硬件芯片调试助手
笔记·单片机·嵌入式硬件·开源软件
星空真迷人9 小时前
嵌入式鸿蒙并非精简版,核心究竟是什么?
stm32·单片机·嵌入式硬件·物联网·华为·harmonyos·iot
iCxhust9 小时前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
hongmai6668889 小时前
GK7205V300芯片深度解析:H.265低功耗视觉主控,助力安防监控高效选型
arm开发·嵌入式硬件·物联网·智能家居·h.265·risc-v
2301_8014349810 小时前
STM32F407移植TinyUSB
stm32·单片机·嵌入式硬件
Dlrb121111 小时前
Linux驱动---Linux 中断系统及其上与下半部的介绍与阻塞IO实现按键检测
linux·嵌入式硬件·imx6ull·中断·阻塞io
国产HT1621B11 小时前
YL4056 NTC 外围电阻 R3/R4 计算:从公式推导到工程选型
科技·单片机·嵌入式硬件
czhaii12 小时前
STC32G144K246 Ai8052单片机外设和功能
单片机·硬件工程