51单片机-驱动蜂鸣器模块教程

本章概述思维导图:

51单片机驱动蜂鸣器模块教程

蜂鸣器简介

蜂鸣器是一种将电信号转换为声音信号的电子元件,广泛应用于报警、提示、通知等场景。其核心原理基于压电效应或电磁感应:因此可分为两种类型蜂鸣器:压电式蜂鸣器和电磁式蜂鸣器;

        压电式蜂鸣器:利用压电陶瓷片在电压变化下产生机械形变,从而振动发声;

        电磁式蜂鸣器:通过电磁线圈与磁铁的相互作用,驱动振膜周期性振动发声;

如图所示:压电式蜂鸣器和电磁式蜂鸣器;

在以后遇到蜂鸣器我们该如何区分呢?

按照驱动方式分:

        有源蜂鸣器内置振荡源:内部集成振荡电路,通电即可发声,声音频率固定;

        无源蜂鸣器无内置振荡源:需外部输入方波信号驱动,声音频率可控(可发出不同音调);

按照结构分类:

        压电式蜂鸣器;

        电磁式蜂鸣器;

有非常多的人会理解为:把有源蜂鸣器当成压电式蜂鸣器,无源蜂鸣器当成电磁式蜂鸣器。这样的理解是错误的小伙伴们。不管是压电式或者电磁式都可以根据内部是否配置振荡源来确定是有源还是无源;


蜂鸣器硬件电路原理图分析

在开发板中使用的蜂鸣器为压电式无源蜂鸣器;

可以观察蜂鸣器的两个引脚,上引脚是接入高电平。下脚是接入ULN2003D芯片的OUT5输出脚,而ULN2003D芯片的IN5输入脚连接了MCU的P25脚来实现控制蜂鸣器。从而可以判断出MCU的P25脚输出一个连续的高低电平ULN2003D芯片则输出一个连续的低高电平形成一个方波信号就可以使得蜂鸣器驱动啦。

这里有小伙伴会有疑问,为什么不直接使MCU的P25脚直接连接蜂鸣器的下脚呢,是因为MCU I/O口无法直接驱动蜂鸣器。所以使用ULN2003D芯片,ULN2003D芯片为达林顿晶体管阵列,单路可承受500mA电流,能轻松驱动蜂鸣器,同时分担MCU的电流负载。

小知识点:ULN2003D驱动芯片的输入脚为低电平时,则对应输出脚为高电平。输入脚为高电平时,则对应输出脚为低电平。


驱动蜂鸣器软件编程设计

要使得蜂鸣器驱动,要产生1.5KHZ~5KHZ的频率脉冲信号,换算周期时间为:0.7ms~0.2ms

意思就是指我们要设计高低电平的一个周期时间为:07ms~0.2ms。

