找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 31109|回复: 64
收起左侧

一个单片机做的简易音乐播放器程序(带仿真文件)

  [复制链接]
ID:51275 发表于 2013-6-26 16:16 | 显示全部楼层 |阅读模式
简易播放器项目需求

基本需求:
1.        使用Buzz播放音乐,音乐数据存在Code Flash空间
2.        开机后在LCD显示所有音乐,可以通过上、下键翻页。当前音乐有指示。按确定键播放音乐。
3.        播放音乐的同时在LCD1602屏上显示音乐的信息:演唱者,时间等。按左、右键分别播放上一首,下一首,按Enter键暂停/继续。

进一步需求:
1.        使用单片机内部的数据空间存放音乐数据
2.        浏览时按下ESC键,提示是否删除音乐,可取消,可确认。可以使用数据键快速的定位音乐
3.        有上位机可以更新音乐数据。

延伸内容:
文件系统的学习和使用(FatFS)



izkLgUWMbS2eU.png

ibulT6cgPtllgy.png

源代码及Proteus7.5仿真文件下载(不能用其他版本): spark_music.7z (122.21 KB, 下载次数: 738)

评分

参与人数 3黑币 +15 收起 理由
348652560 + 5 很给力!
key可 + 5 正在学习的路途中,虽然还不太懂
巍随风 + 5 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:51275 发表于 2013-6-26 16:16 | 显示全部楼层
  1. //51单片机播放音乐库文件   
  2. /**************************************************************************  
  3.      
  4.                         SOUND PLAY FOR 51MCU  
  5.    
  6.                     COPYRIGHT (c)   2005 BY JJJ.  
  7.                             --  ALL RIGHTS RESERVED  --  
  8.    
  9.    File Name:       SoundPlay.h  
  10.    Author:          Jiang Jian Jun  
  11.    Created:         2005/5/16  
  12.    Modified:        YES 2012.1.6 改成状态机方式,少用一个定时器
  13.    Revision:        1.0  

  14.    
  15. *******************************************************************************/  
  16.   
  17. /*说明**************************************************************************  
  18. 曲谱存贮格式 unsigned char code MusicName{音高,音长,音高,音长...., 0,0}; 末尾:0,0 表示结束(Important)  

  19. 音高由三位数字组成:  
  20.         个位是表示 1~7 这七个音符   
  21.         十位是表示音符所在的音区:1-低音,2-中音,3-高音;  
  22.         百位表示这个音符是否要升半音: 0-不升,1-升半音。  
  23.    
  24. 音长最多由三位数字组成:   
  25.         个位表示音符的时值,其对应关系是:   
  26.             |数值(n):  |0 |1 |2 |3 | 4 | 5 | 6   
  27.             |几分音符: |1 |2 |4 |8 |16 |32 |64      音符=2^n  
  28.         十位表示音符的演奏效果(0-2):  0-普通,1-连音,2-顿音  
  29.         百位是符点位: 0-无符点,1-有符点  

  30. 调用演奏子程序的格式  
  31.         Play(乐曲名,调号,升降八度,演奏速度);  
  32.     |乐曲名           : 要播放的乐曲指针,结尾以(0,0)结束;  
  33.     |调号(0-11)       :   是指乐曲升多少个半音演奏;  
  34.     |升降八度(1-3)    : 1:降八度, 2:不升不降, 3:升八度;  
  35.     |演奏速度(1-12000): 值越大速度越快;  

  36. ***************************************************************************/  

  37. #include "hw_config.h"  
  38. #include "music.h"
  39. #include "hw_driver.h"
  40. #include <stdio.h>

  41. //**************************************************************************   
  42. #define SYSTEM_OSC      11059200//12000000  //定义晶振频率12000000HZ   
  43. #define SOUND_SPACE     4/5         //定义普通音符演奏的长度分率,//每4分音符间隔   
  44. #define    BeepIO    BUZZ       //定义输出管脚   
  45.   
  46. unsigned int  code FreTab[12]  = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表   
  47. unsigned char code SignTab[7]  = { 0,2,4,5,7,9,11 };                                  //1~7在频率表中的位置   
  48. unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 };                        
  49. unsigned char Sound_Temp_TH0,Sound_Temp_TL0;    //音符定时器初值暂存   
  50. unsigned char Sound_Temp_TH1,Sound_Temp_TL1;    //音长定时器初值暂存   

  51. #define PLAY_STOP_STATE 0
  52. /* 正在播放 */
  53. #define PLAY_ING_STATE  1
  54. /* 暂停状态 */
  55. #define PLAY_SUSPEND_STATE 2
  56. u8 MusicPlayState = PLAY_STOP_STATE;


  57. extern bit StartPlayFlag;
  58. extern bit PlaySuspendFlag;
  59. bit CalOverFlag = 0;

  60. static u8 *Sound;
  61. static u8 Signature;
  62. static u8 Octachord;
  63. //**************************************************************************   
  64. void InitialSound(void)   
  65. {   
  66.     BeepIO = 1;   
  67.     TMOD  |= 0x10;   
  68.     ET1    = 1;   
  69.     TR1    = 0;  
  70.         MusicPlayState = PLAY_STOP_STATE;
  71. }   
  72.   
  73. void BeepTimer0(void)   interrupt TIMER1_OVERFLOW//音符发生中断   
  74. {   
  75.         
  76.     BeepIO = !BeepIO;   
  77.     TH1    = Sound_Temp_TH0;   
  78.     TL1    = Sound_Temp_TL0;   
  79.         
  80. }   
  81. //**************************************************************************   


  82. void play_sound(unsigned char *sound,unsigned char signature,unsigned octachord)
  83. {
  84.     Sound = sound;
  85.     Signature = signature;
  86.     Octachord = octachord;
  87.         StartPlayFlag = 1;
  88. }

  89. unsigned char idata Tone,Length,SH,SM,SLen,XG,FD;  
  90. u8 SL = 0;
  91. void Play()   
  92. {   
  93.     static unsigned int  idata NewFreTab[12];     //新的频率表   
  94.     static unsigned char  idata i;
  95.         static unsigned char  idata        j;   
  96.     static unsigned int idata  Point;
  97.     static unsigned int idata LDiv;
  98.         static unsigned int idata LDiv0;
  99.         static unsigned int idata LDiv1;
  100.         static unsigned int idata LDiv2;
  101.         static unsigned int idata LDiv4;
  102.         static unsigned int idata CurrentFre;
  103.         static unsigned int idata Temp_T;
  104.         static unsigned int idata SoundLength;   

  105.         
  106.     switch (MusicPlayState)
  107.     {
  108.         case PLAY_STOP_STATE:
  109.             if (1 == StartPlayFlag)
  110.             {
  111.                 /* 准备开始了 */
  112.                 for(i=0;i<12;i++)               // 根据调号及升降八度来生成新的频率表   
  113.                 {   
  114.                     j = i + Signature;   
  115.                     if(j > 11)   
  116.                     {   
  117.                         j = j-12;   
  118.                         NewFreTab[i] = FreTab[j]*2;   
  119.                     }   
  120.                     else  
  121.                     {
  122.                         NewFreTab[i] = FreTab[j];   
  123.                     }

  124.                     if(Octachord == 1)   
  125.                     {
  126.                         NewFreTab[i]>>=2;   
  127.                     }
  128.                     else if(Octachord == 3)   
  129.                     {
  130.                         NewFreTab[i]<<=2;   
  131.                     }
  132.                 }                                      
  133.                 SoundLength = 0;   
  134.                 while(Sound[SoundLength] != 0x00)   //计算歌曲长度   
  135.                 {   
  136.                     SoundLength+=2;   
  137.                 }   
  138.                                 
  139.                 Point = 0;   
  140.                 Tone   = Sound[Point];   
  141.                                 
  142.                 Length = Sound[Point+1];     
  143.                                              // 读出第一个音符和它时时值   

  144.                 //LDiv0 = 12000/Speed;                // 算出1分音符的长度(几个10ms)      
  145.                 LDiv0 = 12000 / 100;                // 算出1分音符的长度(几个10ms)      
  146.                 LDiv4 = LDiv0/4;                    // 算出4分音符的长度   
  147.                 LDiv4 = LDiv4-LDiv4*SOUND_SPACE;    // 普通音最长间隔标准   
  148.                 /* 进入下一状态 */
  149.                 MusicPlayState = PLAY_ING_STATE;
  150.                                 
  151.             }
  152.                         
  153.             break;
  154.         case PLAY_ING_STATE:
  155.                         if (0 == StartPlayFlag)
  156.                         {
  157.                                 TR1 = 0;
  158.                                 BeepIO = 1;
  159.                                 MusicPlayState = PLAY_STOP_STATE;
  160.                         }
  161.             else if (1 == PlaySuspendFlag)
  162.             {
  163.                 /* 进入暂停态 */
  164.                                 TR1 = 0;
  165.                                 BeepIO = 1;
  166.                 MusicPlayState = PLAY_SUSPEND_STATE;
  167.             }
  168.             else if (Point < SoundLength)
  169.             {   
  170.                                 
  171.                            
  172.                 if (0 == CalOverFlag)
  173.                 {
  174.                                        
  175.                                        
  176.                                        
  177.                     SL=Tone%10;                                 //计算出音符   
  178.                     SM=Tone/10%10;                              //计算出高低音   
  179.                     SH=Tone/100;                                //计算出是否升半   
  180.                     CurrentFre = NewFreTab[SignTab[SL-1]+SH];   //查出对应音符的频率        
  181.                     if(SL!=0)   
  182.                     {   
  183.                                                 
  184.                         if (SM==1) CurrentFre >>= 2;        //低音   
  185.                         if (SM==3) CurrentFre <<= 2;        //高音   
  186.                         Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值   

  187.                         Sound_Temp_TH0 = (u8)(Temp_T >> 8);
  188.                         Sound_Temp_TL0 = (u8)Temp_T;

  189.                         TH1 = Sound_Temp_TH0;     
  190.                         TL1 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿   
  191.                     }   
  192.                     SLen=LengthTab[Length%10];  //算出是几分音符   
  193.                     XG=Length/10%10;            //算出音符类型(0普通1连音2顿音)   
  194.                     FD=Length/100;   
  195.                     LDiv=LDiv0/SLen;            //算出连音音符演奏的长度(多少个10ms)   
  196.                     if (FD==1)   
  197.                     {
  198.                         LDiv=LDiv+LDiv/2;   
  199.                     }
  200.                     if(XG!=1)      
  201.                     {
  202.                         if(XG==0)               //算出普通音符的演奏长度   
  203.                         {
  204.                             if (SLen<=4)      
  205.                             {
  206.                                 LDiv1=LDiv-LDiv4;   
  207.                             }
  208.                             else  
  209.                             {
  210.                                 LDiv1=LDiv*SOUND_SPACE;   
  211.                             }
  212.                         }
  213.                         else  
  214.                         {
  215.                             LDiv1=LDiv/2;       //算出顿音的演奏长度   
  216.                         }
  217.                     }
  218.                     else  
  219.                     {
  220.                         LDiv1=LDiv;   
  221.                     }
  222.                     if(SL==0)
  223.                     {
  224.                         LDiv1=0;   
  225.                     }
  226.                     LDiv2=LDiv-LDiv1;       //算出不发音的长度   

  227.                     if (0 == PlaySuspendFlag)
  228.                     {
  229.                         /* 进入暂停态 */
  230.                         MusicPlayState = PLAY_SUSPEND_STATE;
  231.                     }
  232.                                         CalOverFlag = 1;
  233.                 }
  234.                                 if (SL != 0)
  235.                                 {
  236.                                        
  237.                                 TR1 = 1;
  238.                 if (LDiv1 != 0)   
  239.                 {   
  240.                                        
  241.                                                 
  242.                                         LDiv1--;
  243.                     return;
  244.                     
  245.                 }  
  246.                                 }
  247.                                 
  248.                                 
  249.                 TR1 = 0;
  250.                 if(LDiv2 != 0)   
  251.                 {   
  252.                     TR1=0;
  253.                     BeepIO=1;   
  254.                     
  255.                     
  256.                         LDiv2--;
  257.                                                 return;
  258.                   
  259.                 }   
  260.                                 
  261.                                 CalOverFlag = 0;
  262.                 Point+=2;   
  263.                 Tone=Sound[Point];   
  264.                 Length=Sound[Point+1];   
  265.             }   
  266.             else
  267.             {
  268.                                 
  269.                 /* 播放结束了 */
  270.                 BeepIO = 1;   
  271.                 /* 执行下一首操作 */
  272.                 /* 现在先返回 */
  273.                 StartPlayFlag = 0;
  274.                 MusicPlayState = PLAY_STOP_STATE;
  275.             }
  276.             break;
  277.         case PLAY_SUSPEND_STATE:
  278.             if (0 == PlaySuspendFlag)
  279.             {
  280.                 MusicPlayState = PLAY_ING_STATE;
  281.             }
  282.             if (0 == StartPlayFlag)
  283.             {
  284.                 /* 在暂停状态下要求退出播放 */
  285.                                 TR1 = 0;
  286.                                 BeepIO = 1;
  287.                 MusicPlayState = PLAY_STOP_STATE;
  288.                 PlaySuspendFlag = 0;
  289.             }
  290.             break;

  291.     }

  292. }   
  293. //**************************************************************************   
  294.   
  295.   
  296.   
  297.   
  298. //挥着翅膀的女孩   
  299. unsigned char code Music_Girl[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,   
  300.                                   0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,   
  301.                                   0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,   
  302.                                   0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,   
  303.                                   0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,   
  304.                                   0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,   
  305.                                   0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,   
  306.                                   0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,   
  307.                                   0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,   
  308.                                   0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,   
  309.                                   0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,   
  310.                                   0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,   
  311.                                   0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,   
  312.                                   0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,   
  313.                                   0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,   
  314.                                   0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,   
  315.                                   0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,   
  316.                                   0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,   
  317.                                   0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,   
  318.                                   0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,   
  319.                                   0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,   
  320.                                   0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,   
  321.                                   0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,   
  322.                                   0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,   
  323.                                   0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,   
  324.                                   0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,   
  325.                                   0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,   
  326.                                   0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,   
  327.                                   0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,   
  328.                                   0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,   
  329.                                   0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,   
  330.                                   0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,   
  331.                                   0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,   
  332.                                   0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,   
  333.                                   0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,   
  334.                                   0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};   
  335. //同一首歌   
  336. unsigned char code Music_Same[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,   
  337.                                   0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,   
  338.                                   0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,   
  339.                                   0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,   
  340.                                   0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,   
  341.                                   0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,   
  342.                                   0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,   
  343.                                   0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,   
  344.                                   0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03,   
  345.                                   0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,   
  346.                                   0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,   
  347.                                   0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,   
  348.                                   0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,   
  349.                                   0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,   
  350.                                   0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,   
  351.                                   0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,   
  352.                                   0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,   
  353.                                   0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,   
  354.                                   0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,   
  355.                                   0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,   
  356.                                   0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,   
  357.                                   0x00,0x00 };   
  358. //两只蝴蝶                                    
  359. unsigned char code Music_Two[] ={ 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,   
  360.                                   0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,   
  361.                                   0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,   
  362.                                   0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03,   
  363.                                   0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01,   
  364.                                   0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,   
  365.                                   0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01,   
  366.                                   0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,   
  367.                                   0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,   
  368.                                   0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,   
  369.                                   0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03,   
  370.                                   0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,   
  371.                                   0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,   
  372.                                   0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00,   
  373.                                   0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03,   
  374.                                   0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03,   
  375.                                   0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,   
  376.                                   0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03,   
  377.                                   0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03,   
  378.                                   0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E,   
  379.                                   0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E,   
  380.                                   0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03,   
  381.                                   0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03,   
  382.                                   0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03,   
  383.                                   0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,   
  384.                                   0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02,   
  385.                                   0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01,   
  386.                                   0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03,   
  387.                                   0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,   
  388.                                   0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,   
  389.                                   0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,   
  390.                                   0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02,   
  391.                                   0x10,0x03, 0x15,0x00, 0x00,0x00 };   

  392. struct MusicInfo idata OurMusic[MUSIC_CNT] =
  393. {
  394.     {(u32)Music_Girl, sizeof(Music_Girl), "girl", "zhang"},
  395.     {(u32)Music_Same, sizeof(Music_Same), "same", "cai"},
  396.     {(u32)Music_Two, sizeof(Music_Two), "butty", "pang"},
  397.         //{(u32)Music_Two, sizeof(Music_Girl), "boy", "zhang"},
  398.     //{(u32)Music_Two, sizeof(Music_Same), "hello", "cai"},
  399.     //{(u32)Music_Two, sizeof(Music_Two), "Red", "pang"},
  400.    
  401. };

