6=440Hz,#6=440*1.059463=466.2Hz,7=440*1.059463*1.059463=493.9Hz?
#5=440÷1.059463=415.3Hz
5=440÷1.059463÷1.059463=392Hz
相邻半音阶的关系为1.059463倍,只要知道"A"=440Hz,即可算出其余半音阶的频率,比A高的用"*",比A低的用"÷"
1.059463=12√2(即2开12次根)
440Hz为钢琴中央C组的A(即"6"音)
ok
这是本人一个产品中的音乐单元,很完整,供爱好者参考.?
???????ORG?????0000H
????????AJMP????CSH?????????????主程序进入点
????????ORG?????000BH
????????LJMP????TIM0????????????定时中断T0入口
;
;**********
;*?初始化?*
;**********
;
????????ORG?????0020H
CSH:????MOV?????R0,#7FH?????????内部RAM(00H~7FH)清零
CSH1:???MOV?????@R0,#00H
????????DJNZ????R0,CSH1
????MOV?????SP,#60H?????????堆栈60H~7FH,【使用89C51】
????????MOV?????TMOD,#01H???????TMOD=11H,T0作16位计数器(4M晶振)
????????CLR?????TCON.4??????????T0禁止动作
????????SETB????IE.1????????????T0允许中断
????????SETB????PT0?????????????T0中断优先
????????SETB????IE.7????????????系统允许中断
;
;**********
;*?主程序?*
;**********
;
MAIN:???MOV?????5CH,#00?????????取简码谱指针
????????LCALL???MUSIC
????MOV?????5CH,#49?????????取简码谱指针
????????LCALL???MUSIC
????MOV?????5CH,#66?????????取简码谱指针
????????LCALL???MUSIC
????MOV?????5CH,#100????????取简码谱指针
????????LCALL???MUSIC
????MOV?????5CH,#108????????取简码谱指针
????????LCALL???MUSIC
????MOV?????5CH,#136????????取简码谱指针
????????LCALL???MUSIC
????MOV?????5CH,#174????????取简码谱指针
????????LCALL???MUSIC
????????AJMP????MAIN
;
;*************************
;*?音乐子程序?MUSIC??????*
;*?入口:?5CH←简码谱指针?*
;*************************
;
MUSIC:??MOV?????A,5CH???????????简码谱指针装入A
????????MOV?????DPTR,#TABLE?????至TABLE取简码
????????MOVC????A,@A+DPTR
????????MOV?????R2,A????????????取到的简码暂存于R2
????????JZ??????END1????????????是否取到00(结束码)?
????????ANL?????A,#0FH??????????不是,则取低四位(节拍码)
????????MOV?????R6,A????????????将节拍码存入R6
????????MOV?????A,R2????????????将取到的简码再装入R2
????????SWAP????A???????????????高低四位交换
????????ANL?????A,#0FH??????????取低四位(音符码)
????????JNZ?????SING????????????取到的音符码是否为0?
????????CLR?????TR0?????????????是,则不发音
????????AJMP????D1??????????????跳到D1
;
SING:???DEC?????A???????????????取到的音符码减1
????????MOV?????4BH,A???????????存入(4BH)
????????RL??????A???????????????乘2
????????MOV?????DPTR,#TABLE1????至TABLE1取相对的高字节计数值
????????MOVC????A,@A+DPTR
????????MOV?????TH0,A???????????取到的高字节存入TH0
????????MOV?????4AH,A???????????取到的高字节存入(4AH)
????????MOV?????A,4BH???????????再装入取到的音符码
????????RL??????A???????????????乘2
????????INC?????A???????????????加1
????????MOVC????A,@A+DPTR???????至TABLE1取相对的低位
????????MOV?????TL0,A???????????取到的低字节存入TL0
????????MOV?????49H,A???????????取到的低字节存入(49H)
????????SETB????TR0?????????????启动TIMER0
D1:?????CALL????DELAY???????????基本单位时间1/4拍187毫秒
????????INC?????5CH?????????????取简码谱指针加1
????????AJMP????MUSIC???????????取下一个码
DD1:????RET
;
STOP:???NOP
;????JB??????P3.7,STOP1????在软件延时中掺插做其他动作
;???????SETB????P2.7????????????P2.7←"1"
????????NOP
????????NOP
STOP0:??NOP
????????RET
STOP1:??NOP
;????JB??????P3.6,STOP0????在软件延时中掺插做其他动作
;???????SETB????P2.6????????????P2.6←"1"
????????RET
;
END1:???CLR?????TR0?????????????停止TIMER0
????????RET
;
TIM0:???PUSH????A???????????????将A的值暂存于堆栈区
????????PUSH????PSW?????????????将PSW的值暂存于堆栈区
????????MOV?????TL0,49H?????????重设计数值
????????MOV?????TH0,4AH
????????CPL?????P1.7????????????将输出端P1.1取反(P1.7接至无源蜂鸣器)
????????POP?????PSW?????????????至堆栈区取回PSW的值
????????POP?????A???????????????至堆栈区取回A的值
????????RETI????????????????????返回主程序
;
DELAY:??MOV?????R7,#02??????????187毫秒
D2:?????MOV?????R4,#24
D3:?????MOV?????R3,#48
????????DJNZ????R3,$
????????ACALL???STOP????????在软件延时中掺插做其他动作
????????DJNZ????R4,D3
????????DJNZ????R7,D2
????????DJNZ????R6,DELAY????????决定节拍
????????RET
;?????????????????.5???.6?????.7????1
TABLE1:?DW??????65111,65150,65199,65217???4M晶振时的定时中断时间常数
;??????????????????2????3?????4?????5?????若采用其它频率,则要根据乐音的
????????DW??????65252,65283,65297,65323???频率计算,例中央C的A音为440Hz,
;??????????????????6????7?????1`????2`????440Hz=2.273ms,把T0设置为2.273ms
????????DW??????65347,65367,65377,65394???中断即可发出A音.
;?????????????????3`????4`????#6
????????DW??????65410,65417,65357
;
;***************************************************************
;*?音符代码??1??2??3??4??5??6??7??8??9??A??B??C??D??E??F???0???*
;*?音高?????.5?.6?.7??1??2??3??4??5??6??7??1`?2`?3`?4`?5`?休止?*
;*-------------------------------------------------------------*
;*?节拍代码??1???2???3??4???5??????6????8???A????C???F?????????*
;*?节拍?????1/4?2/4?3/4?1?1(1/4)?1(1/2)?2?2(1/2)?3?3(3/4)??????*
;*-------------------------------------------------------------*
;*?结束代码?00H????????????????????????????????????????????????*
;*-------------------------------------------------------------*
;*?乐谱格式??每字节的高字节为音符代码,低字节为节拍代码?????????*??
;*-------------------------------------------------------------*?
;*?例子:????????⑴??⑵??⑶??⑷??⑸??⑹??⑺??⑻??⑼??⑽??⑾?????*
;*??????DB??????A4H,02H,84H,02H,A4H,02H,84H,02H,D8H,04H,00H????*
;*??????⑴?A→唱"7"?,?4→?1?拍?????????????????????????????????*
;*??????⑵?0→休止??,?2→2/4拍?????????????????????????????????*?
;*??????⑶?8→唱"5"?,?4→?1?拍?????????????????????????????????*?
;*??????⑷?0→休止??,?2→2/4拍?????????????????????????????????*?
;*??????⑸?A→唱"7"?,?4→?1?拍?????????????????????????????????*
;*??????⑹?0→休止??,?2→2/4拍?????????????????????????????????*
;*??????⑺?8→唱"5"?,?4→?1?拍?????????????????????????????????*?
;*??????⑻?0→休止??,?2→2/4拍?????????????????????????????????*
;*??????⑼?D→唱"3`",?8→?2?拍?????????????????????????????????*
;*??????⑽?0→休止??,?4→?1?拍?????????????????????????????????*
;*??????⑾?00H→乐曲结束???????????????????????????????????????*
;***************************************************************??
;
TABLE:
;【00】?
????????DB??????98H,02H,B4H,01H,94H,01H,68H,02H,94H,01H
????????DB??????64H,01H,48H,02H,64H,01H,44H,01H,28H,02H
????????DB??????64H,01H,94H,01H,B4H,01H,94H,01H,B4H,01H
????????DB??????94H,01H,B4H,01H,D4H,01H,94H,01H,64H,01H
????????DB??????44H,01H,64H,01H,98H,02H,01H,01H,00H
;【49】?
????????DB??????A4H,02H,84H,02H,A4H,02H,84H,02H,D8H,04H
????????DB??????C8H,01H,01H,01H,01H,01H,00H
;【66】?
????????DB??????42H,52H,62H,72H,82H,92H,A2H,B2H,42H,52H
????????DB??????62H,72H,82H,92H,A2H,B2H,00H
;【100】
????????DB??????61H,81H,B1H,D1H,B1H,81H,61H,00H
;【108】
????????DB??????11H,41H,61H,81H,61H,41H,11H,00H
;【136】
????????DB??????24H,04H,34H,04H,44H,04H,54H,04H,64H,04H,44H,04H,64H,04H,94H,04H
????????DB??????83H,01H,93H,01H,83H,01H,63H,01H,46H,02H,66H,02H
????????DB??????91H,21H,91H,21H,91H,21H,91H,21H,94H,00H
;【174】
????????DB??????94H,04H,A4H,04H,B4H,04H,C4H,04H,D4H,04H
????????DB??????B4H,04H,D8H,08H,C4H,04H,F4H,04H,CCH,00H
;
????END
单片机编音乐程序
- 单片机(614606)
- 音乐程序(10708)
相关推荐
单片机怎么写入程序并烧录程序?快收藏
单片机是一个微型的控制中心,相当于我们的电脑主机,而没有烧录的单片机是没有任何功能的,那么如何把程序写进深圳单片机。下次跟安玛科技小编一起来看看。 首先你需要写一个好的程序。不同的单片机使用不
2023-05-24 18:03:06
2274


