回复: 如何用单片机设计音乐片?新手上路,请帮忙啊...
电子音乐实验:
使用8051产生电子音乐时,必须对于声音的特性有所了解。构成声音的三要素分别是:振幅、频率、音色,其中振幅关系到声音的大小,频率牵涉到声音的高低音,音色则是声音中谐波的成分。在这里,我们只考虑声音的高低音变化。我们要产生不同频率的声音时,可以让8051产生不同频率的方波,如下图:
其中频率等于周期T的倒数,也就是频率f=1/T。我们将此输出的方波用低通滤波器过滤掉高频的谐波,就可以产生固定频率的弦波。接下来将此弦波用音频放大器适当地放大,就可以接到喇叭发出声音。8051产生固定频率方波的方法是使用Timer0或Timer1的溢出中断,然后在中断发生时,将输出引脚的电压反向。如下表:
在这里,我们选择使用8051的Timer1的溢出中断,Timer1的溢出中断发生时,将输出引脚的电压反向,然后重新载入Timer1的计数器数值。所以唯一要做的就是正确设置Timer1的工作模式和Timer1的计数数值。例如中间的DO,频率是523Hz,所以其周期是T=1/523=1912μs,其半周期为1912/2=956μs,如果Timer1的计时时钟周期是1μs,那么只要设置Timer1的计数器数值,让它每数956次就产生溢出中断,然后让输出引脚反向。因为Timer1每数956次就要产生溢出中断,因此如果Timer1设置为16位的工作模式时,它的计数器在开始计数之前就必须设为FC43(10000H-956)。
根据以上原理,我们就可以预先计算出第一音符的计数器数值,然后将这些数值储存在程序存储器中,当我们需要什么频率的声音时,只要从程序存储器中读出相对应的数值即可。