复制代码
回复

使用道具 举报

ID:52177 发表于 2013-7-23 23:30 | 显示全部楼层
不错的,好,大家一起学习下
回复

使用道具 举报

ID:52249 发表于 2013-7-25 17:20 | 显示全部楼层
不错的,好,大家一起学习下
回复

使用道具 举报

ID:52302 发表于 2013-7-26 17:17 | 显示全部楼层
程序错一大堆,无语
回复

使用道具 举报

ID:25058 发表于 2013-7-28 10:34 | 显示全部楼层
下啦!谢谢楼主分享。
回复

使用道具 举报

ID:61343 发表于 2014-5-14 18:20 | 显示全部楼层
好,谢谢分享
回复

使用道具 举报

ID:61594 发表于 2014-6-12 14:44 | 显示全部楼层
那些程序编译不了的,我想问你那个  music.hex文件是怎么弄出来的!
回复

使用道具 举报

ID:62830 发表于 2014-6-12 16:51 | 显示全部楼层
看看.......................
回复

使用道具 举报

ID:63362 发表于 2014-6-29 21:41 | 显示全部楼层
感谢大大
回复

使用道具 举报

ID:63362 发表于 2014-6-29 22:14 | 显示全部楼层
给大神赞一个
回复

使用道具 举报

ID:55063 发表于 2014-6-30 12:14 | 显示全部楼层
好东西,谢谢楼主哦
回复

