单片机音乐中音调和节拍的确定方法

合集下载

音符频率

音符频率

附录:音乐模块部分单片机发音原理:单片机演奏音乐基本是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音,但一定要弄清楚两个概念即可,也就是“音调”和“节拍”。

·音调表示一个音符唱多高的频率。

·节拍表示一个音符唱多长的时间。

下面,就此两点,阐述说明:一、音调在音乐中所谓“音调”,其实就是我们常说的“音高”。

在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz,其余与其比较。

f1和f2为两个音符,当这两个音符的频率相差一倍时,也即f2=2×f1时,则称f2比f1高一个倍频程。

在音乐中1与.1,2与.2……,正好相差一个倍频程,在音乐学中称它相差一个八度音。

在一个八度音内,有12个半音。

以1—i八音区为例,12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i 。

这12个音阶的分度基本上是以对数关系来划分的。

如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。

2.确定一个频率所对应的定时器的定时初值的方法以标准音高A为例:标准音高A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs因此,需要在单片机I/O端口输出周期为T =2272μs的方波脉冲,如下图所示。

由上图可知,单片机上对应喇叭的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs此处分两种方式叙述,请比较选用,其实结果相同:Ⅰ.这个时间t也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f0,则定时器的予置初值由下式来确定:t = 12 ×(T ALL– T HL)/ f0式中,T ALL = 216 = 65536,T HL为定时器待确定的计数初值。

简易的单片机音乐控制

简易的单片机音乐控制

简易的单片机音乐控制作者:侯静针对以前转贴的那篇单片机音乐控制,其算法对初学者不是很容易弄懂此,我根据网上提供的资料。

用C语言写了一个《八月桂花香》的音乐控制。

音调是由不同的频率产生的,而每一个音调都是由一个音符和一个节拍组成,音符决定该音调的高低,节拍则决定了该音调是多少拍。

因此,一个音调是由两个字节组成的。

根据音符字节产生该大小次数的延时,声音输出口取反,就可以得到该音调的高低音。

根据设置单位节拍的延时大小,可以控制音乐演唱速度。

因此算法很简单:定义单片机的一个I/O端脚为声音输出口,在规定的节拍内,根据音符字节的大小产生延时,将声音输出口不断的置高置低(即取反),就可以得到该音调。

只要选取合适的单位节拍延时,就可以输出动听的音乐。

算法流程图如下://**********主程序*********#include<reg51.h>#include"SoundPlay.h"uchar data count=0;void init_com(){TMOD=0x01;TH0=0xff;TL0=0xff;EA=1;ET0=1;}void timer0(void) interrupt 1 using 3 {counter=counter+1;//节拍次数计数TH0=0xd8;//定义单位节拍的延时大小TL0=0xef;}void delay(uchar n){uchar i;while(n--)for(i=0;i<125;i++);//延时1毫秒}void sound_delay(uchar n){uchar i;while(n--){for(i=0;i<2;i++);}}void main(){uint i;uchar sound_signal;//定义音符大小uchar sound_pace;//定义节拍大小init_com()//array[i]=0x00 代表歌曲演唱完毕//array[i]=0xff 代表是休止符while(1){i=0;while(array[i]!=0x00){//如果是休止符,延时100ms,并终止本次循环,进入下一个循环 if(array[i]==0xff){TR0=0;i++;delay(100);continue;}//从表中取得音符大小sound_signal=array[i];i=i+1;//从表中取得节拍大小sound_pace=array[i];TR0=1;//当节拍数未达到时候,继续循环,产生该音调的声音while(counter!=sound_pace)0x20, 0x26, 0x20, 0x20, 0x20, 0x30, 0x80, 0xFF, 0x20, 0x20, 0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x20, 0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20, 0x26, 0x40, 0x20, 0x20, 0x2B, 0x20, 0x26, 0x20, 0x20, 0x20, 0x30, 0x80, 0x20, 0x30, 0x1C, 0x10, 0x20, 0x10, 0x1C, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x15, 0x1F, 0x05, 0x20, 0x10, 0x1C, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20,。

调号-音乐上指用以确定乐曲主音高度的符号。

调号-音乐上指用以确定乐曲主音高度的符号。

调号-音乐上指用以确定乐曲主音高度的符号。

很明显一个八度就有12个半音。

A、B、C、D、E、F、G。

经过声学家的研究,全世界都用这些字母来表示固定的音高。

比如,A这个音,标准的音高为每秒钟振动440周。

升C调:1=#C,也就是降D调:1=BD;277(频率)升D调:1=#D,也就是降E调:1=BE;311升F调:1=#F,也就是降G调:1=BG;369升G调:1=#G,也就是降A调:1=BA;415升A调:1=#A,也就是降B调:1=BB。

466,C 262 #C277D 294 #D(bE)311E 330F 349 #F369G 392 #G415A 440. #A466B 494所谓1=A,就是说,这首歌曲的“导”要唱得同A一样高,人们也把这首歌曲叫做A调歌曲,或叫“唱A调”。

1=C,就是说,这首歌曲的“导”要唱得同C一样高,或者说“这歌曲唱C调”。

同样是“导”,不同的调唱起来的高低是不一样的。

各调的对应的标准频率为:单片机演奏音乐时音调和节拍的确定方法经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这样。

在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

在音乐中所谓“音调”,其实就是我们常说的“音高”。

在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。

当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与.1,2(来)与.2……正好相差一个倍频程,在音乐学中称它相差一个八度音。

在一个八度音内,有12个半音。

以1—i八音区为例,12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。

实验五单片机音乐中音调和节拍的确定方法

实验五单片机音乐中音调和节拍的确定方法

调号-音乐上指用‎以确定乐曲‎主音高度的‎符号。

很明显一个‎八度就有1‎2个半音。

A、B、C、D、E、F、G。

经过声学家‎的研究,全世界都用‎这些字母来‎表示固定的‎音高。

比如,A这个音,标准的音高‎为每秒钟振‎动440周‎。

升C调:1=#C,也就是降D‎调:1=BD;277(频率)升D调:1=#D,也就是降E‎调:1=BE;311升F调:1=#F,也就是降G‎调:1=BG;369升G调:1=#G,也就是降A‎调:1=BA;415升A调:1=#A,也就是降B‎调:1=BB。

466,C 262 #C277D 294 #D(bE)311E 330F 349 #F369G 392 #G415A 440. #A466B 494所谓1=A,就是说,这首歌曲的‎“导”要唱得同A‎一样高,人们也把这‎首歌曲叫做‎A调歌曲,或叫“唱A调”。

1=C,就是说,这首歌曲的‎“导”要唱得同C‎一样高,或者说“这歌曲唱C‎调”。

同样是“导”,不同的调唱‎起来的高低‎是不一样的‎。

各调的对应‎的标准频率‎为:单片机演奏‎音乐时音调‎和节拍的确‎定方法经常看到一‎些刚学单片‎机的朋友对‎单片机演奏‎音乐比较有‎兴趣,本人也曾是‎这样。

