51单片机入门:蜂鸣器

news2024/12/24 2:10:08

蜂鸣器介绍

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

蜂鸣器的种类

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

#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

#ifndef __BUZZER_H__
#define __BUZZER_H__

void Buzzer_Time(unsigned int ms);

#endif

main.c

#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);
		}
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1648683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AMEYA360详解:蔡司利用纳米探针技术探索半导体微观电学性能

半导体器件尺寸不断缩小和复杂度增加&#xff0c;纳米探针(Nanoprobing)技术成为解决微观电学问题和优化器件性能的重要工具&#xff0c;成为半导体失效分析流程中越来越重要的一环。 随着功率半导体的快速发展&#xff0c;其厂商也开始密切关注纳米探针技术在PN结特性分析和掺…

什么是光伏发电?什么是分布式光伏系统?

一、光伏发电 光伏发电&#xff0c;作为一种可再生能源利用技术&#xff0c;其核心原理基于半导体的光生伏特效应。简而言之&#xff0c;光伏发电就是将太阳能直接转换为电能的过程。它由三个主要部分组成&#xff1a;太阳电池板&#xff08;组件&#xff09;、控制器和逆变器…

LMdeploy推理实践

在inter-studio平台上&#xff0c;下载模型&#xff0c;体验lmdeploy 下载模型 这里是因为平台上已经有了internlm2模型&#xff0c;所以建立一个符号链接指向它&#xff0c;没有重新下载 ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b /root/如…

TC8002D 是一颗带关断模式的音频功放IC

一、一般概述 TC8002D是一颗带关断模式的音频功放IC。在5V输入电压下工作时&#xff0c;负载(3Ω)上的平均功率 为3 W&#xff0c;且失真度不超过10%。而对于手提设备而言&#xff0c;当VDD作用于关断端时&#xff0c;TC8002D将会进入关断模式&#xff0c;此时的功耗极…

【UE】利用物理学放置模型(以堆积石块为例)

目录 效果 步骤 一、准备工作 二、设置石块碰撞 三、绘制石块 效果 步骤 一、准备工作 1. 在虚幻商城中安装“Physical Layout Tool”插件 2. 在虚幻编辑器中勾选插件“Physical Layout”插件 3. 在Quixel Bridge中将我们所需要的石块资产添加到项目中 这里我们导入…

如何与精益生产咨询公司合作,确保项目的成功?

随着竞争的白热化&#xff0c;企业为了提升生产效率和降低成本&#xff0c;纷纷寻求精益生产咨询公司的帮助。然而&#xff0c;与咨询公司合作并不是一蹴而就的事情&#xff0c;需要双方共同努力&#xff0c;才能确保项目的成功。那么&#xff0c;如何与精益生产咨询公司合作&a…

个股期权是什么期权?个股期权什么时候推出?

今天期权懂带你了解个股期权是什么期权&#xff1f;个股期权什么时候推出&#xff1f;期权也称选择权&#xff0c;是指期权的买方有权在约定的期限内&#xff0c;按照事先确定的价格&#xff0c;买入或卖出一定数量某种特定商品或金融指标的权利。 个股期权是什么期权&#xff…

uni-app安卓本地打包个推图标配置

如果什么都不配置&#xff0c;默认的就是个推小鲸鱼图标 默认效果 配置成功效果 个推图标配置 新建目录 drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi、drawable-xxxhdpi 目录中存放图标 每个目录中存放对应大小的图标&#xff0c;大图…

Lora训练笔记1——快速上手

准备工具 AKI大佬的整合包&#xff0c;一键解压即可。 度盘链接 提取码&#xff1a;p8uy 图片预处理 图片预处理&#xff1a;以一定规则裁剪原始的训练素材图片&#xff0c;并进行打标处理。 新建两个文件夹 input&#xff1a;存放原始图片的文件夹 preprocess-output:…

一文带你了解 Oracle 23ai 新特性 Vector 的基础用法