代码示例:

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit BEEP=P2^5;
void Delay_10us(u16 us)//延时函数:输入1大概延时时间为10us
{while(us--);
}
/*蜂鸣器驱动函数:
1、想使得蜂鸣器的声音变长变短,可以更改i的值大小;
2、想改变音色,可以更改频率也就是周期时间:延时函数里的值;
3、想改变音调可以改变高低电平的占空比,音调变高高电平时间高一点,音调变低高电平时间少一点对应的低电平时间也要更改。保证周期总时间不变,改变高低电平占空比*/
void BEEP_OUT(void)//蜂鸣器驱动函数
{u16 i=1000;while(i--){BEEP=1;Delay_10us(30);//产生脉冲信号高低电平转换时间,低电平0.3ms高电平0.3ms;周期时间设置为0.6msBEEP=0;Delay_10us(30);}
}
int main()
{while(1){BEEP_OUT();//蜂鸣器驱动Delay_10us(50000);//延时时间为480msBEEP=1;//蜂鸣器关闭Delay_10us(50000);//延时时间为480ms}
}

小心得:在驱动蜂鸣器函数中:

1、想使得蜂鸣器的声音变长变短,可以更改i的值大小;
2、想改变音色,可以更改频率也就是周期时间:延时函数里的值;
3、想改变音调可以改变高低电平的占空比,音调变高高电平时间高一点,音调变低高电平时间少一点对应的低电平时间也要更改。保证周期总时间不变,改变高低电平占空比;

蜂鸣器驱动效果展示:

蜂鸣器模块实现效果


制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!

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

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

相关文章

常用Linux指令:Java/MySQL/Tomcat/Redis/Nginx运维指南

一、基础Linux指令1. 文件与目录操作ls -lh # 查看文件详情(人类可读格式) pwd # 显示当前目录路径 cd /path # 切换目录 mkdir dirname # 创建目录 rm -rf dirname # 强制删除目录 cp -r src dest # 递归复制目录 mv old new # 移动/重命…

小红书帖子评论的nodejs爬虫脚本

从小红书上爬取评论,但是目前还不能完全爬取子评论,使用GPT没能解决这个问题。后续博主可能会改进。或者如果你懂的话,可以在博主代码基础上改进。需要安装nodejs软件,部署环境变量。博主是在pycharm中运行的。代码无套路获取。自…

【iOS】多线程原理

目录 前言 基本概念及原理 线程、进程与队列 线程的定义: 进程的定义: 线程与进程之间的联系与区别: 线程和runloop的关系 影响任务执行速度的因素 多线程 多线程生命周期 线程池的原理 iOS中多线程的实现方式 线程安全问题 互斥…

药房发药的“时间密码”:同步时钟用药安全?

在医院的药房里,每一粒药片的流转都暗藏“时间密码”。从药品入库到患者服药,时间记录的精确性直接关乎生命安全。一旦时间数据出现偏差,轻则导致用药争议,重则引发医疗事故。近年来,随着医疗数字化进程加速&#xff0…

UI-TARS-Desktop 深度解析:下一代智能自动化桌面平台

目录 1. 产品概述 2. 核心功能与技术架构 2.1 关键技术 2.2 功能亮点 3. 竞品对比分析 4. 部署与成本分析 4.1 部署方案 4.2 隐性成本 5. 商业化前景 5.1 目标市场 5.2 盈利模式 5.3 风险挑战 6. 未来演进方向 7. 总结 1. 产品概述 UI-TARS-Desktop 是一款基于A…

STM32L051同时处理Alarm A和Alarm B中断

同时处理Alarm A和Alarm B中断 当同时启用Alarm A和Alarm B时,需要在中断处理程序中准确判断是哪个闹钟触发了中断。以下是完整的解决方案: 中断判断与处理流程 1. 在RTC中断服务程序中判断中断源 // stm32l0xx_it.c void RTC_IRQHandler(void) {/* USER…

OpenCV---morphologyEx形态学操作

在计算机视觉与图像处理领域,形态学操作是一种基于图像形状的非线性处理方法,广泛应用于噪声去除、边缘检测、目标分割等任务。OpenCV提供的morphologyEx函数是形态学操作的“瑞士军刀”,它整合了多种高级形态学运算,能够实现开运…

RuoYi-Cloud 接入 Sentinel 的 3 种限流方式

场景: 服务:ruoyi-robot(对外接口统一在 /external/gs/**) 网关:ruoyi-gateway(转发到 ruoyi-robot) 注册/配置:Nacos 流控:Sentinel 1.8.x 控制台 Dashboard&#x…

快速搭建python HTTP Server测试环境

这里用python http.server搭建一个api测试环境,自定义请求处理程序,以模拟不同api相应。 1 服务代码 /api/data,端口8000,GET 返回json数据为"{"message": "This is a sample API response"}" 代…

Docker容器定时任务时区Bug导致业务异常的环境变量配置解决方案

Docker容器定时任务时区Bug导致业务异常的环境变量配置解决方案 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都是…

解锁Dify与MySQL的深度融合:MCP魔法开启数据新旅程

文章目录解锁Dify与MySQL的深度融合:MCP魔法开启数据新旅程引言:技术融合的奇妙开篇认识主角:Dify、MCP 与 MySQL(一)Dify:大语言模型应用开发利器(二)MCP:连接的桥梁&am…

杂记 02

1 WSL安装 WSL的安装遇到了问题,睡醒起来发现电脑蓝屏了,linux系统没装好,但是好像大部分开发环境都是linux下需要的,先这样用一下吧,到时候再说。可以问下前辈开发细节,主要是网络代理问题,保…

剧本杀小程序系统开发:重构推理娱乐生态

在娱乐产业蓬勃发展的今天,推理娱乐作为一种充满智慧和挑战的娱乐形式,受到了越来越多人的喜爱。剧本杀,作为推理娱乐的代表之一,正以其独特的魅力吸引着大量玩家。而剧本杀小程序系统开发,则为推理娱乐生态的重构带来…

力扣习题:基本计算器

本片内容我们将针对于一个力扣中的一道很经典的习题:基本计算器。 这道题目十分经典,在很多大厂的面试题中都有出现过 因此我们将进一步来学习 该题目代码已经上传作者的个人gitee:CPP 学习代码库: C代码库新库,旧有C仓库满员了喜…

Element用法---Loading 加载

仅供参考 文章目录一、加载动画二、Loading 组件1、指令调用 Loading2、服务调用 Loading一、加载动画 当我们打开某个页面时,如果需要加载的数据很多或者网络很差,页面加载就会非常缓慢,中间可能会很长时间显示空白,那么就需要加…

飞算AI 3.2.0实战评测:10分钟搭建企业级RBAC权限系统

飞算AI 3.2.0实战评测:10分钟搭建企业级RBAC权限系统 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都…

事务的四大特性

事务(Transaction)是数据库管理系统(DBMS)中用于保证数据操作正确性和一致性的核心机制。事务的特性通常用 ACID 四个字母概括,分别代表 原子性(Atomicity)、一致性(Consistency&…

WIN11系统下Open3D 0.19.0支持GPU的python版本

前往Open 3D官网下载https://github.com/isl-org/Open3D下载对应版本的源码。 根据官方手册利用cmake进行编译&安装,其中需要修改一些代码适应于win 11系统,编译时间较长需要耐心等待。最后,安装结果如下图,搞了四天&#xff…

ICCV 2025 | 4相机干掉480机位?CMU MonoFusion高斯泼溅重构4D人体!

​​​​ 近日,卡内基梅隆大学(Carnegie Mellon University)的研究团队在动态场景重建领域取得重要进展。其发表于ICCV 2025的论文《MonoFusion: Sparse-View 4D Reconstruction via Monocular Fusion》提出创新方法MonoFusion 。该方法突破常…

ADB 无线调试连接(Windows + WSL 环境)

gradle wrapper --gradle-version 8.4 Windows WSL 成功连接 Android 设备(用于 ./gradlew installDebug)的完整过程总结:✅ ADB 无线调试连接过程(Windows WSL 环境) 📌 目标:从 WSL 中通过 …