毕业论文

打赏
当前位置: 毕业论文 > 自动化 >

AT89S51单片机的音乐彩灯控制器设计+仿真图+源代码(3)

时间:2017-01-05 12:27来源:毕业论文
根据上面的求解方法,就可求出C调其他音符相应的计数器的预置初值如表1所示[2]: 表1 C调音符计数器预置初值 音符 1 频率 262 277 293 311 329 349 370 392 415


根据上面的求解方法,就可求出C调其他音符相应的计数器的预置初值如表1所示[2]:
表1 C调音符计数器预置初值
音符    1    
频率    262    277    293    311    329    349    370    392    415    440    466    494
初值    F88C    F8F3    F95B    F9B8    FA15    FA67    FAB9    FB04    FB4A    FB90    FBCF    FC0C
音符    
频率    523    553    586    621    658    697    739    783    830    879    931    987
初值    FC44    FC79    FCAC    FCDC    FD09    FD34    FD5C    FD82    FDA6    FDC8    FDE7    FE05
音符    
频率    1045    1106    1171    1241    1316    1393    1476    1563    1658    1755    1860    1971
初值    FB21    FE3C    FE55    FE6D    FE84    FE9A    FEAD    FEC0    FE02    FEE3    FEF3    FF02
通过举例来说明音符的节拍。在一张音乐简谱中,经常会看到这样的表达式,1=C 、1=G ,这里1=C,1=G表示乐谱的曲调,和前面所描述的音调有比较大的联系, 、 就是用来表示节拍的。以 为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如:
其中1、2为一拍,3、4、5为一拍,6为一拍,共三拍。1和2音符的时长为四分音符的一半,即为八分音符,3、4为八分音符的一半,即为十751分音符,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符。那么一拍到底该唱多久呢?通常情况下,如果乐曲没有特殊说明,一拍的时长大约为400-500ms 。假如把一拍的时长看做400ms,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长为200ms,十751分音符的时长为100ms。
单片机控制一个音符唱多久采用循环延时的方法来实现。首先,确定一个基本时长的延时函数,如果以十751分音符的时长为基本延时时间,则对于一个音符,如果它为十751分音符,则只需调用一次延时函数,如果它为八分音符,则只需调用二次延时函数,如果它为四分音符,则只需调用四次延时函数,依次类推。
知道一个音符音调和节拍的确定方法,就具备了在单片机上实现演奏音乐的基本条件。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定的方法一致,乐曲结束节拍参数用00H表示[2]。“生日快乐”歌的简谱图见附录2。 AT89S51单片机的音乐彩灯控制器设计+仿真图+源代码(3):http://www.751com.cn/zidonghua/lunwen_1833.html
------分隔线----------------------------
推荐内容