Oracle Database 23ai 来了&#xff0c;虽然目前只是云上可商用&#xff0c;但是 OP 有 FREE 版本可以进行开发。 本文将介绍 Oracle 23ai 的新特性之一&#xff1a; AI 向量搜索&#xff0c;的部分内容。 向量数据类型 23ai 新增向量数据类型&#xff0c;可以用于表示一系列的…

​Web服务器

代码: WebServer 介绍 HTTP层 POST请求一般会包含Content-Length字段, 告诉服务器请求主体的长度GET请求一般不会包含Content-Length字段, 它一般不含请求正文POST响应: Content-Type字段, 根据请求资源的后缀填写 编写 1.读取请求与分析请求 2.根据不同请求方法构建不同的响…

前后端功能实现——查询所有

目录 1、需求 2、步骤 1&#xff09;创建模块 引入坐标 2&#xff09;创建结构 实现三层架构 3&#xff09;创建表 brand 4&#xff09;创建实体类 Brand 5&#xff09;创建MyBatis配置文件 6&#xff09;创建映射文件 7&#xff09;创建工具类 SqlSessionFactoryUti…

5月11日,MongoDB技术沙龙·杭州站来了,本周六不见不散!

在数字化转型的新时代&#xff0c;MongoDB凭借灵活的文档模型、高效的数据处理能力和出色的扩展性&#xff0c;成为广受企业和开发者喜爱的数据库。本次活动将聚焦如何利用MongoDB简化开发工作&#xff0c;并分享阿里云和NineData的解决方案&#xff0c;更有重磅嘉宾分享实践经…

接入大量设备后,视频汇聚系统EasyCVR安防监控视频融合平台是如何实现负载均衡的?

一、负载均衡 随着技术的不断进步和监控需求的日益增长&#xff0c;企业视频监控系统的规模也在不断扩大&#xff0c;接入大量监控设备已成为一项常态化的挑战。为确保企业能够有效应对这一挑战&#xff0c;视频汇聚系统EasyCVR视频融合平台凭借其卓越的高并发处理能力&#x…

快速掌握Redis优化要点,告别性能瓶颈!

大家好!我是小米,今天和大家分享一下在Redis中如何进行优化,以提升系统性能。Redis作为一种流行的内存数据库,因其高性能、高可用和数据持久性而受到广泛应用。然而,在实际应用中,我们仍需对Redis进行优化,以满足各种业务需求。接下来,我将从读写方式、KV size、Key数量…

使用IIS部署Vue项目

前提 使用IIS部署Vue项目&#xff0c;后端必须跨域&#xff0c;不要在Vue中用proxy跨域&#xff0c;那个只在dev环境中有用&#xff01; IIS安装&#xff0c;不用全部打勾&#xff0c;有些他默认就是方块 ■ 选择性安装的&#xff0c;就维持原样就可以。 添加网站配置 右键…

LEETCODE LCR 041. 数据流中的移动平均值

class MovingAverage:def __init__(self, size: int):"""Initialize your data structure here."""self.sizesize1self.front0self.rear0self.queue[None for _ in range(size1)]self.sum0def next(self, val: int) -> float:# 满了if (self.…

深度学习之基于YOLOv5草莓成熟度目标检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 草莓作为一种广受欢迎的水果&#xff0c;其成熟度的判断对于保证草莓的品质和口感至关重要。然…

Flutter分模块开发、模块可单独启动、包含Provider

前言 当前案例 Flutter SDK版本&#xff1a;3.13.2 目前Flutter都是在一个项目中&#xff0c;创建不同目录进行模块开发&#xff0c;我进行Android原生开发时&#xff0c;发现原生端&#xff0c;是可以将每个模块独立运行起来的&#xff0c;灵感来自这&#xff1b; 折腾了几…

IDEA中git的常用操作(保姆级教学)

IDEA中git的常用操作&#xff08;保姆级教学&#xff09; 以下是git的工作原理&#xff0c;觉得繁琐的可以跳过不看 Workspace&#xff1a;工作区 (平时存放代码的地方) Index / Stage&#xff1a;暂存区&#xff08;用于临时存放存放你的改动&#xff0c;事实上就是一个文件&…