<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      單片機演奏音樂實驗

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2008-11-9
          利用單片機演奏音樂大概是單片機愛好者感興趣的問題之一。這里我們用網站提供的實驗板來做這個實驗,并且了解單片機演奏音樂的基本原理,和相關的源程序。

          首先來完成必要的硬件部分,硬件部分比較簡單,如下圖:

          


          AT89C51單片機的P2.5口控制一個8550的三極管,三極管控制電磁蜂鳴器的電源通斷。

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

          例如,要產生200HZ的音頻信號,200HZ音頻的變化周期為1/200秒,即5ms。這樣,當P2.5的高電平或低電平的持續時間為2.5ms時就能發出200HZ的音調。

          樂曲中,每一音符對應著確定的頻率,我們將每一音符的時間常數和其相應的節拍常數作為一組,按順序將樂曲中的所有常數排列成一個表,然后由查表程序依次取出,產生音符并控制節奏,就可以實現演奏效果。

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

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

      程序框圖如圖2所示。



          下面給出程序序請單,可直接在51實驗板上進行演奏。本程序演奏的是民歌“八月桂花遍地開”,C調,節奏為94拍/分。網友也可以自行找出一首歌,將樂曲翻譯成碼表輸入機器,而程序不變。本實驗方法簡便,即使不懂音樂的人,將一首陌生的曲子翻譯成代碼也是易事,和著機器的演奏學唱一首歌曲,其趣味無窮。

      ;標題 '八月桂花香'發聲程序

      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
      MUSIC1:
      NOP
      CLR A ;A清零
      MOVC A,@A+DPTR ;查表取代碼
      JZ END0 ;是00H,則結束
      CJNE A,#0FFH,MUSIC5 ;如果是休止符,往下執行
      LJMP MUSIC3
      MUSIC5:
      NOP
      MOV R6,A ;R6=18H音符的頻率
      INC DPTR DPTR加一
      MOV A,#0
      MOVC A,@A+DPTR ;取節拍代碼送R7
      MOV R7,A ;R7=30H音符發音的時間
      SETB TR0 ;啟動計數
      MUSIC2:
      NOP
      CPL P2.5 ;P2.5是音樂輸出引腳
      MOV A,R6
      MOV R3,A ;R3=R6=18H
      LCALL DEL
      MOV A,R7
      CJNE A,20H,MUSIC2 ;中斷計數器(20H)=R7否?
      ;不等,則繼續循環
      MOV 20H,#00H ;等于,則取下一代碼
      INC DPTR
      LJMP MUSIC1
      MUSIC3:
      NOP ;休止100毫秒
      CLR TR0
      MOV R2,#0DH ;R2=13
      MUSIC4:
      NOP
      MOV R3,#0FFH ;R3=255
      LCALL DEL
      DJNZ R2,MUSIC4
      INC DPTR
      LJMP MUSIC1
      END0:
      NOP
      MOV R2,#0FFH ;歌曲結束,延時1秒后繼續
      MUSIC6:
      MOV R3,#00H
      LCALL DEL
      DJNZ R2,MUSIC6
      LJMP MUSIC0
      DEL:
      NOP
      DEL3:
      MOV R4,#02H
      DEL4:
      NOP
      DJNZ R4,DEL4
      NOP
      DJNZ R3,DEL3
      RET
      NOP
      DAT:
      DB 18H, 30H, 1CH, 10H
      DB 20H, 40H, 1CH, 10H
      DB 18H, 10H, 20H, 10H
      DB 1CH, 10H, 18H, 40H
      DB 1CH, 20H, 20H, 20H
      DB 1CH, 20H, 18H, 20H
      DB 20H, 80H, 0FFH, 20H
      DB 30H, 1CH, 10H , 18H
      DB 20H, 15H, 20H , 1CH
      DB 20H, 20H, 20H , 26H
      DB 40H, 20H , 20H , 2BH
      DB 20H, 26H, 20H , 20H
      DB 20H, 30H , 80H , 0FFH
      DB 20H, 20H, 1CH , 10H
      DB 18H, 10H, 20H , 20H
      DB 26H, 20H , 2BH , 20H
      DB 30H, 20H , 2BH , 40H
      DB 20H, 20H , 1CH , 10H
      DB 18H, 10H, 20H, 20H
      DB 26H, 20H , 2BH, 20H
      DB 30H, 20H, 2BH , 40H
      DB 20H, 30H, 1CH , 10H
      DB 18H, 20H , 15H , 20H
      DB 1CH, 20H , 20H , 20H
      DB 26H, 40H, 20H , 20H
      DB 2BH, 20H, 26H , 20H
      DB 20H, 20H, 30H , 80H
      DB 20H, 30H, 1CH , 10H
      DB 20H, 10H, 1CH , 10H
      DB 20H, 20H, 26H , 20H
      DB 2BH, 20H, 30H , 20H
      DB 2BH, 40H, 20H , 15H
      DB 1FH, 05H, 20H , 10H
      DB 1CH, 10H, 20H , 20H
      DB 26H, 20H, 2BH , 20H
      DB 30H, 20H, 2BH , 40H
      DB 20H, 30H, 1CH , 10H
      DB 18H, 20H , 15H , 20H
      DB 1CH, 20H , 20H , 20H
      DB 26H, 40H, 20H , 20H
      DB 2BH, 20H, 26H , 20H
      DB 20H, 20H, 30H, 30H
      DB 20H, 30H, 1CH, 10H
      DB 18H, 40H, 1CH, 20H
      DB 20H, 20H, 26H, 40H
      DB 13H, 60H, 18H , 20H
      DB 15H, 40H, 13H , 40H
      DB 18H, 80H, 00H
      end

      這是上面程序匯編以后獲得的編程器燒寫文件
      Tags:單片機演奏,單片機發聲,機器音樂,原理圖,程序  
      責任編輯:admin
      相關文章列表
      沒有相關文章
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 亚洲 自拍 另类小说综合图区| 狠狠色婷婷七月色综合| 中文自拍日本综合| 色欲色香天天天综合网站| 色综合久久中文综合网| 国产综合在线观看视频| 亚洲偷自拍拍综合网| 久久婷婷五夜综合色频| 亚洲国产成人综合精品| 狠狠色狠狠色综合网| 国产成人综合久久精品红| 伊人久久成人成综合网222| 久久久久久久综合日本亚洲| 色天使久久综合给合久久97色| 日韩人妻无码一区二区三区综合部| 久久狠狠色狠狠色综合| 国产综合色香蕉精品五月婷| 久久丁香五月天综合网| 丁香伊人五月综合激激激| 五月婷婷综合在线| 久久婷婷五月综合97色| 色综合AV综合无码综合网站| 99热婷婷国产精品综合| 亚洲VA综合VA国产产VA中| 天天综合日日噜噜噜| 亚洲综合一区无码精品| 天天影视色香欲综合免费| 亚洲色欲久久久久综合网| 一本久道久久综合多人| 人人狠狠综合88综合久久| 亚洲国产综合91精品麻豆| 热综合一本伊人久久精品| 婷婷亚洲综合一区二区| 亚洲综合中文字幕无线码| 在线精品国产成人综合| 国产色产综合色产在线视频| 伊人色综合久久天天网| 色综合中文综合网| 亚洲AV日韩综合一区尤物| 色综久久天天综合绕视看| 久久久久噜噜噜亚洲熟女综合|