在此,本人将就这‎方面的知识‎做一些简介‎,但愿能对单‎片机演奏音‎乐比较有兴‎趣而又不知‎其解的朋友‎能有所启迪‎。

一般说来,单片机演奏‎音乐基本都‎是单音频率‎,它不包含相‎应幅度的谐‎波频率,也就是说不‎能象电子琴‎那样能奏出‎多种音色的‎声音。

因此单片机‎奏乐只需弄‎清楚两个概‎念即可,也就是“音调”和“节拍”。

音调表示一‎个音符唱多‎高的频率,节拍表示一‎个音符唱多‎长的时间。

在音乐中所‎谓“音调”,其实就是我‎们常说的“音高”。

在音乐中常‎把中央C 上‎方的A音定‎为标准音高‎,其频率f=440Hz‎。

当两个声音‎信号的频率‎相差一倍时‎,也即f2=2f1时,则称f2比‎f1高一个‎倍频程, 在音乐中1‎(do)与.1,2(来)与.2……正好相差一‎个倍频程,在音乐学中‎称它相差一‎个八度音。

单片机演奏音乐音调和节拍确定方法

单片机演奏音乐音调和节拍确定方法

单片机演奏音乐时音调和节拍的确定方法单片机演奏音乐时音调和节拍的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

在音乐中所谓“音调”,其实就是我们常说的“音高”。

在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。

当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与i ……正好相差一个倍频程,在音乐学中称它相差一个八度音。

在一个八度音内,有12个半音。

以1—i八音区为例,12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。

这12个音阶的分度基本上是以对数关系来划分的。

如果我们知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。

知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。

那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例:A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs这个时间t也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f0,则定时器的予置初值由下式来确定:t = 12 *(TALL – THL)/ f0式中TALL = 2^16 = 65536,THL为定时器待确定的计数初值。

单片机的音乐播放器设计(C程序及注释)[详解音调、节拍的确定]

单片机的音乐播放器设计(C程序及注释)[详解音调、节拍的确定]

基于单片机的音乐盒设计【摘要】本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。

该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。

使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计3种。

播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。

本设计利用KEIL 编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。

目录1.设计方案 (2)2 系统总体方案介绍 (2)2.1系统组成框图 (2)2.2音乐盒的功能结构图 (2)3硬件设计 (3)3.1总体设计框图 (3)3.2各部分硬件设计及其原理............................. 错误!未定义书签。

3.2.2 LED显示电路设计与原理 (3)3.2.3 时钟振荡电路................................... 错误!未定义书签。

3.3硬件电路图及功能 (3)4软件设计 (4)4.1音调、节拍以及编码的确定方法 (4)4.1.1 音调的确定 (5)4.1.2 节拍的确定 (6)4.1.3 编码 (7)4.2软件程序设计 (7)4.2.1 程序流程图及相应代码块 (7)5调试................................................... 错误!未定义书签。

5.1检查硬件连接....................................... 错误!未定义书签。

5.2检查软件系统....................................... 错误!未定义书签。

5.3测试结果 (12)5.3.1.总体运行图 (12)5.3.2.花样灯3种花样图 (13)附录程序源代码及注释 (13)1.设计方案设计一个基于AT89C51系列单片机的音乐盒,利用按键切换演奏出不同的乐曲。

基于51单片机的音乐盒设计

基于51单片机的音乐盒设计

课程设计:嵌入式系统应用题目名称:基于51单片机的音乐盒设计1设计的任务(包含设计的内容和设计的目标)设计内容:本设计是一个基于AT89C52系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。

该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器和点阵组成。

使用按键控制音乐盒,三个用来切换歌曲,一个用来暂停音乐和开启LED点阵,一个用来从暂停位置开始播放音乐。

本音乐盒共有三首歌曲,点阵式样有四种。

播放歌曲时,蜂鸣器发出某个音调。

本设计利用KEIL编程软件对音乐盒源程序进行编程并调试。

设计目标:初始:点阵显示作者信息;按键1:播放歌曲1;按键2:播放歌曲2;按键3:播放歌曲3;按键A:暂停播放,点阵显示当前歌曲的名字;按键B:从暂停位置继续播放。

2 设计的过程2.1 基本结构1、总体设计框图2、AT89C52介绍8K 在系统可编程Flash 使用Atmel 与工业80C51Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

Flash,25632 位I/O 口6向量2可降至CPU 停止工中断继续工作。

掉电保护方式下,RAM P0 口:P0口是一个8口。

作为输出口,每位能驱TTL P0端口写“1”P08P0P0P1 口:P1 8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。

