找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 924|回复: 1
打印 上一主题 下一主题
收起左侧

单片机红外编码,解码实验和音乐应用实验程序

[复制链接]
跳转到指定楼层
楼主
ID:846549 发表于 2020-11-20 17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. *****************************************************************************/

  2. #include <reg52.h>
  3. #include <stdio.h>

  4. sbit sound=P3^3;         //蜂鸣器
  5. sbit IR=P3^2;            //P3.2为红外一体化接收
  6. sbit SPK=P3^7;           //喇叭


  7. unsigned char data l;   //第几个码?
  8. unsigned char  dm;
  9. unsigned char  aa[2]; //定义2个数组,用来存储代码,8位的数据码和8位的数据反码
  10. unsigned long  bb;    //定义bb用来存放用户识别码,这里采用的是26位的用户识别

  11. unsigned char  *song;
  12. bit data IR_OK=0;             //解码成功标志
  13. unsigned char song_number;       //第几首歌曲号码

  14. //第一首  干杯,朋友
  15. unsigned char code song1[97]={0x34,0x32,0x32,0x34,0x42,0x51,
  16.                              0x62,0x52,0x42,0x32,0x34,0x04,
  17.                              0x74,0x74,0x62,0x62,0x64,
  18.                                      0x3c,0x04,
  19.                              0x64,0x62,0x52,0x42,0x32,0x34,
  20.                              0x33,0x31,0x32,0x72,0x76,0x72,
  21.                              0x83,0x81,0x82,0x82,0x82,0x74,0x72,
  22.                                      0x7c,0x04,
  23.                              0x63,0x61,0x62,0x62,0x64,0x72,0x82,
  24.                              0x72,0x74,0x72,0x62,0x52,0x42,0x32,
  25.                              0x42,0x44,0x42,0x42,0x52,0x62,0x52,
  26.                                      0x5c,0x04,
  27.                              0x64,0x62,0x62,0x64,0x72,0x82,
  28.                              0x72,0x74,0x72,0x62,0x52,0x42,0x32,
  29.                              0x42,0x46,0x53,0x41,0x42,0x32,
  30.                                      0x3c,0x04,
  31.                              0x44,0x48,0x02,0x32,
  32.                                          0x3f,
  33.                              0x44,0x48,0x02,0x32,
  34.                                          0x3f,
  35.                                      0x34,0x0c,
  36.                              0xFF};
  37. //第二首 兰花草
  38. unsigned char code song2[46]={0x12,0x52,0x52,0x52,0x56,0x42,
  39.                              0x32,0x42,0x32,0x22,0x18,
  40.                              0x82,0x82,0x82,0x82,0x86,0x72,
  41.                              0xB2,0x72,0x72,0x62,0x58,
  42.                              0x52,0x82,0x82,0x72,0x56,0x42,
  43.                              0x32,0x42,0x32,0x22,0x16,0xB2,
  44.                              0xB2,0x32,0x32,0x22,0x16,0x52,
  45.                              0x42,0x32,0x22,0xC2,0x88,
  46.                                          0xFF};
  47. //第三首 两只蝴蝶
  48. unsigned char code song3[131]={0x52,0x42,
  49.                              0x58,0x02,0x42,0x52,0x42,
  50.                              0x38,0x04,0x12,0x32,
  51.                              0x44,0x42,0x52,0x42,0x32,0x12,0x12,
  52.                              0xC8,0x04,0x52,0x42,
  53.                              0x58,0x02,0x42,0x52,0x42,
  54.                              0x38,0x04,0x12,0x32,
  55.                              0x44,0x42,0x52,0x42,0x32,0x12,0x32,
  56.                              0x48,0x04,0x52,0x42,
  57.                              0x58,0x02,0x42,0x52,0x42,
  58.                              0x38,0x04,0x12,0x32,
  59.                              0x44,0x42,0x52,0x42,0x32,0x12,0x11,0x31,
  60.                              0xC8,0x04,0x52,0x72,
  61.                              0x78,0x02,0x72,0x82,0x72,
  62.                              0x58,0x04,0x42,0x42,
  63.                              0x44,0x42,0x52,0x42,0x32,0x12,0x12,
  64.                              0x32,0x32,0x3C,
  65.                              0x09,0x72,0x72,0x82,
  66.                              0xA2,0x92,0x92,0x82,0x52,0x42,0x42,0x42,
  67.                              0x58,0x02,0x52,0x52,0x72,
  68.                              0x84,0x84,0x02,0x12,0x52,0x42,
  69.                              0x48,0x04,0x52,0x72,
  70.                              0x72,0x52,0x74,0x02,0xA4,0x92,
  71.                              0x82,0x92,0x54,0x02,0x82,0x82,0x92,
  72.                              0x82,0x72,0x52,0x42,0x02,0xC4,0x12,
  73.                              0x3C,
  74.                                          0xFF};
  75. //第四首 祈祷
  76. unsigned char code song4[37]={0xC4,0x12,0x32,0x44,0x42,0x52,
  77.                              0x52,0x44,0x32,0x32,0x12,0x14,
  78.                              0x12,0x12,0x32,0x42,0x54,0x44,
  79.                              0x4F,
  80.                              0xC4,0x12,0x32,0x44,0x42,0x72,
  81.                              0x58,0x42,0x32,0x34,
  82.                              0x14,0x12,0x32,0x34,0x32,0x12,
  83.                              0x1F,
  84.                                          0xFF};
  85. //第五首 阳光总在风雨后
  86. unsigned char code song5[144]={0x52,0x62,
  87.                              0x74,0x74,0x74,0x34,
  88.                              0x42,0x34,0x52,0x56,0x42,
  89.                              0x34,0x34,0x14,0x32,0x12,
  90.                              0x12,0xC2,0xC4,0x04,0x52,0x62,
  91.                              0x74,0x74,0x74,0x34,
  92.                              0x42,0x34,0x52,0x56,0x42,
  93.                              0x34,0x32,0x12,0x12,0x34,0x42,
  94.                              0x4C,0x52,0x42,
  95.                              0x34,0x32,0x42,0x32,0x12,0x12,0xC2,
  96.                              0xC2,0x54,0x52,0x54,0x52,0x52,
  97.                              0x42,0x32,0x32,0x12,0x32,0x42,0x32,0x52,
  98.                              0x5C,0x52,0x42,
  99.                              0x34,0x32,0x42,0x32,0x12,0x12,0xC2,
  100.                              0xC2,0x54,0x52,0x54,0x02,0x52,
  101.                              0x52,0x42,0x32,0x12,0x32,0x84,0x72,
  102.                              0x7F,
  103.                              0x0F,
  104.                              0x74,0x72,0x52,0x54,0x74,
  105.                              0x82,0x52,0x52,0x72,0x78,
  106.                              0x34,0x32,0x32,0x42,0x54,0x72,
  107.                              0x7F,
  108.                              0x86,0x82,0x72,0x52,0x54,
  109.                              0x72,0x84,0x32,0x36,0x52,
  110.                              0x42,0x52,0x42,0x32,0x34,0x12,0x32,
  111.                              0x32,0x42,0x4C,
  112.                              0x86,0x82,0x72,0x52,0x54,
  113.                              0x72,0x84,0x52,0x56,0x52,
  114.                              0x42,0x52,0x72,0x82,0x52,0x34,0x12,
  115.                              0x12,0x32,0x3C,
  116.                              0xFF};
  117. //第六首   心心相印                                
  118. unsigned char code song6[85]={
  119. 0x04,0x24,0x14,0xC4,
  120. 0x54,0x54,0x48,
  121. 0x04,0x54,0x44,0x34,
  122. 0x22,0x14,0xB2,0xC8,
  123. 0x04,0x12,0xC2,0x16,0x12,
  124. 0x76,0x52,0x46,0x12,
  125. 0x3F,
  126. 0x04,0xB4,0xD4,0xC4,
  127. 0x14,0x28,0xC4,
  128. 0x14,0x12,0x32,0x16,0xC2,
  129. 0x54,0x78,0x34,
  130. 0x4C,0x42,0x52,
  131. 0x86,0x72,0x76,0x52,
  132. 0x74,0x28,0x42,0x52,
  133. 0x46,0x12,0x26,0x12,
  134. 0xCF,
  135. 0x04,0x24,0x14,0xC4,
  136. 0x56,0x52,0x48,
  137. 0x04,0x54,0x44,0x34,
  138. 0x22,0x14,0xB2,0xC8,
  139. 0x04,0x34,0x14,0xC4,
  140. 0x12,0x32,0x18,0x42,0x42,
  141. 0x74,0x58,0x44,
  142. 0x3F,
  143. 0xFF};
  144. //第七首 最浪漫的事
  145. unsigned char code song7[138]={0xC2,0xC2,0x12,
  146.                              0x34,0x32,0x32,0x32,0x12,0x12,0x52,
  147.                              0x54,0x02,0xC2,0x12,
  148.                              0x32,0x32,0x32,0x32,0x34,0x52,0x72,
  149.                              0x7C,0x02,0x72,
  150.                              0x82,0x72,0x82,0x72,0x84,0x72,0x41,0x51,
  151.                              0x52,0x41,0x31,0x34,0x02,0x32,0x32,0x12,
  152.                              0x34,0x32,0x12,0x32,0x54,0x42,
  153.                              0x32,0x32,0x32,0x32,0x34,0x52,0x72,
  154.                              0x7C,0x72,0x72,
  155.                              0x82,0x72,0x82,0x72,0x84,0x82,0x72,
  156.                              0x42,0x52,0x42,0x34,0x12,0x12,0x32,
  157.                              0xC4,0x52,0x42,0x34,0x12,0x12,
  158.                              0x31,0x41,0x32,0x3C,
  159.                              0x84,0x82,0x72,0x82,0x72,0x52,0x72,
  160.                              0x78,0x02,0x72,0x82,0xA2,
  161.                              0x84,0x82,0x72,0x82,0x72,0x82,0x32,
  162.                              0x0A,0x72,0x82,0xA2,
  163.                              0x38,0x02,0x32,0x42,0x52,
  164.                              0x64,0x62,0x72,0x82,0x82,0x72,0x82,
  165.                              0x82,0xA2,0x82,0x82,0x82,0xA2,0x82,0x72,
  166.                              0x78,0x72,0x32,0x82,0x72,
  167.                              0x78,0x72,0x82,0xA3,0x51,
  168.                              0x42,0x51,0x41,0x3C,
  169.                              0xFF};
  170. //第八首 一生有你
  171. unsigned char code song8[77]={0xC2,0xC2,0x34,0x42,0x42,
  172.                              0x52,0x41,0x51,0x5C,
  173.                              0x04,0xC2,0xC2,0x34,0x42,0x42,
  174.                              0x52,0x31,0x41,0x4C,
  175.                              0x04,0xC2,0xC2,0x34,0x42,0x42,
  176.                              0x52,0x41,0x51,0x58,0x32,0x52,
  177.                              0x4C,0x42,0x32,
  178.                              0x34,0x32,0x42,0x48,
  179.                              0x04,0xC2,0xC2,0x34,0x42,0x42,
  180.                              0x72,0x41,0x51,0x5C,
  181.                              0x04,0xC2,0xC2,0x32,0x32,0x42,0x42,
  182.                              0x52,0x42,0x4C,
  183.                              0x04,0xC2,0xC2,0x34,0x42,0x42,
  184.                              0x52,0x41,0x51,0x58,0x32,0x52,
  185.                              0x4C,0x42,0x32,
  186.                              0x32,0x42,0x4C,
  187.                                          0xFF};
  188. //第九首  宁静的夏天
  189. unsigned char code song9[]={
  190. 0X54,0XC4,0X12,0X32,0X34,
  191. 0X52,0X52,0X52,0X52,0X42,0X32,0X34,
  192. 0XC1,0XC2,0X52,0XC2,0X12,0X32,0X34,
  193. 0X11,0X12,0X31,0X12,0XC2,
  194. 0X78,0X72,0X52,0X52,0X42,
  195. 0X32,0X42,0X52,0X11,0XC1,0XC4,0XC1,0XC1,0XC1,0XC1,
  196. 0X12,0X32,0X32,0X12,0X42,0X42,0X44,
  197. 0XC2,0X12,0X32,0X42,0X52,0X72,0X72,0X82,
  198. 0X41,0X51,0X42,0X48,0X42,0X12,
  199. 0X3C,0X72,0X62,
  200. 0X3C,0X72,0X62,
  201. 0X3C,0X72,0X62,
  202. 0x21,0x31,0x41,0x51,0x61,0x71,0x81,0x91,0x61,0x71,0x81,0x91,
  203. 0X3F,
  204. 0X3F,
  205. 0X54,0XC2,0XC2,0X42,0XC2,0XC4,
  206. 0X34,0X32,0X42,0X52,0XC2,0XC4,
  207. 0XD2,0XC2,0X12,0X22,0X38,
  208. 0X12,0X22,0X32,0X42,0X48,
  209. 0xFF};

  210. //第十首  老鼠爱大米
  211. unsigned char code song10[]={
  212. 0x32,0x31,0x41,
  213. 0x52,0x52,0x42,0x31,0x41,0x44,0x31,0x41,
  214. 0x52,0x52,0x42,0x32,0x34,0x71,0x11,
  215. 0x74,0x71,0x71,0x11,0x31,0x34,0x32,
  216. 0x32,0x32,0x32,0x31,0x41,0x44,0x32,0x41,0x51,
  217. 0x52,0x52,0x72,0x81,0x41,0x44,0x52,0x41,0x31,
  218. 0x32,0x32,0x42,0x51,0x71,0x74,0x71,0x71,
  219. 0x12,0x31,0x31,0x31,0x52,0x42,0x32,0x32,0x41,0x31,
  220. 0x34,0x52,0x51,0x71,
  221. 0x72,0x71,0x71,0x72,0x71,0x81,0x84,0x52,0x42,
  222. 0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
  223. 0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x52,
  224. 0x42,0x32,0x32,0x12,0x44,0x51,0x71,
  225. 0x72,0x72,0x71,0x82,0x71,0x84,0x52,0x42,
  226. 0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
  227. 0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x51,0x41,
  228. 0x42,0x42,0x44,0x32,0x51,0x61,
  229. 0x72,0x42,0x44,0x52,0x41,0x31,
  230. 0x34,0x52,0x41,0x31,0x34,0x52,0x42,
  231. 0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x71,
  232. 0x82,0x81,0x71,0x72,0x81,0x71,0x74,0x51,0x41,0x31,
  233. 0x42,0x41,0x51,0x42,0x31,0x41,0x44,0x52,0x41,0x31,
  234. 0x34,0x52,0x41,0x31,0x34,0x52,0x42,
  235. 0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x41,
  236. 0x82,0x82,0xA2,0x71,0x81,0x72,0x71,0x51,0x41,0x31,
  237. 0x44,0x41,0x31,0x41,0x51,0x44,0x52,0x52,
  238. 0x42,0x31,0x34,0x52,0x41,0x31,
  239. 0x42,0x31,0x34,
  240. 0xFF};


  241. //第十一首  偏偏喜欢你                                    
  242. unsigned char code song11[]={
  243. 0XC2,0XB2,
  244. 0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
  245. 0XC6,0X12,0XC4,0X12,0XC2,
  246. 0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
  247. 0X4C,0X42,0X32,
  248. 0X74,0X82,0X74,0X82,0X72,
  249. 0X52,0X41,0X38,0X32,0X42,
  250. 0X16,0XC2,0X72,0X52,0X42,0X42,
  251. 0X3C,0XC2,0XB2,
  252. 0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
  253. 0XC6,0X12,0XC4,0X12,0XC2,
  254. 0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
  255. 0X4C,0X42,0X32,
  256. 0X76,0X82,0X74,0X82,0X72,
  257. 0X53,0X41,0X38,0X32,0X42,
  258. 0X16,0XC2,0X72,0X52,0X41,0X51,0X12,
  259. 0XCC,0XC2,0XB2,
  260. 0X16,0XC2,0X72,0X52,0X42,0X42,
  261. 0X3C,0X32,0X32,
  262. 0X26,0X22,0X24,0X42,0X32,
  263. 0x22,0x12,0x18,0x02,0x52,
  264. 0X46,0X12,0X44,0X72,0X82,
  265. 0X5C,0X52,0X52,
  266. 0X46,0X42,0X74,0X42,0X32,
  267. 0X36,0X42,0X58,
  268. 0X82,0X72,0X62,0X52,0X46,0X32,
  269. 0X3C,0X12,0XB2,
  270. 0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
  271. 0XC6,0X12,0XC4,0X12,0XC2,
  272. 0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
  273. 0X48,0X02,0X42,0X52,0X62,
  274. 0X76,0X82,0X74,0X82,0X72,
  275. 0X56,0X41,0X38,0X32,0X22,
  276. 0X16,0XC2,0X72,0X52,0X42,0X42,
  277. 0X3C,0X04,0X04,0X04,0X04,
  278. 0xFF};
  279. //第十二首
  280. unsigned char code song12[]={
  281. 0x34,0x32,0x34,0x34,0x24,0x34,0x32,0x32,0x24,0x38,0x44,0x58,0x48,
  282. 0x34,0x32,0x34,0x34,0x24,0x38,0x34,0x7F,0x34,0x32,0x34,0x32,
  283. 0x24,0x38,0x34,0x24,0x38,0x44,0x58,0x48,0x34,0x32,0x34,0x34,
  284. 0x24,0x38,0x34,0x7F,0x16,0x4C,0x74,
  285. 0x78,0x64,0x54,0x48,0x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,
  286. 0x14,0x12,0x21,0x11,0x78,0x68,0x3F,0x4C,0x74,
  287. 0x78,0x64,0x52,0x42,0x48,0x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,
  288. 0x24,0x38,0x44,0x58,0x48,0x3C,
  289. 0xFF};

  290. unsigned char code* code songs[]={song1,song2,song3,song4,song5,song6,
  291.                                   song7,song8,song9,song10,song11,song12};  //指向12首歌



  292. unsigned char code yin[30]={0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC,0xFD,0x09,0xFD,0x34,
  293.                   0xFD,0x82,0xFD,0xC8,0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85};  //C调各音符频率与计数初值T的对照表


  294. //0.9ms
  295. void delay0_9ms(void)
  296. {
  297.    unsigned char j,k;
  298.    for(j=18;j>0;j--)
  299.    for(k=20;k>0;k--) ;
  300. }

  301. //1ms
  302. void delay1ms(void)
  303. {
  304.   unsigned char i,j;
  305.   for(i=2;i>0;i--)
  306.   for(j=230;j>0;j--) ;
  307. }

  308. //4.5ms
  309. void delay4_5ms(void)
  310. {
  311.    unsigned char i,j;
  312.    for(i=10;i>0;i--)
  313.    for(j=225;j>0;j--) ;
  314. }

  315. //100ms
  316. void delay100ms(void)
  317. {
  318.   unsigned char i,j,k;
  319.   for(i=200;i>0;i--)  
  320.   for(j=20;j>0;j--)
  321.   for(k=10;k>0;k--) ;
  322. }


  323. /*延时1/4拍时间即187ms*/
  324. void  delay187ms()
  325. /*
  326. {
  327.   unsigned char i,j,k;
  328.   for(i=200;i>0;i--)  
  329.   for(j=20;j>0;j--)
  330.   for(k=15;k>0;k--) ;
  331. }
  332. */

  333. {
  334. unsigned char i,j;
  335. for(i=255;i>0;i--)
  336.         {
  337.          for(j=120;j>0;j--)
  338.           {
  339.              if(IR_OK==1) {break;}
  340.           }
  341.         }
  342. }



  343. void t0(void) interrupt 0 using 2   //外部中断0的函数
  344. {
  345.     unsigned char i,j,k;
  346.     EA=0;                        //暂时关闭CPU的所有中断请求

  347.     for(k=0;k<10;k++)            //重复10次,目的是检测在9毫秒内如果出现高电平就退出解码程序
  348.   {                              //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

  349.     delay0_9ms();               //延时0.9毫秒
  350.     if (IR==1) {k=10;break;}    //延时0.9毫秒后判断P3.2脚是否出现高电平如果有就退出解码程序
  351.     else if(k==9)                //重复10次?
  352.            {                     //bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  353.             while(IR==0);       //等待高电平避开9毫秒低电平引导脉冲
  354.             delay4_5ms();           //延时4.5毫秒避开4.5毫秒的结果码

  355.                         
  356. /********************************************
  357. //26位的用户码,前13位数据码,后13位数据反码
  358. *********************************************/
  359.               for(j=1;j<=26;j++)//每组数据为26位
  360.                 {                 
  361.                  while(IR==0);  //
  362.                  delay0_9ms();
  363.                   if(IR==1)
  364.                    {
  365.                                            delay1ms();
  366.                            dm=dm|0x2000000;              //因为是26位,一个"1",后面25个"0",转化二进制即为"1000000"   
  367.                            if(j<26) dm=dm>>1;            //数据"1",右移一个"1",一共25次
  368.                    }               
  369.                  else  if(j<26) dm=dm>>1;            //数据"0",一共25次
  370.                 }                    
  371.              bb=dm;
  372.              dm=0;



  373. /***************************************************
  374. //16位的用户码,前8位数据码,后8位数据反码
  375. ****************************************************/

  376.                           for(i=0;i<2;i++)     
  377.                {               
  378.                  for(j=1;j<=8;j++)//每组数据为26位
  379.                 {               
  380.                  while(IR==0);  //
  381.                  delay0_9ms();
  382.                   if(IR==1)
  383.                    {
  384.                                      delay1ms();
  385.                      dm=dm|0x80;
  386.                      if(j<8) dm=dm>>1;           //数据"1",右移一个"1",一共7次
  387.                    }               
  388.                   else  if(j<8) dm=dm>>1;          //数据"0",一共7次
  389.                 }                    
  390.              aa[i]=dm;
  391.              dm=0;
  392.                }              

  393. /***************************************************
  394. //解码成功的话,蜂鸣器叫一声
  395. ****************************************************/                  
  396.                if(aa[0]==~aa[1])         //验证成功
  397.                    {
  398.                        IR_OK=1;
  399.                                sound=0;
  400.                         delay100ms();
  401.                        sound=1;
  402.                    }

  403.           }                     //bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  404.   }                             //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  405. EA=1;
  406. }


  407. /*每个音符的发声*/
  408. void timer0() interrupt 1 using 1  //定时器T0
  409. {
  410.      TH0=yin[2*l];
  411.      TL0=yin[2*l+1];
  412.      SPK = !SPK;

  413. }




  414. void sing_song()
  415. {  
  416.    unsigned int data j;    //取码指针
  417.    unsigned char data i;   //用于循环
  418.    unsigned char data k;   //几个1/4拍
  419.    IR_OK=0;                //不能少掉!!!!
  420.    song=songs[song_number];
  421.    j=0;
  422.     while(*(song+j)!=0xFF)                     //是否取到结束码
  423.     {  
  424.            if(IR_OK==1){break;}                     //这一句很重要的!!!!!
  425.        k=*(song+j)&0x0F;                       //后4位为多少个1/4拍
  426.        l=*(song+j)>>4;                         //song(song+j)[]中所放的每个字节
  427.                                                //前4位乘2表示为音符频率在数组yin[]中的位置

  428.        TH0=yin[2*l];                           //置初值
  429.        TL0=yin[2*l+1];
  430.        TR0=1;                                  //起动定时器0
  431.        if ((yin[2*l]==0xff)&&(yin[2*l+1]==0xff)) //如果取到的都是休止符,则不输出音频
  432.            {
  433.                TR0=0;SPK=1;
  434.                     }
  435.        for(i=k;i>0;--i)     //节拍K为多少就执行多少个1/4拍
  436.            {  delay187ms();  }
  437.        TR0=0;
  438.        j++;
  439.     }                                            //回22222
  440. }                                               //回xxxxxx



  441. void main()
  442. {

  443.      EA=1;            //总中断
  444.      TMOD=0x01;       //timer0工作在方式1
  445.          IT0=1;           //外部中断0触发方式控制位,下降沿触发
  446.          ET0=1;          //允许定时器T0中断
  447.          EX0=1;           //外部中断0(INT0)中断允许位
  448.          IP=0x01;         //定义外部中断0优先于定时器中断的优先级

  449.          dm=0;
  450.          P2=0xc0;
  451.          P1=0x00;

  452.     while(1)
  453. {
  454.     if(IR_OK==1)
  455.       { if(aa[0]==0x11)
  456.          {song_number=0;P1=0x00;P2=0xf9;sing_song();}       //显示并演奏第1首
  457.          else if(aa[0]==0x12)
  458.          {song_number=1;P1=0x00;P2=0xa4;sing_song();}       //显示并演奏第2首
  459.          else if(aa[0]==0x13)
  460.          {song_number=2;P1=0x00;P2=0xb0;sing_song();}       //显示并演奏第3首
  461.          else if(aa[0]==0x14)
  462.          {song_number=3;P1=0x00;P2=0x99;sing_song();}       //显示并演奏第4首
  463.          else if(aa[0]==0x15)
  464.          {song_number=4;P1=0x00;P2=0x92;sing_song();}       //显示并演奏第5首
  465.          else if(aa[0]==0x16)
  466.          {song_number=5;P1=0x00;P2=0x82;sing_song();}       //显示并演奏第6首
  467.          else if(aa[0]==0x17)
  468.          {song_number=6;P1=0x00;P2=0xf8;sing_song();}       //显示并演奏第7首
  469.          else if(aa[0]==0x18)
  470.          {song_number=7;P1=0x00;P2=0x80;sing_song();}       //显示并演奏第8首
  471.          else if(aa[0]==0x19)
  472.          {song_number=8;P1=0x00;P2=0x90;sing_song();}       //显示并演奏第9首
  473.          else if(aa[0]==0x10)
  474.          {song_number=9;P1=0x00;P2=0x88;sing_song();}       //显示并演奏第10首
  475.          else if(aa[0]==0x1a)
  476.          {song_number=10;P1=0x00;P2=0x83;sing_song();}      //显示并演奏第11首
  477.          else if(aa[0]==0x1b)
  478.          {song_number=11;P1=0x00;P2=0xc6;sing_song();}      //显示并演奏第12首
  479.                  else{sound=0;delay100ms();sound=1;delay100ms();
  480.                       sound=0;delay100ms();sound=1;P1=0x00;P2=0xb6;}  //蜂鸣器叫,表明没有歌啦
  481.         }
  482.           }
  483. }
  484.                   
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2020-11-21 16:42 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表