• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的音樂播放器的仿真與制作

    基于單片機的音樂播放器的仿真與制作

    作者: 時間:2011-03-29 來源:網絡 收藏

    事實上,按照圖1所示原理圖來焊接電路,其結果可能沒有任何效果。而圖2所示才是的實際電路。與圖1相比,實
    際電路多了兩個部分:一是左邊最小系統所需的電路部分,而軟件中則將這些省略了;另一個是右邊多了一個三極管。之所以要加這個三極管,主要是為了放大蜂鳴器的驅動電流,而軟件里面所有的元件都是理想元件,所以,能實現的效果,實際做出來往往沒有效果。因此,要想在實際中實現滿意的效果還要憑借硬件經驗進行反復的摸索和嘗試。

    本文引用地址:http://www.czjhyjcfj.com/article/172903.htm

    b.JPG



    2 軟件設計
    2.1 播放原理
    聲音的頻譜范圍通常約為幾十到幾千赫茲,通過程序控制單片機的I/O口可輸出不同頻率的矩形波。當該矩形波的頻率位于聲音頻譜范圍內時,在單片機的I/O口接上喇叭就能發出聲音。然后利用延時程序控制矩形波的高、低電平持續時間,即改變矩形波的頻率,即可產生不同的音調,從而發出不同的聲音,再讓矩形波輸出的長短對應節拍,就可以實現單片機對的演奏。
    2.2 音調和節拍編碼
    單片機奏樂只需弄清楚兩個概念,也就是“音調”和“節拍”。音調表示一個音符唱多高的頻率,節拍表示一個音符唱多長的時間。
    由于各個音調對應的頻率是已知的,因此,播放時,應對樂曲中出現的音調進行編碼,并找出單片機播放這些音調所對應的定時初值。表1所列是音調編碼與定時器的初值表,其中頻率是已知的,編碼可以自己設置,而定時初值是怎樣得來的呢?下面以“低6”為例進行說明。“低6”的頻率f為440 Hz,其對應的周期為:T=1/f=1/440=272μs。單片機上對應蜂鳴器的I/O口來回取反的時間應為:t=T/2=2272/2=1136μs。單片機奏樂時,其定時器為工作方式1,若以振蕩器的十二分頻信號為計數脈沖,如果單片機晶振為12MHz,則1μs計數一次。所以,對于“低6”,其定時器的初值應該是:216-1136=64400。
    對節拍的控制可通過延時程序來實現。表2所列是節拍編碼表。若以1拍的時長為400ms為例,1/2拍的時長為200ms,1/4拍的時長為100ms。首先,這樣,確定一個基本時長的延時程序,比如以100ms為基本延時時間,那么,1/4拍可以調用一次延時程序,1/2拍需調用二次延時程序,1拍需調用四次延時程序,依次類推。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 大化| 湘潭县| 乾安县| 武宣县| 遂平县| 中江县| 通州区| 庄河市| 桃江县| 焦作市| 长垣县| 长春市| 淮南市| 宜兴市| 泽州县| 郎溪县| 阜宁县| 陕西省| 宁海县| 湘潭市| 宣城市| 马龙县| 交口县| 安吉县| 益阳市| 澎湖县| 志丹县| 库车县| 南丹县| 崇州市| 吉隆县| 故城县| 吉木乃县| 达拉特旗| 凤庆县| 崇州市| 乌兰浩特市| 海原县| 伊金霍洛旗| 阜阳市| 灌阳县|