对P1 端口写“1”此时可以作为输入的原因,将输出电流(IIL)P1.0和P1.1(P1.0/T2)计数器2 的触发输入(P1(定时器的捕捉/重载触发信号和方向控制)P1.5 MOSIP1.6 MISOP1.7 SCKP2 口:P2 8 位双向I/O 口,P2 输出缓冲器能驱动 4 个TTL 逻辑电平。

对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入16MOVX @DPTR)8位地址(如MOVX @RI在flash编程和校验时,P28 位双向I/O 口,p3 输出缓冲器能驱动4 个TTL 逻辑电平。

单片机辨音识键奏乐方案

单片机辨音识键奏乐方案

单片机辨音识键奏乐方案
摘要:
1.单片机辨音识键奏乐方案的背景和需求
2.方案的设计思路和实现方法
3.方案的具体实现过程
4.方案的优点和可能的改进方向
正文:
随着科技的发展,人工智能技术在日常生活中的应用越来越广泛。

其中,单片机辨音识键奏乐方案就是一项结合了人工智能技术和音乐演奏的艺术。

一、单片机辨音识键奏乐方案的背景和需求
在音乐演奏中,演奏者需要通过按键来控制音高和节奏。

但是,对于一些初学者来说,正确的按键顺序和节奏感往往是一项挑战。

因此,我们需要一种能够自动识别按键并演奏出正确音高的方案。

二、方案的设计思路和实现方法
单片机辨音识键奏乐方案的设计思路是通过人工智能技术,识别按键的音高,然后根据识别的音高,控制乐器演奏出正确的音高。

具体的实现方法主要包括两个部分:一是通过单片机连接乐器和按键,实现按键和音高的对应;二是通过人工智能技术,识别按键的音高,并根据识别的音高,控制乐器演奏出正确的音高。

三、方案的具体实现过程
在具体实现过程中,首先需要通过编程,设置单片机对按键的识别和音高
的控制。

然后,通过人工智能技术,对按键的音高进行识别。

最后,根据识别的音高,控制乐器演奏出正确的音高。

四、方案的优点和可能的改进方向
单片机辨音识键奏乐方案的优点在于,它能够帮助初学者正确地演奏音乐,提高他们的学习效果。

同时,它也能够为音乐创作提供新的可能。

在未来的改进中,我们可以进一步提升方案的识别精度,使得演奏出的音乐更加精准。

音符频率

音符频率

附录:音乐模块部分单片机发音原理:单片机演奏音乐基本是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音,但一定要弄清楚两个概念即可,也就是“音调”和“节拍”。

·音调表示一个音符唱多高的频率。

·节拍表示一个音符唱多长的时间。

下面,就此两点,阐述说明:一、音调在音乐中所谓“音调”,其实就是我们常说的“音高”。

在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz,其余与其比较。

f1和f2为两个音符,当这两个音符的频率相差一倍时,也即f2=2×f1时,则称f2比f1高一个倍频程。

在音乐中1与.1,2与.2……,正好相差一个倍频程,在音乐学中称它相差一个八度音。

在一个八度音内,有12个半音。

以1—i八音区为例,12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i 。

这12个音阶的分度基本上是以对数关系来划分的。

如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。

2.确定一个频率所对应的定时器的定时初值的方法以标准音高A为例:标准音高A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs因此,需要在单片机I/O端口输出周期为T =2272μs的方波脉冲,如下图所示。

由上图可知,单片机上对应喇叭的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs此处分两种方式叙述,请比较选用,其实结果相同:Ⅰ.这个时间t 也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f 0,则定时器的予置初值由下式来确定:t = 12 ×(T ALL – T HL )/ f 0式中,T ALL = 216 = 65536,T HL 为定时器待确定的计数初值。

单片机设计——八音盒

单片机设计——八音盒

8051八音盒课程设计任务书8051八音盒本设计利用8051单片机结合内部定时器LCD设计一个八音盒, 按下单键可以演奏预先设置的歌曲旋律。

本设计可以学习8051定时器程序设计, 按键扫描及歌曲旋律简单直觉式输入法的设计方法。

其基本功能为:1使用LCD显示器来显示目前演奏的歌曲编号;2具有16个按键操作来选择演奏哪一首歌曲;3内建10首歌曲旋律, 按下单键可以演奏歌曲;4演奏时可以按键中断。

程序执行后工作指示LED闪动, 表示程序开始执行, 按下单键0~9便可以演奏歌曲, 歌曲演奏中, 可以按键中断。

设计项目简介(1)设计思路:(2)选择8051单片机, 通过T0定时中断, 并配合P3.0引脚输出音频频率。

(3)P3.0引脚输出接扬声器。

(4)通过P3.4引脚接入中断按键, 进行中断(5)通过P0接8155外扩端口。

(6)通过8155PA口接LCD驱动电路芯片, 再接显示器。

8155的PB,PC口接键盘, 输入歌曲号。

音符产生方法:不同的音调有不同的频率。

频率不同, 音调也就不同。

利用定时器, 使其工作在模式1, 定时中断, 然后控制P3.0引脚的输出每次取反, 就可以在P3.0的引脚输出相应的方波频率。

改变计数初值, 就改变了频率。

定时器的定时时间等于半个周期, 定时时间到就输出脉冲取反, 重复此过程, 就可在P3.0引脚得到一音频的脉冲。

如:中音1的频率=523HZ, 周期T=1/523=1912us;定时器的定时时间为: T/2=1912/2us=956us;计算得TH0,TL0的计数初值THTL=64580下面是个音符计数初值节拍产生方法:建立曲谱编码表:编谱用8位编码, 高4位代表音符, 低4位代表节拍。

如5 6中音5, 中音6, 都是1/2拍, 则编码为:82H 92H电路原理图:系统功能简介:8051八音盒具有4乘4键盘, 由于选歌旋律。

有LCD显示, 显示当前正在播放的旋律。

有中断按键, 在单片机播放旋律时可以按中断暂停, 再选歌曲旋律。

基于51单片机两种音乐编码的比较及用法

基于51单片机两种音乐编码的比较及用法

基于51单⽚机两种⾳乐编码的⽐较及⽤法基于51单⽚机的两种⾳乐编码⽅法的⽐较及⽤法(建议对这⽅⾯有兴趣的朋友们要先看懂了解⾳乐简谱,包括⾼⾳、中⾳、低⾳,节拍、延时,及各个⾳调的频率,⽹上有很多资料)1⽅法:⽤51单⽚机⾳乐编码器软件(Music encode)输出⼗六进制数表⽰:曲谱存贮格式unsigned char code MusicName{⾳⾼,⾳长,⾳⾼,⾳长...., 0,0}; 末尾:0,0 表⽰结束(Important) (其实软件“关于”⾥的源代码有使⽤⽅法的介绍)⾳⾼由三位数字组成:个位是表⽰1~7 这七个⾳符⼗位是表⽰⾳符所在的⾳区:1-低⾳,2-中⾳,3-⾼⾳;百位表⽰这个⾳符是否要升半⾳: 0-不升,1-升半⾳。

⾳长最多由三位数字组成:个位表⽰⾳符的时值,其对应关系是:|数值(n): |0 |1 |2 |3 | 4 | 5 | 6|⼏分⾳符: |1 |2 |4 |8 |16 |32 |64 ⾳符=2^n⼗位表⽰⾳符的演奏效果(0-2): 0-普通,1-连⾳,2-顿⾳百位是符点位: 0-⽆符点,1-有符点2⽅法:编码为⼗六进制(⾼四位表⽰⾳调编码,低四位表⽰节拍编码)(各⾳调频率及初值计算定时器初值⽹上有,在此不叙说)do re mi fa so la si分别编码为1~7,重⾳do编为8,重⾳re编为9,停顿编为0。

如0x24,表⽰低⾳LA、1拍。

以此类推表4.4简谱对应的简谱码、T值、节拍数简谱发⾳简谱码T值节拍码节拍数5 低⾳SO 1 64260 1 1/4拍6 低⾳LA 2 64400 2 2/4拍7 低⾳TI 3 64524 3 3/4拍1 中⾳DO 4 64580 4 1拍2 中⾳RE 5 64684 5 1⼜1/4拍3 中⾳MI 6 64777 6 1⼜1/2拍4 中⾳FA 7 64820 8 2拍5 中⾳SO 8 64898 A 2⼜1/2拍6 中⾳LA 9 64968 C 3拍7 中⾳TI A 65030 F 3⼜3/4拍3 ⾼⾳MI D 651574 ⾼⾳FA E 651785 ⾼⾳SO F 65217总结:通过两种⽅法仿真⽐较,这两种⽅法各有优劣,⽅法1⽤Music encode编码简单不需要对简谱有深⼊了解但蜂鸣器发⾳不理想,⽤⽅法2编码需要看懂简谱及要知道各⾳调节拍所对应的编码号但蜂鸣器⽐较动听,柔和(后⾯附有两种⽅法的仿真代码和原理图)(想要Music encode软件的朋友可以留下邮箱,我发给你们,⽹上也有的)⽅法1代码://51单⽚机播放⾳乐库⽂件/**************************************************************************SOUND PLAY FOR 51MCUCOPYRIGHT (c) 2005 BY JJJ.-- ALL RIGHTS RESERVED --File Name: SoundPlay.hAuthor: Jiang Jian JunCreated: 2005/5/16Modified: NORevision: 1.0******************************************************************************* //*说明**************************************************************************曲谱存贮格式unsigned char code MusicName{⾳⾼,⾳长,⾳⾼,⾳长...., 0,0}; 末尾:0,0 表⽰结束(Important)⾳⾼由三位数字组成:个位是表⽰1~7 这七个⾳符⼗位是表⽰⾳符所在的⾳区:1-低⾳,2-中⾳,3-⾼⾳;百位表⽰这个⾳符是否要升半⾳: 0-不升,1-升半⾳。

音符频率

音符频率

附录:音乐模块部分单片机发音原理:单片机演奏音乐基本是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音,但一定要弄清楚两个概念即可,也就是“音调”和“节拍”。

·音调表示一个音符唱多高的频率。

·节拍表示一个音符唱多长的时间。

下面,就此两点,阐述说明:一、音调在音乐中所谓“音调”,其实就是我们常说的“音高”。

在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz,其余与其比较。

f1和f2为两个音符,当这两个音符的频率相差一倍时,也即f2=2×f1时,则称f2比f1高一个倍频程。

在音乐中1与.1,2与.2……,正好相差一个倍频程,在音乐学中称它相差一个八度音。

在一个八度音内,有12个半音。

以1—i八音区为例,12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i 。

这12个音阶的分度基本上是以对数关系来划分的。

如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。

2.确定一个频率所对应的定时器的定时初值的方法以标准音高A为例:标准音高A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs因此,需要在单片机I/O端口输出周期为T =2272μs的方波脉冲,如下图所示。

由上图可知,单片机上对应喇叭的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs此处分两种方式叙述,请比较选用,其实结果相同:Ⅰ.这个时间t也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f,则定时器的予置初值由下式来确定:t = 12 ×(TALL – THL)/ f式中,TALL = 216= 65536,THL为定时器待确定的计数初值。

单片机实现MIDI音乐知识介绍

单片机实现MIDI音乐知识介绍

单片机实现MIDI音乐相关知识介绍1.乐音基础知识2.midi知识3.乐理知识4.乐器分类和波形乐音基础知识:从听觉角度来讲,声音主要由四种属性——高低、长短、强弱、色彩(即常说的音色)。

其中:1.音的高低是由发音源在一定时间内的振动次数(频率)来决定的。

振动次数越多,频率越高,音也就越高。

反之则低;2.音的长短是由发音源振动时所持续的时间来决定的。

持续的时间越长,音越长,反之则短;3.音的强弱取决于由发音源的振动幅度(振幅),幅度越大,音越强,幅度小音就弱;4.而发音源的材质、形状及泛音数的多少则决定了音色。

声音的以上这四种属性,在音乐的表现中都是非常重要的,其中又以“ 高低”和“长短”最为重要。

比如一首歌曲,本来是由人声演唱的,但是如果我们把它改编为器乐曲、并且减小音量,虽然改变了音的长短和音色,但是仍然可以很容易地分辨出它的旋律。

但是,如果我们把这首乐曲中每个声音的长短、高低随意的改变,其原来的旋律马上会受到严重的破坏——面目全非呀!由此可见,无论是创作、演奏、歌唱的时候都应该对声音的高低(音高)和长短(即后面要谈到的“时值”、“节奏”)加以特别的注意。

由于物体在振动的时候并不是总是规则的,所以声音又有“乐音”和“噪音”之分。

规则振动发出的是乐音,反之则称为噪音。

在音乐中,用的最多的是乐音,但是这并不代表噪音就不属于音乐的组成部分,乐队中的大部分节奏打击乐器所发出的声音就属于噪音,但它同样具有非常丰富的音乐表现力,甚至成为了现代通俗音乐中不可缺少的部分。

最后,还需要再提到的一点是——我们平时听到的某一个音都不只是一个单独的纯正的音在响,而是许多个声音的结合,我们称之为“复合音”。

这是因为物体在振动的时候不仅整体在振动,而且各个部分也在振动。

以吉他为例,在我们拨响一根琴弦地的同时,这根琴弦的1/2、1/3、1/4……各个部分也都在分别振动。

这种由琴弦(发音源)整体振动产生的声音称为“基音”,是最容易被人耳听到的音。

单片机实现MIDI音乐知识介绍

单片机实现MIDI音乐知识介绍

单片机实现MIDI音乐知识介绍单片机实现MIDI音乐相关知识介绍1.乐音基础知识2.midi知识3.乐理知识4.乐器分类和波形乐音基础知识:从听觉角度来讲,声音主要由四种属性——高低、长短、强弱、色彩(即常说的音色)。

其中:1.音的高低是由发音源在一定时间内的振动次数(频率)来决定的。

振动次数越多,频率越高,音也就越高。

反之则低;2.音的长短是由发音源振动时所持续的时间来决定的。

持续的时间越长,音越长,反之则短;3.音的强弱取决于由发音源的振动幅度(振幅),幅度越大,音越强,幅度小音就弱;4.而发音源的材质、形状及泛音数的多少则决定了音色。

声音的以上这四种属性,在音乐的表现中都是非常重要的,其中又以“ 高低”和“长短”最为重要。

比如一首歌曲,本来是由人声演唱的,但是如果我们把它改编为器乐曲、并且减小音量,虽然改变了音的长短和音色,但是仍然可以很容易地分辨出它的旋律。

但是,如果我们把这首乐曲中每个声音的长短、高低随意的改变,其原来的旋律马上会受到严重的破坏——面目全非呀!由此可见,无论是创作、演奏、歌唱的时候都应该对声音的高低(音高)和长短(即后面要谈到的“时值”、“节奏”)加以特别的注意。

由于物体在振动的时候并不是总是规则的,所以声音又有“乐音”和“噪音”之分。

规则振动发出的是乐音,反之则称为噪音。

在音乐中,用的最多的是乐音,但是这并不代表噪音就不属于音乐的组成部分,乐队中的大部分节奏打击乐器所发出的声音就属于噪音,但它同样具有非常丰富的音乐表现力,甚至成为了现代通俗音乐中不可缺少的部分。

最后,还需要再提到的一点是——我们平时听到的某一个音都不只是一个单独的纯正的音在响,而是许多个声音的结合,我们称之为“复合音”。

这是因为物体在振动的时候不仅整体在振动,而且各个部分也在振动。

以吉他为例,在我们拨响一根琴弦地的同时,这根琴弦的1/2、1/3、1/4……各个部分也都在分别振动。

这种由琴弦(发音源)整体振动产生的声音称为“基音”,是最容易被人耳听到的音。

单片机控制蜂鸣器唱歌的原理

单片机控制蜂鸣器唱歌的原理

单片机控制蜂鸣器唱歌的原理Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

1)音调的确定音调就是我们常说的音高。

