【【51单片机蜂鸣器实现起风了】】

news2024/11/25 16:30:57

哀伤如同风,消失无影踪。

前面的有两个非常关键的点希望兄弟们明白
我一开始也失算了
在这里插入图片描述
在这里插入图片描述
这里兄弟们注意务必改成int 不然会超出
就会出现播放一半从头开始的情况

下面是两份起风了代码直接附上main.c
因为另外的其实和我之前说的模板都一样复制粘贴就行

为什么是2份因为什么ABCD大调我不懂啊 我看乐谱看不懂555
第一份speed为300

main.c

#include <REGX52.H>
#include "Delay.h"
#include"Timer0.h"

sbit Buzzer=P2^5;

//音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#
#define P	0
#define L1	1
#define L1_	2
#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
#define M1_	14
#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
#define H1_	26
#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


#define SPEED 300  //我们以4分音符为基准
unsigned int  FreqTable[]={
	0,
	63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64524,
	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 int code  Music[]={
//音符,时值,
	
    0,4,
18,2,
19,2,
21,2,
23,2,
11,4,
26,2,
23,6,
0,2,
18,2,
19,2,
21,2,
23,2,
    9,4,
    26,2,
    23,2,
    21,2,
    23,2,
    19,2,
    21,2,
    18,2,
    19,2,
14,2,
0,4,
18,2,
19,2,
21,2,
23,2,
11,4,
26,2,
23,6,
0,2,
18,2,
19,2,
21,2,
23,2,
9,4,
26,2,
23,2,
21,2,
23,2,
19,2,
21,2,
18,2,
19,2,
14,2,
0,4,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
7,2,
9,6,
7,2,
9,2,
11,2,
9,2,
7,2,
1,4,
0,4,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
11,2,
9,4,
7,4,
9,8,
10,8,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
11,2,
9,4,
7,4,
3,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,8,
0,8,
0,4,
7,4,
9,4,
11,4,
7,4,
16,4,
14,2,
16,6,
0,2,
7,2,
18,4,
16,2,
18,6,
0,4,
18,4,
16,2,
18,6,
11,4,
19,2,
21,2,
19,2,
18,2,
16,4,
14,4,
16,4,
14,2,
16,4,
14,2,
16,2,
14,2,
16,4,
14,2,
9,4,
14,4,
11,8,
0,8,
7,4,
9,4,
11,4,
7,4,
16,4,
14,2,
16,6,
0,2,
7,2,
18,4,
16,2,
18,6,
0,4,
18,4,
16,2,
18,6,
11,4,
19,2,
21,2,
19,2,
18,2,
16,4,
14,4,
16,4,
23,2,
23,6,
14,4,
16,4,
23,2,
23,4,
14,4,
16,2,
16,12,
0,4,
19,4,
21,4,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
21,4,
23,6,
28,2,
26,6,
28,2,
26,6,
28,2,
26,4,
23,8,
21,4,
19,2,
16,4,
19,4,
19,2,
21,4,
19,2,
16,4,
19,4,
23,8,
23,4,
21,6,
0,4,
19,4,
21,4,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
0,2,
21,2,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
23,6,
21,4,
19,2,
16,4,
23,4,
21,4,
19,2,
16,4,
16,2,
19,2,
19,8,
0,4,
16,2,
23,6,
21,4,
19,2,
16,4,
23,4,
21,4,
19,2,
16,4,
16,2,
19,6,
19,8,

	0xFF
};

	unsigned int FreqSelect,MusicSelect;
	
void main()
{
	
	Timer0Init();
	while(1)
	{
		if(Music[MusicSelect]!=0xFF)
		{
		FreqSelect=Music[MusicSelect];
		MusicSelect++;
		Delay(SPEED/4*Music[MusicSelect]);
		MusicSelect++;
	   TR0=0;
		Delay(5);
		TR0=1;	
			
		}
		else
		{
			TR0=0;
			while(1);
			
		}
		
	}	
	
}


void Timer0_Routine() interrupt 1
{
	if(FreqTable[FreqSelect])	//如果不是休止符
	{
		/*取对应频率值的重装载值到定时器*/
		TL0 = FreqTable[FreqSelect]%256;		//设置定时初值
		TH0 = FreqTable[FreqSelect]/256;		//设置定时初值
		Buzzer=!Buzzer;	//翻转蜂鸣器IO口
	}
}

兄弟们担待,开头有个好像不对调,我太懒了
第二份main.c
第二份speed 600

main.c

#include <REGX52.H>
#include "Delay.h"
#include"Timer0.h"

sbit Buzzer=P2^5;

//音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#
#define P	0
#define L1	1
#define L1_	2
#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
#define M1_	14
#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
#define H1_	26
#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


#define SPEED 600  //我们以4分音符为基准
unsigned int  FreqTable[]={
	0,
	63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64524,
	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 int code  Music[]={
//音符,时值,
	
M2,3,
    M1,1,
    M2,3,
    M1,1,
    M2,2,
    M3,2,
    M5,2,
    M3,2,
    
    M2,3,
    M1,1,
    M2,3,
    M1,1,
    M2,1,
    M3,1,
    M2,1,
    M1,1,
    L5,2,
    P,2,
    
    M2,3,
    M1,1,
    M2,3,
    M1,1,
    M2,2,
    M3,2,
    M5,2,
    M3,2,
    
    M2,3,
    M3,1,
    M2,2,
    M1,1,
    M2,5,
    P,4,
    
    M2,3,
    M1,1,
    M2,3,
    M1,1,
    M2,2,
    M3,2,
    M5,2,
    M3,2,
    
    M2,3,
    M3,1,
    M2,2,
    M1,1,
    L6,3,
    P,2,
    M3,1,
    M2,1,
    M1,1,
    M2,1,
    
    M1,2,
    P,2,
    M3,1,
    M2,1,
    M1,1,
    M2,1,
    M1,2,
    P,2,
    M3,1,
    M2,1,
    M1,1,
    M2,1,
    
    M1,4,
    P,6,
    M1,2,
    M2,2,
    M3,2,
    
    M1,2,
    M6,2,
    M5,1,
    M6,3,
    P,1,
    M1,1,
    M7,2,
    M6,1,
    M7,3,
    
    P,2,
    M7,2,
    M6,1,
    M7,3,
    M3,2,
    H1,1,
    H2,1,
    H1,1,
    M7,1,
    M6,2,
    
    M5,2,
    M6,2,
    M5,1,
    M6,2,
    M5,1,
    M6,1,
    M5,1,
    M6,2,
    M5,1,
    M2,2,
    M5,1,
    
    M5,1,
    M3,5,
    P,4,
    M1,2,
    M2,2,
    M3,2,
    
    M1,2,
    M6,2,
    M5,1,
    M6,3,
    P,1,
    M1,1,
    M7,2,
    M6,1,
    M7,3,
    
    P,2,
    M7,2,
    M6,1,
    M7,3,
    M3,2,
    H1,1,
    H2,1,
    H1,1,
    M7,1,
    M6,2,
    
    M5,2,
    M6,2,
    H3,4,
    M5,2,
    M6,2,
    H3,3,
    M5,1,
    
    M5,1,
    M6,11,
    P,2,
    H1,2,
    
    H2,2,
    H3,2,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    
    H2,1,
    H3,3,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    H6,1,
    H5,2,
    H3,1,
    
    H3,3,
    H2,2,
    H1,1,
    M6,2,
    H1,3,
    H2,2,
    H1,1,
    M6,2,
    
    H1,2,
    H3,6,
    H2,1,
    H3,1,
    H2,2,
    P,2,
    H1,2,
    
    
    
    H2,2,
    H3,2,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    H6,1,
    H5,2,
    P,1,
    
    H2,1,
    H3,2,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    H6,1,
    H5,2,
    H3,2,
    
    H3,1,
    H2,2,
    H1,1,
    M6,2,
    H3,2,
    H2,2,
    H1,1,
    M6,3,
    H1,2,
    
    H1,8,
    M6,1,
    H3,3,
    H2,2,
    H1,1,
    M6,1,
    
    M6,1,
    H3,2,
    H2,2,
    H1,1,
    M6,3,
    H1,7,
    
    H1,8,
    P,8,

	0xFF
};

	unsigned int FreqSelect,MusicSelect;
	
void main()
{
	
	Timer0Init();
	while(1)
	{
		if(Music[MusicSelect]!=0xFF)
		{
		FreqSelect=Music[MusicSelect];
		MusicSelect++;
		Delay(SPEED/4*Music[MusicSelect]);
		MusicSelect++;
	   TR0=0;
		Delay(5);
		TR0=1;	
			
		}
		else
		{
			TR0=0;
			while(1);
			
		}
		
	}	
	
}


void Timer0_Routine() interrupt 1
{
	if(FreqTable[FreqSelect])	//如果不是休止符
	{
		/*取对应频率值的重装载值到定时器*/
		TL0 = FreqTable[FreqSelect]%256;		//设置定时初值
		TH0 = FreqTable[FreqSelect]/256;		//设置定时初值
		Buzzer=!Buzzer;	//翻转蜂鸣器IO口
	}
}

over兄弟们 两段任君采撷
speed越小速度越快 可以做变奏的
以后再更新一点别的 兄弟用那个软件做起来也很方便

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

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

相关文章

M1 Mac如何安装CentOS7虚拟机(图文详细解说)

1、下载相应的文件 2、打开VMware Fusion pro进行安装 3、 输入许可证密钥 4、 将CentOS-7拖入“从光盘或映像中安装”中 5、点击继续 6、选择其他-->其他64位ARM-->继续 7、进行自定设置 8、这里更改名为“Centos7”&#xff08;不要加空格&#xff09;&#xff0c;存…

2023 Testing Expo倒计时-聚焦Softing 9003展位

请点击此处&#xff0c;即可进行在线登记报名并了解更多信息&#xff01;

ES系列--文档处理

一、文档冲突 当我们使用 index API 更新文档 &#xff0c;可以一次性读取原始文档&#xff0c;做我们的修改&#xff0c;然后重 新索引 整个文档 。 最近的索引请求将获胜&#xff1a;无论最后哪一个文档被索引&#xff0c;都将被唯一存 储在 Elasticsearch 中。如果其他人同时…

Java-生成数据库设计文档

目录 场景screw 官网介绍接口编写 场景 在企业开发中&#xff0c;有些公司会要求开发人员编写数据库表结构文档&#xff0c;这项工作没啥技术含量而且很繁琐&#xff0c;每当有表发生更改时就需要维护这个文档&#xff0c;或者是需要交付数据库设计文档和导出数据库设计文档这类…

8月|龙讯旷腾高性能计算与工业材料模拟论坛2023

2023年8月25日 山东青岛 高性能计算与工业材料模拟论坛2023 青岛&#xff0c;别称岛城&#xff0c;国务院批复确定的中国沿海重要中心城市和滨海度假旅游城市&#xff0c;国家历史文化名城、中国帆船之都、世界啤酒之城、联合国电影之都&#xff0c;也是国家海洋科研和教育中…

【产品经理】TO B市场分析

市场分析是一个独立而又宏大的学科领域&#xff0c;并且具体使用中&#xff0c;目标和个体不同&#xff0c;分析的方式方法也不同。TO B产品的市场分析是对市场环境、市场规模、性质、特征、竞品进行分析&#xff0c;从而寻找和研究潜在需求的市场机会&#xff0c;帮助产品经理…

设计模式大白话——工厂模式

文章目录 设计模式大白话——工厂模式1.1、简单工厂:1.2、工厂方法1.3、抽象工厂 设计模式大白话——工厂模式 1.1、简单工厂: 场景与思路 ​ 现在需要开一个 Pizza 店&#xff0c;Pizza 店可以生产各种口味的 Pizza ​ 既然要生产各种各样的 Pizza&#xff0c;那就会很容易想…

管理类联考——英语——趣味篇——不择手段——d开头单词

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

SignalTap II 软件使用步骤

文章目录 前言一、SignalTap II是什么&#xff1f;二、使用步骤三、总结四、参考资料 前言 环境&#xff1a; 1、Quartus18.1 2、板子型号&#xff1a;原子哥开拓者2(EP4CE10F17C8) 要求&#xff1a; 能够使用SignalTap II进行片上调试。 一、SignalTap II是什么&#xff1f; S…

海外媒体发稿:链游媒体发稿写作方法及优缺点解析

链游媒体发稿是一种新的媒体发布机制&#xff0c;它可以把信息准确、及时、有效地传播给大量的人&#xff0c;帮助企业实现信息的最大化传播&#xff0c;因此越来越多的公司也开始使用链游媒体发稿服务&#xff0c;本文就介绍链游媒体发稿写作的方法及小技巧。 一、链游媒体发稿…

Kubernetes Service的过程

文章目录 Kubernetes Service的实现基础内容1. 命令 ip route show table all2. DNAT3. IPVS和iptables4. Service Service的实现简述 Kubernetes Service的实现 基础内容 在了解Service之前,需要先了解一些额外的知识: 命令: ip route show table allDNATIPVS和iptables基础…

MNE脑电数据预处理

MNE 官网链接 导包 import mne import matplotlib.pyplot as plt加载数据集 不同格式数据集使用的函数不同&#xff0c;具体在官网搜索 raw mne.io.read_raw_brainvision(r"test.vhdr", preloadTrue)此语句为了画图方便 %matplotlib降采样 raw.resample(200)…

Vue3统计数值(Statistic)

可自定义设置以下属性&#xff1a; 数值的标题&#xff08;title&#xff09;&#xff0c;类型&#xff1a;string | slot&#xff0c;默认&#xff1a;‘’数值的内容&#xff08;value&#xff09;&#xff0c;类型&#xff1a;string | number&#xff0c;默认&#xff1a;…

MySql索引分类及创建索引的相关语法

1.索引分类 1.1 InnoDB中索引的分类 聚集索引与二级索引之间的B树的结构 sql语句索引执行的过程讲解 根据id查询的聚集索引效率要比二级索引高&#xff0c;故第一条sql的执行效率要高于第二条sql的执行效率。 2.索引语法 如果一个索引只关联一个字段&#xff0c;这种索引…

[虚幻引擎插件说明] DTOperateFile 使用蓝图操作文件

本插件可以在虚幻里面使用蓝图文件进行读、写、移动、复制、删除等操作。 目录 1. 节点说明 Get Stat Data – 获取文件信息 Directory Exists – 判断目录是否存在 Directory Create – 创建目录 Directory Delete – 删除目录 File Exists – 判断文件是否存在 File …

Kubernetes Dashboard部署安装

目录 Dashboard 官方文档&#xff1a;部署和访问 Kubernetes 仪表板&#xff08;Dashboard&#xff09; | Kubernetes 参考文档&#xff1a;(120条消息) K8S 安装 Dashboard_k8s 安装dashboard_tom.ma的博客-CSDN博客 扩展&#xff1a; K8S 安装 Dashboard 1、在 master …

BUFG/BUFGCE/BUFH/BUFHCE/BUFH/BUFGHCE/BUFMR/BUFMRCE/BUFR/IBUF/IBUFDS

本文对BUFG/BUFGCE/BUFH/BUFHCE简单介绍&#xff0c;便于后续查看。 原语的使用&#xff1a;在vivado中找到所要用的原语&#xff0c;直接将其实例化到设计中即可。 文章目录 BUFGBUFGCEBUFHBUFHCEBUFMRBUFRBUFMRCEIBUFIBUFDS 下图为 7 系列 FPGA 时钟架构图&#xff1a; BU…

TypeScript基础篇 - React Webpack TS 环境实战

目录 WebpackReactTS tsconfig.json src/App.tsx src/main.tsx scripts/webpack.config.js package.json scripts/template.html 一张ai生成图~ WebpackReactTS npm install react react-dom 【安装react并且安装一个react-dom】 引用时文件出现...;需要增加定义文件&a…

数据分析案例-数据分析师岗位招聘信息可视化

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

解决appium-doctor报ffmpeg cannot be found

一、下载ffmpeg安装包 https://ffmpeg.org/download.html 找到如图所示红框位置点击下载ffmpeg安装包。 二、配置ffmpeg环境变量 三、检查ffmpeg版本信息 重新管理员打开dos系统cmd命令提示符&#xff0c;输入ffmpeg查看是否出现版本信息&#xff0c;安装完好。 ffmpeg