使用道具 举报

ID:63309 发表于 2014-7-1 22:15 | 显示全部楼层
不错呀!大神!
回复

使用道具 举报

ID:63888 发表于 2014-7-19 22:58 | 显示全部楼层
太好了,学习
回复

使用道具 举报

ID:64125 发表于 2014-7-20 15:00 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:64655 发表于 2014-8-6 19:38 | 显示全部楼层
很好,感谢楼主
回复

使用道具 举报

ID:64825 发表于 2014-8-7 09:19 | 显示全部楼层
不错学习下
回复

使用道具 举报

ID:61804 发表于 2014-12-28 13:34 | 显示全部楼层
看看。。。。。
回复

使用道具 举报

ID:11942 发表于 2015-1-7 11:11 | 显示全部楼层
good  想看看
回复

使用道具 举报

ID:71768 发表于 2015-1-7 13:04 | 显示全部楼层
看看。。。
回复

使用道具 举报

ID:71768 发表于 2015-1-7 13:15 | 显示全部楼层
看看,
回复

使用道具 举报

ID:71697 发表于 2015-1-7 23:22 | 显示全部楼层
怎么得M币啊
回复

使用道具 举报

ID:71854 发表于 2015-1-8 13:40 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:70129 发表于 2015-1-11 15:50 | 显示全部楼层
谢谢楼主分享,下载收藏。
回复

