当前位置:文档之家› 单片机音符频率与定时值的关系

单片机音符频率与定时值的关系

单片机音符频率与定时值的关系
单片机音符频率与定时值的关系

单片机产生乐曲的原理

利用单片机产生乐曲音符,再把乐曲音符翻译成计算机音乐语言,由单片机进行信息处理,再通过蜂鸣器或喇叭放出音乐。

1.音频脉冲的产生

音乐的产生主要是通过单片机的I/O 口输出高低不同的脉冲信号来控制蜂

鸣器发音,要想产生音频脉冲信号,需要算出某一音频的周期(1/频率),然后

将此周期除以2,即为半周期的时间。利用单片机定时器计时这个半个周期时间,每当计时到后就将输出脉冲的I/O 口反相,然后重复计时此半周期时间再对I/O 口反相,这样就能在此I/O 口上得到此频率的脉冲。

通常,利用单片机的内部定时器0,工作在方式1 下,改变计数初始值THO和TLO 来产生不同的率。

例如,若单片机采用12MHz晶振,要产生频率为587Hz的音频脉冲时,其音频信号的脉冲周期T=1/587=1703.5775卩s,半周期的时间为852卩s,因此只要令计数器计数=852卩

s/1卩s=852,在每计数852时将I/O 口反相,就可得到C 调中音Re,

计数脉冲值与频率的关系如下:

2音乐节拍的产生

每个音符使用一个字节,字节的高四位代表音符的高低,低四位代表音符的节拍,表5-2为节拍与节拍码的对照表。如果1拍为0.4s, 1/4拍是0.1s只要设

定延迟时间就可求得节拍的时间。假设1/4拍为1个延迟单位时间,那么1拍对

应的就是4个延迟单位时间,以此类推。所以只要求得1/4拍的延迟单位时间,

其余的节拍就是它的倍数,表5-3为1/4拍和1/8拍的时间设定。

e

3. 音乐软件的设计

1). 音乐代码库的建立方法(1)先找出乐曲最低音和最高音范围,然后确定音符表T 的顺序。

(2)把T值建立在表1 (TABLE),构成发音符的计数值放在其中(TABLE仲)

(3)简谱码(音符)为高 4 位,节拍(节拍数)为低 4 位,音符的节拍码放在程序的表处(TABLE处)。

(4)音符节拍码00H 为音乐结束标记。

2). 选曲

在一个程序中,需要演奏两首或两首以上歌曲时,音乐代码库的建立有两种方法:

(1)将每首歌曲建立相互独立的音符表T和发音符计数值表(TABLE o

(2)也可以建立共用的音符表T后,再写每首歌曲的发音计数值表(TABLE 中的代码。

不管采用哪种方法,每首歌曲结束时,在发音计数值表(TABLE中均需加上音

乐结束符00H o

4. 歌曲的设计

下面以歌曲《送别》的设计为例,讲述歌曲在单片机中实现自动演奏。歌曲《送别》如下所示:

m

6

叩曲

1

?

0089

8

isil 』

L

伽 L 讪

9 删

9

5

0脚 S 对帥

LLM

? Z

08S W

I

oa 1* 1

KfW I

!$翱

n

91

m

O

8

9

?

S t ,

瞬WZ 1

1

脚删星「觀脚即觀s-s$

这妙M 跚礫無咚站澤轉斛冯J 谢鞠卿陳黯壤轴

綱做删 °°a I ^W -iSiMWWS 卿鲫 rn 0W

*

— 普冑s s s s u

4

u

*t 创

5 H s 毎

5 77

n )w 1+

书弔

k " i ' i

¥郎

T —v s H a ?u 逆蚩/

5 器n 曽m 直

直n ) s _

TABLE1:DW 64524,64580,64684,64777 ;7(低),1,2,3 DW 64820,64898,64968,65030,65058 ;4,5,6,7 ,1(TABLE:

DB 64H,42H,62H,98H

DB 74H,92H,72H,68H

DB 64H,22H,32H,44H,32H,22H

DB 3CH

J J J J

DB 64H,42H,62H,94H,04H,82H

DB 74H,94H,68H

DB 64H,32H,42H,54H,04H,12H

DB 2CH

J J J J

DB 74H,94H,98H

DB 84H,72H,82H,98H

DB 72H,82H,92H,72H,72H,62H,42H,22H

DB 3CH

DB 64H,42H,62H,94H,04H,82H

DB 74H,94H,68H

DB 64H,32H,42H,54H,04H,12H

DB 2CH

J J

DB 00H

相关主题
文本预览
相关文档 最新文档