当前位置:   article > 正文

51单片机实现蜂鸣器播放天空之城_单片机蜂鸣器代码天空之城

单片机蜂鸣器代码天空之城
  1. #include <REGX52.H>
  2. #include "Delay.h"
  3. #include "Timer0.h"
  4. //蜂鸣器端口定义
  5. sbit Buzzer=P1^5;
  6. //播放速度,值为四分音符的时长(ms)
  7. #define SPEED 500
  8. //音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#
  9. #define P 0
  10. #define L1 1
  11. #define L1_ 2
  12. #define L2 3
  13. #define L2_ 4
  14. #define L3 5
  15. #define L4 6
  16. #define L4_ 7
  17. #define L5 8
  18. #define L5_ 9
  19. #define L6 10
  20. #define L6_ 11
  21. #define L7 12
  22. #define M1 13
  23. #define M1_ 14
  24. #define M2 15
  25. #define M2_ 16
  26. #define M3 17
  27. #define M4 18
  28. #define M4_ 19
  29. #define M5 20
  30. #define M5_ 21
  31. #define M6 22
  32. #define M6_ 23
  33. #define M7 24
  34. #define H1 25
  35. #define H1_ 26
  36. #define H2 27
  37. #define H2_ 28
  38. #define H3 29
  39. #define H4 30
  40. #define H4_ 31
  41. #define H5 32
  42. #define H5_ 33
  43. #define H6 34
  44. #define H6_ 35
  45. #define H7 36
  46. //索引与频率对照表
  47. unsigned int FreqTable[]={
  48. 0,
  49. 63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,
  50. 64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,
  51. 65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,
  52. };
  53. //乐谱
  54. unsigned char code Music[]={
  55. //音符,时值,
  56. //1
  57. P, 4,
  58. P, 4,
  59. P, 4,
  60. M6, 2,
  61. M7, 2,
  62. H1, 4+2,
  63. M7, 2,
  64. H1, 4,
  65. H3, 4,
  66. M7, 4+4+4,
  67. M3, 2,
  68. M3, 2,
  69. //2
  70. M6, 4+2,
  71. M5, 2,
  72. M6, 4,
  73. H1, 4,
  74. M5, 4+4+4,
  75. M3, 4,
  76. M4, 4+2,
  77. M3, 2,
  78. M4, 4,
  79. H1, 4,
  80. //3
  81. M3, 4+4,
  82. P, 2,
  83. H1, 2,
  84. H1, 2,
  85. H1, 2,
  86. M7, 4+2,
  87. M4_,2,
  88. M4_,4,
  89. M7, 4,
  90. M7, 8,
  91. P, 4,
  92. M6, 2,
  93. M7, 2,
  94. //4
  95. H1, 4+2,
  96. M7, 2,
  97. H1, 4,
  98. H3, 4,
  99. M7, 4+4+4,
  100. M3, 2,
  101. M3, 2,
  102. M6, 4+2,
  103. M5, 2,
  104. M6, 4,
  105. H1, 4,
  106. //5
  107. M5, 4+4+4,
  108. M2, 2,
  109. M3, 2,
  110. M4, 4,
  111. H1, 2,
  112. M7, 2+2,
  113. H1, 2+4,
  114. H2, 2,
  115. H2, 2,
  116. H3, 2,
  117. H1, 2+4+4,
  118. //6
  119. H1, 2,
  120. M7, 2,
  121. M6, 2,
  122. M6, 2,
  123. M7, 4,
  124. M5_,4,
  125. M6, 4+4+4,
  126. H1, 2,
  127. H2, 2,
  128. H3, 4+2,
  129. H2, 2,
  130. H3, 4,
  131. H5, 4,
  132. //7
  133. H2, 4+4+4,
  134. M5, 2,
  135. M5, 2,
  136. H1, 4+2,
  137. M7, 2,
  138. H1, 4,
  139. H3, 4,
  140. H3, 4+4+4+4,
  141. //8
  142. M6, 2,
  143. M7, 2,
  144. H1, 4,
  145. M7, 4,
  146. H2, 2,
  147. H2, 2,
  148. H1, 4+2,
  149. M5, 2+4+4,
  150. H4, 4,
  151. H3, 4,
  152. H3, 4,
  153. H1, 4,
  154. //9
  155. H3, 4+4+4,
  156. H3, 4,
  157. H6, 4+4,
  158. H5, 4,
  159. H5, 4,
  160. H3, 2,
  161. H2, 2,
  162. H1, 4+4,
  163. P, 2,
  164. H1, 2,
  165. //10
  166. H2, 4,
  167. H1, 2,
  168. H2, 2,
  169. H2, 4,
  170. H5, 4,
  171. H3, 4+4+4,
  172. H3, 4,
  173. H6, 4+4,
  174. H5, 4+4,
  175. //11
  176. H3, 2,
  177. H2, 2,
  178. H1, 4+4,
  179. P, 2,
  180. H1, 2,
  181. H2, 4,
  182. H1, 2,
  183. H2, 2+4,
  184. M7, 4,
  185. M6, 4+4+4,
  186. P, 4,
  187. 0xFF //终止标志
  188. };
  189. unsigned char FreqSelect,MusicSelect;
  190. void main()
  191. {
  192. Timer0Init();
  193. while(1)
  194. {
  195. if(Music[MusicSelect]!=0xFF) //如果不是停止标志位
  196. {
  197. FreqSelect=Music[MusicSelect]; //选择音符对应的频率
  198. MusicSelect++;
  199. Delay(SPEED/4*Music[MusicSelect]); //选择音符对应的时值
  200. MusicSelect++;
  201. TR0=0;
  202. Delay(5); //音符间短暂停顿
  203. TR0=1;
  204. }
  205. else //如果是停止标志位
  206. {
  207. TR0=0;
  208. while(1);
  209. }
  210. }
  211. }
  212. void Timer0_Routine() interrupt 1
  213. {
  214. if(FreqTable[FreqSelect]) //如果不是休止符
  215. {
  216. /*取对应频率值的重装载值到定时器*/
  217. TL0 = FreqTable[FreqSelect]%256; //设置定时初值
  218. TH0 = FreqTable[FreqSelect]/256; //设置定时初值
  219. Buzzer=!Buzzer; //翻转蜂鸣器IO口
  220. }
  221. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/554309
推荐阅读
相关标签
  

闽ICP备14008679号