久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5168|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)演奏音樂(lè)實(shí)驗(yàn) 匯編語(yǔ)言

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-22 01:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式








    利用單片機(jī)演奏音樂(lè)大概是單片機(jī)愛(ài)好者感興趣的問(wèn)題之一。這里我們用網(wǎng)站提供的實(shí)驗(yàn)板來(lái)做這個(gè)實(shí)驗(yàn),并且了解單片機(jī)演奏音樂(lè)的基本原理,和相關(guān)的源程序。 
   首先來(lái)完成必要的硬件部分,硬件部分比較簡(jiǎn)單,如下圖:
   
   AT89C51單片機(jī)的P2.5口控制一個(gè)8550的三極管,三極管控制電磁蜂鳴器的電源通斷。
  我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來(lái)控制單處機(jī)某個(gè)口線的高電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。
   例如,要產(chǎn)生200HZ的音頻信號(hào),200HZ音頻的變化周期為1/200秒,即5ms。這樣,當(dāng)P2.5的高電平或低電平的持續(xù)時(shí)間為2.5ms時(shí)就能發(fā)出200HZ的音調(diào)。
    樂(lè)曲中,每一音符對(duì)應(yīng)著確定的頻率,我們將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)?lè)曲中的所有常數(shù)排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。
    此外,結(jié)束符和體止符可以分別用代碼00H和FFH來(lái)表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。
    為了產(chǎn)生手彈的節(jié)奏感,在某些音符(例如兩個(gè)相同音符)音插入一個(gè)時(shí)間單位的頻率略有不同的音符。
程序框圖如圖2所示。

    下面給出程序序請(qǐng)單,可直接在51實(shí)驗(yàn)板上進(jìn)行演奏。本程序演奏的是民歌“八月桂花遍地開(kāi)”,C調(diào),節(jié)奏為94拍/分。網(wǎng)友也可以自行找出一首歌,將樂(lè)曲翻譯成碼表輸入機(jī)器,而程序不變。本實(shí)驗(yàn)方法簡(jiǎn)便,即使不懂音樂(lè)的人,將一首陌生的曲子翻譯成代碼也是易事,和著機(jī)器的演奏學(xué)唱一首歌曲,其趣味無(wú)窮。 
