单片机产生音乐原理说明Word文档格式.docx

上传人:b****7 文档编号:22652454 上传时间:2023-02-05 格式:DOCX 页数:11 大小:177.93KB
下载 相关 举报
单片机产生音乐原理说明Word文档格式.docx_第1页
第1页 / 共11页
单片机产生音乐原理说明Word文档格式.docx_第2页
第2页 / 共11页
单片机产生音乐原理说明Word文档格式.docx_第3页
第3页 / 共11页
单片机产生音乐原理说明Word文档格式.docx_第4页
第4页 / 共11页
单片机产生音乐原理说明Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

单片机产生音乐原理说明Word文档格式.docx

《单片机产生音乐原理说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机产生音乐原理说明Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

单片机产生音乐原理说明Word文档格式.docx

FR

其中N——计数值;

FI——内部计时一次为1us,故其频率为1MHz;

FR——要产生的频率。

其计数值的求法为:

T=65536-N=65536-FI÷

FR

则标准音高A(频率f=440Hz)的计数值为:

T=65536-N=65536-FI÷

=65536-1000000÷

FR=65536-500000/440=65536-1136=64400=0FB90H

面给出C调各音符频率值和定时器定时初值:

(晶振频率f0=12Mhz,定时器在工作

方式1)

表1C调各音符频率值和定时初值对照表

C调

1

1#

2

2#

3

4

4#

5

5#

6

6#

7

音符

频率

262

277

293

311

329

349

370

392

415

440

466

494

Hz

1.90ms

1.81

1.7ms

1.61

1.51ms

1.43ms

1.35

1.28ms

1.20

1.14ms

1.07

1.01ms

TH/TL

F88B

F8F2

F95B

F9B7

FA14

FA66

FAB9

FB03

FB4A

FB8F

FBCF

FC0B

F894

F95C

FA1A

FA6A

FB00

FB8C

FC0E

Stm8:

076C

0712

06A4

064A

05E6

0596

0546

0500

04B0

0474

042E

03F2

523

553

586

621

658

697

739

783

830

879

931

987

0.95ms

0.91

0.85

0.81

0.76ms

0.72ms

0.68

0.64ms

0.60

0.57ms

0.54

0.51ms

FC43

FC78

FCAB

FCDB

FD08

FD33

FD5B

FD81

FDA5

FDC7

FDE7

FE05

FC4A

FCAE

FD30

FD80

FDC6

FE02

03B6

038E

0352

032A

02F8

02D0

02A8

0280

0258

023A

021C

01FE

.#

1045

1106

1171

1241

1316

1393

1476

1563

1658

1755

1860

1971

0.47ms

0.45

0.42ms

0.40

0.38ms

0.36ms

0.34

0.32ms

0.30

0.28ms

0.27

0.25ms

FB21

FE3C

FE55

FE6D

FE84

FE99

FEAD

FEC0

FEE3

FEF3

FF02

FE2A

FE5C

FE98

FEE8

FF06

01D6

01C2

01A4

0190

017C

0168

0154

0140

012C

0118

010E

00FA

对于非C调的歌曲,要对各音符的频率做相应的变化

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

升C调:

1=#C,也就是降D调:

1=bD;

277(频率)升D调:

1=#D,也就是降E调:

1=bE;

升F调:

1=#F,也就是降G调:

1=bG;

369

升G调:

1=#G,也就是降A调:

1=bA;

升A调:

1=#A,也就是降B调:

1=bB。

所谓1=A,就是说,这首歌曲的“导”(即作为基调的中音DO)要唱得同A音符一样高,其它各音符依次向后递推,通常把这首歌曲叫做A调歌曲,或叫“唱A调”。

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

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

在递推的时候要严格按各音符间音程关系进行(全音还是半音,只有3—4和7—i之间是半音关系,其它音之间都是全音关系),下面以1=D调进行说明。

参照上面的钢琴键盘图和表1,确定出D调各音符对应的频率值为:

(到后来制表时就以各音符对应的新频率值确定定时初值)

C调

C

D

E

F

G

A

B

1高C

1高

4F

6A

7B

587

659

740

880

988

1175

1318

1480

1760

1高

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

在一张乐谱中,我们经常会看到这样的表达式,如1=C4、1=G3⋯⋯等等,这里1=C,1=G表示乐谱的曲调,和我们前44

面所谈的音调有很大的关联,4、3就是用来表示节拍的。

以3为例加以说明,444

它表示乐谱中以四分音符为节拍,每一小结有三拍。

比如:

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

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

