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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1106|回復: 1
打印 上一主題 下一主題
收起左側

有沒有大神解釋一下單片機音樂代碼 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:439126 發表于 2019-3-29 23:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit S1=P3^5;
  5. sbit S2=P3^4;
  6. sbit S3=P3^3;
  7. sbit S4=P3^2;
  8. sbit RCK= P2^0;
  9. sbit DS= P2^2;
  10. sbit CLK= P2^1;
  11. sbit Speak=P3^6;//蜂鳴器
  12. uchar stop_flage;
  13. uchar table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  14. //uchar table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  15. uchar COUNT_1=0,count=0,yimiao=0,j,i; //,stop=0
  16. uchar b=0,zhi;
  17. uint Table_1[3]={0,183,401};
  18. uchar shu=1;
  19. char m=1;
  20. uchar code SONG[] ={ //路邊的野花不要采
  21. 0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
  22. 0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
  23. 0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
  24. 0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
  25. 0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
  26. 0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
  27. 0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
  28. 0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
  29. 0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
  30. 0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
  31. 0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
  32. 0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,
  33. //祝你平安
  34. 0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
  35. 0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
  36. 0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
  37. 0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
  38. 0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
  39. 0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
  40. 0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
  41. 0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
  42. 0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
  43. 0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
  44. 0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
  45. 0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
  46. 0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
  47. 0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
  48. //天空之城
  49. 0x1c,0x30,0x19,0x30,0x18,0x40,0x19,0x30,0x18,0x30,0x13,0x30,0x19,0x80,
  50. 0x26,0x30,0x26,0x30,0x1c,0x40,0x20,0x30,0x1c,0x30,0x18,0x30,0x20,0x60,
  51. 0x26,0x30,0x26,0x30,0x24,0x40,0x26,0x30,0x24,0x30,0x18,0x40,0x26,0x60,
  52. 0x18,0x20,0x18,0x20,0x18,0x20,0x19,0x40,0x24,0x30,0x24,0x30,0x19,0x30,
  53. 0x19,0x60,0x1c,0x30,0x19,0x30,0x18,0x40,0x19,0x30,0x18,0x30,0x13,0x30,
  54. 0x19,0x60,0x26,0x30,0x26,0x30,0x1c,0x40,0x20,0x30,0x1c,0x30,0x18,0x30,
  55. 0x20,0x80,0x26,0x30,0x24,0x30,0x24,0x30,0x18,0x30,0x19,0x20,0x19,0x30,
  56. 0x18,0x30,0x15,0x20,0x15,0x20,0x13,0x20,0x18,0x40,0x18,0x30,0x19,0x30,
  57. 0x1c,0x20,0x1c,0x20,0x19,0x30,0x20,0x30,0x1c,0x60,0x18,0x30,0x15,0x30,
  58. 0x13,0x40,0x15,0x30,0x13,0x30,0x10,0x30,0x15,0x60,0x20,0x30,0x20,0x30,
  59. 0x18,0x30,0x19,0x30,0x18,0x30,0x13,0x30,0x13,0x60,0x1c,0x20,0x19,0x20,
  60. 0x18,0x30,0x19,0x30,0x15,0x20,0x15,0x20,0x18,0x40,0x20,0x30,0x20,0x30,
  61. 0x12,0x30,0x13,0x30,0x15,0x30,0x18,0x30,0x13,0xc0,0x13,0x80,0x13,0x30,
  62. 0x0e,0x80,0x10,0x30,0x10,0x30,0x13,0x20,0x15,0x20,0x18,0x40,0x18,0x30,
  63. 0x15,0x30,0x18,0x20,0x15,0x20,0x15,0x30,0x10,0x30,0x13,0x60,0x13,0x30,
  64. 0x0e,0x60,0x10,0x60,0x13,0x20,0x15,0x20,0x18,0x40,0x18,0x30,0x15,0x30,
  65. 0x15,0x20,0x18,0x20,0x15,0x30,0x19,0x30,0x1c,0x60,0x1c,0x30,0x19,0x30,
  66. 0x1c,0xc0,0x00,
  67. };
  68. void Delay_xMs(uint x)//1ms0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,
  69. {
  70. unsigned int i,j;
  71. for( i =0;i < x;i++ )
  72. {
  73. for( j =0;j<3;j++ );
  74. }
  75. }
  76. void Delay(uint del)
  77. {
  78. uint i,j;
  79. for(i=0;i<del;i++)
  80. for(j=0;j<=184;j++);
  81. }
  82. void writ_595(uchar x)
  83. {        uchar dat,y;
  84. dat=x;
  85. for(y=0;y<8;y++)
  86. {
  87. CLK=0;
  88. if((dat&0x80) == 0x80)
  89. DS = 1; //串行數據輸出
  90. else
  91. DS = 0;
  92. CLK=1; //移位輸入時鐘,上升沿輸入
  93. dat<<=1;
  94. }
  95. RCK=0; //并行輸出時鐘
  96. RCK=1;
  97. }
  98. void Time0_Init()
  99. {
  100. TMOD=0x11;
  101. IE=0x8A;
  102. TH0=0xDC;//10ms
  103. TL0=0x00;
  104. TH1=0x4C;//        50ms
  105. TL1=0x00;
  106. }
  107. void Time0_Int() interrupt 1
  108. {
  109. TH0=0xDC;
  110. TL0=0x00;
  111. COUNT_1++;
  112. }
  113. void Time1_Int() interrupt 3
  114. {
  115. TH1=0x4C;//        1ms
  116. TL1=0x00;
  117. count++;
  118. if(count==20)
  119. {
  120. yimiao++;
  121. count=0;
  122. writ_595(table[yimiao%10]);
  123. writ_595(table[yimiao/10]);
  124. writ_595(table[m+1]);
  125. }
  126. }
  127. void Play_Song(uchar i)
  128. {
  129. uchar Temp1,Temp2;//stop=0
  130. uint Addr;
  131. COUNT_1 = 0; //中斷計數器清0
  132. if(i==0)
  133. {
  134. Addr=Table_1[--shu];
  135. }
  136. if(i==1)
  137. {
  138. Addr=Table_1[shu];
  139. }
  140. if(i==2)
  141. {
  142. Addr=Table_1[++shu];
  143. }
  144. while(1)
  145. {
  146. Temp1 = SONG[Addr++];
  147. if ( Temp1 == 0xFF ) //休止符
  148. {
  149. TR0 = 0;
  150. Delay_xMs(100);
  151. }
  152. else if ( Temp1 == 0x00 ) //歌曲結束符
  153. {
  154. return;
  155. //        stop=1;
  156. }
  157. else
  158. {
  159. Temp2 = SONG[Addr++];
  160. TR0 = 1;
  161. while(1)
  162. {
  163. Speak = ~Speak;
  164. //十位
  165. Delay_xMs(Temp1);
  166. //各位
  167. while(stop_flage)
  168. {
  169. if(S2==0)
  170. {
  171. Delay_xMs(200);
  172. if(S2==0)
  173. {
  174. stop_flage=0;
  175. TR1=1;
  176. while(S2==0);
  177. }
  178. }
  179. }
  180. if(S2==0)//暫停
  181. {
  182. Delay_xMs(200);
  183. if(S2==0)
  184. {
  185. stop_flage=1;
  186. TR1=0;
  187. while(S2==0);
  188. }
  189. }

  190. if(S3==0)//上一首
  191. {
  192. Delay_xMs(200);
  193. if(S3==0)
  194. {
  195. TR1=0;
  196. Delay_xMs(250);
  197. TR1=1;
  198. m--;
  199. //        m=0;
  200. if(m<=0)
  201. {
  202. m=0;
  203. //        while(Key3==0);
  204. }
  205. yimiao=0;
  206. Addr=Table_1[--shu];
  207. while(S3==0);
  208. }
  209. }
  210. if(S4==0)//下一首
  211. {
  212. Delay_xMs(200);
  213. if(S4==0)
  214. {
  215. m++;
  216. TR1=0;
  217. Delay_xMs(250);
  218. TR1=1;
  219. //        m=2;
  220. if(m>2)
  221. {
  222. m=2;
  223. while(S4==0);
  224. }
  225. yimiao=0;
  226. Addr=Table_1[++shu];
  227. while(S4==0);
  228. }
  229. }
  230. if ( Temp2 == COUNT_1 )
  231. {
  232. COUNT_1 = 0;
  233. break;
  234. }
  235. }
  236. }
  237. }
  238. }
  239. main()
  240. {
  241. Time0_Init();
  242. while(1)
  243. {
  244. if(S1==0)//播放        2
  245. {
  246. Delay_xMs(200);
  247. if(S1==0)
  248. {
  249. TR1=1;
  250. Play_Song(m);
  251. TR1=0;
  252. if(S4==0||S3==0)
  253. {
  254. break;
  255. }
  256. }
  257. }
  258. if(S3==0)//上一首
  259. {
  260. Delay_xMs(200);
  261. if(S3==0)
  262. {
  263. m--;
  264. Delay_xMs(6500);
  265. yimiao=0;
  266. TR1=1;
  267. Play_Song(m);
  268. TR1=0;
  269. }
  270. }
  271. if(S4==0)//下一首
  272. {
  273. Delay_xMs(20);
  274. if(S4==0)
  275. {
  276. m++;
  277. yimiao=0;
  278. TR1=1;
  279. Play_Song(m);
  280. TR1=0;
  281. if(S3==0)
  282. {
  283. break;
  284. }
  285. }
  286. }
  287. }
  288. }
  289. 這是在網上抄的代碼,我想換另外三首,但是數組里的數怎么來的我真的看不懂。
  290. 后面的代碼是我用音樂轉化器得到的代碼,每一首都是分開的
  291. #include <REG51.H>
  292. #define uchar unsigned char
  293. sbit beepIO=P3^6;
  294. uchar m,n;
  295. uchar code T[49][2]={{0,0},
  296. {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
  297. {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
  298. {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
  299. {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
  300. };
  301. uchar code music[][2]={{0,4},
  302. {12,8},{8,4},{8,4},{13,8},{15,4},{15,4},{17,4},{15,2},{17,2},{17,24},{0,8},{8,4},{8,4},{13,8},{15,4},{15,4},{17,4},{13,2},{15,2},{15,24},{0,8},{8,4},{8,4},{13,8},{15,4},{15,4},{17,4},{15,2},{17,2},{17,16},{13,4},{17,4},{15,24},{15,4},{13,4},{13,8},{13,4},{15,4},{15,16},{0,8},{8,4},{8,4},{13,8},{15,4},{15,4},{20,4},{15,2},{17,2},{17,24},{0,8},{8,4},{8,4},{13,4},{13,4},{15,4},{15,4},{17,4},{15,4},{15,24},{0,8},{8,4},{8,4},{13,8},{15,4},{15,4},{17,4},{15,2},{17,2},{17,16},{13,4},{17,4},{15,24},{15,4},{13,4},{13,4},{15,4},{15,24},{15,24},{0,8},{13,4},{8,4},{13,4},{15,4},{15,4},{15,4},{15,4},{20,4},{13,4},{13,4},{13,4},{17,4},{17,16},{10,4},{6,4},{6,4},{13,4},{12,4},{12,4},{10,4},{12,4},{13,4},{13,4},{13,4},{13,2},{15,2},{15,16},{17,4},{17,4},{17,4},{17,4},{15,4},{15,4},{15,4},{20,4},{22,4},{22,4},{22,4},{20,4},{17,16},{18,4},{18,4},{18,4},{22,4},{22,4},{20,4},{20,4},{20,4},{13,4},{13,4},{13,4},{15,4},{13,16},
  303. {0xFF,0xFF}};

  304. void delay(uchar p)
  305. {
  306.     uchar i,j;
  307.     for(;p>0;p--)
  308.     for(i=181;i>0;i--)
  309.     for(j=181;j>0;j--);
  310. }

  311. void pause()
  312. {
  313.     uchar i,j;
  314.     for(i=150;i>0;i--)
  315.     for(j=150;j>0;j--);
  316. }

  317. void T0_int() interrupt 1
  318. {
  319. beepIO=!beepIO;
  320. TH0=T[m][0]; TL0=T[m][1];
  321. }

  322. void main()
  323. {
  324. uchar i=0;
  325. TMOD=0x01;  EA=1; ET0=1;
  326. while(1)
  327.       {
  328.         m=music[i][0];n=music[i][1];
  329.            if(m==0x00)
  330.              {TR0=0;delay(n);i++;}
  331.            else if(m==0xFF)
  332.              {TR0=0;delay(30);i=0;}
  333.            else if(m==music[i+1][0])
  334.              {TR0=1;delay(n);TR0=0;pause();i++;}
  335.            else
  336.              {TR0=1;delay(n);i++;}
  337.       }
  338. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:328014 發表于 2019-3-31 02:30 | 只看該作者
其實那些數組都是頻率表
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲国产一区 | 日本在线看片 | 欧美一区二区三区在线播放 | 国产综合精品一区二区三区 | 久久久久久国产精品免费 | 欧美日韩视频 | 一区二区在线不卡 | 91久久精品国产免费一区 | 国产精品国产成人国产三级 | 男女羞羞视频在线免费观看 | 自拍偷拍第一页 | 亚洲国产成人精品女人久久久 | 一区二区三区四区在线视频 | 黄在线 | 韩日一区二区三区 | 亚洲香蕉在线视频 | 色婷婷久久久久swag精品 | 一级片av | h视频免费看 | 国产在线观看一区二区三区 | 亚洲一页| 亚洲一区在线观看视频 | 欧美伊人久久久久久久久影院 | 1000部精品久久久久久久久 | 中文字幕av网站 | 精品伦精品一区二区三区视频 | 草草视频在线免费观看 | 国产精品高潮呻吟久久久久 | 久在线| 中文字幕av在线播放 | 欧美日韩在线一区二区 | 四虎最新地址 | 欧一区 | 精品国产一区二区三区久久 | 在线观看www视频 | av大片在线观看 | 91视频进入 | 久久综合久 | www.成人免费视频 | 日本不卡一区 | 亚洲第一av |