【51单片机实验笔记】声学篇(一) 蜂鸣器基本控制

目录

  • 前言
  • 硬件介绍
    • PWM基础
    • 蜂鸣器简介
  • 原理图分析
    • 蜂鸣器驱动电路
  • 软件实现
    • 蜂鸣器短鸣
    • 蜂鸣器功能封装
  • 总结


前言

蜂鸣器在生活中的应用实则相当广泛。通过本章你将学会制造噪声 (笑~)你将学会驱动它们,并发出响声


硬件介绍

PWM基础

占空比
频率

延时实现
定时器实现


蜂鸣器简介

蜂鸣器的英文为Buzzer,是将电信号转化为音频信号的基本电子器件。蜂鸣器有无源蜂鸣器有源蜂鸣器两种。

  • 无源蜂鸣器:即压电式蜂鸣器。内部不带振荡源,须提供脉冲信号驱动。通过改变频率调节音调高低,改变占空比调节音量大小。
  • 有源蜂鸣器:即电磁式蜂鸣器。内部自带振荡源,只需通直流电即响驱动简单,但频率固定

这里的与电源无关,指的是内部是否有振荡源有源蜂鸣器通常用于只需要发出响声的场景,如:按键音报警器等等。无源蜂鸣器由于可以改变电压,可以应用于电子琴变声器中。

图1 无源蜂鸣器
图2 有源蜂鸣器

判断有源无源的方法

  • 万用表测试
    • 无源蜂鸣器电阻大致为10Ω左右。对于脉冲信号才能发声。
    • 有源蜂鸣器电阻大致为几百欧姆。且接通持续发声
  • 表面封装
    • 无源蜂鸣器一般都是无贴纸标识。
    • 有源蜂鸣器一般都是有贴纸标识。

原理图分析

蜂鸣器驱动电路

一般IO输出电流小于20mA不能直接驱动蜂鸣器,需要相应的驱动电路,一般利用三级管放大开关作用驱动蜂鸣器
在这里插入图片描述

如图所示,R1用于限制基极电流R2用于限制蜂鸣器电流8550PNP型三极管,当IO引脚为低电平导通

对于有源蜂鸣器而言,IO引脚输出低电平就能持续发声。
对于无源蜂鸣器而言,需要IO引脚输出PWM脉冲信号来使之发声。


软件实现

蜂鸣器短鸣

#include <REG52.H>#define DELAY_TIME 100typedef unsigned char u8;
typedef unsigned int u16;sbit BEEP = P1^5; //信号端与P1.5引脚相连void delay(u16 i){while(i--);
}void main(){u8 i = 0;while(1){while(i < DELAY_TIME){BEEP = !BEEP; //内部上拉,初始为1,占空比为50%delay(100); //延时1ms,周期2ms,即频率为500Hzi++;}}
}

通过调节不同的频率,可以得到不同音调的声音;调节占空比,可以控制音量高低


蜂鸣器功能封装

delay.h

#ifndef _DELAY_H_
#define _DELAY_H_#include <regx52.h>typedef unsigned char u8;
typedef unsigned int u16;void delay_10us(u16);
void delay_ms(u16);#endif

delay.c

#include "delay.h"/***  @brief  延时函数(10us)*  @param  t:0~65535,循环一次约10us*  @retval 无*/
void delay_10us(u16 t){while(t--);
}/***  @brief 延时函数(ms)*  @param t:0~65535,单位ms*  @retval 无*/
void delay_ms(u16 t){while(t--){delay_10us(100);}
}

beep.h

#ifndef _BEEP_H_
#define _BEEP_H_#include "delay.h"sbit BEEP_PORT = P1^5;void beep_once(u8, u16);#endif

beep.c

#include "beep.h"/***  @brief 蜂鸣器单响*  @param t 持续时长, fre 频率HZ*  @retval*/
void beep_once(u8 t, u16 fre){while(t--){BEEP_PORT = !BEEP_PORT; // 取反delay_10us(1e5/2/fre);}
}

main.c

#include "beep.h"void main(){// 以1000Hz频率,50%占空比,持续时间约1sbeep_once(100, 1000);while(1);
}

蜂鸣器本身的控制很简单,它也经常和其他元器件一起搭配使用


总结

本章相对轻松,了解了蜂鸣器主要类别驱动方式。还学习了PWM基本原理。继续加油!

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

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

相关文章

低压配电室电力安全解决方案

低压电气安全监控运维系统是力安科技基于物联网核心技术自主开发的高可靠性安全监测系统。其工作原理是利用物联网、云计算、大数据、数字传感技术及RFID无线射频识别技术来获取低压配电回路电压、电流、温度、有功、无功、功率因数等全电量的采集及配电线路的漏电、温度的实时…

AIGC+思维导图:提升你的学习与工作效率的「神器」

目录 一、产品简介 二、功能介绍 2.1 AI一句话生成思维导图 2.2百万模版免费用 2.3分屏视图&#xff0c;一屏读写 2.4团队空间&#xff0c;多人协作 2.5 云端跨平台化 2.6 免费够用&#xff0c;会员功能更强大 2.7 支持多种格式的导入导出 三、使用教程 3.1 使用AI…

Tomcat 日志乱码问题解决

我就是三井&#xff0c;一个永不放弃希望的男人。——《灌篮高手》 Tomcat 日志乱码问题解决 乱码原因&#xff1a;字符编码不一致 如&#xff1a;国内电脑一般都是GBK编码&#xff0c;而Tomcat日志使用的是UTF-8编码 解决方法&#xff1a;将对应字符编码由 UTF-8 改为 GBK 即…

HTML5-3-表格

文章目录 属性边框属性标题跨行和跨列单元格边距 HTML 表格由 <table> 标签来定义。 tr&#xff1a;tr 是 table row 的缩写&#xff0c;表示表格的一行。td&#xff1a;td 是 table data 的缩写&#xff0c;表示表格的数据单元格。th&#xff1a;th 是 table header的缩…

C++ 模板

模板&#xff1a; 模板&#xff0c;即数据是灵魂&#xff0c;其余为肉身&#xff0c;正所谓有趣的灵魂万里挑一&#xff0c;所以想要模板变得完美&#xff0c;关键在于数据&#xff1b;其余不过是抄作业的框架。 模板函数&#xff1a; 模板函数可以自动推导出你传给他的数据类型…

学习Bootstrap 5的第四天

目录 表格 基础表格 实例 条纹表格 实例 带边框表格 实例 有悬停效果的行 实例 黑色/深色表格 实例 黑色/深色条纹表格 实例 可悬停的黑色/深色表格 实例 无边框表格 实例 上下文类 可用的上下文类&#xff1a; 实例 表头颜色 实例 小型表格 实例 响应…

大模型 Dalle2 学习三部曲(二)clip学习

clip论文比较长48页&#xff0c;但是clip模型本身又比较简单&#xff0c;效果又奇好&#xff0c;正所谓大道至简&#xff0c;我们来学习一下clip论文中的一些技巧&#xff0c;可以让我们快速加深对clip模型的理解&#xff0c;以及大模型对推荐带来革命性的变化。 clip结构 首选…

CocosCreator3.8研究笔记(五)CocosCreator 脚本说明及使用(下)

在Cocos Creator中&#xff0c;脚本代码文件分为模块和插件两种方式&#xff1a; 模块一般就是项目的脚本&#xff0c;包含项目中创建的代码、引擎模块、第三方模块。 插件脚本&#xff0c;是指从 Cocos Creator 属性检查器中导入的插件&#xff0c;一般是引入第三方引入库文件…

【从0学习Solidity】2. 值类型详解

Solidity极简入门: 2. 值类型 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈开发…

微服务设计和高并发实践

文章目录 1、微服务的设计原则1.1、服务拆分方法1.2、微服务的设计原则1.3、微服务架构 2、高并发系统的一些优化经验2.1、提高性能2.1.1、数据库优化2.1.2、使用缓存2.1.3、服务调用优化2.1.4、动静分离2.1.5、数据库读写分离 2.2、服务高可用2.2.1、限流和服务降级2.2.2、隔离…

亲测有效:虚拟机安装gcc,报错Could not retrieve mirrorlist http://mirrorlist.centos.org

&#xff08;网卡配置资料&#xff09; 原因&#xff1a; 网络问题 报错详情&#xff1a; One of the configured repositories failed (未知),and yum doesnt have enough cached data to continue. At this point the onlysafe thing yum can do is fail. There are a few …

Unity中Shader的UV扭曲效果的实现

文章目录 前言一、实现的思路1、在属性面板暴露一个 扭曲贴图的属性2、在片元结构体中&#xff0c;新增一个float2类型的变量&#xff0c;用于独立存储将用于扭曲的纹理的信息3、在顶点着色器中&#xff0c;根据需要使用TRANSFORM_TEX对Tilling 和 Offset 插值&#xff1b;以及…