【51单片机实验笔记】4. 蜂鸣器与扬声器的基本控制
目录
- 前言
- 硬件介绍
- PWM基础
- 蜂鸣器简介
- 扬声器简介
- 原理图分析
- 蜂鸣器驱动电路
- 扬声器驱动电路
- 软件实现
- 蜂鸣器短鸣
- 蜂鸣器功能封装
- 总结
前言
蜂鸣器和扬声器在生活中的应用实则相当广泛。通过本章你将学会制造噪声 (笑~)你将学会驱动它们,并发出响声。
硬件介绍
PWM基础
占空比
频率
蜂鸣器简介
蜂鸣器的英文为Buzzer
,是将电信号转化为音频信号的基本电子器件。蜂鸣器有无源蜂鸣器和有源蜂鸣器两种。
- 无源蜂鸣器:即压电式蜂鸣器。内部不带振荡源,须提供脉冲信号驱动。通过改变频率调节音调高低,改变占空比调节音量大小。
- 有源蜂鸣器:即电磁式蜂鸣器。内部自带振荡源,只需通直流电即响,驱动简单,但频率固定。
这里的源与电源无关,指的是内部是否有振荡源。有源蜂鸣器通常用于只需要发出响声的场景,如:按键音、报警器等等。无源蜂鸣器由于可以改变电压,可以应用于电子琴、变声器中。
图1 无源蜂鸣器 | 图2 有源蜂鸣器 |
判断有源无源的方法
- 用万用表测试
- 无源蜂鸣器电阻大致为10Ω左右。对于脉冲信号才能发声。
- 有源蜂鸣器电阻大致为几百欧姆。且接通持续发声。
- 看表面封装
- 无源蜂鸣器一般都是无贴纸标识。
- 有源蜂鸣器一般都是有贴纸标识。
扬声器简介
扬声器的英文为Loudspeaker
,俗称喇叭,也是一种电声换能器件。扬声器的工作频率宽,音色好,常应用于较高端的电子消费领域,如蓝牙音箱,手机,电脑等。
扬声器的重要参数
- 额定阻抗
- 直流阻抗
- 最低共振频率
- 额定功率
- 最大功率
- 频率响应范围
扬声器和蜂鸣器的异同
- 扬声器通交流电工作,而蜂鸣器通直流电工作。究其原理,除了有源蜂鸣器是直接通直流发声,无源蜂鸣器和扬声器本质上都是通过音圈(线圈)和磁铁的引力和斥力从而产生振动发声,因此需要交变的电流,另一方面,直流PWM也可以驱动,电压的通断也会使振膜的振动。
- 扬声器的音域更广,而蜂鸣器的音域狭窄。
- 扬声器多用于音箱等对于音质要求较高的场合,而蜂鸣器多作为报警提示音使用。
原理图分析
蜂鸣器驱动电路
一般IO输出电流小于20mA,不能直接驱动蜂鸣器,需要相应的驱动电路,一般利用三级管的放大和开关作用驱动蜂鸣器。
如图所示,R1用于限制基极电流,R2用于限制蜂鸣器电流,8550为PNP型三极管,当IO引脚为低电平时导通。
对于有源蜂鸣器而言,IO引脚输出低电平就能持续发声。
对于无源蜂鸣器而言,需要IO引脚输出PWM脉冲信号来使之发声。
扬声器驱动电路
单片机开发板上没有扬声器,我在网上买了一个1W 8Ω的小扬声器,这里的1W指的是额定功率,8Ω指的是额定阻抗,可以大致算出电压有效值为2.8V,驱动电路与蜂鸣器类似,记得必须串联一个限流电阻,防止扬声器过热烧毁。
软件实现
蜂鸣器短鸣
#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);
}
蜂鸣器和扬声器本身的控制很简单,它也经常和其他元器件一起搭配使用,因此建议大家封装好蜂鸣器模块的相关函数,需要的时候直接调用即可。
总结
本章相对轻松,了解了蜂鸣器和扬声器的主要类别与驱动方式。继续加油!
【51单片机实验笔记】4. 蜂鸣器与扬声器的基本控制相关推荐
- 【51单片机实验笔记】2. 数码管的基本控制
目录 前言 硬件介绍 原理图分析 段选和位选 驱动芯片 74HC138芯片 74HC245芯片 软件实现 点亮一只数码管 倒计时效果 动态显示字符 总结 前言 本节内容我们学习如何控制数码管,先尝试点 ...
- 【51单片机实验笔记】3. LED点阵的基本控制
目录 前言 硬件介绍 驱动芯片 74HC595芯片 MAX7219芯片 原理分析 软件实现 爱心图片 旋转大风车 滚动日期 螺旋线动画 LED点阵功能函数封装 总结 前言 本章接触的硬件依然与LED息 ...
- [51单片机学习笔记TWO]----蜂鸣器
蜂鸣器音乐播放实验 首先应该了解一下蜂鸣器音乐播放的原理,在这里我只讲一下电磁式蜂鸣器驱动原理(还有一种是压电式蜂鸣器): 电磁式蜂鸣器驱动原理: 蜂鸣器发声原理是电流通过电磁线圈,使电磁圈产生磁场来 ...
- 51单片机学习笔记-9蜂鸣器
9 蜂鸣器 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓库. ...
- 51单片机学习笔记_11 蜂鸣器,识简谱,根据简谱编写蜂鸣器代码
蜂鸣器实验 蜂鸣器简单地说,就是电磁线圈和磁铁对振动膜的作用. 单片机的是无源蜂鸣器,不能一直充电,需要外部控制器发送震荡信号,可以改变频率产生不同的音色.音调. 大多数有源蜂鸣器则没有这个效果,有源 ...
- AutoLeaders控制组——51单片机学习笔记(蜂鸣器、AT24C02芯片)
本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 一些内容涉及 ...
- 入门必做的51单片机实验2----》利用外部中断的方法来控制发光二极管和共阴极数码管显示十六进制的0到F
嘿!各位中午好! 我是肖肖的猪会飞 欢迎收看肖小猪频道 刚刚做了个单片机实验->ヽ( ̄ω ̄( ̄ω ̄")ゝ 分享一下 文章目录 前言 一,实验题目 二,程序 三,仿真效果 前言 此实验为 ...
- 51单片机实现用无源蜂鸣器或扬声器播放简单音乐
实现原理 通过PNP三极管提高单片机管脚带负载能力,其中R5电阻为上拉电阻以确保在单片机未置低时保证三极管完全关断.通过控制喇叭响与不响的时间长度得到不同音高,故而需要使用定时器定时开关喇叭. 具体实 ...
- 【51单片机实验笔记】1. LED的初级控制
目录 前言 硬件介绍 单色LED 封装形式 正负极判断 双色LED 三色LED 七彩自动闪烁LED(内置IC) 原理图分析 软件实现 点亮一颗LED 方法一 方法二 LED闪烁 流水灯 跑马灯 方法一 ...
最新文章
- 重构与模式:改善代码三部曲中的第三部
- cornerHarris函数
- 初步了解OpenSSL命令
- 【Android】解析Json数据
- mysql内置变量_详解MySQL注入利用的变量
- SVN下最高效打基线方法
- BHMS的完整形式是什么?
- CreateProcess的使用方法
- AliExpress智能营销引擎大揭秘 - AnalyticDB如何做到快准狠省
- adobe stream的最后一行空行_玩转Java8Stream(五、并行Stream)
- daily scrum 10.31
- ios系统软件迁移到安卓_苹果系统怎么把文件转到安卓手机?
- Builder模式的简单示例
- PHP仿金蝶云ERP进销存网络多仓版源码
- 我,30岁,部队服役5年,零基础转大数据
- labwindows panel设置透明度方法
- DeepLearning初窥门径
- RStudio介绍及入门
- 耿丹CS16-2班课堂测试作业汇总
- 很全面的5G技术基础知识PPT(三)
热门文章
- ognl MethodFailedException Method setXX failed for object
- 超融合一体流式引擎,打造分布式数据库新纪元
- 饱暖思*欲,一个数藏平台看出多少lsp
- 关于Unity VideoPlayer组件 视频切换第一帧卡顿
- 我的世界服务器号有货币系统,MC自动识别货币的售货机教程 | 我的世界 | MC世界侠...
- 想把Github当网盘? 解决github资源下载速度慢的问题
- 关于积化和差,和差化积的记忆方法
- 地级市按行业划分的城镇单位就业人员
- JS跨域请求解决方案-CORS
- IT项目管理(第四部分)