51单片机-第八节-蜂鸣器

news2025/1/23 17:40:42

一、什么是蜂鸣器?

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

蜂鸣器按驱动方式可分为有源蜂鸣器无源蜂鸣器

有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。
无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。

二、51蜂鸣器原理:

同理,一种单片机一个样,本篇只讲51。

蜂鸣器原理图:很简单,BZ接通即响,BZ则接通到五线四相步进电机上。

五线四相步进电机:BZ由P1_5控制,给1则蜂鸣器响。

内部原理图:(扩展)

三、音高:控制频率:

方法:定时器中断:

//低音L,中音M,高音H,后面为数组FreqTable的对应位置
#define P   0
#define L1  1     //低音1
#define L1_ 2     //1#,右边'_'标明#
#define L2  3
#define L2_ 4
#define L3  5
#define L4  6
#define L4_ 7
#define L5  8
#define L5_ 9
#define L6  10
#define L6_ 11
#define L7  12
#define M1  13     //中音1
#define M1_ 14     //1#
#define M2  15
#define M2_ 16
#define M3  17
#define M4  18
#define M4_ 19
#define M5  20
#define M5_ 21
#define M6  22
#define M6_ 23
#define M7  24
#define H1  25     //高音1
#define H1_ 26     //1#
#define H2  27
#define H2_ 28
#define H3  29
#define H4  30
#define H4_ 31
#define H5  32
#define H5_ 33
#define H6  34
#define H6_ 35
#define H7  36


//前面0的目的是休止,后面是,音高所对应的,定时器起始时长
unsigned int FreqTable[] = { 0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400
,64463,64528,64580,64633, 64684, 64732,64777, 64820, 64860, 64898, 64934,64968,65000,
65030,65058, 65085,65110, 65134, 65157, 65178, 65198, 65217,65235,65252,65268, 65283, };

void Timer0_Routine() interrupt 1
{
	if (FreqTable[FreqSelect])
	{
		TH0 = FreqTable[FreqSelect] / 256;
		TL0 = FreqTable[FreqSelect] % 256 + 1;
		Buzzer = !Buzzer;
	}
}

三、实战:蜂鸣器播放音乐:小星星

//前面0的目的是休止
unsigned int FreqTable[] = { 0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400
,64463,64528,64580,64633, 64684, 64732,64777, 64820, 64860, 64898, 64934,64968,65000,
65030,65058, 65085,65110, 65134, 65157, 65178, 65198, 65217,65235,65252,65268, 65283, };
unsigned char Music_LittleStar[] = { 13,1,13,1,20,1,20,1,22,1,22,1,20,2,18,1,18,1,17,1,17,1,15,1,15,1,13,2,0xFF };
unsigned char FreqSelect, MusicSelect;

void main()
{
	Time0_Init();

	while (1)
	{
		if (Music[MusicSelect] != 0xFF)
		{
			FreqSelect = Music[MusicSelect];
			MusicSelect++;
			Delay(500 * Music[++MusicSelect]);
			//停顿,让同一音符分开
			TR0 = 0;
			Delay(50);
			TR0 = 1;
		} 
		else
		{
			TR0 = 0;
			while (1);
		}
	}
}

void Timer0_Routine() interrupt 1
{
	if (FreqTable[FreqSelect])
	{
		TH0 = FreqTable[FreqSelect] / 256;
		TL0 = FreqTable[FreqSelect] % 256 + 1;
		Buzzer = !Buzzer;
	}
}

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

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

相关文章

供应商较多的汽车制造业如何选择供应商协同平台?

汽车制造业的供应商种类繁多,根据供应链的不同环节和产品特性,可以大致分为以下几类。 按供应链等级分包括: 一级供应商通常具有较高的技术水平和生产能力,能够满足汽车厂商对零部件的高品质、高性能和高可靠性的要求。 二级供应…

正点原子imx6ull-mini-Linux驱动之Linux CAN 驱动实验

CAN 是目前应用非常广泛的现场总线之一,主要应用于汽车电子和工业领域,尤其是汽车 领域,汽车上大量的传感器与模块都是通过 CAN 总线连接起来的。CAN 总线目前是自动化领 域发展的热点技术之一,由于其高可靠性,CAN 总线…

SpringBoot整合MyBatis-Plus实现多数据源数据迁移

SpringBoot整合MyBatis-Plus实现多数据源数据迁移(达梦数据库、mysql) 1. 相关pom <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version> </dependency&g…

【python安装离线包】

python安装离线包 一、离线包下载1.1 离线包单个下载1.2 离线包批量下载 二、离线包安装2.1 离线包单个安装2.2 离线包批量安装 一、离线包下载 目的&#xff1a;我们在工作中可能会遇到内网环境、离线环境、或者python的源无法下载三方库的情况&#xff0c;此时就得需要我们自…

Can GPT-3 Perform Statutory Reasoning?

文章目录 题目摘要相关工作SARAGPT-3 对美国法典的了解GPT-3 在对合成法规进行简单推理时遇到困难结论 题目 GPT-3 可以进行法定推理吗&#xff1f; 论文地址&#xff1a;https://arxiv.org/abs/2302.06100 摘要 法定推理是用事实和法规进行推理的任务&#xff0c;法规是立法机…

音频应用编程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

音频应用编程 Linux 下 ALSA 框架概述 ALSA 简介&#xff1a;ALSA 是 Advanced Linux Sound Architecture&#xff08;高级的 Linux 声音体系&#xff09;的缩写 地位与功能&#xff1a;现已成为 Linux 下的主流音频体系架构&#xff0c;提供音频和 MIDI 支持&#xff0c;替代…

无线网络工具Aircrack-ng使用大全(非常详细)零基础入门到精通,收藏这一篇就够了

