单片机音频谱曲软件_【自己写的小软件】CLY单片机音乐代码超级生成器

我比较喜欢动漫歌曲,最近用它打了《东京泰迪熊》到单片机里面,用P0.0做蜂鸣器输出口,挺好听的,分享一下源代码应该没什么问题吧?

/*-----------------------------------------------

---------8051单片机音乐代码生成器---------

本软件作者:CLY

作者QQ:2315959474

本音乐编写日期:2016年4月10日  19:46

曲名:东京泰迪熊

使用的晶振频率:11.059200MHz

时钟周期:12个

曲调:G

速度:240

感谢您对本音乐代码生成器作者的支持!

------------------------------------------------*/

#include//包含头文件

sbit fmq = P0^0;//定义蜂鸣器端口

static unsigned int bf;//定义全局变量播放位置变量

static unsigned char jp0;//定义全局变量播放时间单位化到0.015s

static unsigned char jp1;//定义全局变量控制播放时间即节拍

unsigned char code th[] = {//定时器0高八位频率设定

0x93,0xF6,0xF6,0xF7,0xF7,0xF8,0xF8,0xF9,0xF9,0xF9,0xFA,0xFA,0xFA,0xFB,

//低八度0,b1,1,#1,2,#2,3,4,#4,5,#5,6,#6,7

0xFB,0xFB,0xFB,0xFC,0xFC,0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,

//中音1,#1,2,#2,3,4,#4,5,#5,6,#6,7

0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE

//高八度1,#1,2,#2,3,4,#4,5,#5,6,#6,7,#7

};

unsigned char code tl[] = {//定时器0低八位频率设定

0xFF,0x44,0xD6,0x5D,0xD5,0x4A,0xB5,0x1D,0x85,0xDD,0x38,0x89,0xDA,0x22,

//低八度0,b1,1,#1,2,#2,3,4,#4,5,#5,6,#6,7

0x67,0xAB,0xE8,0x23,0x59,0x8E,0xC1,0xEF,0x1C,0x44,0x6C,0x90,

//中音1,#1,2,#2,3,4,#4,5,#5,6,#6,7

0xB4,0xD5,0xF4,0x12,0x2D,0x47,0x60,0x77,0x8D,0xA2,0xB5,0xC6,0xD8

//高八度1,#1,2,#2,3,4,#4,5,#5,6,#6,7,#7

};

unsigned char code ysjs[] = {//延时计算一个单位时间为0.015s

1,7,7,8,8,8,9,9,10,11,11,12,13,13,

//低八度0,b1,1,#1,2,#2,3,4,#4,5,#5,6,#6,7

14,15,16,17,18,19,20,21,22,24,25,27,

//中音1,#1,2,#2,3,4,#4,5,#5,6,#6,7

28,30,32,34,36,38,40,42,45,47,50,53,56

//高八度1,#1,2,#2,3,4,#4,5,#5,6,#6,7,#7

};

unsigned char code jpsz[] = {2,4,5,7,11,13,15,24,28,32,49,66};//对应节拍数组

