单片机音符与频率的关系

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

单片机产生乐曲的原理

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

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拍的时间设定。

3.音乐软件的设计

1).音乐代码库的建立方法

(1)先找出乐曲最低音和最高音范围,然后确定音符表T的顺序。

(2)把T值建立在表1(TABLE1),构成发音符的计数值放在其中(TABLE1中)。(3)简谱码(音符)为高4位,节拍(节拍数)为低4位,音符的节拍码放在程序的表处(TABLE处)。

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

2).选曲

在一个程序中,需要演奏两首或两首以上歌曲时,音乐代码库的建立有两种方法:(1)将每首歌曲建立相互独立的音符表T和发音符计数值表(TABLE)。

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

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

4.歌曲的设计

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

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

;;;;

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

DB 74H,94H,68H

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

DB 2CH

;;;;

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

;;

DB 00H

相关文档
最新文档