它是由频率来确定的!我们可以查出各个音符所对应的相应的频率,那么现在就需要我们来用51来发出相应频率的声音!我们常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的 I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。

那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A 为例:A 的频率f = 440 Hz, 其对应的周期为:T = 1/ f = 1/440 =2272μs那么,单片机上对应蜂鸣器的I/O 口来回取反的时间应为:t = T/2 = 2272/2 = 1136 μs ,也就是清零、置位在一个周期内完成.这个时间t 也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f0 ,则定时器的予置初值由下式来确定:t = 12 * (TALL – THL)/ f0 式中TALL = 216= 65536,THL为定时器待确定的计数初值。

因此定时器的高低计数器的初值为:TH =THL/ 256 = ( TALL – t* f0/12) / 256TL = THL % 256 = ( TALL – t* f0/12) %256将t=1136 μs 代入上面两式(注意:计算时应将时间和频率的单位换算一致)即可求出标准音高A 在单片机晶振频率f0=12Mhz,定时器在工作方式1 下的时器高低计数器的予置初值为:TH440Hz = (65536 – 1136 * 12/12) /256 = FBHTL440Hz = (65536 – 1136 * 12/12)%256 = 90H就这样,我们通过延时,发出了我们所需要的频率以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示:2)节拍的确定在一张乐谱中,我们经常会看到这样的表达式,如1=C (4/4) 、1=G(3/4) ……等等,这里1=C (4/4),1=G(3/4) 表示乐谱的曲调,和我们前面所谈的音调有很大的关联,4/4、3/4 就是用来表示节拍的。

