循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。Р通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。Р下面给出部分音符(三个八度音)的频率以及以单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值:Р表4-1 音调与频率对应表РC调音符Р频率HzР262Р277Р293Р311Р329Р349Р370Р392Р415Р440Р466Р494РTH/TLРF88BРF8F2РF95BРF9B7РFA14РFA66РFAB9РFB03РFB4AРFB8FРFBCFРFC0BРC调音符Р1Р1#Р2Р2#Р3Р4Р4#Р5Р5#Р6Р6#Р7Р频率HzР523Р553Р586Р621Р658Р697Р739Р783Р830Р879Р931Р987РTH/TLРFC43РFC78РFCABРFCDBРFD08РFD33РFD5BРFD81РFDA5РFDC7РFDE7РFE05РC调音符Р频率HzР1045Р1106Р1171Р1241Р1316Р1393Р1476Р1563Р1658Р1755Р1860Р1971