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

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

QQ登錄

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

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

51單片機(jī)蜂鳴器播放音樂(lè)天空之城PPT教程+程序+Proteus仿真

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
前兩天上單片機(jī)課,講了蜂鳴器有關(guān)內(nèi)容,順便寫(xiě)了個(gè)蜂鳴器播放音樂(lè)的小程序;
程序在code文件夾下,使用keil4編譯,并附帶仿真,仿真環(huán)境為Proteus7.8;
想強(qiáng)調(diào)的一個(gè)問(wèn)題是音調(diào)之間加延時(shí)真的很重要,不然特別難聽(tīng)
ppt中講解了蜂鳴器的有關(guān)知識(shí),最后有關(guān)于執(zhí)行流程的講解

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


ppt教程預(yù)覽:


單片機(jī)源程序如下:
  1. /***************
  2. author:zc
  3. description: 蜂鳴器播放音樂(lè) 天空之城
  4.                           晶振11.0592Mhz
  5.                           實(shí)現(xiàn)方法:
  6.                                           while(1)循環(huán)中生成音調(diào)方波;
  7.                                         定時(shí)器1記錄每個(gè)音調(diào)的時(shí)長(zhǎng)并切換音調(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í)長(zhǎng)半拍
  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í)長(zhǎng)
  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;                                                 //開(kāi)中斷,打開(kāi)定時(shí)器開(kāi)關(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í)間,這里可以通過(guò)調(diào)t_tone前的系數(shù)可以改變時(shí)長(zhǎng)
  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í)特別難聽(tīng)
  193.         }
  194. }


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

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

  200. ……………………

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

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





評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:359022 發(fā)表于 2019-4-4 13:44 | 只看該作者
聽(tīng)了天空之城,謝謝!
回復(fù)

使用道具 舉報(bào)

板凳
ID:73182 發(fā)表于 2019-4-4 15:39 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

地板
ID:399179 發(fā)表于 2019-4-4 20:50 | 只看該作者
感謝樓主分享!
回復(fù)

使用道具 舉報(bào)

5#
ID:563985 發(fā)表于 2019-6-16 21:57 | 只看該作者
可以很厲害
回復(fù)

使用道具 舉報(bào)

6#
ID:427818 發(fā)表于 2019-6-25 22:52 | 只看該作者
學(xué)習(xí),很不錯(cuò)的分享
回復(fù)

使用道具 舉報(bào)

7#
ID:649188 發(fā)表于 2019-11-25 16:22 | 只看該作者
jyk 發(fā)表于 2019-6-25 22:52
學(xué)習(xí),很不錯(cuò)的分享

感謝分享
回復(fù)

使用道具 舉報(bào)

8#
ID:650865 發(fā)表于 2019-11-27 16:06 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

9#
ID:650945 發(fā)表于 2019-11-27 17:08 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

10#
ID:643576 發(fā)表于 2019-11-28 21:36 | 只看該作者
為什么可以用數(shù)字代替音樂(lè)
回復(fù)

使用道具 舉報(bào)

11#
ID:643576 發(fā)表于 2019-11-28 21:36 | 只看該作者
如何用數(shù)字代替音樂(lè)·
回復(fù)

使用道具 舉報(bào)

12#
ID:693587 發(fā)表于 2020-2-15 18:07 | 只看該作者
感謝分享.就是為啥數(shù)字可以代替音樂(lè)不懂
回復(fù)

使用道具 舉報(bào)

13#
ID:709595 發(fā)表于 2020-3-16 17:35 | 只看該作者
如何用數(shù)字代替音樂(lè)???不懂
回復(fù)

使用道具 舉報(bào)

14#
ID:596950 發(fā)表于 2020-3-25 14:29 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

15#
ID:846386 發(fā)表于 2020-12-1 23:38 | 只看該作者
不錯(cuò)不錯(cuò),這個(gè)可以學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

16#
ID:337139 發(fā)表于 2020-12-2 10:05 | 只看該作者
天空之城還是很好聽(tīng)的!
回復(fù)

使用道具 舉報(bào)

17#
ID:398588 發(fā)表于 2021-7-5 19:06 | 只看該作者
這個(gè)應(yīng)該是最完善的版本了,謝謝樓主
回復(fù)

使用道具 舉報(bào)

18#
ID:1132489 發(fā)表于 2025-5-7 23:46 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

19#
ID:1145963 發(fā)表于 2025-5-31 16:58 | 只看該作者
浙江杭州 發(fā)表于 2020-3-16 17:35
如何用數(shù)字代替音樂(lè)???不懂

定時(shí)器,頻率,周期可以改變音調(diào)和音長(zhǎng)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天操夜夜操狠狠操 | 国产传媒在线 | 日韩精品久久久久 | 日韩中文字幕精品 | 欧美视频亚洲视频 | 91福利区| 波多野结衣乳巨码无在线观看 | 9l视频自拍九色9l视频成人 | 一区二区视频在线 | www.4hu95.com四虎| 国产精品免费在线播放 | 亚洲欧美日韩一区二区 | 欧美日韩综合在线 | 新香蕉视频 | 久草久草| 欧美精品www | 欧美资源在线 | 最新日韩av| 亚洲经典av| 成人av免费看 | 国产精品伦子伦免费视频 | 久久这里都是精品 | 综合av| 国产91在线看 | 高清一区二区三区 | 亚洲av毛片成人精品 | 日韩伦理一区二区 | 久久精品亚洲 | 久久久亚洲天堂 | 四虎影视在线播放 | 色午夜 | 免费视频一区二区 | 日韩aaaa | 日本成人一区二区 | 黄色大片免费在线观看 | 欧美久久久久久久久久 | 欧美在线激情 | 超碰成人免费 | 在线黄网 | 天天色天天爱 | 成人国产综合 |