那么一拍到底该唱多长呢?

一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms。

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

若乐谱有特别说明则另行对待。

如有乐谱中注明每分钟86拍,则一

拍时间为60/86s=698ms。

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

节拍码

节拍数

实现。

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

具体来说,

Ⅰ.每个音符使用一个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,节拍与节拍码的对照,如下表所示

1(十六分音符)

1/4拍为1DELAY

1/8拍

2(八分音符)

2/4拍

1/4拍

3/4拍

3/8拍

4(四分音符)

1拍

1/2拍

1又1/4拍

5/8拍

1又1/2拍

8(二分音符)

2拍

8

1拍

10A

2又1/2拍

12C

3拍

15F

3又3/4拍

16(全音符)

4拍

表2节拍与节拍码对照注:

上表中各音符时值的倍数关系是确定不变的,具体制表时关键要正确确定其值。

Ⅱ.以1/4拍(十六分音符)为一个基准定时单位(1DELAY),

则2/4拍(八分音符)为2DELAY,

1拍(四分音符)为4DELAY,

2拍(二分音符)为8DELAY,

4拍(全音符)为16DELAY。

1/4和1/8节拍的时间设定,如下表所示。

表3各调节拍时间设定表

1/4节拍的时间设定

1/8节拍的时间设定

曲调值

DELAY

调4/4

125ms

62ms

调3/4

187ms

94ms

调2/4

250ms

实现方法

通过上面介绍的音符音调和节拍的相关知识,以及它们在单片机系统中的确

定方法,我们就可以在单片机上实现演奏音乐了。

具体的实现方法为:

1.将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数

2.将他们做成数据表格,存放在存储器中

3.通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数⋯⋯,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。

请注意,用单片机上实现音乐演奏关键在于,根据乐谱制作出数据表格,编程在其次,这个过程很耗费时间和精力。

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

实例说明

建立音乐的方法

(1)建立简谱对应的简谱码、T值及节拍数表,画在草稿纸上。

①先对照歌曲的简谱把其中所有出现的音符找出,从低音到高音依次排序,确定各音的数值(编写查表程序时将此值减1,即得对应音符相对于TABL1表头的偏移量)。

对于不是C调的歌曲,要对各音符的频率做相应的变化。

②对照歌曲的简谱确定各音符的节拍数相对于基准定时单位的倍数,从小到大排列。

各音符时值的倍数关系是确定不变的,关键要正确确定其值。

这需要懂一

点简谱知识才能准确的确定出乐谱中音符节拍数。

以歌曲兰花草为例,如下表:

简谱

发音(这一列知道就行不必写出)

简谱码

T值

低3

低音MI

64021

低4

低音FA

64103

低5

低音SO

64260

低6

低音LA

64400

低7

低音TI

64254

1又1/4拍

中1

中音DO

64580

1又1/2拍

中2

中音RE

64684

中3

中音MI

64777

中4

中音FA

9

64820

中5

中音SO

64898

中6

中音LA

64968

16

中7

中音TI

65030

休止符

不发音

关定时器

注:

以四分音符为一拍,现在以1/4拍为定时的基准单位,为1DELAY。

则1拍应为4倍DELAY,依次类推。

所以只要求得1/4拍的DELAY时间,其余的节拍数就是它的倍数。

(2)把各音符频率对应的定时T值建立在TABLE1表。

TABLE1:

;

各音符频率对应的定时值表

DW64021,64103,64260,64400

DW64524,64580,64684,64777

DW64820,64898,64968,65030

(3)根据第一步建立的表,建立乐曲对应音符节拍码表TABLE,其中简谱码(音符)在高4位(但是此种方法只能排16个音,若乐谱中音符较多可占一个字节来表示),节拍码(节拍数)在低4位(但此种方法也只能最大延时15个基准定时单位的时间)。

TABLE:

歌曲兰花草的音符与节拍码表

;

高4位为简谱码(音符),低4位为该音符对应的节拍数

DB42H,82H,82H,82H,84H,02,72H

DB62H,72H,62H,52H,48H

DB0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H

DB12H,0A2H,0D2H,92H,88H

DB82H,0B2H,0B2H,0A2H,84H,02H,72H

DB62H,72H,62H,52H,44H,02H,12H

DB12H,62H,62H,52H,44H,02H,82H

DB72H,62H,52H,32H,48H

DB00H至此,需要建立的表都已完成,只需编写主程序的查表指令即可。

小结:

在程序中的实现,重点就在于音符、节拍,建好表后,编程则很简单。

编写时间:

2009-8-19

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1