Aircrack-ng是一个与802.11标准的无线网络分析有关的安全软件&#xff0c;主要功能有 网络侦测 。可以捕获无线网络数据包&#xff0c;并对其进行分析和处理&#xff0c;以便获取无线网络的关键信息和加密密钥。 数据包嗅探 。可以嗅探802.11a、802.11b、802.11g的数据。 WEP和…

腾讯云AI代码助手:智能编程的未来之窗

腾讯云AI代码助手&#xff1a;智能编程的未来之窗 智能编程的未来之窗 引言配置环境介绍腾讯云 AI 代码助手使用实例生成文档功能解释代码功能生成测试功能精准修复错误功能技术对话功能 智能编程获得的帮助与提升对腾讯云AI代码助手的建议结语 引言 今天七七给大家带来一款非常…

养老院人员定位系统组成部分包括哪些?

现代养老服务需要更高的精细化支持&#xff0c;养老院人员定位系统是一项非常重要的技术应用&#xff0c;该系统通常包括硬件设备、软件平台以及数据存储和处理模块等组成部分。 首先&#xff0c;养老院人员定位系统的核心就是硬件设备&#xff0c;一般由定位终端设备、传感器、…

逻辑数据平台,多源异构实时数据高效同步的新途径

多源异构数据库的实时数据同步&#xff0c;需要将不同来源、格式和结构的数据进行整合、清洗、转换、合并、分析&#xff0c;形成统一的、一致的视图。其中&#xff0c;数据清洗是将数据中的噪声、异常值、不一致和重复的数据去除&#xff0c;提高数据质量&#xff1b;数据整合…

正则表达式介绍与基础

正则表达式介绍与基础 首先是正则表达式的特殊符号&#xff1a; [:alnum:]代表英文大小写字母及数字 [:alpha:]代表英文大小写字母 [:blank:]代表空格和 tab 键 [:cntrl:]键盘上的控制按键&#xff0c;如 CR,LF,TAB,DEL [:digit:]代表数字 [:graph:]代表空白字符以外的其…

SpringBoot MybatisPlus selectOne的坑

目录 一、问题 二、问题解决 三、其他方法 一、问题 selectOne在查询多条数据时会报错&#xff0c;查询语句并不会加 limit 1。 One record is expected, but the query result is multiple records。 二、问题解决 在QueryWrapper上添加如下&#xff1a; QueryWrapper&…

windows11/10 如何快速的安装Halcon21.05 (包括深度学习部分)(已解决)

声明&#xff1a;Halcon21.05 是网页安装&#xff0c;不是安装包安装&#xff0c;虽然前期需要下载它的安装包。 现在开始&#xff0c;先下载安装包 halcon21版本下载连接地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/142qWteiIgHm6QuZVOkX_pw?pwd2tw5 提取码&…

ATA-7020高压放大器在铁电材料测试中的应用研究

铁电材料因其在电场作用下发生自发电极化的独特性质而在材料科学中备受关注。对铁电材料进行测试和研究是理解其性能和应用潜力的关键步骤之一。高压放大器在铁电测试中的应用发挥着至关重要的作用&#xff0c;为科学家们提供了精确控制和测量电场的手段。本文将深入介绍高压放…

PDF预览:利用vue3-pdf-app实现前端PDF在线展示

目录 PDF预览&#xff1a;利用vue3-pdf-app实现前端PDF在线展示 一、vue3-pdf-app组件介绍及其优点 1、vue3-pdf-app是什么 2、作用与场景 3、类似的插件 二、项目初始化与依赖安装 1、初始化Vue3项目 2、安装依赖 三、集成vue3-pdf-app插件 1、引入插件 2、配置组件…

MySQL的Bin Log与Redo Log区别

MySQL的Bin Log与Redo Log区别 1、Bin Log2、Redo Log &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、Bin Log 范围&#xff1a;数据库级别&#xff0c;记录所有修改操作&#xff08;不包括查询&#xff09;&#xff0c;不区分存储引擎…

大数据环境下用户数据隐私安全防护系统的设计与实现(论文+源码)_kaic

摘 要 现如今互联网已在世界范围内广泛的应用和发展&#xff0c;特别是移动互联网Web 技术快速发展&#xff0c;然而最近几年经常发生互联网用户信息泄露及财产损失问题&#xff0c;网络安全漏洞严重威胁Web应用程序安全及互联网用户的网络使用安全&#xff0c;因此现急需一…

基于springcloud+MYSQL的大学生在线学习平台的设计与实现-计算机毕业设计源码43038

摘要 本文介绍了一种基于SpringCloud和MySQL的大学生在线学习平台的设计与实现。该平台采用先进的微服务架构&#xff0c;结合SpringCloud框架的分布式特性&#xff0c;旨在提供高性能、高可用性、可伸缩性强的在线学习环境。系统后端使用MySQL数据库进行数据存储和管理&#x…

js小数相加精度不准确的解决方案

目录 一、发现问题 二、为什么会出现精度误差 三、精度误差的原因 四、如何解决精度出现误差的情况 1.使用toFixed() 2. 使用库&#xff0c;如decimal.js或bignumber.js 一、发现问题 在项目中总会出现数字需要相加的情况&#xff0c;但发现整数相加没问题&#xff0c;小数…

【实现100个unity特效之17】在unity中使用shader和ShaderGraph分别实现模糊特定层,高斯模糊效果

最终效果 Unity通过Shader来模糊场景画面 参考&#xff1a;【游戏开发小技】Unity通过UI全屏图来模糊场景画面&#xff08;Shader | 模糊 | 滤镜 | Blur&#xff09; ShaderGraph实现图片的高斯模糊 参考&#xff1a;【游戏开发实战】Unity ShaderGraph实现图片的高斯模糊效…