音 乐 模 块 部 分 单片机发音原理:单片机演奏音乐基本是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音,但一定要弄清楚两个概念即可,也就是“音调”和“节拍” 。 ·音调 表示一个音符唱多高的频率。 ·节拍 表示一个音符唱多长的时间。 下面,就此两点,阐述说明: 一、音调 在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央 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 ×(TALL – THL)/ f0 式中,TALL = 216 = 65536,THL 为定时器待确定的计数初值。因此定时器的高低计数器的初值为: TH = THL / 256 = ( TALL – t× f0/12) / 256 TL = THL % 256 = ( TALL – t× f0/12) %256 将 t=1136μs 代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高 A 在单片机晶振频率f0=12Mhz,定时器在工作方式1 下的定时器高低计数器的预置初值为 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH...