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

標(biāo)題: 51單片機(jī)蜂鳴器播放音樂天空之城PPT教程+程序+Proteus仿真 [打印本頁]

作者: zc98    時(shí)間: 2019-3-30 21:01
標(biāo)題: 51單片機(jī)蜂鳴器播放音樂天空之城PPT教程+程序+Proteus仿真
前兩天上單片機(jī)課,講了蜂鳴器有關(guān)內(nèi)容,順便寫了個(gè)蜂鳴器播放音樂的小程序;
程序在code文件夾下,使用keil4編譯,并附帶仿真,仿真環(huán)境為Proteus7.8;
想強(qiáng)調(diào)的一個(gè)問題是音調(diào)之間加延時(shí)真的很重要,不然特別難聽
ppt中講解了蜂鳴器的有關(guān)知識(shí),最后有關(guān)于執(zhí)行流程的講解

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


ppt教程預(yù)覽:


單片機(jī)源程序如下:
  1. /***************
  2. author:zc
  3. description: 蜂鳴器播放音樂 天空之城
  4.                           晶振11.0592Mhz
  5.                           實(shí)現(xiàn)方法:
  6.                                           while(1)循環(huán)中生成音調(diào)方波;
  7.                                         定時(shí)器1記錄每個(gè)音調(diào)的時(shí)長并切換音調(diào)
  8. ****************/

  9. #include "reg51.h"
  10. #include "intrins.h"
  11. unsigned int tones[]=                            //C調(diào)音調(diào)
  12. {
  13. 3816,3401,3030,2865,2551,2272,2024,         //低音
  14. 1912,1703,1517,1432,1275,1136,1012,         //中音
  15. 965, 851, 758, 715, 605, 538, 466         //高音
  16. };

  17. unsigned char code sky[]={                         //譜子
  18. //格式: 音調(diào), 音度, 拍數(shù)
  19. //例: 4,1,1 //音調(diào)fa,中音,時(shí)長半拍
  20. //0代表空音
  21. 0,0,2,
  22. 0,0,2,
  23. 0,0,2,
  24. 6,1,1,
  25. 7,1,1,

  26. 1,2,3,
  27. 7,1,1,
  28. 1,2,2,
  29. 3,2,2,

  30. 7,1,4,
  31. 0,2,2,
  32. 3,1,1,
  33. 3,1,1,

  34. 6,1,3,
  35. 5,1,1,
  36. 6,1,2,
  37. 1,2,2,

  38. 5,1,4,
  39. 0,1,2,
  40. 3,1,2,

  41. 4,1,3,
  42. 3,1,1,
  43. 4,1,2,
  44. 1,2,2,

  45. 3,1,3,
  46. 0,0,1,
  47. 1,2,1,
  48. 1,2,1,
  49. 1,2,1,

  50. 7,1,3,
  51. 4,1,1,
  52. 4,1,2,
  53. 7,1,2,

  54. 7,1,4,
  55. 0,0,2,
  56. 6,1,1,
  57. 7,1,1,

  58. 1,2,3,
  59. 7,1,1,
  60. 1,2,2,
  61. 3,2,2,

  62. 7,1,4,
  63. 0,0,2,
  64. 3,1,1,
  65. 3,1,1,

  66. 6,1,3,
  67. 5,1,1,
  68. 6,1,2,
  69. 1,2,2,

  70. 5,1,4,
  71. 0,0,2,
  72. 2,1,1,
  73. 3,1,1,

  74. 4,1,2,
  75. 1,2,1,
  76. 7,1,2,
  77. 1,2,3,

  78. 2,2,1,
  79. 2,2,1,
  80. 3,2,1,
  81. 1,2,3,
  82. 0,0,2,

  83. 1,2,1,
  84. 7,1,1,
  85. 6,1,1,
  86. 6,1,1,
  87. 7,1,2,
  88. 5,1,2,

  89. 6,1,4,
  90. 0,0,2,
  91. 1,2,1,
  92. 2,2,1,

  93. 3,2,3,
  94. 2,2,1,
  95. 3,2,2,
  96. 5,2,2,

  97. 2,2,4,
  98. 0,0,2,
  99. 5,1,1,
  100. 5,1,1,

  101. 1,2,3,
  102. 7,1,1,
  103. 1,2,2,
  104. 3,2,2,

  105. 3,2,4,
  106. 0,0,2,

  107. 6,1,1,
  108. 7,1,1,
  109. 1,2,2,
  110. 7,1,2,
  111. 2,2,1,
  112. 2,2,1,

  113. 1,2,3,
  114. 5,1,1,
  115. 5,1,3,
  116. 0,0,1,

  117. 4,2,2,
  118. 3,2,2,
  119. 2,2,2,
  120. 1,2,2,

  121. 3,2,4,
  122. 0,0,2,
  123. 3,2,2,

  124. 6,2,4,
  125. 5,2,2,
  126. 5,2,2,

  127. 3,2,1,
  128. 2,2,1,
  129. 1,2,4,
  130. 0,2,1,
  131. 1,2,1,

  132. 2,2,2,
  133. 1,2,1,
  134. 2,2,1,
  135. 2,2,2,
  136. 5,2,2,

  137. 3,2,4,
  138. 0,2,2,
  139. 3,2,2,


  140. 6,2,4,
  141. 5,2,4,

  142. 3,2,1,
  143. 2,2,1,
  144. 1,2,4,
  145. 0,0,1,
  146. 1,2,1,

  147. 2,2,2,
  148. 1,2,1,
  149. 2,2,1,
  150. 2,2,2,
  151. 7,1,2,

  152. 6,1,2,
  153. };

  154. sbit        Buzzer=P3^0;                     //定義buzzer引腳
  155. void delay_ms( unsigned int t)        ;         //毫秒延時(shí)12MHz下
  156. void delay_us( unsigned int t)        ;         //微妙延時(shí)12MHz下
  157. void play_tone(unsigned int tone);         //播放音調(diào)函數(shù),即方波發(fā)生器
  158. void time_init( void );                                 //初始化定時(shí)器
  159. unsigned char s=0, t_tone=0;             //s用作定時(shí)器計(jì)時(shí), t_tone保存音調(diào)時(shí)長
  160. unsigned int  tone=0;                             //tone保存音調(diào),
  161. char *tone_p=sky;                                         //指針指向要播放的曲目

  162. void main( void )
  163. {
  164.         time_init();                                         //初始化定時(shí)器
  165.         while(1)
  166.                 if(tone!=0)play_tone(tone);         //一直在播放音調(diào),播放的音調(diào)由定時(shí)器切換,
  167.                                                                          //音調(diào)時(shí)常由定時(shí)器決定
  168. }                                                                         //如果tone==0 不進(jìn)入播放

  169. void time_init( void )
  170. {
  171.         TMOD|=0x10;                                                 //使用定時(shí)器1
  172.         TH1=(65536-65000)/256;                         //裝初值
  173.         TL1=(65536-65000)%256;
  174.         EA =  1;                                                 //開中斷,打開定時(shí)器開關(guān)
  175.         ET1 = 1;
  176.         TR1 = 1;
  177. }

  178. void timer1( void ) interrupt 3                 //定時(shí)器1 中斷
  179. {
  180.         TH1=(65536-50000)/256;                         //裝初值
  181.         TL1=(65536-50000)%256;
  182.         s++;
  183.         if(s>=4*t_tone)                                         //一個(gè)音節(jié)播放的時(shí)間,這里可以通過調(diào)t_tone前的系數(shù)可以改變時(shí)長
  184.         {
  185.                 s=0;                                                 //講計(jì)時(shí)器清零
  186.                 if((*tone_p)!=0)                         //如果音不是0
  187.                         tone = tones[*tone_p+7*(*(tone_p+1))-1];  //賦值音調(diào)
  188.                 else
  189.                         tone = 0;                             //關(guān)了蜂鳴器
  190.                 t_tone = *(tone_p+2);                 //取時(shí)間啊
  191.                 tone_p+=3;                                         //移動(dòng)指針
  192.                 delay_ms(30);                                 //延時(shí)一下,不延時(shí)特別難聽
  193.         }
  194. }


  195. void play_tone(unsigned int tone)         //播音調(diào)函數(shù),就是方波發(fā)生器
  196. {

  197.                 Buzzer=!Buzzer;                                 
  198.                 delay_us(tone);               
  199. }

  200. ……………………

  201. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
test2.rar (2.16 MB, 下載次數(shù): 542)






作者: zengxuteng    時(shí)間: 2019-4-4 13:44
聽了天空之城,謝謝!
作者: ptlantu    時(shí)間: 2019-4-4 15:39
感謝分享
作者: 快樂眼淚    時(shí)間: 2019-4-4 20:50
感謝樓主分享!
作者: wqqe去    時(shí)間: 2019-6-16 21:57
可以很厲害
作者: jyk    時(shí)間: 2019-6-25 22:52
學(xué)習(xí),很不錯(cuò)的分享
作者: 54321gk    時(shí)間: 2019-11-25 16:22
jyk 發(fā)表于 2019-6-25 22:52
學(xué)習(xí),很不錯(cuò)的分享

感謝分享

作者: LYAJJ    時(shí)間: 2019-11-27 16:06
感謝分享
作者: 1664532612    時(shí)間: 2019-11-27 17:08
感謝分享
作者: 單片機(jī)老司機(jī)    時(shí)間: 2019-11-28 21:36
為什么可以用數(shù)字代替音樂
作者: 單片機(jī)老司機(jī)    時(shí)間: 2019-11-28 21:36
如何用數(shù)字代替音樂·
作者: xuexuexixi    時(shí)間: 2020-2-15 18:07
感謝分享.就是為啥數(shù)字可以代替音樂不懂
作者: 浙江杭州    時(shí)間: 2020-3-16 17:35
如何用數(shù)字代替音樂???不懂
作者: C919_    時(shí)間: 2020-3-25 14:29
感謝樓主分享

