51单片机蜂鸣器发出悦耳的声音
51单片机蜂鸣器发出悦耳的声音
1.概述
这篇文章介绍单片机控制蜂鸣器入门小实验,通过该实验掌握蜂鸣器发声的原理,控制声音发出我们想听的音乐。
2.蜂鸣器发声
2.1.硬件原理
1.蜂鸣器正极接单片机20号引脚VCC,负极接19号引脚P1.7
2.20MHZ晶振分别接单片机4、5引脚XTAL2和XTAL1
3.晶振每个引脚各接一个30pf电容到单片机10号引脚GND
2.2.蜂鸣器发声代码
在main
函数中通过修改DELAY_MS()
延迟函数的数值观察蜂鸣器有什么变化,通过实际感受了解电流频率的变化如何改变蜂鸣器的发声。
/*************************************************************
* 程序名:控制蜂鸣器发声
* 编写人:bruce
* 日 期:2023-11-26
* 修改日志:开始编写
/*************************************************************/#include<STC12C2052AD.H>sbit BEEP = P1^7;/*********************************************************************************************
函数名:毫秒级CPU延时函数
调 用:DELAY_MS (?);
参 数:1~65535(参数不可为0)
返回值:无
结 果:占用CPU方式延时与参数数值相同的毫秒时间
备 注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){unsigned int i;while( --a != 0){for(i = 0; i < 600; i++);}
}void main(){while(1){BEEP = 1;DELAY_MS(2);BEEP = 0;DELAY_MS(2);}
}
3.电子琴
通过单片机控制电流中数字信号方波的宽度,实现蜂鸣器发出不同的声音。
3.1.按键电子琴
1.硬件原理
根据电路原理图和实物图将硬件接好。
2.八键电子琴程序
/*************************************************************
* 程序名:控制蜂鸣器发声
* 编写人:bruce
* 日 期:2023-11-26
* 修改日志:开始编写
/*************************************************************/#include<STC12C2052AD.H>sbit SPEAKER = P3^7;
#define KEY P1
unsigned char MUSIC;
unsigned char STH0;
unsigned char STL0;
// tab数组中的值是乐谱中音调对应HZ频率值
unsigned int code tab[]={
64021,64103,64260,64400,//低音3开始
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178
}; void main(void){ TMOD=0x01; ET0=1; EA=1; KEY = 0xff;while(1){ if(KEY != 0xff){switch (~KEY){//显示的列位置 case 0x01:// MUSIC = 7; break;// case 0x02:// MUSIC = 6; break;// case 0x04:// MUSIC = 5; break;// case 0x08:// MUSIC = 4; break;// case 0x10:// MUSIC = 3; break;// case 0x20:// MUSIC = 2; break;// case 0x40:// MUSIC = 1; break;// case 0x80:// MUSIC = 0; break;// } // 用数组的值/256获取十六进制的值STH0=tab[MUSIC]/256; STL0=tab[MUSIC]%256; TR0=1;}else{ SPEAKER = 1;TR0=0;} }
}
// 定义计数器的起始值,来控制电流方形波的宽度,改变发声的音调。
void t0(void) interrupt 1 using 0{ TH0=STH0; TL0=STL0; SPEAKER=~SPEAKER;
}
4.播放音乐
相关文章:

51单片机蜂鸣器发出悦耳的声音
51单片机蜂鸣器发出悦耳的声音 1.概述 这篇文章介绍单片机控制蜂鸣器入门小实验,通过该实验掌握蜂鸣器发声的原理,控制声音发出我们想听的音乐。 2.蜂鸣器发声 2.1.硬件原理 1.蜂鸣器正极接单片机20号引脚VCC,负极接19号引脚P1.7 2.20MH…...

Web3.0时代:区块链DAPP将如何颠覆传统模式
小编介绍:10年专注商业模式设计及软件开发,擅长企业生态商业模式,商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地;扶持10余个电商平台做到营收过千万,数百个平台达到百万会员,欢迎咨询。 随着…...

JAVA 算法面试总结
1、二分查找 二分查找又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置 的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小, 则在后半部分循环…...

【Docker】安装MySQL 通俗易懂 亲测没有任何问题
目录 1.拉取镜像 2.运行容器 3.创建mysql配置文件 4.测试 1.拉取镜像 dockerhub官网:Docker 如果需要其他版本mysql docker pull mysql:xxx(版本) docker pull mysql #默认拉取最新版本 latest 2.运行容器 docker run -d -p 3306:33…...
【React】打包优化-配置CDN
CDN 是一种内容分发网络服务,当用户请求网站内容时,由离用户最近的服务器将缓存的资源内容传递给用户。 哪些资源可以放到CDN服务器?(比如react、 react-dom) 体积较大,需要利用CDN文件在浏览器的缓存特性…...

上手 Promethus - 开源监控、报警工具包
名词解释 Promethus 是什么 开源的【系统监控和警报】工具包 专注于: 1)可靠的实时监控 2)收集时间序列数据 3)提供强大的查询语言(PromQL),用于分析这些数据 功能: 1࿰…...
Linux学习教程(第十二章 Linux系统管理)三
第十二章 Linux系统管理(进程管理、工作管理和系统定时任务)(三) 十九、Linux 定时执行任务(at命令) Linux at命令详解:定时执行任务 要想使用 at 命令,读者需提前安装好 at 软件…...

