wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5964|回復(fù): 2
收起左側(cè)

VS1003&1053音頻解碼模塊資料下載 看過來,福利福利

[復(fù)制鏈接]
ID:184814 發(fā)表于 2017-3-30 16:25 | 顯示全部樓層 |閱讀模式
音頻解碼模塊看過來,福利福利,VS1003&1053音頻解碼模塊
0.png

VS1003中文數(shù)據(jù)手冊.pdf:
0.png 0.png
mp3文件的數(shù)據(jù)格式_中文:
0.png


單片機(jī)源程序:
  1. /*
  2. * MP3模塊測試程序
  3. *
  4. * 用途:MP3模塊測試程序
  5. *       vs1003 的硬件測試程序,主控芯片為STC12LE5A60S2
  6. *       其他的微處理器(帶SPI接口的)只需稍加修改即可適用
  7. *       對于不帶硬SPI接口的微處理器可以用IO進(jìn)行SPI的時序模擬
  8. *
  9. * 作者                                        日期                                備注
  10. * Huafeng Lin                        20010/09/10                        新增
  11. * Huafeng Lin                        20010/09/10                        修改
  12. *
  13. */

  14. #include "vs1003.h"
  15. #include "MusicDataMP3.c"


  16. #include <intrins.h>

  17. #define uchar unsigned char
  18. #define uint unsigned int
  19. #define ulong unsigned long
  20. #define bool bit
  21. #define true 1
  22. #define flase 0


  23. //針對SD卡讀寫板調(diào)整引腳
  24. #define uint8 unsigned char

  25. sbit  MP3_XRESET  = P3^2;

  26. #define Mp3PutInReset()  { MP3_XRESET = 0; }

  27. #define Mp3ReleaseFromReset()  { MP3_XRESET =1; }

  28. sbit MP3_XCS = P3^3;

  29. #define Mp3SelectControl()  { MP3_XCS = 0; }

  30. #define Mp3DeselectControl()  { MP3_XCS = 1; }

  31. sbit MP3_XDCS  = P3^4;

  32. #define Mp3SelectData()                { MP3_XDCS = 0; }

  33. #define Mp3DeselectData()        { MP3_XDCS = 1; }

  34. sbit MP3_DREQ = P3^5;

  35. sbit c_SPI_SI = P1^5;
  36. sbit c_SPI_SO = P1^6;
  37. sbit c_SPI_CLK = P1^7;

  38. #define Macro_Set_SI_High()          c_SPI_SI = 1
  39. #define Macro_Set_SI_Low()          c_SPI_SI = 0
  40. #define Macro_Set_CLK_High()          c_SPI_CLK = 1
  41. #define Macro_Set_CLK_Low()          c_SPI_CLK = 0

  42. void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);

  43. //#define SPIWait()        { while((S0SPSR & 0x80) == 0); }//等待SPI將數(shù)據(jù)發(fā)送完畢

  44. //#define SPI_RESULT_BYTE  S0SPDR

  45. //extern long volatile timeval; //用于延時的全局變量
  46. //1ms Delayfunction
  47. //void Delay(uchar ucDelayCount)
  48. void wait(uchar ucDelayCount)
  49. {
  50.         uchar ucTempCount;
  51.         uchar uci;

  52.         for(ucTempCount=0; ucTempCount<ucDelayCount; ucTempCount++)
  53.         {
  54. //                uci = 200;        //Err
  55. //                uci = 250;        //OK
  56.                 uci = 230;
  57.                 while(uci--)
  58.                 {
  59.                         _nop_();
  60.                    }
  61.         }
  62. }

  63. //#define wait(x) Delay(x)
  64. /**********************************************************/
  65. /*  函數(shù)名稱 :   MSPI_Init                                */
  66. /*  函數(shù)功能 : 初始化SPI接口,設(shè)置為主機(jī)。               */
  67. /*  參數(shù)     :  無                                        */
  68. /*  返回值   :  無                                        */
  69. /*--------------------------------------------------------*/
  70. void  MSPI_Init(void)
  71. {  
  72. /*
  73.         PINSEL0 = (PINSEL0 & 0xFFFF00FF) | 0x00005500;        //選擇 SPI
  74.         S0SPCCR = 0x08;                                        // SPI 時鐘設(shè)置
  75.         S0SPCR  = (0 << 3) |                                // CPHA = 0,
  76.                   (0 << 4) |                                // CPOL = 0,
  77.                   (1 << 5) |                                // MSTR = 1,
  78.                   (0 << 6) |                                // LSBF = 0,
  79.                   (0 << 7);                                // SPIE = 0,
  80. */
  81.         c_SPI_SO = 1;
  82.         MP3_DREQ = 1;

  83. }

  84. /**********************************************************/
  85. /*  函數(shù)名稱 :  InitPortVS1003                            */
  86. /*  函數(shù)功能 : MCU與vs1003接口的初始化                   */
  87. /*  參數(shù)     :  無                                        */
  88. /*  返回值   :  無                                        */
  89. /*--------------------------------------------------------*/
  90. void  InitPortVS1003(void)
  91. {
  92.         MSPI_Init();//SPI口的初始化
  93. //        IODIR &= 0xfffeffff;   //其他接口線的設(shè)置,其中dreq 為輸入口
  94. //        IODIR |= MP3_XRESET | MP3_XCS | MP3_XDCS;//xRESET,xCS,xDS均為輸出口
  95. //        IOSET |= MP3_XRESET | MP3_XCS | MP3_XDCS;//xRESET,xCS,xDS默認(rèn)輸出高電平       
  96.         MP3_DREQ = 1;                //置為輸入

  97.         MP3_XRESET = 1;
  98.         MP3_XCS = 1;
  99.         MP3_XDCS = 1;
  100. }

  101. //uint8 SD_SPI_ReadByte(void);
  102. //void SD_SPI_WriteByte(uint8 ucSendData);

  103. //#define SPI_RecByte()  SD_SPI_ReadByte()
  104. //#define SPIPutChar(x) SD_SPI_WriteByte(x)

  105. #if 1
  106. /**********************************************************/
  107. /*  函數(shù)名稱 :  SPIPutChar                                */
  108. /*  函數(shù)功能 : 通過SPI發(fā)送一個字節(jié)的數(shù)據(jù)                 */
  109. /*  參數(shù)     :  待發(fā)送的字節(jié)數(shù)據(jù)                          */
  110. /*  返回值   :  無                                        */
  111. /*--------------------------------------------------------*/
  112. void  SPIPutChar(unsigned char ucSendData)
  113. {      
  114. //        S0SPDR = c;
  115. //        while((S0SPSR & 0x80) == 0);         //等待SPI將數(shù)據(jù)發(fā)送完畢
  116.         uchar ucCount;
  117.         uchar ucMaskCode;

  118.         ucMaskCode = 0x80;
  119.         for(ucCount=0; ucCount<8; ucCount++)
  120.         {
  121.                 Macro_Set_CLK_Low();

  122.                 if(ucMaskCode & ucSendData)
  123.                 {
  124.                         Macro_Set_SI_High();
  125.                 }
  126.                 else
  127.                 {
  128.                         Macro_Set_SI_Low();
  129.                 }

  130.                 Macro_Set_CLK_High();
  131.                 ucMaskCode >>= 1;

  132.         }
  133. }

  134. /*******************************************************************************************************************
  135. ** 函數(shù)名稱: INT8U SPI_RecByte()                                Name:          INT8U SPI_RecByte()
  136. ** 功能描述: 從SPI接口接收一個字節(jié)                                Function: receive a byte from SPI interface
  137. ** 輸   入: 無                                                                        Input:          NULL
  138. ** 輸   出: 收到的字節(jié)                                                        Output:          the byte that be received
  139. ********************************************************************************************************************/
  140. static uchar SPI_RecByte(void)
  141. {
  142.         uchar ucReadData;
  143.         uchar ucCount;

  144.         ucReadData = 0;
  145.         Macro_Set_SI_High();

  146.         for(ucCount=0; ucCount<8; ucCount++)
  147.         {
  148.                 ucReadData <<= 1;
  149.                         //降低時鐘頻率
  150.                 Macro_Set_CLK_Low();

  151.        
  152.                 if(c_SPI_SO)
  153.                 {
  154.                         ucReadData |= 0x01;
  155.                 }
  156.                 Macro_Set_CLK_High();

  157.         }

  158.         return(ucReadData);
  159. }

  160. #endif

  161. /*************************************************************/
  162. /*  函數(shù)名稱 :  Mp3WriteRegister                             */
  163. /*  函數(shù)功能 : 寫vs1003寄存器                               */
  164. /*  參數(shù)     :  寄存器地址,待寫數(shù)據(jù)的高8位,待寫數(shù)據(jù)的低8位 */
  165. /*  返回值   :  無                                           */
  166. /*-----------------------------------------------------------*/
  167. void Mp3WriteRegister(unsigned char addressbyte, unsigned char highbyte, unsigned char lowbyte)
  168. {
  169.         Mp3DeselectData();
  170.         Mp3SelectControl();//XCS = 0
  171.         SPIPutChar(VS_WRITE_COMMAND); //發(fā)送寫寄存器命令
  172.         SPIPutChar(addressbyte);      //發(fā)送寄存器的地址
  173.         SPIPutChar(highbyte);         //發(fā)送待寫數(shù)據(jù)的高8位
  174.         SPIPutChar(lowbyte);          //發(fā)送待寫數(shù)據(jù)的低8位
  175.         Mp3DeselectControl();
  176. }

  177. /*************************************************************/
  178. /*  函數(shù)名稱 :  Mp3ReadRegister                              */
  179. /*  函數(shù)功能 : 寫vs1003寄存器                               */
  180. /*  參數(shù)     :  寄存器地址                                     */
  181. /*  返回值   :  vs1003的16位寄存器的值                       */
  182. /*-----------------------------------------------------------*/
  183. unsigned int Mp3ReadRegister(unsigned char addressbyte)
  184. {
  185.         unsigned int resultvalue = 0;
  186.         uchar ucReadValue;

  187.         Mp3DeselectData();
  188.         Mp3SelectControl();//XCS = 0
  189.         SPIPutChar(VS_READ_COMMAND); //發(fā)送讀寄存器命令
  190.         SPIPutChar((addressbyte));         //發(fā)送寄存器的地址

  191. //        SPIPutChar(0xff);                 //發(fā)送讀時鐘
  192. //        resultvalue = (SPI_RESULT_BYTE) << 8;//讀取高8位數(shù)據(jù)
  193.         ucReadValue = SPI_RecByte();
  194.         resultvalue = ucReadValue<<8;
  195. //        SPIPutChar(0xff);                   //發(fā)送讀時鐘
  196. //        resultvalue |= (SPI_RESULT_BYTE);  //讀取低8位數(shù)據(jù)
  197.         ucReadValue = SPI_RecByte();
  198.         resultvalue |= ucReadValue;

  199.         Mp3DeselectControl();              
  200.         return resultvalue;                 //返回16位寄存器的值
  201. }

  202. /**********************************************************/
  203. /*  函數(shù)名稱 :  Mp3SoftReset                              */
  204. /*  函數(shù)功能 : vs1003軟件復(fù)位                            */
  205. /*  參數(shù)     :  無                                        */
  206. /*  返回值   :  無                                        */
  207. /*--------------------------------------------------------*/
  208. void Mp3SoftReset(void)
  209. {
  210.         Mp3WriteRegister (SPI_MODE, 0x08, 0x04); //軟件復(fù)位

  211.         wait(1); //延時1ms
  212.         while (MP3_DREQ == 0); //等待軟件復(fù)位結(jié)束
  213.         Mp3WriteRegister(SPI_CLOCKF, 0x98, 0x00);//設(shè)置vs1003的時鐘,3倍頻
  214.         Mp3WriteRegister (SPI_AUDATA, 0xBB, 0x81); //采樣率48k,立體聲
  215.         Mp3WriteRegister(SPI_BASS, 0x00, 0x55);//設(shè)置重音
  216.         Mp3SetVolume(10,10);//設(shè)置音量
  217.     wait(1); //延時1ms
  218.            
  219.             //向vs1003發(fā)送4個字節(jié)無效數(shù)據(jù),用以啟動SPI發(fā)送
  220.            Mp3SelectData();
  221.         SPIPutChar(0);
  222.         SPIPutChar(0);
  223.         SPIPutChar(0);
  224.         SPIPutChar(0);
  225.         Mp3DeselectData();

  226. }
  227. /**********************************************************/
  228. /*  函數(shù)名稱 :  Mp3Reset                                  */
  229. /*  函數(shù)功能 : vs1003硬件復(fù)位                            */
  230. /*  參數(shù)     :  無                                        */
  231. /*  返回值   :  無                                        */
  232. /*--------------------------------------------------------*/
  233. void Mp3Reset(void)
  234. {       
  235.         Mp3PutInReset();//xReset = 0   復(fù)位vs1003      
  236.         wait(200);//延時100ms
  237.         SPIPutChar(0xff);//發(fā)送一個字節(jié)的無效數(shù)據(jù),啟動SPI傳輸
  238.         Mp3DeselectControl();   //xCS = 1
  239.         Mp3DeselectData();     //xDCS = 1
  240.         Mp3ReleaseFromReset(); //xRESET = 1
  241.         wait(200);            //延時100ms
  242.         while (MP3_DREQ == 0);//等待DREQ為高

  243.     wait(200);            //延時100ms
  244.         Mp3SetVolume(50,50);  
  245.     Mp3SoftReset();//vs1003軟復(fù)位
  246. }


  247. bool CheckVS1003B_DRQ(void)
  248. {
  249.         bool bResult;

  250.         bResult =MP3_DREQ;
  251.         return(bResult);
  252. }

  253. /***********************************************************/
  254. /*  函數(shù)名稱 :  VsSineTest                                 */
  255. /*  函數(shù)功能 : vs1003正弦測試,將該函數(shù)放在while循環(huán)中,  */
  256. /*              如果能持續(xù)聽到一高一低的聲音,證明測試通過 */                           
  257. /*  參數(shù)     :  無                                         */
  258. /*  返回值   :  無                                         */
  259. /*---------------------------------------------------------*/
  260. void VsSineTest(void)
  261. {
  262.         Mp3PutInReset();  //xReset = 0   復(fù)位vs1003
  263.         wait(200);        //延時100ms        
  264.         SPIPutChar(0xff);//發(fā)送一個字節(jié)的無效數(shù)據(jù),啟動SPI傳輸
  265.         Mp3DeselectControl();  
  266.         Mp3DeselectData();     
  267.         Mp3ReleaseFromReset();
  268.         wait(200);                      
  269.         Mp3SetVolume(50,50);  

  270.         Mp3WriteRegister(SPI_MODE,0x08,0x20);//進(jìn)入vs1003的測試模式
  271.         while (MP3_DREQ == 0);     //等待DREQ為高
  272.         Mp3SelectData();       //xDCS = 1,選擇vs1003的數(shù)據(jù)接口
  273.        
  274.         //向vs1003發(fā)送正弦測試命令:0x53 0xef 0x6e n 0x00 0x00 0x00 0x00
  275.         //其中n = 0x24, 設(shè)定vs1003所產(chǎn)生的正弦波的頻率值,具體計(jì)算方法見vs1003的datasheet
  276.            SPIPutChar(0x53);      
  277.         SPIPutChar(0xef);      
  278.         SPIPutChar(0x6e);      
  279.         SPIPutChar(0x24);      
  280.         SPIPutChar(0x00);      
  281.         SPIPutChar(0x00);
  282.         SPIPutChar(0x00);
  283.         SPIPutChar(0x00);
  284. //        wait(500);
  285.         wait(250);
  286.         wait(250);
  287.         Mp3DeselectData();//程序執(zhí)行到這里后應(yīng)該能從耳機(jī)聽到一個單一頻率的聲音
  288.   
  289.         //退出正弦測試
  290.         Mp3SelectData();
  291.         SPIPutChar(0x45);
  292.         SPIPutChar(0x78);
  293.         SPIPutChar(0x69);
  294.         SPIPutChar(0x74);
  295.         SPIPutChar(0x00);
  296.         SPIPutChar(0x00);
  297.         SPIPutChar(0x00);
  298.         SPIPutChar(0x00);
  299. //        wait(500);
  300.         wait(250);
  301.         wait(250);

  302.         Mp3DeselectData();

  303.         //再次進(jìn)入正弦測試并設(shè)置n值為0x44,即將正弦波的頻率設(shè)置為另外的值
  304.     Mp3SelectData();      
  305.         SPIPutChar(0x53);      
  306.         SPIPutChar(0xef);      
  307.         SPIPutChar(0x6e);      
  308.         SPIPutChar(0x44);      
  309.         SPIPutChar(0x00);      
  310.         SPIPutChar(0x00);
  311.         SPIPutChar(0x00);
  312.         SPIPutChar(0x00);
  313. //        wait(500);
  314.         wait(250);
  315.         wait(250);

  316.         Mp3DeselectData();

  317.         //退出正弦測試
  318.         Mp3SelectData();
  319.         SPIPutChar(0x45);
  320.         SPIPutChar(0x78);
  321.         SPIPutChar(0x69);
  322.         SPIPutChar(0x74);
  323.         SPIPutChar(0x00);
  324.         SPIPutChar(0x00);
  325.         SPIPutChar(0x00);
  326.         SPIPutChar(0x00);
  327. //        wait(500);
  328.         wait(250);
  329.         wait(250);

  330.         Mp3DeselectData();
  331. }

  332. void test_1003_PlayMP3File();

  333. void TestVS1003B(void)
  334. {
  335.         Mp3Reset();
  336.         VsSineTest();
  337.         Mp3SoftReset();
  338.         test_1003_PlayMP3File();
  339. }

  340. //寫寄存器,參數(shù),地址和數(shù)據(jù)
  341. void VS1003B_WriteCMD(unsigned char addr, unsigned int dat)
  342. {
  343. /*
  344.         VS1003B_XDCS_H();
  345.         VS1003B_XCS_L();
  346.         VS1003B_WriteByte(0x02);
  347.         //delay_Nus(20);
  348.         VS1003B_WriteByte(addr);
  349.         VS1003B_WriteByte(dat>>8);
  350.         VS1003B_WriteByte(dat);
  351.         //delay_Nus(200);
  352.         VS1003B_XCS_H();
  353. */
  354.         Mp3WriteRegister(addr,dat>>8,dat);
  355. }

  356. //讀寄存器,參數(shù) 地址 返回內(nèi)容
  357. unsigned int VS1003B_ReadCMD(unsigned char addr)
  358. {
  359. /*
  360.         unsigned int temp;
  361.         unsigned char temp1;
  362.         VS1003B_XDCS_H();
  363.         VS1003B_XCS_L();
  364.         VS1003B_WriteByte(0x03);
  365.         //delay_Nus(20);
  366.         VS1003B_WriteByte(addr);
  367.         temp=  VS1003B_ReadByte();
  368.         temp=temp<<8;
  369.         temp1= VS1003B_ReadByte();
  370.         temp=temp|temp1;;
  371.         VS1003B_XCS_H();
  372.         return temp;
  373. */
  374.         return(Mp3ReadRegister(addr));
  375. }

  376. //寫數(shù)據(jù),音樂數(shù)據(jù)
  377. void VS1003B_WriteDAT(unsigned char dat)
  378. {
  379. //        VS1003B_XDCS_L();
  380. //        VS1003B_WriteByte(dat);
  381. //        VS1003B_XDCS_H();
  382. //        VS1003B_XCS_H();

  383.            Mp3SelectData();
  384.         SPIPutChar(dat);
  385.         Mp3DeselectData();
  386.         Mp3DeselectControl();

  387. }

  388. //開啟環(huán)繞聲
  389. void VS1003B_SetVirtualSurroundOn(void)
  390. {
  391.         uchar ucRepeatCount;
  392.         uint uiModeValue;

  393.         ucRepeatCount =0;

  394.         while(1)//寫時鐘寄存器
  395.         {
  396.                 uiModeValue = VS1003B_ReadCMD(0x00);
  397.                 if(uiModeValue & 0x0001)
  398.                 {
  399.                         break;
  400.                 }
  401.                 else
  402.                 {
  403.                         uiModeValue |= 0x0001;
  404.                         VS1003B_WriteCMD(0,uiModeValue);
  405.                 }
  406.                 ucRepeatCount++;
  407.                 if(ucRepeatCount++ >10 )break;
  408.         }

  409. }

  410. //關(guān)閉環(huán)繞聲
  411. void VS1003B_SetVirtualSurroundOff(void)
  412. {
  413.         uchar ucRepeatCount;
  414.         uint uiModeValue;

  415.         ucRepeatCount =0;

  416.         while(1)//寫時鐘寄存器
  417.         {
  418.                 uiModeValue = VS1003B_ReadCMD(0x00);
  419.                 if(uiModeValue & 0x0001)
  420.                 {
  421.                         break;
  422.                 }
  423.                 else
  424.                 {
  425.                         uiModeValue |= 0x0001;
  426.                         VS1003B_WriteCMD(0,uiModeValue);
  427.                 }
  428.                 ucRepeatCount++;
  429.                 if(ucRepeatCount++ >10 )break;
  430.         }

  431. }

  432. //增強(qiáng)重音
  433. //入口參數(shù)        1.強(qiáng)度0-15
  434. //                        2.頻率0-15 (X10Hz)
  435. void VS1003B_SetBassEnhance(uchar ucValue, ucFrequencyID)
  436. {
  437.         uchar ucRepeatCount;
  438.         uint uiWriteValue;
  439.         uint uiReadValue;       

  440.         ucRepeatCount =0;

  441.         uiWriteValue = VS1003B_ReadCMD(0x02);

  442.         uiWriteValue &= 0xFF00;
  443.         uiWriteValue |= ucValue<<4;
  444.         uiWriteValue &= (ucFrequencyID & 0x0F);

  445.         while(1)//寫時鐘寄存器
  446.         {

  447.                 VS1003B_WriteCMD(2,uiWriteValue);
  448.                 uiReadValue = VS1003B_ReadCMD(0x02);
  449.                
  450.                 if(uiReadValue == uiWriteValue)
  451.                 {
  452.                         break;
  453.                 }
  454.                 ucRepeatCount++;
  455.                 if(ucRepeatCount++ >10 )break;
  456.         }

  457. }


  458. uint uiVolumeCount;                //當(dāng)前音量值

  459. //VS1003初始化,0成功 1失敗
  460. unsigned char VS1003B_Init()
  461. {
  462.         unsigned char retry;
  463. /*
  464.         PORT_INI();
  465.         DDRB|=0xa0;
  466.         VS1003B_DDR &=~(1<<VS1003B_DREQ);
  467.         //delay_Nus(50);
  468.         VS1003B_XCS_H();
  469.         VS1003B_XDCS_H();
  470.         VS1003B_XRESET_L();
  471.         VS1003B_Delay(0xffff);
  472.         VS1003B_XRESET_H();//使能芯片
  473.         VS1003B_SPI_Low();//先以低頻操作
  474.         VS1003B_Delay(0xffff);//延時
  475. */
  476. Mp3Reset();

  477.         retry=0;
  478.         while(VS1003B_ReadCMD(0x00) != 0x0800)//寫mode寄存器
  479.         {
  480.                 VS1003B_WriteCMD(0x00,0x0800);
  481.                 if(retry++ >10 )break;//{PORTB|=_BV(PB1);break;}
  482.         }
  483.         retry=0;
  484.         /*while(VS1003B_ReadCMD(0x02) != 0x75)//寫mode寄存器
  485.         {
  486.                 VS1003B_WriteCMD(0x02,0x75);
  487.                 if(retry++ >10 )break;//{PORTB|=_BV(PB1);break;}
  488.         }*/
  489.         retry=0;
  490.         while(VS1003B_ReadCMD(0x03) != 0x9800)//寫時鐘寄存器
  491.         {
  492.                 VS1003B_WriteCMD(0x03,0x9800);
  493.                 if(retry++ >10 )break;
  494.         }
  495.         retry=0;
  496. //        while(VS1003B_ReadCMD(0x0b) != 0x1111)//設(shè)音量
  497. //        {
  498. //                VS1003B_WriteCMD(0x0b,0x1111);
  499. //                if(retry++ >10 )break;
  500. //        }
  501.         while(VS1003B_ReadCMD(0x0b) != uiVolumeCount)//設(shè)音量
  502.         {
  503.                 VS1003B_WriteCMD(0x0b,uiVolumeCount);
  504.                 if(retry++ >10 )break;
  505.         }

  506. //        VS1003B_SPI_High();//提高速度,全速運(yùn)行
  507.         if(retry > 10)return 1;
  508.         return 0;
  509. }

  510. //VS1003軟件復(fù)位
  511. void VS1003B_SoftReset()
  512. {
  513.         VS1003B_WriteCMD(0x00,0x0804);//寫復(fù)位
  514. //        VS1003B_Delay(0xffff);//延時,至少1.35ms
  515.         wait(2);
  516. }

  517. void VS1003B_Fill2048Zero()
  518. {
  519.         unsigned char i,j;

  520.         for(i=0;i<64;i++)
  521.         {
  522.                 if(CheckVS1003B_DRQ())
  523.                 {
  524.                         Mp3SelectData();

  525.                         for(j=0;j<32;j++)
  526.                         {

  527.                                 VS1003B_WriteDAT(0x00);
  528.                         }
  529.                         Mp3DeselectData();
  530.                 }
  531.         }
  532. }


  533. void test_1003_PlayMP3File()
  534. {
  535.    unsigned int data_pointer;unsigned char i;
  536.         unsigned int uiCount;

  537.         uiCount = sizeof(MusicData);
  538.         data_pointer=0;
  539.         VS1003B_SoftReset();
  540.     while(uiCount>0)
  541.           {
  542.            if(CheckVS1003B_DRQ())
  543.               {
  544.                     for(i=0;i<32;i++)
  545.                    {
  546.                              VS1003B_WriteDAT(MusicData[data_pointer]);
  547.                              data_pointer++;
  548.             }
  549.                         uiCount -= 32;
  550.          }
  551.     }
  552.         VS1003B_Fill2048Zero();
  553. }