使用道具 举报

ID:72616 发表于 2015-2-8 17:01 | 显示全部楼层
做的还不错哦
回复

使用道具 举报

ID:92972 发表于 2015-10-19 23:53 | 显示全部楼层
兔兔兔兔兔兔兔兔兔兔兔兔兔兔兔兔兔兔兔兔兔兔
回复

使用道具 举报

ID:93003 发表于 2015-10-20 11:30 | 显示全部楼层
这个动手能力要求有点高啊
回复

使用道具 举报

ID:92713 发表于 2015-10-20 14:04 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:92713 发表于 2015-10-20 14:08 | 显示全部楼层
yfdhfj
回复

使用道具 举报

ID:92713 发表于 2015-10-20 14:08 | 显示全部楼层
tresytrh
回复

使用道具 举报

ID:79573 发表于 2015-12-12 23:08 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:109067 发表于 2016-3-15 19:05 | 显示全部楼层
这个可以用吗
回复

使用道具 举报

ID:109067 发表于 2016-3-15 19:05 | 显示全部楼层
这个可以用吗
回复

使用道具 举报

ID:113309 发表于 2016-4-10 16:47 | 显示全部楼层
怎么下载啊
回复

使用道具 举报

ID:112865 发表于 2016-4-12 08:59 来自手机 | 显示全部楼层
收藏谢谢
回复

使用道具 举报

ID:71993 发表于 2016-4-12 13:46 | 显示全部楼层
下载试试
回复

使用道具 举报

ID:99401 发表于 2016-4-12 22:15 | 显示全部楼层
很好,我很喜欢这个网站
回复

使用道具 举报

ID:119928 发表于 2016-5-10 23:11 | 显示全部楼层
有错误呀
回复

使用道具 举报

ID:111256 发表于 2016-5-11 08:47 | 显示全部楼层
学习一下,用蜂鸣器放音乐。
回复

使用道具 举报

ID:120091 发表于 2016-5-11 17:00 | 显示全部楼层
下载试试
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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