單片機演奏音樂(lè )原理與模擬實(shí)驗
利用單片機演奏音樂(lè )大概是單片機愛(ài)好者感興趣的問(wèn)題之一。這里我們用網(wǎng)站提供的實(shí)驗板來(lái)做這個(gè)實(shí)驗,并且了解單片機演奏音樂(lè )的基本原理,和相關(guān)的源程序。
本文引用地址:http://dyxdggzs.com/article/172389.htm首先來(lái)完成必要的硬件部分,硬件部分比較簡(jiǎn)單,如下圖:
AT89C51單片機的P2.5口控制一個(gè)8550的三極管,三極管控制電磁蜂鳴器的電源通斷。
我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來(lái)控制單處機某個(gè)口線(xiàn)的高電平或低電平,則在該口線(xiàn)上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續時(shí)間,就能改變輸出頻率,從而改變音調。
例如,要產(chǎn)生200HZ的音頻信號,200HZ音頻的變化周期為1/200秒,即5ms。這樣,當P2.5的高電平或低電平的持續時(shí)間為2.5ms時(shí)就能發(fā)出200HZ的音調。
樂(lè )曲中,每一音符對應著(zhù)確定的頻率,我們將每一音符的時(shí)間常數和其相應的節拍常數作為一組,按順序將樂(lè )曲中的所有常數排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節奏,就可以實(shí)現演奏效果。
此外,結束符和體止符可以分別用代碼00H和FFH來(lái)表示,若查表結果為00H,則表示曲子終了;若查表結果為FFH,則產(chǎn)生相應的停頓效果。
為了產(chǎn)生手彈的節奏感,在某些音符(例如兩個(gè)相同音符)音插入一個(gè)時(shí)間單位的頻率略有不同的音符。
程序框圖如圖2所示。
下面給出程序序請單,可直接在51實(shí)驗板上進(jìn)行演奏。本程序演奏的是民歌“八月桂花遍地開(kāi)”,C調,節奏為94拍/分。網(wǎng)友也可以自行找出一首歌,將樂(lè )曲翻譯成碼表輸入機器,而程序不變。本實(shí)驗方法簡(jiǎn)便,即使不懂音樂(lè )的人,將一首陌生的曲子翻譯成代碼也是易事,和著(zhù)機器的演奏學(xué)唱一首歌曲,其趣味無(wú)窮。
評論