unsigned int code yb1[][2] = {//歌曲音符节拍调用数组

{0,6},{18,6},{26,6},{26,3},{25,6},{23,3},{22,6},{0,6},{21,6},{23,6},{23,3},{21,6},{16,3},

{19,3},{18,11},{0,6},{16,6},{19,6},{19,3},{18,6},{23,3},{23,6},{0,6},{23,6},{23,6},{23,3},

{25,6},{23,3},{23,3},{22,11},{0,6},{18,6},{26,6},{26,3},{25,6},{23,3},{22,6},{0,6},{21,6},

{23,6},{23,3},{21,6},{16,3},{19,3},{18,11},{0,6},{16,6},{19,6},{19,3},{18,6},{23,3},{23,6},

{0,6},{23,6},{23,6},{23,3},{25,6},{23,3},{23,3},{22,11},{0,6},{18,6},{26,6},{26,3},{25,6},{23,3},{22,6},{0,6},{21,6},{23,6},{23,3},{21,6},{16,3},

{19,3},{18,11},{0,6},{16,3},{16,3},{19,6},{19,3},{18,6},{23,3},{23,6},{0,6},{23,6},{23,6},

{26,3},{25,6},{22,3},{22,3},{23,3},{0,3},{11,3},{11,3},{11,3},{11,3},{0,3},{0,6},{23,6},

{18,6},{18,3},{23,6},{22,7},{18,6},{18,6},{22,6},{23,6},{23,6},{21,3},{19,6},{18,6},{18,3},

{18,3},{18,3},{18,3},{18,3},{18,3},{18,3},{19,6},{19,6},{19,3},{18,3},{16,3},{18,10},

{23,6},{26,6},{25,9},{23,7},{22,11},{0,6},{18,6},{26,6},{26,3},{25,6},{23,3},{22,6},{0,6},{21,6},{23,6},

{23,3},{21,6},{16,3},{19,3},{18,11},{0,6},{16,3},{16,3},{19,6},{19,3},{18,6},{23,3},{23,6},

{0,6},{23,6},{23,6},{26,3},{25,6},{22,3},{22,3},{23,10},{23,3},{30,10},{30,3},{28,7},

{26,6},{25,6},{21,3},{21,10},{28,3},{28,6},{26,7},{23,6},{25,3},{26,6},{25,3},{26,9},

{26,3},{28,6},{26,3},{28,9},{26,3},{28,7},{28,3},{28,3},{30,3},{26,3},{26,3},{25,3},{0,6},{21,6},{26,3},{24,6},{26,7},{33,6},{26,3},{24,6},{26,7},{33,6},{26,3},{24,6},{28,7},

{29,6},{28,3},{24,6},{21,7},{21,6},{26,3},{24,6},{26,7},{33,6},{26,3},{24,6},{26,7},{33,6},

{26,3},{24,6},{0,3},{24,9},{28,7},{29,3},{0,6},{21,6},{26,3},{24,6},{26,7},{33,6},{26,3},

{24,6},{26,7},{33,6},{26,3},{24,6},{28,7},{29,6},{28,3},{24,6},{21,3},{0,6},{21,6},{26,3},

{28,3},{0,3},{29,7},{21,6},{21,3},{29,3},{0,3},{28,7},{19,6},{19,3},{28,3},{0,3},{28,6},{26,3},{26,10},{0,6},{0,6},{0,6},{0,6},{0,6},{18,6},{26,6},{26,3},{25,6},{23,3},{22,6},

{0,6},{21,6},{23,6},{23,3},{21,6},{16,3},{19,3},{18,11},{0,6},{16,6},{19,6},{19,3},{18,6},

{23,3},{23,6},{0,6},{23,6},{23,6},{23,3},{25,6},{23,3},{23,3},{22,10},{0,3},{18,7},{26,3},

{26,3},{25,6},{23,3},{22,3},{0,3},{22,3},{20,3},{22,3},{23,6},{0,3},{18,7},{26,3},{26,3},

{25,6},{23,3},{22,3},{0,3},{22,3},{20,3},{22,3},{23,6},{0,3},{18,7},{26,3},{26,3},{25,6},

{23,3},{22,3},{0,3},{22,3},{20,3},{22,3},{23,6},{0,3},{18,7},{26,3},{26,3},{25,6},{23,3},{22,3},{0,3},

{22,3},{20,3},{22,3},{23,6},{0,3},{28,10},{30,3},{28,7},{26,6},{25,6},{21,3},{21,10},

{28,3},{28,6},{26,7},{23,6},{25,3},{26,6},{25,3},{26,9},{26,3},{28,6},{26,3},{28,9},{26,3},

{28,7},{28,3},{28,3},{30,3},{26,3},{25,3},{0,6},{21,6},{26,3},{24,6},{26,7},{33,6},{26,3},{24,6},{26,7},{33,6},{26,3},{24,6},{28,7},

{29,6},{28,3},{24,6},{21,7},{21,6},{26,3},{24,6},{26,7},{33,6},{26,3},{24,6},{26,7},{33,6},

{26,3},{24,6},{0,3},{24,9},{28,7},{29,3},{0,6},{33,3},{33,3},{36,3},{36,3},{0,3},{26,7},

{33,3},{33,3},{36,3},{36,3},{0,3},{26,7},{33,3},{33,3},{36,3},{36,3},{0,3},{31,7},{29,3},{29,3},{28,3},{24,3},{24,3},{26,7},{21,6},{26,3},{28,6},{29,7},{21,6},{21,3},{29,6},

{28,7},{19,6},{19,3},{28,3},{0,3},{28,6},{26,11},{23,6},{18,6},{18,3},{23,6},{22,7},{18,6},

{18,6},{22,6},{23,6},{23,6},{21,3},{19,6},{18,6},{23,3},{26,3},{30,3},{35,3},{30,3},{26,3},

{30,2},{31,6},{31,6},{31,3},{30,3},{28,3},{30,10},{35,6},{38,6},{37,9},{35,7},{34,6},

{35,3},{34,3},{30,3},{25,3},{23,3},{22,3},{18,3},{23,10},{22,3},{23,3},{25,3},{23,3},

{22,3},{18,10},{23,9},{22,3},{23,6},{30,11},{31,3},{35,3},{31,3},{28,3},{23,3},{19,3},{16,3},{19,3},

{23,3},{28,3},{31,3},{35,3},{30,3},{34,3},{30,3},{25,3},{22,3},{18,3},{14,3},{18,3},{22,3},

{25,3},{30,3},{34,3},{38,9},{37,7},{33,11}

};