单片机音乐盒设计

单片机音乐盒设计

单片机音乐盒设计陕西理工学院毕业设计基于单片机的音乐盒设计本设计是一个基于89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路的变化花样,本音乐盒共有两首歌曲,花样灯花样共计3种播放歌曲时,蜂鸣器发出某个音调,与之对应的亮起本设计利用编程软件对音乐盒源程序进行编程并调试,配合仿真软件对硬件进行仿真调试,节约了设计时间音乐盒;89C51单片机;;;音调陕西理工学院毕业设计目录引言 1 1概述 2 课题意义 2 设计方案 2 研究内容 2 2 系统总体方案介绍 3 系统组成框图 3 音乐盒的功能结构图 3 主要设计软件介绍 3 软件简介 3 简介 4 3硬件设计 5 总体设计框图 5 各部分硬件设计及其原理 5 89C51简介5 显示电路设计与原理 6 时钟振荡电路 6 硬件电路图及功能 6 4软件设计 8 音调、节拍以及编码的确定方法 8 音调的确定 8 节拍的确定 9 编码 10 软件程序设计 11 程序流程图及相应代码块 11 程序源代码 15 5调试 16 检查硬件连接 16 检查软件系统 16 测试结果 16 .总体运行图 16 .花样灯3种花样图 17 6 总结 18 致谢 19 参考文献 20 科技外文文献 21 中文译文 24 附录A 程序源代码及注释 26陕西理工学院毕业设计引言21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值共 32 页陕西理工学院毕业设计1概述本设计是以89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中对于不同型号的单片机只需要相应的改变一下地址即可该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机和音乐爱好者提供了很好的借鉴课题意义音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”音乐盒有着多年的发展历史,是人类文明发展的历史见证传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动铁桶上的铁钉撞击铁片制成的琴键,从而发出声音但是,机械式的音乐盒体积比较大,比较笨重,且发音单调水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调另外,机械音乐盒放音时为了让音色稳定必须放平不能动摇,而且价格昂贵,不能实现大批量生产本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便根据存储容量的大小,可以尽可能多的存储歌曲另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富设计方案设计一个基于89C51系列单片机的音乐盒,利用按键切换演奏出不同的乐曲蜂鸣器发出某个音调,与之相对应的亮起使用两个按键,一个用来切换歌曲,另一个切换八路的变化花样研究内容1)电路有两种工作模式:演奏音乐模式和花样灯模式演奏音乐模式:演奏完整的一首的歌曲,八路随着音乐变化花样灯模式:八路变化出各种花样,蜂鸣器随着发出“嘀嘀”声 2)按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲 3)按下按键2进入花样灯模式,再按切换花样,共三种花样此电路的程序只占用了1K左右,可编制更多的音乐和花样,使系统的功能更加强大共 32 页陕西理工学院毕业设计2 系统总体方案介绍系统组成框图音乐盒的系统结构以89C51单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、模块组成单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音系统组成框图如图所示图系统组成框图音乐盒的功能结构图音乐盒的功能结构如图所示1负责切换播放歌曲,播放歌曲共2首,分别是挥着翅膀的女孩和寂寞沙洲冷2负责切换显示花样,显示花样共3种,第一种顺序显示,第二种由两边向中间移动然后向两边移动,第三种循环显示图音乐盒功能结构图主要设计软件介绍本设计利用编程软件对音乐盒源程序进行编程并调试,配合仿真软件对硬件进行仿真调试,两种软件的简介如下:软件简介共 32 页陕西理工学院毕业设计软件是英国公司出版的工具软件它不仅具有其它工具软件的仿真功能,还能仿真单片机及外围器件它是目前最好的仿真单片机及外围器件的工具虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐是世界上著名的工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到设计,真正实现了从概念到产品的完整设计是目前世界上唯一将电路仿真软件、设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持、HC11、10/12/16/18/24/30/33、、、和等,XX年即将增加和系列处理器,并持续增加其他系列处理器模型在编译方面,它也支持、和等多种编译器简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了机器汇编是通过汇编软件将源程序变为机器码,用于-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,软件是目前最流行开发-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持即可看出提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部份组合在一起运行软件需要或以上的,16MB或更多、20M以上空闲的硬盘空间、98、NT、、等操作系统掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍 C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解在开发大型软件时更能体现高级语言的优势共 32 页陕西理工学院毕业设计3硬件设计总体设计框图图总体设计框图各部分硬件设计及其原理 89C51简介89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能 8位微处理器,俗称单片机89C是一种带2K字节闪存可编程可擦除只读存储器的单片机单片机的可擦除只读存储器可以反复擦除次该器件采用高密度非易失存储器制造技术制造,与工业标准的-51指令集和输出管脚相兼容由于将多功能8位和闪烁存储器组合在单个芯片中,的89C51是一种高效微控制器,89C是它的一种精简版本89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案外形及引脚排列如图所示图 89C51系列单片机共 32 页陕西理工学院毕业设计显示电路设计与原理显示电路是由8个发光二极管组成,连接方式为共阳极,接到单片机的P1口,若为低电平,可使亮起发光二极管的亮、灭由内部程序控制,8个发光二极管分别对应不同的音阶,所以会随着音阶的变化按规律亮、灭时钟振荡电路89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚1和2分别是该放大器的输入端和输出端这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性如果使用石英晶体,我们推荐电容使用30PF10PF,而如果使用陶瓷振荡器建议选择40PF10PF用户也可以采用外部时钟采用外部时钟的电路如图示这种情况下,外部时钟脉冲接到1端,即内部时钟发生器的输入端,2则悬空由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求振荡器电路图如下:图单片机内部、外部振荡电路硬件电路图及功能总体硬件电路实现功能如下,如图所示1)电路中用、控制按键 2) ~控制 3)控制蜂鸣器4)电路为12晶振频率工作,起振电路中C1、C2均为30PF共 32 页陕西理工学院毕业设计图硬件电路图共 32 页陕西理工学院毕业设计4软件设计在本程序中设置了两个标志——1和2,分别初始化为1和0按键1使得1在1和2之间切换,按键2使得2在1~4之间切换程序检测1的值,1等于1时播放第一首歌曲,等于2时播放第二首另一方面根据2的值来切换的花样1和2的值是互斥的,设置1等于1、2时,2同时设置为0;设置2等于1~4时,1也同时设置为0音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间音调的确定不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成、RE、MI、FA、、LA、SI即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”两个音之间的距离有两个“半音”,就叫“全音”在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音例如高音的频率刚好是中音的频率的一倍,中音的频率刚好是低音频率的一倍;同样的,高音RE的频率刚好是中音RE的频率的一倍,中音RE的频率刚好是低音RE频率的一倍 1)要产生音频脉冲,只要算出某一音频的周期,然后将此周期除以2,即为半周期的时间利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲 2)利用89C51的内部定时器使其工作在计数器模式1下,改变计数值TH0及TL0以产生不同频率的方法此外结束符和休止符可以分别用代码00H和来表示,若查表结果为00H,则表示曲子终了;若查表结果为,则产生相应的停顿效果 3)例如频率为Hz,其周期T=1/=,因此只要令计数器计时/1=,在每次技术次时将I/O反相,就可得到中音计数脉冲值与频率的关系公式如下: N=Fi2FrN:计算值; Fi:内部计时一次为1,故其频率为1; 4)其计数值的求法如下:T=-N=-Fi2Fr例如:设K=,F==Fi=1,球低音中音高音的的计算值T=-N=-Fi2Fr=-2Fr=-/Fr低音的T=-/= 低音的T=-/= 低音的T=-/=5) C调各音符频率与计数值T的对照表如表所示共 32 页陕西理工学院毕业设计表 C调各音符频率与计数值T的对照表低音﹟ Re Re﹟ Mi Fa Fa﹟﹟ La La﹟ Si频率T参数中音﹟ Re Re﹟ Mi Fa Fa﹟﹟ La La﹟ Si频率T参数 97 91 86 81 77 72 68 64 61高音﹟ Re Re﹟ Mi Fa Fa﹟﹟ La La﹟ Si频率T 57 54 51 48 45 43 41 38 36 34 32 30参数 57 54 51 48 45 43 41 38 36 34 32 30节拍的确定若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律,而且可以调节各个音的快满度“节拍”即,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚若1拍实,则1/4 拍为至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好音持续时间的长短即时值,一般用拍数表示休止符表示暂停发音一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系表节拍与节拍码对照节拍码 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拍节拍码 1 2 3 4 5 6 8 A C节拍数 1/8拍 1/4拍 3/8拍 2/1拍 5/8拍 3/4拍 1拍 1又1/4拍 1又1/2拍每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,图为节拍码的对照如果1拍为秒,1/4拍实秒,只要设定延迟时间就可求得节拍的时间假设1/4拍为1,则1拍应为4,以此类推所以只要求得1/4拍的时间,其余的节拍就是它的倍数,如图为1/4和1/8节拍的时间设定共 32 页陕西理工学院毕业设计表 1/4和1/8节拍的时间设定曲调值调4/4 调3/4 调2/4毫秒毫秒毫秒曲调值调4/4 调3/4 调2/462毫秒 94毫秒毫秒编码re mi fa la si分别编码为1~7,重音编为8重音re编为9,停顿编为0播放长度以十六分音符为单位,一拍即四分音符等于4个十六分音符,编为4其它的播放时间以此类推音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码以0作为曲谱的结束标志举例1:音调发音长度为两拍,即二分音符,将其编码为0x18 举例2:音调re发音长度为半拍,即八分音符,将其编码为0x22歌曲播放的设计先将歌曲的简谱进行编码,储存在一个数据类型为的数组中程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时表简谱对应的简谱码、T值、节拍数简谱 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5发音低音低音LA 低音TI 中音中音RE 中音MI 中音FA 中音中音LA 中音TI 高音高音RE 高音MI 高音FA 高音简谱码 1 2 3 4 5 6 7 8 9 A B C D E FT值节拍码 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拍第 10 页共 32 页陕西理工学院毕业设计软件程序设计程序流程图及相应代码块主程序流程图开始初始化标志位==0标志位==1标志位==2花样灯1花样灯1标志位==3花样灯1播放音乐图主程序流程图主程序代码:{ x; 1=0;//流水灯无花样 2=1;//唱第一首歌 P34=0;//选取矩阵键盘的一列EA=1;//开总中断0=1;//开外部中断0 0=1;//外部中断0下降沿触发方式1=1;//开外部中断1 1=1;//外部中断1下降沿触发方式 =0x01;//定时器0工作在方式1 TH0=0; TL0=0; ET0=1;第 11 页共 32 页陕西理工学院毕业设计(1) { (1!=0) //音乐停止,花样灯开始按照花样闪烁 { (1) { 1: (x=0;x<14;x++) { =1; P1=1[x]; ; 1(); =0; (1!=1) ; } ; 2: (x=0;x<14;x++) { =1; P1=2[x]; ; 1(); =0; (1!=2) ; } ; 3: (x=0;x<16;x++) { =1; P1=3[x]; ; 1(); =0; (1!=3) ; } ; } }第 12 页共 32 页陕西理工学院毕业设计{ ; 1(); } } }播放音乐子程序流程图图播放音乐子程序流程图第 13 页共 32 页陕西理工学院毕业设计播放音乐子程序代码:{ ; jp;//jp是简谱 i=0; (1) { (2==0) { ; } (2==1) //选曲=[i]; // 播放千年之恋 (2==2) =[i]; // 播放寂寞沙洲冷 (==0) //结束标志 ; jp=/16; //取数的高4位 =1; P1=[jp]; =0; (jp!=0) { =[jp*2]; =[jp*2+1]; } { TR0=0; fm=1;//关蜂鸣器 } (%16); //取数的低4位 TR0=0; //唱完一个音停10MS fm=1; 1(10); TR0=1; i++; } TR0=0; fm=1; }延时程序代码:( z) {xy;第 14 页共 32 页//延时MS即十六分音符(x=z;x>0;x--)(y=;y>0;y--);}1( z) //延时1MS{ xy; (x=z;x>0;x--)(y=;y>0;y--);}程序源代码陕西理工学院毕业设计第 15 页共 32 页陕西理工学院毕业设计5调试检查硬件连接在检查各硬件管脚是否连接正确,线路逻辑是否正确,例如:晶振电路的连接,复位电路是否设计正确检查软件系统1.根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是否也正确2.将所有程序组织起来,在软件环境下运行,检查程序是否正确通过对硬件和软件系统的认真检查,反复测试,如果没有出现问题即可把源程序编译成文件装载到单片机中,对硬件进行仿真测试结果.总体运行图图系统总体运行图第 16 页共 32 页陕西理工学院毕业设计.花样灯3种花样图由于截图只能看到静态图,不能看到整体图样,下面画图说明:图花样灯第一种花样灯显示方式为:从D1移向D2,然后D1熄灭,再从D2移向D3,然后D2熄灭,以此类推,往复循环图第一种花样第二种花样灯显示方式为:从两边向中间移动,首先从D1移向D8,再从D8移向D2,以此类推,往复循环具体如图图第2种花样第三种花样灯显示方式为:从D1移向D2,然后D1熄灭,再从D2移向D3,然后D2熄灭,以此往复循环与第一种方式的不同之处为:当D1移向D2时,D1不熄灭,再从D2移向D3时,D2也不熄灭,以此类推图第3中花样第 17 页共 32 页陕西理工学院毕业设计6 总结单片机的设计至今为止已经进入了令人鼓舞的阶段,在进行了长达两个多月的时间的摸索与实验,使我不仅仅是对于单片机入门软件与硬件的常用设计与功能,还使我对于一项设计研究的制作过程所需要的详细步骤和具体的实现方法的力度的掌握当然在这次宝贵的毕业设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括这次难忘的活动我觉得再合适不过了但是,光是完成了作品还是不可以自我满足的,在从一开始的时候就怀着将作品制作得更加人性化,更加令人满意,更加地使功能完美又方便地被应用领域这个最终目的下,随着对单片机这门学科的认识加深,到达了拓展的程度,我想这个目的将在不远的时期内被实现总之,这次设计从软件编写、调试到软硬件联机调试,我倾注了大量的时间和心血真是曾经为程序的编写而冥思查找过,曾经为无法找出错误而郁闷苦恼过,也曾经为某一功能不能实现而犹豫彷徨过,但最终我成功了我不仅品味到了结果的喜悦,更明白了过程的弥足珍贵第 18 页共 32 页陕西理工学院毕业设计致谢感谢我的导师冯永政老师,他们严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他们循循善诱的教导和不拘一格的思路给予我无尽的启迪感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿感谢我的室友们,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽四年了,仿佛就在昨天四年里,我们没有红过脸,没有吵过嘴,没有发生上大学前所担心的任何不开心的事情只是今后大家就难得再聚在一起吃每年元旦那顿饭了吧,没关系,各奔前程,大家珍重我们在一起的日子,我会记一辈子的在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!第 19 页共 32 页陕西理工学院毕业设计参考文献[1] 李建忠单片机原理及应用[M],西安电子科技大学出版社,[2] 黄智伟全国大学生电子设计竞赛系统设计[M],北京:北京航空航天大学出版社,[3] 黄智伟凌阳单片机课程设计指导[M],北京:北京航空航天大学出版社, [4] 李广弟,朱月秀,王秀山单片机基础[M],北京:北京航空航天大学出版社,[5] 赵曙光,郭万有,杨颂华可编程逻辑器件原理开发与应用[M]西安:西安电子科技大学, [6] 候伯亨硬件描述语言与数字逻辑电路设计[M] 西安:西安电子科技大学出版社, [7] 康华光模拟电子技术基础(第四版)[M] 武汉:华中理工大学出版社,[8] 谭浩强C语言程序设计[M],北京:清华大学出版社,[9] 陈小忠,黄宁单片机接口技术实用子程序[M],北京:北京人民邮电出版社,[10] 欧伟明,周春临,瞿遂春电子信息系统设计[M],西安电子科技大学出版社,[11] 贾立新,王涌电子系统设计与实践[M],北京:清华大学出版社, [12] 罗亚非凌阳16位单片机应用基础[M],北京:北京航空航天大学出版社, [13] 雷思孝凌阳单片机原理及实用技术[M],西安电子科技大学,第 20 页共 32 页陕西理工学院毕业设计科技外文文献µ2Cµ2 ™C51 C C A51BL51 / C51 A5151 OH51 -。

用单片机实现电子音调的发声

用单片机实现电子音调的发声

用单片机实现电子音调的发声一.引言用51单片机编制程序,利用P1.0输出不同频率的脉冲通过扬声器发出不同频率音调。

利用74LS244和开关量,决定输出音调。

二.硬件电路及连线PI0-PI7接K1-K8,P10接SD。

CS244接8200H。

模块中的短路套套在1,2两端(上端)。

三.设计说明1.音阶由不同频率的方波产生,音阶与频率的关系如表一所示:2.方波的频率由定时器控制。

定时器计数溢出后,产生中断,将P1.0口取反即得周期方波。

每个音阶相应的定时器初值X可按下法计算:(1/2)*(1/f)=(12/fosc)*(216-X)即X=216-(fosc/24f)当晶振fosc=11.0592NHz时,音阶"1"相应的定时器初值为X,则可得X=63777D=F921H,其它的可同样求得(见表一)表一:(单位:Hz,X为十六进制)3. 音的节拍由延时子程序来实现。

延时子程序实现基本延时时间,节拍值只能是它的整数倍。

4. 做此实验时,八位开关K1~K8均拨在下端,运行时,从左至右依次拨动K1~K8至上端,扬声器会发出1234567i。

四.实验程序框图五.汇编程序:PI EQU 8200H ;开关输入口地址ORG 0000HLJMP STARTORG 000BH ;T0 中断程序入口地址LJMP INT_T0ORG 0040HSTART:MOV SP,#60HMOV TMOD,#01H ;T0 方式1CLR TR0 ;关T0SETB ET0SETB EA ;开中断READ:MOV DPTR,#PIMOVX A,@DPTR ;读开关值MOV R1,AMOV R0,#08H ;置计数器初值MOV A,#01H ;置比较初值KEY:ANL A,R1JZ SOUND ;比较开关值RL A ;改变比较值DJNZ R0,KEYCLR TR0 ;开关未拨,不发声SJMP READSOUND:DEC R0MOV A,R0ADD A,R0 ;产生表格偏移量MOV R0,AMOV DPTR,#FREQUENCY ;置表格起始值MOVC A,@A+DPTRMOV R7,A ;查表,将结果存入公用寄存器R6,R7 MOV A,R0INC AMOVC A,@A+DPTRMOV R6,ASETB TR0 ;T0 允许SJMP READINT_T0: CLR TR0 ;T0 关闭CPL P1.0 ;产生波形MOV TH0,R7 ;重载定时器MOV TL0,R6SETB TR0 ;T0 允许RETI; 音阶频率表FREQUENCY:DB 0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H ;i,7,6,5 DB 0FAH,0D8H,0FAH,8CH,0F9H,0E1H,0F9H,21H ;4,3,2,1 END。

单片机课程设计报告 电子琴

单片机课程设计报告  电子琴

电子音调发生器一、实验目的1.了解计算机发声原理.2.熟悉定时器和键盘扫描电路的工作原理及编程方法。

二、实验完成的功能1.利用键盘1~7进行音调选择, 即按下音符产生对应音调。

2.事先存储三首歌曲, 并可进行选择播放。

3.谱曲功能:通过按键对LCD菜单选项进行选择, 进入谱曲界面, 通过按键1~7分别输入音高与几分音符类型, 由按键输入若干数据完成谱曲。

4.在播放存储歌曲与谱曲播放时,对应音符及其节奏LCD显示对应频谱。

5.在播放音乐时按“返回”键出现返回界面,由键盘按“确认”键选择返回主菜单或循环播放。

三、实验原理1.音节由不同频率的方波产生, 音节与频率的关系如表(1)所示。

要产生音频方波, 只要计算出某一音频的周期(..频率), 然后将此周期除以2, 即为半周期的时间。

利用计时器计时此半周期时间, 每当计时到后就将输出方波的I/O(P1.7)反相, 然后重复计时此半周期时间再对I/O反相, 就可在P1.7脚得到此频率的方波。

将P1.7经过驱动电路与蜂鸣器相连, 随着P1.7口输出不同频率的方波, 蜂鸣器便会发出不同的声音。

音乐的节拍是由延时实现的, 如果1拍的时间为0.4秒, 1/4拍是0.1秒。

只要设定延时时间, 就可得到节拍的时间。

延时实现基本延时时间, 节拍值只能是它的整数倍。

每个音节相应的定时器初值计算公式如下:(1/2)*(1/f)=(12/fose)*(216-x)即 x=216-(fose/24f)其中, f是音调频率, 当晶振fosc=11.0592MHz时, 音节“1”相应的定时器初值为x, 则可得到x=63777D=F921H, 其它的可同样得到。

表(1)音节与频率的关系在编写歌曲代码过程中, 音高由三位数字组成: 个位是表示1~7 这七个音符;十位是表示音符所在的音区:1-低音, -中音, -高音;百位表示这个音符是否要升半音: 0-不升, -升半音。

音长最多由三位数字组成: 个位表示音符的时值, 其对应关系是:|数值(n): |0 |1 |2 |3 | 4 | 5 | 6|几分音符: |1 |2 |4 |8 |16 |32 |64 音符=2^n 十位表示音符的演奏效果(0-2): 0-普通, -连音, -顿音, 百位是符点位: 0-无符点, 1-有符点。

单片机音乐的编程

单片机音乐的编程

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

例如,要产生200HZ的音频信号,200HZ音频的变化周期为1/200秒,即5ms。

这样,当P2.5的高电平或低电平的持续时间为2.5ms时就能发出200HZ的音调。

乐曲中,每一音符对应着确定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。

此外,结束符和体止符可以分别用代码00H和0XH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。

定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。

必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。

一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表1中所给的定时初值就是考虑中断响应后的定时常数。

另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。

这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。

本例中单片机晶振频率为6MHz。

现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示音符频率(HZ)简谱码音符频率(HZ)简谱码(T值)低1DO 262 63628 # 4 FA# 740 64860#1DO# 277 63731 中5 SO 784 64898低2RE 294 63835 # 5 SO# 831 64934#2 RE# 311 63928 中6 LA 880 64968低3 M 330 64021 # 6 932 64994低4 FA 349 64103 中7 SI 988 65030# 4 FA# 370 64185 高1 DO 1046 65058低5 SO 392 64260 # 1 DO# 1109 65085# 5 SO# 415 64331 高2 RE 1175 65110低6 LA 440 64400 # 2 RE# 1245 65134# 6 466 64463 高3 M 1318 65157低7 SI 494 64524 高 4 FA 1397 65178中1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高5 SO 1568 65217中2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622 64732 高6 LA 1760 65252中3 M 659 64777 # 6 1865 65268中4 FA 698 64820 高7 SI 1967 65283DW 64260,64400,64524,64580DW 64684,64777,64820,64898DW 64968,65030,65058,65110DW 65157,65178,65217下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据低音0-19之间,中音在20-39之间,高音在40-59之间TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,65058,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 02、音乐的音拍,一个节拍为单位(C调)拍数为1/8拍(0.10s)~8拍(6.40s)编写乐曲程序可以分四个步骤:第一步,为演奏的乐曲定义一个频率表和一个节拍时间表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

调号-音乐上指用以确定乐曲主音高度的符号。

很明显一个八度就有12个半音。

A、B、C、D、E、F、G。

经过声学家的研究,全世界都用这些字母来表示固定的音高。

比如,A这个音,标准的音高为每秒钟振动440周。

升C调:1=#C,也就是降D调:1=BD;277(频率)
升D调:1=#D,也就是降E调:1=BE;311
升F调:1=#F,也就是降G调:1=BG;369
升G调:1=#G,也就是降A调:1=BA;415
升A调:1=#A,也就是降B调:1=BB。

466,
C 262 #C277
D 294 #D(bE)311
E 330
F 349 #F369
G 392 #G415
A 440. #A466
B 494
所谓1=A,就是说,这首歌曲的“导”要唱得同A一样高,人们也把这首歌曲叫做A调歌曲,或叫“唱A调”。

1=C,就是说,这首歌曲的“导”要唱得同C一样高,或者说“这歌曲唱C调”。

同样是“导”,不同的调唱起来的高低是不一样的。

各调的对应的标准频率为:
单片机演奏音乐时音调和节拍的确定方法
经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这样。

在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

在音乐中所谓“音调”,其实就是我们常说的“音高”。

在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。

当两个声音信号的频率相差一倍时,也
即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与
.
1,2(来)与
.
2……
正好相差一个倍频程,在音乐学中称它相差一个八度音。

在一个八度音内,有12个半音。

以1—i八音区为例,12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。

这12个音阶的分度基本上是以对数关系来划分的。

如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。

知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。

那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例:
A的频率f = 440 Hz,其对应的周期为:
T = 1/ f = 1/440 =2272μs
由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:
t = T/2 = 2272/2 = 1136μs
这个时间t 也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f 0,则定时器的予置初值由下式来确定:
t = 12 *(T ALL – T HL )/ f 0
式中T ALL = 216 = 65536,T HL 为定时器待确定的计数初值。

因此定时器的高低计数器的初值为:
TH = T HL / 256 = ( T ALL – t* f 0/12) / 256 TL = T HL % 256 = ( T ALL – t* f 0/12) %256 将t=1136μs 代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A 在单片机晶振频率f 0=12Mhz ,定时器在工作方式1下的定时器高低计数器的予置初值为 :
TH 440Hz = (65536 – 1136 * 12/12) /256 = FBH TL 440Hz = (65536 – 1136 * 12/12)%256 = 90H
根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。

音符的节拍我们可以举例来说明。

在一张乐谱中,我们经常会看到这样
的表达式,如1=C
44、1=G 4
3
…… 等等,这里1=C,1=G 表示乐谱的曲调,和我们前面所谈的音调有很大的关联,44、43就是用来表示节拍的。

以4
3
为例加以说明,
它表示乐谱中以四分音符为节拍,每一小结有三拍。

比如:
其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。

1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。

那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms 。

我们以一拍的时长为400ms 为例,则当以四分音符为节拍时,四分音符的时长就为400ms ,八分音符的时长就为200ms ,十六分音符的时长就为100ms 。

可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。

首先,
我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。

通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。

具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。

另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。

下面给出部分音符(三个八度音)的频率以及以单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值:。

相关文档
最新文档