作者: kiccleaf    時(shí)間: 2020-12-1 23:38
不錯(cuò)不錯(cuò),這個(gè)可以學(xué)習(xí)了
作者: 長風(fēng)007    時(shí)間: 2020-12-2 10:05
天空之城還是很好聽的!
作者: 1375626371    時(shí)間: 2021-7-5 19:06
這個(gè)應(yīng)該是最完善的版本了,謝謝樓主
作者: 安裝現(xiàn)代化NSA    時(shí)間: 2025-5-7 23:46
感謝分享
作者: 成一1    時(shí)間: 2025-5-31 16:58
浙江杭州 發(fā)表于 2020-3-16 17:35
如何用數(shù)字代替音樂???不懂

定時(shí)器,頻率,周期可以改變音調(diào)和音長





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91手机看片 | 国产成人免费 | 亚洲成人免费网站 | 欧美a级黄色片 | a级片免费在线观看 | 欧美黑人性猛交 | 国产成人黄色 | 亚洲精品大片 | 黄色一区二区三区 | 亚洲性视频 | 91午夜理伦私人影院 | 中文字幕免费在线观看 | 国产成人影视 | 黄色一区二区三区 | 午夜视频在线免费观看 | 久久九九免费视频 | 欧美成人午夜 | 中文字幕在线观看网站 | 国产精品视频网站 | 久久精品欧美一区 | 可以看的毛片 | 污视频网站在线观看 | h视频免费在线观看 | 久久精品二区 | 国产va在线观看 | 国产蜜臀av | 一区二区三区四区在线 | 国产一二三 | 欧美极品一区 | 精品国产999久久久免费 | 国产精品一区三区 | 国产成人小视频 | 四虎三级 | 91在线网站 | 国产成人久久精品麻豆二区 | 蜜臀久久99精品久久久久久宅男 | 91精品国自产在线观看 | 国产成人99久久亚洲综合精品 | 精品精品 | 17c在线| 国产精品欧美日韩 |