找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1139|回复: 3
收起左侧

单片机音乐盒程序 一直只有滴滴声,播放不出音乐

[复制链接]
ID:1023228 发表于 2022-6-13 22:54 | 显示全部楼层 |阅读模式
请大佬看一下,为什么不能播放出当前的音乐,一直只有滴滴声,而播放不出音乐

单片机源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit fm=P1^0;              //??????IO?
  5. sbit k1=P3^2;
  6. uchar timeh,timel,i; //timeh,timel??????4?,i???????
  7. bit flag;
  8. //---------------------------??---------------------------------------
  9. //1-7????do~si,8????do
  10. uchar code qnzl[]={0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,
  11. 0x08,
  12. 0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,
  13. 0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,
  14. 0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,
  15. 0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,
  16. 0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,
  17. 0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,
  18. 0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,
  19. 0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,
  20. 0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,
  21. 0x42,0x63,0x83,0x83,0x91,0x91,
  22. 0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76,
  23. 0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,
  24. 0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,
  25. 0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff
  26.         
  27. };

  28. //----------------------------????????????---------------------------

  29. uchar code jmszl[]={ 0x17,0x01, 0x15,0x01, 0x17,0x01, 0x15,0x01, 0x0F,0x02,
  30.                                   0x15,0x02, 0x17,0x02, 0x15,0x02, 0x17,0x01, 0x15,0x01,
  31.                                   0x17,0x02, 0x17,0x03, 0x17,0x03, 0x18,0x02, 0x19,0x02,
  32.                                   0x17,0x66, 0x16,0x03, 0x16,0x01, 0x15,0x02, 0x15,0x03,
  33.                                   0x15,0x03, 0x16,0x02, 0x17,0x02, 0x17,0x66, 0x11,0x03,
  34.                                   0x11,0x01, 0x10,0x02, 0x17,0x02, 0x16,0x01, 0x10,0x02,
  35.                                   0x17,0x02, 0x16,0x01, 0x10,0x02, 0x17,0x02, 0x16,0x66,
  36.                                   0x15,0x02, 0x15,0x00, 0x17,0x02, 0x17,0x03, 0x17,0x03,
  37.                                   0x18,0x02, 0x19,0x02, 0x17,0x66, 0x16,0x03, 0x16,0x01,
  38.                                   0x15,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x02, 0x17,0x02,
  39.                                   0x17,0x66, 0x11,0x03, 0x11,0x01, 0x10,0x02, 0x17,0x02,
  40.                                   0x16,0x01, 0x10,0x02, 0x17,0x02, 0x16,0x01, 0x10,0x02,
  41.                                   0x17,0x02, 0x16,0x66, 0x15,0x03, 0x15,0x00, 0x17,0x03,
  42.                                   0x16,0x03, 0x19,0x00, 0x18,0x03, 0x17,0x03, 0x17,0x03,
  43.                                   0x16,0x03, 0x16,0x01, 0x19,0x03, 0x18,0x03, 0x17,0x02,
  44.                                   0x18,0x03, 0x19,0x66, 0x17,0x02, 0x16,0x14, 0x15,0x03,
  45.                                   0x10,0x02, 0x17,0x02, 0x16,0x66, 0x15,0x03, 0x0F,0x02,
  46.                                   0x16,0x03, 0x15,0x03, 0x15,0x01, 0x18,0x03, 0x17,0x03,
  47.                                   0x18,0x03, 0x17,0x03, 0x15,0x01, 0x18,0x03, 0x17,0x03,
  48.                                   0x18,0x03, 0x17,0x03, 0x15,0x66, 0x16,0x03, 0x15,0x00,
  49.                                   0x17,0x02, 0x17,0x03, 0x17,0x03, 0x18,0x02, 0x19,0x02,
  50.                                   0x17,0x66, 0x16,0x03, 0x16,0x01, 0x15,0x02, 0x15,0x03,
  51.                                   0x15,0x03, 0x16,0x02, 0x17,0x02, 0x17,0x66, 0x11,0x03,
  52.                                   0x11,0x01, 0x10,0x02, 0x17,0x02, 0x16,0x01, 0x0F,0x02,
  53.                                   0x16,0x02, 0x15,0x01, 0x18,0x03, 0x17,0x03, 0x18,0x03,
  54.                                   0x17,0x03, 0x15,0x01, 0x16,0x00, 0x15,0x00, 0x00,0x00 };
  55. uchar code cuzhi[]={ 0xff,0xff,
  56. 0xfc,0x44, 0xfc, 0xad, 0xfd,0x0a,0xfd,0x34,0xfd,0x83,0xfd,0xc8,0xfe,0x06,
  57. 0xfe,0x22, 0xfe,0x57, 0xfe,0x85, 0xfe,0x9b,0xfe, 0xc2, 0xfe,0xe4, 0xff,0x03};                                                                                                                                       
  58.                                                                                                                                        

  59. void delay1(uint z);                                  //??1ms???
  60. void delay(uint z);                                  //??165ms,?1/4????
  61. void song();                                   //?????
  62. main()
  63. {
  64. EA=1;                                        //????
  65. ET0=1;
  66. EX0=1;
  67. IT0=1;
  68. EX1=1;//?????1
  69. IT1=1;        //????0
  70. TMOD=0x01;                                 //???0?????1
  71.         TH0=0;
  72.         TL0=0;
  73.         ET0=1;
  74.         while(1)
  75.            {
  76.                         if(k1==0)flag=0;
  77.                         else flag=1;
  78.                 song();
  79.                 delay1(1000);
  80.                  }
  81. }

  82.                
  83.         
  84.         

  85. void timer0() interrupt 1                  //???0???????????????
  86. {
  87.         TH0=timeh;
  88.         TL0=timel;
  89.         fm=~fm;                         //????
  90. }
  91. void song()
  92. {
  93.         uint temp;
  94.         uchar jp;                         //jp???1~8???
  95.         i=0;
  96.         while(1)
  97.         {        if(flag==0)
  98.                 temp=qnzl[i];
  99.                 else temp=jmszl[i];
  100.     if(temp==0xff) break;                       //????????  
  101.             jp=temp/16;                                //????4?????
  102.                 if(jp!=0)
  103.                 {
  104.                 timeh=cuzhi[jp*2];                         //?T??4??
  105.                 timel=cuzhi[jp*2+1];                       //?T??4??
  106.                 }
  107.                 else
  108.                 {
  109.                 TR0=0;
  110.                 fm=1;                                      //????
  111.                 }
  112.                 delay(temp%16);                           //????4?????
  113.                 TR0=0;                                           //??????10ms
  114.                 fm=1;
  115.                 delay1(10);
  116.                 TR0=1;
  117.                 i++;
  118.         }
  119.         TR0=0;
  120.         fm=1;
  121.         }
  122. void delay(uint z)                                    //??165ms,?1/4?
  123. {uint x;
  124.         for(x=0;x<z;x++)
  125.                  delay1(165);
  126. }
  127. void delay1(uint ms)                                  //??1ms
  128. {uint i,j;
  129.         for(i=0;i<ms;i++)
  130.                  for(j=0;j<110;j++);
  131. }
复制代码
回复

使用道具 举报

ID:155811 发表于 2022-6-14 07:40 | 显示全部楼层
回顾一下播放音乐的原理
回复

使用道具 举报

ID:1023228 发表于 2022-6-14 17:08 | 显示全部楼层
himanzj 发表于 2022-6-14 07:40
回顾一下播放音乐的原理

一首歌还是可以响的,两首歌就不知道怎么切换了
回复

使用道具 举报

ID:155811 发表于 2022-6-18 17:54 | 显示全部楼层
哈尔没有心 发表于 2022-6-14 17:08
一首歌还是可以响的,两首歌就不知道怎么切换了

变换数据地址
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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