新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Proteus的單片機(jī)演奏音樂(lè)的實(shí)現(xiàn)

基于Proteus的單片機(jī)演奏音樂(lè)的實(shí)現(xiàn)

作者: 時(shí)間:2012-08-27 來(lái)源:網(wǎng)絡(luò) 收藏

2.3 電路

因?yàn)橐皇浊硬恢挂粋€(gè)音符,我們不可能對(duì)每一個(gè)音符的音階都去手工的提供時(shí)間常數(shù),為了的簡(jiǎn)化,我們編制一個(gè)將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)?lè)曲中的所有常數(shù)排列成的表格,在程序里用查表指令依次查出每一個(gè)音符的頻率和對(duì)應(yīng)節(jié)拍時(shí)間,產(chǎn)生音符并控制節(jié)奏,就可以效果。

此外,結(jié)束符和體止符可以分別用代碼00H 和FFH 來(lái)表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。

為了產(chǎn)生手彈的節(jié)奏感,在某些音符(例兩個(gè)相同音符)音插入一個(gè)時(shí)間單位的頻率略有不同的音符。

程序框圖如下圖4. 本程序的是民歌八月桂花遍地開(kāi),C 調(diào),節(jié)奏為94 拍/min。

用Keil 對(duì)程序進(jìn)行編譯,見(jiàn)圖5,具體方法可文獻(xiàn)[5],編譯無(wú)誤后生成。hex 文件,然后雙擊環(huán)境下的原理圖中的AT89C51,找到這個(gè)。 hex 文件,然后點(diǎn)按鈕Play,這時(shí)控制的蜂鳴器就可以開(kāi)始播放了。

圖4 程序流程圖
圖4 程序流程圖

圖5 在Keil 環(huán)境下對(duì)程序進(jìn)行編譯
圖5 在Keil 環(huán)境下對(duì)程序進(jìn)行編譯

3 結(jié)論

以上介紹的方法已通過(guò)測(cè)試,運(yùn)行良好。 對(duì)初學(xué)者有一定的啟示作用。 讀者也可以自行找出一首歌,將樂(lè)曲翻譯成碼表輸入,而程序不變。 本實(shí)驗(yàn)方法簡(jiǎn)便,即使不懂的人,也可方便地將一首陌生的曲子翻譯成代碼。

蜂鳴器相關(guān)文章:蜂鳴器原理

上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