;標(biāo)題 '八月桂花香'發(fā)聲程序 




  1. ORG 0000H
  2. LJMP START
  3. ORG 000BH
  4. INC 20H ;中斷服務(wù),中斷計(jì)數(shù)器加1
  5. MOV TH0,#0D8H
  6. MOV TL0,#0EFH ;12M晶振,形成10毫秒中斷
  7. RETI
  8. START: 
  9. MOV SP,#50H
  10. MOV TH0,#0D8H
  11. MOV TL0,#0EFH
  12. MOV TMOD,#01H
  13. MOV IE,#82H
  14. MUSIC0:
  15. NOP
  16. MOV DPTR,#DAT ;表頭地址送DPTR
  17. MOV 20H,#00H ;中斷計(jì)數(shù)器清0
  18. MUSIC1:
  19. NOP
  20. CLR A ;A清零
  21. MOVC A,@A+DPTR ;查表取代碼
  22. JZ END0 ;是00H,則結(jié)束
  23. CJNE A,#0FFH,MUSIC5 ;如果是休止符,往下執(zhí)行
  24. LJMP MUSIC3
  25. MUSIC5:
  26. NOP
  27. MOV R6,A ;R6=18H音符的頻率
  28. INC DPTR DPTR加一
  29. MOV A,#0
  30. MOVC A,@A+DPTR ;取節(jié)拍代碼送R7
  31. MOV R7,A ;R7=30H音符發(fā)音的時(shí)間
  32. SETB TR0 ;啟動(dòng)計(jì)數(shù) 
  33. MUSIC2:
  34. NOP
  35. CPL P2.5 ;P2.5是音樂(lè)輸出引腳
  36. MOV A,R6
  37. MOV R3,A ;R3=R6=18H
  38. LCALL DEL
  39. MOV A,R7
  40. CJNE A,20H,MUSIC2 ;中斷計(jì)數(shù)器(20H)=R7否?
  41. ;不等,則繼續(xù)循環(huán)
  42. MOV 20H,#00H ;等于,則取下一代碼
  43. INC DPTR
  44. LJMP MUSIC1
  45. MUSIC3:
  46. NOP ;休止100毫秒
  47. CLR TR0 
  48. MOV R2,#0DH ;R2=13
  49. MUSIC4:
  50. NOP
  51. MOV R3,#0FFH ;R3=255
  52. LCALL DEL
  53. DJNZ R2,MUSIC4
  54. INC DPTR
  55. LJMP MUSIC1
  56. END0:
  57. NOP
  58. MOV R2,#0FFH ;歌曲結(jié)束,延時(shí)1秒后繼續(xù)
  59. MUSIC6:
  60. MOV R3,#00H
  61. LCALL DEL
  62. DJNZ R2,MUSIC6
  63. LJMP MUSIC0
  64. DEL:
  65. NOP
  66. DEL3: 
  67. MOV R4,#02H
  68. DEL4: 
  69. NOP
  70. DJNZ R4,DEL4
  71. NOP
  72. DJNZ R3,DEL3
  73. RET
  74. NOP
  75. DAT: 
  76. DB 18H, 30H, 1CH, 10H
  77. DB 20H, 40H, 1CH, 10H 
  78. DB 18H, 10H, 20H, 10H
  79. DB 1CH, 10H, 18H, 40H
  80. DB 1CH, 20H, 20H, 20H
  81. DB 1CH, 20H, 18H, 20H 
  82. DB 20H, 80H, 0FFH, 20H
  83. DB 30H, 1CH, 10H , 18H
  84. DB 20H, 15H, 20H , 1CH
  85. DB 20H, 20H, 20H , 26H
  86. DB 40H, 20H , 20H , 2BH
  87. DB 20H, 26H, 20H , 20H 
  88. DB 20H, 30H , 80H , 0FFH
  89. DB 20H, 20H, 1CH , 10H
  90. DB 18H, 10H, 20H , 20H
  91. DB 26H, 20H , 2BH , 20H
  92. DB 30H, 20H , 2BH , 40H
  93. DB 20H, 20H , 1CH , 10H
  94. DB 18H, 10H, 20H, 20H
  95. DB 26H, 20H , 2BH, 20H
  96. DB 30H, 20H, 2BH , 40H
  97. DB 20H, 30H, 1CH , 10H
  98. DB 18H, 20H , 15H , 20H
  99. DB 1CH, 20H , 20H , 20H
  100. DB 26H, 40H, 20H , 20H 
  101. DB 2BH, 20H, 26H , 20H 
  102. DB 20H, 20H, 30H , 80H
  103. DB 20H, 30H, 1CH , 10H
  104. DB 20H, 10H, 1CH , 10H
  105. DB 20H, 20H, 26H , 20H
  106. DB 2BH, 20H, 30H , 20H
  107. DB 2BH, 40H, 20H , 15H
  108. DB 1FH, 05H, 20H , 10H
  109. DB 1CH, 10H, 20H , 20H
  110. DB 26H, 20H, 2BH , 20H
  111. DB 30H, 20H, 2BH , 40H
  112. DB 20H, 30H, 1CH , 10H
  113. DB 18H, 20H , 15H , 20H
  114. DB 1CH, 20H , 20H , 20H
  115. DB 26H, 40H, 20H , 20H
  116. DB 2BH, 20H, 26H , 20H
  117. DB 20H, 20H, 30H, 30H 
  118. DB 20H, 30H, 1CH, 10H
  119. DB 18H, 40H, 1CH, 20H
  120. DB 20H, 20H, 26H, 40H
  121. DB 13H, 60H, 18H , 20H
  122. DB 15H, 40H, 13H , 40H
  123. DB 18H, 80H, 00H
  124. end
復(fù)制代碼













分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:846897 發(fā)表于 2020-11-21 15:48 | 只看該作者
請(qǐng)問(wèn)怎么增加多個(gè)曲目呀
回復(fù)

使用道具 舉報(bào)

板凳
ID:876573 發(fā)表于 2021-4-14 11:50 | 只看該作者
有沒(méi)有詳細(xì)一點(diǎn)的教程啊? 想學(xué)學(xué)一下,樓主能不能分享一下多首曲目,帶上一首、下一首、以及開(kāi)始及暫停按鍵的程序啊,謝謝!我自己實(shí)在是想不出節(jié)奏來(lái)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久国产欧美日韩精品 | 国产在线精品一区二区三区 | 亚洲成人福利在线观看 | 天天干夜夜操 | 羞羞视频网站免费观看 | 一级毛片视频在线 | 免费一级毛片 | 北条麻妃国产九九九精品小说 | 91极品视频 | www.伊人.com | 国产免费一区二区 | 日本免费一区二区三区 | 久久亚洲免费 | 免费午夜视频 | 一区二区三区免费在线观看 | 国产乱码精品一区二区三区五月婷 | 99久久久久国产精品免费 | 日日爱av | 91porn成人精品 | 91不卡| 在线看av的网址 | 少妇久久久 | av毛片在线| www狠狠干 | 日本色高清 | 国产日本精品视频 | 国产精品久久久久久久久久久久久 | 99精品国自产在线 | 久草福利 | 大象视频一区二区 | 羞羞视频免费在线观看 | 日韩综合网 | 成人久久网 | 亚洲一区二区免费 | 亚洲午夜精品一区二区三区他趣 | 91www在线观看 | 国产成人自拍一区 | 免费黄视频网站 | 国产精品久久性 | 成人国内精品久久久久一区 | 在线国产小视频 |