void ds1()

{//定时器使用函数

TMOD |= 0x01;//打开定时器0,工作模式为1

TR0=1;//定时器0开关打开

EA=1;//总中断打开

ET0=1;//定时器0中断打开

}

main()

{//主循环

bf=0;//全局变量播放位置变量初始

jp0=0;//全局变量播放时间单位化初始

jp1=0;//全局变量控制播放时间即节拍初始

ds1();//调用定时器使用函数开始播放

while(1);//这里可以添加要同时执行的其他命令

}

void ds1_dl()interrupt 1//当定时器0溢出中断

{

TH0 = th[yb1[bf][0]];//定时器0高8位给定时值

TL0 = tl[yb1[bf][0]];//定时器0低8位给定时值

if (th[yb1[bf][0]] != 0x93 && tl[yb1[bf][0]] != 0xFF && jp1

{//当没有播放到休止符0且没有到达停顿时间

fmq = ~fmq;//蜂鸣器振动发声

}

jp0++;//计数器加一计数

if (jp0 == ysjs[yb1[bf][0]])

{//如果当前音符播放了0.03s

jp1++;//节拍,播放个数加1

jp0 = 0;//计数器归零

}

if (jp1 == jpsz[yb1[bf][1]])

{//如果当前音符播放完成一个指定的节拍

bf++;//播放位置跳到下一个音符节拍

jp1 = 0;//计数器归零

if(bf == 511)

{//如果播放到最后一位,即播放完成

bf = 0;//从头播放

}

}

}

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

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

相关文章

六年级计算机应用计划,2017六年级信息技术下册教学计划

2017六年级信息技术下册教学计划制订教学计划必须按学生的特点制订,不能仿制照搬的计划,只有自己去试着做,摸索出自己的完整方法,才是最有用的。下面应届毕业生考试网小编为大家提供了2017六年级信息技术下册教学计划,…

aop统计请求数量_Spring-Boot+AOP+统计单次请求方法的执行次数和耗时情况-Go语言中文社区...

本篇结合aop(面向切面编程)的特性,对spring-boot项目下后端开发人员所关心的java代码的性能做了一次简单的统计,比如,前端发了一个post请求(一连串数据的保存),到了后端,首先是指定Controller的某个方法做接收&#xf…

xadmin的html文件,django xadmin(2) 在xadmin基础上完成自定义页面

1.在xadmin.py,GlobalSettings中自定义菜单2.自定义视图函数,并获取原来的菜单等一下信息(主要是为了用xadmin的模板),具体的自己看xadmin源码3.在adminx.py中注册路由4.html继承。例:xadmin.py:class GlobalSettings(object):sit…

python教程苹果版_python教程

https://www.xin3721.com/eschool/pythonxin3721/1、安装Homebrewhttps://brew.sh/index_zh-cn.html2、通过brew安装pyenv1)命令行输入:$ brew install pyenv(如果一直卡在Updating Homebrew就按ctrlc一次跳转brew update)2)在home目录的 .bash_profile文件中添加&a…

计算机网络与通信思维导图,用思维导图描述5G场景

随着全球首个5G火车站在上海虹桥火车站启动建设,5G时代离我们越来越近。去年底,工业和信息化部向三大运营商发送了5G系统中低频段试验频率使用许可,5G设备将开始试商用。5G毕竟是新技术,小编今天用思维导图给大家讲解一下5G场景&a…

pytorch 指定卡1_在pytorch中指定显卡

1. 利用CUDA_VISIBLE_DEVICES设置可用显卡在CUDA中设定可用显卡,一般有2种方式:(1) 在代码中直接指定import osos.environ[CUDA_VISIBLE_DEVICES] gpu_ids(2) 在命令行中执行代码时指定CUDA_VISIBLE_DEVICESgpu_ids python3 train.py如果使用sh脚本文件…

计算机学院五名学生开发手语app,大学生团队研发成功“聋人自然手语翻译器”APP...

把语音转换成文字,再将文字翻译成手语,在第25个“全国助残日”到来之际,江苏科技大学的一群平均年龄不到22岁的年轻创业者们,研发出了一款“聋人自然手语翻译器”,为普通人与聋哑群体搭建沟通的桥梁。拿起手机&#xf…

java不同进程的相互唤醒_Java多线程(二)同步与等待唤醒

1:数据安全问题1.1:什么情况下会出现数据安全问题?多个线程对同一个资源进行操作,并且操作资源的语句有多条。那么这个时候这些语句因为cpu的随机性,有可能被多个线程分开执行。导致数据安全问题。例子:有3…

苏州宾馆管理也计算机哪个学校好,苏州十大寄宿式中学学校排名榜

教师的素质目标是什么*的发展离不开教育,教育的发展离不开教师,教师的素质提高关系着民族的未来,教师不仅要教授知识,更重要的是教授做人,以下是小编为您整理的教师的素质目标是什么的相关内容。素质教育目标是提高国民…

aop注解配置切点 spring_Spring通过自定义注解灵活配置AOP切点

package com.lsz.config.enums;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/*** 加载配置注解** author lishuzhen* date 2020/11/4 11:22*/Target(Ele…

电大计算机网考上机操作题,电大计算机上机考试模拟题及答案 (1)

模拟试题模拟试题一:第001题:在Windows中添加”传真服务”.第002题:设置Internet Explorer,对所有官方微软网站不进行安全认证.操作步骤第003题:设置Outlook Express,新邮件.新闻邮件下载5天后即被删除, 当浪费的空间达到40%时压缩邮件,并将存储在C盘DDKS根目录下。…

python中哪个符号用于从包中导入模块__学小易找答案

【简答题】7个积分题【单选题】5. Is it time for the meeting now?【单选题】result lambda x: x * x print(result(5)) 以上代码输出结果为?【其它】第一次作业.docx【简答题】11个求导题!【单选题】18. Where does the woman want to work?【单选题】15. Where does the…

在职人员计算机网络管理总结,关于学校网络管理员个人工作总结

关于学校网络管理员个人工作总结主要工作职责1.按照规定流程开通校园网用户,做好审核与登记工作。2.接听办公室报修电话,负责校园网网络故障报修用户信息登记。3.凭证参加网络故障现场维护(自网络故障报修日起两个工作日内)。4.统计当天网络故障报修数据…

long mode 分页_在Spring Boot中使用Spring-data-jpa实现分页查询(转)

在我们平时的工作中,查询列表在我们的系统中基本随处可见,那么我们如何使用jpa进行多条件查询以及查询列表分页呢?下面我将介绍两种多条件查询方式。1、引入起步依赖org.springframework.bootspring-boot-starter-weborg.springframework.boo…

小学计算机课程评价,小学信息技术课堂评价浅谈

小学信息技术是一门融知识性、趣味性和技能性于一体的学科,它着重于对小学生进行初步的信息意识、信息素养和信息技能的培养,集知识性和技能性于一体。而对于学生学习情况的评价,信息技术学科不像其他学科一样,可以留有课后作业或…

git 相同commit_Git 合并多次 commit 、 删除某次 commit

Git 合并多次 commit有时候在一个分支的多次意义相近的 commit,会把整个提交历史搞得很混乱,此时可以将一部分的 commit 合并为一个 commit,以美化整个 commit 历史,可以使用 rebase 的方法来合并多次 commit,主要步骤…

微服务 松耦合_超值干货:微服务架构下如何解耦,对于已经紧耦合下如何重构?...

今天准备谈下微服务架构下各个微服务间如何解耦,以及对于已经紧耦合的微服务如何进行重构。要明白实际上微服务后续出现的诸多问题往往都是一开始微服务模块划分就不合理导致,对于具体的模块划分方法和原则,我总结出了以下几点。原则1&#x…

西安电子科技大学研究生计算机专业王宇平教授学生就业岗位,西安电子科技大学计算机学院导师信息情况...

研究生考试招生以下是所有导师的详细资料姓名 权义宁 杨世勇 刘志镜 冯大政 王宇平 王宇平 马建峰职称 副教授 副教授 教授 教授 教授 教授 教授导师类别 硕士生导师 硕士生导师 博士生导师 博士生导师 博士生导师 硕士生导师 博士生导师电子信箱ynquanhttp://doc.xuehai.netsh…

增量式pid调节方式有何优点_增量式pid和位置式pid相比各有什么优缺点

展开全部位置PID和增量PID之间的差异是不同的输出,是否存在积分部分以及是否具有记忆功62616964757a686964616fe78988e69d8331333433626562能。1.输出不同:位置PID控制的输出与整个过去状态有关,并且使用了误差的累加值;而增量PID…

文件夹 计算机无法使用,电脑文件夹提示被使用无法删除怎么办

相信有朋友碰到过这样的问题,电脑上新建一个临时文件夹在使用完后进行删除,或者卸载某一个程序,在卸载完想手动删除残留的文件夹时,出现了下图所示的提示:这个时候我们一般都会在任务管理器中查找是哪个进程占用了&…