新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Proteus的單片機演奏音樂的實現

        基于Proteus的單片機演奏音樂的實現

        作者: 時間:2012-08-27 來源:網絡 收藏

        2.3 電路

        因為一首曲子不止一個音符,我們不可能對每一個音符的音階都去手工的提供時間常數,為了的簡化,我們編制一個將每一音符的時間常數和其相應的節拍常數作為一組,按順序將樂曲中的所有常數排列成的表格,在程序里用查表指令依次查出每一個音符的頻率和對應節拍時間,產生音符并控制節奏,就可以效果。

        此外,結束符和體止符可以分別用代碼00H 和FFH 來表示,若查表結果為00H,則表示曲子終了;若查表結果為FFH,則產生相應的停頓效果。

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

        程序框圖如下圖4. 本程序的是民歌八月桂花遍地開,C 調,節奏為94 拍/min。

        用Keil 對程序進行編譯,見圖5,具體方法可文獻[5],編譯無誤后生成。hex 文件,然后雙擊環境下的原理圖中的AT89C51,找到這個。 hex 文件,然后點按鈕Play,這時控制的蜂鳴器就可以開始播放了。

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

        圖5 在Keil 環境下對程序進行編譯
        圖5 在Keil 環境下對程序進行編譯

        3 結論

        以上介紹的方法已通過測試,運行良好。 對初學者有一定的啟示作用。 讀者也可以自行找出一首歌,將樂曲翻譯成碼表輸入,而程序不變。 本實驗方法簡便,即使不懂的人,也可方便地將一首陌生的曲子翻譯成代碼。

        蜂鳴器相關文章:蜂鳴器原理

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 三穗县| 临潭县| 石首市| 凌源市| 手游| 四子王旗| 曲松县| 绍兴市| 勐海县| 望奎县| 沂源县| 分宜县| 惠水县| 蓬安县| 淳化县| 丹棱县| 班玛县| 清原| 彝良县| 新龙县| 甘孜县| 兖州市| 青铜峡市| 外汇| 鹤庆县| 洛阳市| 鄂伦春自治旗| 华宁县| 明溪县| 乐都县| 敦化市| 同德县| 武义县| 北碚区| 古浪县| 锡林浩特市| 大竹县| 红桥区| 清水河县| 田东县| 丰原市|