基于51单片机的播放音乐实验设计资料源程序文件
基于51单片机的播放音乐实验设计资料源程序文件
经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这
样。在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴
2023-04-27 15:06:25
0

基于51单片机的单片机播放音乐实验设计资料源程序
经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这
样。在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴
趣而又不知其解的朋友能有所启迪。
一般说来
2023-04-26 15:38:17
0

单片机里的程序是如何运行?
我们想要理解单片机是如何运行程序的,我们首先需要了解单片机的组成,我们这里以80C51单片机为例来理解程序在单片机中是如何运行的。
2023-02-17 10:47:57
1944


关于单片机程序的执行过程
我们想要理解单片机是如何运行程序的,我们首先需要了解单片机的组成,我们这里以80C51单片机为例来理解程序在单片机中是如何运行的。
2022-10-12 15:02:10
3180

单片机音乐程序设计(含源程序代码)
单片机音乐程序设计(含源程序代码)利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。 单片机的基本发音
2009-05-15 23:27:00
单片机中级项目12丨蜂鸣器音乐之八月桂花
] C51音乐程序(八月桂花) [功能] 通过单片机演奏音乐 /********************************************************...
2021-11-22 09:36:09
9

单片机音乐演奏(STC89C51)
/************************************************************************ [文件名] C51音乐程序(八月桂花) [功能] 通过单片机演奏音乐 接线说明:参考蜂鸣器实验接线 /*************************************
2021-11-21 21:06:05
9

基于51单片机的音乐播放器
基于51单片机的音乐播放器音乐播放器摘要1、引言2、总体设计方案2.1、设计思路2.2、方案确立2.3、设计原理分析2.4、音乐播放器控制电路设计三、程序代码摘要本次设计的题目是基于STC89C52
2021-11-21 11:21:03
101

单片机应用系统设计技术——播放音乐
程序驱动单片机工作。二、实验内容一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器
2021-11-16 16:36:02
0

单片机开发小程序
如何使用单片机开发小程序单片机一般都是通过烧写hex或是bin文件来进行程序升级,这个方法是在8、16、32位单片机上常用的更新程序的方法。这里实现单片机小程序的方法是通过在单片机上移植脚本来实现
2021-11-13 12:36:02
10

基于51单片机的音乐盒设计
一.硬件方案本设计以51单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C语言进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动蜂鸣器发出不同音调的音乐,再利用延迟来控制
2021-11-13 09:51:06
20

基于单片机的音乐播放器的设计
设计简介:本设计是基于单片机的音乐播放器,主要实现以下功能:可实现LCD12864显示歌曲的名字和时间以及歌曲序号; 可实现通过语音模块控制歌曲的播放以及声音的大小; 可实现通过按键控制音乐的播放
2021-11-12 16:51:00
28

单片机按键使用程序 (51单片机)
单片机独立按键使用程序 (51单片机)独立按键是单片机中很重要的一个器件,在这篇文章里,通过这个用独立按键控制LED灯的小程序来介绍独立按键开关的使用。...
2021-11-11 18:36:02
91

基于51单片机的音乐播放器音乐盒仿真原理图方案设计
硬件电路设计(下方附文件)设计框图:原理图:仿真图软件程序设计单片机发声概述一般来说,单片机不像其他专业乐器那样能奏出多种音色的声音,即不包含相应幅度的谐振频率。单片机演奏的音乐基本都是单音
2021-11-04 17:21:01
3

单片机音乐程序的设计原理解析资料下载
电子发烧友网为你提供单片机音乐程序的设计原理解析资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
2021-04-10 08:55:51
9

使用51单片机实现音乐播放的程序资料概述
利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。下面提供2个列子,大家根据 需要自行选择
2020-06-21 11:04:50
8150

使用51单片机实现音乐盒的设计论文
本设计是一个基于STC89C51RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成
2020-06-16 17:40:47
99

使用单片机实现按键控制定时器选播多段音乐的程序和仿真资料免费下载
本文档的主要内容详细介绍的是使用单片机实现按键控制定时器选播多段音乐的程序和仿真资料免费下载。
2020-06-11 17:30:31
15

使用单片机实现音乐程序设计的详细资料说明
利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。
2020-04-06 12:37:00
2230


使用单片机设计音乐程序的资料说明
利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。
2019-10-21 08:00:00
0

51单片机汇编语言教程之音乐程序设计的详细资料说明
利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。单片机的基本发音实验
2019-06-05 16:49:45
4

单片机音乐程序的设计原理解析
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。
2019-05-20 16:08:48
3236


使用单片机进行音乐盒的设计资料合集免费下载
音乐编码----生日快乐歌,基于c51单片机编写简单蜂鸣器音乐程序的方法,乐普编辑应用程序,谱曲软件,音乐乐谱提取软件,制作51单片机音乐盒的程序资料合集免费下载。
2019-05-05 08:00:00
49

51单片机的五个汇编音乐程序资料免费下载
本文档的主要内容详细介绍的是51单片机的五个汇编音乐程序资料免费下载。包括了:1.两只老虎,2.祝你平安,3.生日歌 ,4.八月桂花香,5.兰花草
2019-03-06 11:41:28
20

使用C51单片机进行演奏生日快乐音乐程序的详细资料免费下载
本文档的主要内容详细介绍的是如何使用C51单片机进行演奏生日快乐音乐程序的详细资料免费下载,利用中级定时器以及蜂鸣器设计。
2018-12-17 08:00:00
20

基于Proteus单片机的音乐演奏实现系统
本文提出的一种基于 Proteus 的单片机演奏音乐的方法,非常简单实用,且该方法基于软件来实现的,所以成本非常低,调试方便,效果也很不错,适合于爱好音乐的单片机学习者。 单片机系统的设计分两大部分:硬件设计部分和软件设计部分。
2018-04-08 09:27:00
4676


如何使用Keil3开发51单片机程序
51单片机是比较简单也是使用比较广泛的一种,初学单片机的朋友51单片机是必学的一门课程。可能很多朋友刚开始不知道怎么创建一个工程,然后写程序,最后再将写好的程序烧写到51单片机开发板上,下面小编将带领大家一步步开启Keil3开发51单片机程序之旅吧!
2017-11-26 08:38:02
6521

基于单片机的音乐盒设计
本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。
2016-01-13 15:38:22
42

单片机学习知识点全攻略(完结篇)
导语:本期是本次单片机学习知识点的最终回,我们会列出前三回一起方便读者回顾学习。本次主要知识点为单片机串口通信、接口和实际案例实践——单片机音乐程序设计的学习。单
2012-06-21 16:19:36
28590


单片机的音乐盒设计制作(C程序)
本内容提供了单片机的 音乐盒 设计制作(C程序)的详细制作过程,当您对单片机知识有一定的基础,看了这篇文章以后,也可以通过一片单片机外加几个常用的电子元件,制作一个属于自己
2011-08-17 11:28:11
1082

用PIC单片机实现音乐播放的实例程序
PIC单片机实现音乐播放的实例程序********************************* PIC单片机实现音乐播放 *********************************
2009-01-16 11:33:11
2116

评论