网络篇---第三篇
系列文章目录 文章目录 系列文章目录前言一、说一下HTTP的长连接与短连接的区别二、TCP 为什么要三次握手,两次不行吗?为什么?三、说一下 TCP 粘包是怎么产生的?怎么解决粘包问题的?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大…...
tensorflow和pytorch的联系与区别
TensorFlow和PyTorch是两个流行的深度学习框架,它们在很多方面都有相似之处,因为它们都旨在解决相同的问题,即构建和训练神经网络。 以下是它们之间的一些联系: 1.深度学习框架: TensorFlow和PyTorch都是开源的深度学…...

为什么选择美国VPS服务器
企业、个人和组织都需要一个稳定高效的服务器来托管他们的网站、应用程序和数据。而对于中国用户来说,寻找一个性价比高的便宜美国VPS服务器,既能满足需求,又能节约成本,成为了一个非常重要的问题。 VPS即虚拟专用服务器…...

StarRocks Evolution:One Data,All Analytics
在 11 月 17 日举行的 StarRocks Summit 2023上,StarRocks TSC Member、镜舟科技 CTO 张友东详细介绍了 StarRocks 社区的发展情况,并全面解析了 StarRocks 的核心技术与未来规划;我们特意将他的精彩演讲整理出来,以帮助大家更深入…...

微信小程序富文本拓展rich-text
微信小程序富文本插件 功能介绍 支持解析<style>标签中的全局样式支持自定义默认的标签样式支持自动设置标题 若html中存在title标签,将自动把title标签的内容设置到页面的标题上,并在回调bindparse中返回,可以用于转发支持添加加载提示 可以在Parser标签内添加加载提…...

Postman:专业API测试工具,提升Mac用户体验
如果你是一名开发人员或测试工程师,那么你一定知道Postman。这是一个广泛使用的API测试工具,适用于Windows、Mac和Linux系统。今天,我们要重点介绍Postman的Mac版本,以及为什么它是你进行API测试的理想选择。 一、强大的功能和易…...
3.golang数组以及切片
数组 数组的声明 数组是具有相同 唯一类型 的一组以编号且长度固定的数据项序列。一个数组的表示形式为 T[n]。n 表示数组中元素的数量,T 代表每个元素的类型。 var a [3]int fmt.Println(a)var a[3]int 声明了一个长度为 3 的整型数组。数组中的所有元素都被自动…...

ElasticSearch02
ElasticSearch客户端操作 ElasticSearch 版本:7.8 学习视频:尚硅谷 笔记:https://zgtsky.top/ 实际开发中,主要有三种方式可以作为elasticsearch服务的客户端: 第一种,使用elasticsearch提供的Restful接口…...
比特币挖矿过程,双花攻击,女巫攻击,DID聚合身份
目录 比特币挖矿过程 双花攻击 双花攻击的原理 双花攻击的类型 双花攻击防范措施:...

加载minio中存储的静态文件html,不显示样式与js
问题描述:点击链接获取的就是纯静态文件,但是通过浏览器可以看到明明加载了css文件与js文件 原因:仔细看你会发现加载css文件显示的contentType:text/html文件,原来是minio上传文件时将所有文件的contentType设置成了text/html 要在上传时指定文件,根据文章的类型指定的Conten…...

kali安装内网穿透工具并实现ssh远程连接
文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh远程连接kali 1…...
机器学习探索计划——KNN实现Iris鸢尾花分类
文章目录 1. 加载数据集2.拆分数据集3.预测4.评价 1. 加载数据集 import numpy as np from sklearn import datasetsiris datasets.load_iris()iris.keys()dict_keys([data, target, frame, target_names, DESCR, feature_names, filename, data_module])X iris.data X.shap…...

鸿蒙(HarmonyOS)应用开发——装饰器
简介 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,扩展了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用。TS是JavaScript(简称JS)的超…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...