復(fù)制代碼

0.png
0.png

下載:
VS1003B MP3解碼模塊 載咪頭 STM32單片機(jī)開發(fā)板.rar (6.28 MB, 下載次數(shù): 65)
回復(fù)

使用道具 舉報(bào)

ID:185829 發(fā)表于 2017-5-6 10:06 | 顯示全部樓層
stc51還是stm32?
回復(fù)

使用道具 舉報(bào)

ID:691028 發(fā)表于 2023-4-26 09:21 | 顯示全部樓層
雖然沒有源代碼,但是還是很好的資料,感謝樓主的共享!
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
好看的黄色网址| 日韩大陆欧美高清视频区| 欧美性猛交xxxx免费看漫画| 337p亚洲精品色噜噜噜| 一夜七次郎国产精品亚洲| 青青青国产精品一区二区| 久久综合福利| 777久久久精品一区二区三区| 三级一区二区三区| 午夜激情福利网| av中文字幕在线免费观看| 91九色91蝌蚪| 欧美中文在线| 成人在线高清| 国产精品videosex极品| 91亚洲资源网| 欧美精品1区2区3区| 不卡av电影院| 欧美日韩一区在线观看视频| 污版视频在线观看| 极品久久久久久| 亚洲av电影一区| 日本激情视频网| 成年男女免费视频网站不卡| 精品免费在线| 国产91丝袜在线播放| 欧美日韩视频在线| 久久精品成人欧美大片| 精品欧美一区二区在线观看视频 | 蜜桃av免费在线观看| 一级做a爱片久久毛片| 黄色xxxx| 超碰在线cao| 欧美另类女人| 中文av一区二区| 亚洲国产成人久久综合| 成人精品久久一区二区三区| 国产精品97在线| 欧美高清视频一区二区三区| 老师让我她我爽了好久视频| 欧美在线一卡| 日韩高清成人在线| 国产福利一区二区三区| 欧美日韩卡一卡二| 日韩美女免费视频| aa在线免费观看| 日韩成人一区二区三区| 在线观看天堂| av中文在线资源库| 亚洲午夜激情在线| 一区二区三区不卡视频在线观看 | 福利视频一二区| 免费成人深夜夜行网站| 欧美性性性性性ⅹxxbbbb| 成人亚洲综合天堂| 妖精一区二区三区精品视频 | 欧美videos巨大粗暴| 色视频在线免费观看| 国产一区不卡| 欧美激情中文不卡| 一个人看的www久久| 欧洲精品国产| wwwww黄色| 欧美精品久久久久久久小说| 国产午夜精品久久久久免费视 | 欧美精品一二区| 中文字幕黄色大片| caoporn91| 任你操视频在线观看| 忘忧草在线日韩www影院| 中文欧美日韩| 色婷婷综合久久| 国产精品夜色7777狼人| 日韩中文字幕a| 国产精品高潮呻吟av| 在线黄色.com| 欧美日韩精品一区二区视频| 亚洲色图都市小说| 97精品一区二区三区| 欧美视频免费播放| 国产精品欧美亚洲| 搞黄视频免费在线观看| 亚洲综合婷婷| 偷拍日韩校园综合在线| 国产不卡av在线免费观看| 中文久久久久久| 成人激情四射网| 午夜激情视频在线| 黄色亚洲精品| 欧美在线一区二区| 国产伦一区二区三区色一情| 欧美激情视频二区| 女明星视频黄又免费| 91视频成人| 2欧美一区二区三区在线观看视频| 亚洲人成绝费网站色www| 在线观看成人av电影| 国产无遮挡免费视频| 美女在线一区| 亚洲裸色大胆大尺寸艺术写真| 国产精品久线观看视频| 91精品国产高清| 九九热视频免费| 思思99热久久精品在线6| 成人在线视频播放| 91麻豆精品视频| 欧美激情一区二区三区成人| 黑森林精品导航| 亚洲天堂影院在线观看| 午夜福利视频一区二区| 黄色小网站在线观看| 性欧美暴力猛交另类hd| 精品久久五月天| 欧美少妇一区二区三区| 亚洲视频一区在线播放| 日本韩国在线视频爽| 亚洲欧美日韩综合国产aⅴ| 日韩精品一区二区三区视频播放 | 色一情一乱一伦一区二区三区日本| 亚洲永久精品视频| 成人片在线看| 精品一区二区综合| xxxx欧美18另类的高清| 牛夜精品久久久久久久| 婷婷伊人综合中文字幕| 台湾成人免费视频| 国产日韩精品久久久| 国产不卡视频在线| 少妇人妻好深好紧精品无码| 91在线精品| 91九色精品| 欧美一级二级三级蜜桃| 熟女熟妇伦久久影院毛片一区二区| 中文字幕av免费观看| 成人ww免费完整版在线观看| 国产一区二区在线观看视频| 欧美成人中文字幕在线| 韩国三级视频在线观看| av免费在线电影| 亚洲成人一区| 精品国产乱码久久久久久牛牛| 国产成人亚洲综合无码| 亚洲国产精品二区| 久久久国产精品网站| 亚洲日本中文字幕区| 国产伦精品一区二区三区高清| 日本少妇性高潮| 亚乱亚乱亚洲乱妇| 成人av片在线观看| 国产精品福利在线观看| 一区二区在线观看免费视频| 免费动漫网站在线观看| 久久av资源站| 午夜精品久久久久久久久久久久久| 国产伦精品一区二区三区妓女 | 不卡影院免费观看| 日本精品视频网站| 黄色香蕉视频在线观看| 极品美乳网红视频免费在线观看| 免费成人在线网站| 97精品在线视频| 激情高潮到大叫狂喷水| 国产区高清在线| 国产黄色91视频| 欧美一级在线播放| 国内精品久久国产| www.99re7.com| 自拍亚洲图区| 日本一区二区三区高清不卡 | 日韩福利影院| 亚洲国产视频一区二区三区| 99re8精品视频在线观看| 日韩欧美在线播放| 男人添女人下部视频免费| 综合欧美视频一区二区三区| 蜜乳av综合| 欧美变态凌虐bdsm| 天天久久综合网| 手机看片1024久久| 国内成人自拍视频| 成人两性免费视频| 国产又粗又大又爽| 综合欧美亚洲| 日韩免费性生活视频播放| 日韩欧美理论片| 500福利第一精品导航| 国产在线播放一区三区四| 国产精品日韩精品| 69视频免费看| 国产aa精品| 制服丝袜亚洲精品中文字幕| 妓院一钑片免看黄大片| 国产免费视频| 狠狠色丁香久久婷婷综合丁香| 国产精品日韩欧美大师| 在线观看日批视频| 草莓视频一区二区三区| 日韩美女一区二区三区四区| 国产九九九视频| 一区二区三区视频国产日韩 | 国产精品久久久久影院老司| 天堂精品一区二区三区| 欧美日韩在线精品成人综合网| 欧美在线观看天堂一区二区三区| 久久精品国产一区二区三区| 91九色丨porny丨极品女神| 白浆在线视频| 日韩欧美综合在线视频| 手机看片福利盒子久久| 欧美aaa大片| 99久久精品免费| 久久综合中文色婷婷| 中文字幕人成高视频| 中文字幕人成人乱码| 91精品国产99久久久久久| 亚洲毛片一区二区三区| 国产96在线亚洲| 亚洲午夜av电影| 免费在线观看亚洲| 欧美天堂一区二区| 欧美精品一区二区在线观看| 无码熟妇人妻av| 免费av不卡在线观看| 欧美日韩亚洲一区二| 污污动漫在线观看| 欧美日韩免费做爰大片| 亚洲天堂av一区| 草草久久久无码国产专区| 成人片在线播放| 91美女福利视频| 国产黄色激情视频| 男人天堂v视频| 久久亚洲精品国产精品紫薇| 国产精品无码乱伦| h在线观看网站| 成人av电影在线观看| 五月天丁香综合久久国产| 大黑人xxx| 99在线精品免费| 伊人天天久久大香线蕉av色| xxxx黄色| 91啦中文在线观看| 国产片侵犯亲女视频播放| 韩国版免费三体| 中文字幕国产一区| 欧美亚洲视频在线看网址| 欧美a视频在线观看| 色综合综合网| 97avcom| 国产综合在线播放| 影院欧美亚洲| 97神马电影| 少妇高潮爽到全身痉挛抽搐| 国产精品小仙女| 最新欧美日韩亚洲| 性色av一区二区| 亚洲天堂2014| 亚洲综合在线一区二区| sm性调教片在线观看| 精品国产自在久精品国产| caoporn91| 要久久电视剧全集免费| 97精品久久久中文字幕免费| 亚洲风情第一页| 国产精品入口| 免费av一区二区三区| 99热在线免费| 亚洲欧美日韩久久精品| 午夜国产福利在线观看| 国产99在线观看| 精品偷拍各种wc美女嘘嘘| 日韩 欧美 中文| 日韩片欧美片| 成人做爰www免费看视频网站| 国产免费黄网站| 99热精品一区二区| 37pao成人国产永久免费视频| 日韩美女网站| 日韩精品一区二| 日本网站免费观看| 亚洲精品二区三区| 国产区欧美区日韩区| 羞羞免费视频网站| 亚洲综合偷拍欧美一区色| 亚洲精品乱码久久久久久蜜桃图片| 播放一区二区| 色综合久久88色综合天天看泰| 欧美自拍第一页| 激情综合网最新| 欧美视频在线观看网站| 色屁屁www国产馆在线观看| 日韩av在线播放资源| 日本视频www色| 久久一日本道色综合久久| 自拍偷拍一区二区三区| 男操女在线观看| 日韩一区二区电影网| 久久久久女人精品毛片九一| 亚洲黄色天堂| 青少年xxxxx性开放hg| av在线电影免费观看| 精品久久久久久久久久久久久久久 | 99riav视频| 午夜电影网一区| 亚洲天堂网av在线| 久久在线免费| 久久综合一区二区三区| 白白色在线发布| 精品视频一区二区三区免费| 久青草免费视频| 亚洲性色视频| 大桥未久一区二区| jizz性欧美| 少妇高潮久久77777| 亚洲色图偷拍| 久久精品一区二区三区四区| 亚洲自拍偷拍精品| 日韩动漫一区| 精品久久久久久一区| 亚洲综合色视频在线观看| 欧美一级在线免费| 国产精品一级二级| 国产传媒一区在线| 在线观看日本www| 人人爱人人干婷婷丁香亚洲| 国产精品久久久久久亚洲影视| 在线观看免费播放网址成人| 欧美性69xxxx肥| 日韩三级免费看| 日韩一区欧美二区| 福利在线一区二区三区| www.久久99| 亚洲在线免费观看| 天堂中文在线资| 亚洲精品一区中文| 在线电影中文字幕| 中文字幕一区二区三区视频| 999精品久久久| 极品少妇一区二区三区| 可以在线看的av网站| 91成人抖音| 国产精品自拍视频| 色婷婷综合缴情免费观看| 亚洲成人黄色网址| 97一区二区三区| 亚洲欧美激情插| 精品视频久久久久| 免费在线视频一区| 亚洲精品乱码久久久久久动漫| 日韩精品a在线观看91| 日韩欧美一区二区在线观看| 毛片在线网址| 情事1991在线| 宅男视频免费在线观看视频| 亚洲欧洲xxxx| xxx欧美尤物xxx| 欧美日韩一区在线观看| 亚洲精选一区二区三区| 成人免费在线观看入口| 国产精品18p| 国产主播一区二区三区| 日韩少妇一区二区| 在线看片不卡| 日韩视频第二页| 美女av一区| 色播五月综合| 婷婷六月国产精品久久不卡| 成人做爽爽免费视频| 2021av在线| 98精品国产高清在线xxxx天堂| 电影天堂最新网址| 国产视频精品久久久| 国产激情视频一区二区三区| 色老汉一区二区三区| 国产成人精品亚洲精品色欲| 综合分类小说区另类春色亚洲小说欧美| 久久视频免费看| 懂色av噜噜一区二区三区av| 你懂得视频在线观看| 青青青伊人色综合久久| 国产国语老龄妇女a片| 欧美网站在线| 爱豆国产剧免费观看大全剧苏畅| 日韩久久精品| 欧美污视频网站| 久久97视频| 久久视频这里有精品| 欧美一区自拍| 日韩中文在线字幕| ccyy激情综合| 欧美少妇一级片| 粉嫩的18在线观看极品精品| 欧美精品一区二区性色a+v| 久久精品一级| 日韩视频在线观看视频| 澳门久久精品| 轻点好疼好大好爽视频| 日韩av三区| 亚洲自偷自拍熟女另类| 成人激情诱惑|