<acronym id="atkaq"></acronym>
      <bdo id="atkaq"></bdo>

      天才教育網合作機構 > 培訓機構 >

      東莞電工培訓網

      歡迎您!
      朋友圈

      全國統一學習專線 9:00-21:00

      位置:培訓資訊 > 單片機音樂程序設計

      單片機音樂程序設計

      日期:2010-01-02 10:48:55     瀏覽:279    來源:東莞電工培訓網

      利用單片機(或單板機)奏樂大概是無線電愛好者感興趣的問題之一。本文從單片機的基本發間實驗出發,談談音樂程序的設計原理,并給出具體實例,以供參考。

      單片機的基本發音實驗

      我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機某個口線的“高”電平或低電平,則在該口線上就能產生一定頻率的矩形波,接上喇叭就能發出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續時間,就能改變輸出頻率,從而改變音調。

      例如,要產生200HZ的音頻信號,按圖1接入喇叭(若屬臨時實驗,也可將喇叭直接接在P1口線上),實驗程序為:

      其中子程序DEL為延時子程序,當R3為1時,延時時間約為20us,R3中存放延時常數,對200HZ音頻,其周期為1/200秒,即5ms。這樣,當P1.4的高電平或低電平的持續時間為2.5ms,即R3的時間常數取2500/20=125(7DH)時,就能發出200HZ的音調。將上述程序鍵入學習機,并持續修改R3的常數能感到音調的變化。樂曲中,每一音符對應著確定的頻率,表1給出C調時各音符頻率及其對應的時間常數。讀者能根據表1所供給的常數,將其16進制代碼送入R3,反復練習體會。根據表1能奏出音符。僅這還不夠,要準確奏出一首曲子,必須準確地控制樂曲節奏,即一音符的持續時間。

      音符的節拍我們能用定時器T0來控制,送入不一樣的初值,就能產生不一樣的定時時間。便如某歌曲的節奏為每分鐘94拍,即一拍為0.64秒。其它節拍與時間的對應關系見表2。

      但時,由于T0的*定時時間只能為131毫秒,因此不可能直接用改變T0的時間初值來實現不一樣節拍。我們能用T0來產生10毫秒的時間基準,然后設置一個中斷計數器,通過判別中斷計數器的值來控制節拍時間的長短。表2中也給出了各種節拍所對應的時間常數。例如對1/4拍音符,定時時間為0.16秒,對應的時間常數為16(即10H);對3拍音符,定時時間為1.92秒,對應時間長數為192(即C0H)。

      我們將每一音符的時間常數和其對應的節拍常數作為一組,按次序將樂曲中的所有常數排列成一個表,然后由查表程序依次取出,產生音符并控制節奏,就能實現演奏效果。此外,結束符和體止符能分別用代碼00H和FFH來表示,若查表結果為00H,則表示曲子終了;若查表結果為FFH,則產生對應的停頓效果。為了產生手彈的節奏感,在某些音符(例如兩個相同音符)音插入一個時間單位的頻率略有不一樣的音符。

      下面給出程序序清單,可直接在TD-III型學習機上演奏,對其它不一樣型號的學習機,只需對應地改變一下地址即可。本程序演奏的是民歌“八月桂花遍地開”,C調,節奏為94拍/分。讀者也能自行找出一首歌,按表1和表2給定的常數,將樂曲翻譯成碼表輸入機器,而程序不變。本實驗辦法簡便,即使不懂音樂的人,將一首陌生的曲子翻譯成代碼也是易事,和著機器的演奏學唱一首歌曲,其趣味無窮。

      程序清單(略,請參看源程序的說明)。

      程序框圖如圖2所示。


      <單片機音樂程序的設計圖>

      本課由單片機教程網提供,有問題指出.

      硬件連接說明:

      隨便找一個仿真機或者什么單片機實驗板,只要能工作的就行,將程序輸入,運行,然后找個音箱(你計算機旁邊應當就有一對吧)撥出插頭,插頭的前端接在P1。0上,后面部分找根線接單片機的地,就應當有聲了,然后怎么改進硬件連接就是你的事了。。。。

      音樂程序匯編代碼代碼1 -------------Voice.asm--------------------------

              ORG     0000H
              LJMP    START
              ORG     000BH
              INC     20H     ;中斷服務,中斷計數器加1
              MOV     TH0,#0D8H
              MOV     TL0,#0EFH  ;12M晶振,形成10毫秒中斷
              RETI
      START: 
              MOV     SP,#50H
              MOV     TH0,#0D8H
              MOV     TL0,#0EFH
              MOV     TMOD,#01H
              MOV     IE,#82H
      MUSIC0:
              NOP
              MOV     DPTR,#DAT      ;表頭地址送DPTR
              MOV     20H,#00H        ;中斷計數器清0
              MOV     B,#00H          ;表序號清0
      MUSIC1:
              NOP
              CLR     A
              MOVC    ;查表取代碼
              JZ      END0     ;是00H,則結束
            &nbs

      如果本頁不是您要找的課程,您也可以百度查找一下:

      亚洲无碼另类精品_亚洲天堂无码高清性视频_欧美日韩一区二区综合_亚洲午夜福利理论片在线贰信

        <acronym id="atkaq"></acronym>
        <bdo id="atkaq"></bdo>

        亚洲国产午夜福利 | 亚洲欧洲美洲熟女一区二区 | 亚洲日韩在线观看你懂的 | 色婷婷在线播放看片 | 亚洲精品中文字幕字幕 | 特级黄国产片一级视频播放 |