jennyzhaojie 发表于 2017-10-20 10:50

基于CH554开发板的MP3语音播放

<div class='showpostmsg'> 本帖最后由 jennyzhaojie 于 2017-10-20 10:57 编辑

Mini MP3 Player是一款小巧的MP3播放模块,可以直接通过扬声器发出声音。该模块完美集成了MP3、WAV、WMA的硬解码,同时支持TF卡驱动及FAT16、FAT32文件系统。在播放时,它无需繁琐的底层操作,具有使用方便,稳定可靠的特点。该模块可采用电池供电,并带配有2中播放模式,即按键方式和串口控制方式。通过简单的串口指令即可完成对指定音乐的播放。该模块的引脚分布如图1所示。图1 引脚分布
这里我们仅使用到以下引脚:1--Vcc模块电源输入引脚,使用时接5V电源。2--RX   UART程序数据输入端,接CH554的TX引脚。6--SPK2 喇叭+7--GND 模块电源输入引脚,使用时接电源地。 8--SPK1 喇叭-

在串行通讯模式下,该模块共提供了下一首、上一首、播放、暂停、停止、音量设置及播放指定乐曲7种指令。在本人预定的制作题目智能语音展板中,主要涉及的指令有:音量设置和指定播放2个指令,即使用触摸键选择后,就播放指定的语种进行讲解。后面有时间的话,再配上感知功能,以便具有一定的智能性并达到节能的目的。指定播放指令格式:uint8_t cmd3[] = {0X7E, 0xFF, 0x06, 0X03, 00, 00, 01, 0xFE, 0xF7, 0XEF}; 音量设置指令格式:uint8_t cmd6[] = {0X7E, 0xFF, 0x06, 0X06, 00, 00, 10, 0xFE, 0xE5, 0XEF}; 由于这2个指令均含有参数,故在指令中需变更其校验码,以音量设置为例,其校验码的计算函数如下,其中参数index为设置的音量值。void setVolume(uint8_t index)
{
      uint8_t checksum = 0;
      cmd6 = (uint8_t)(index);
      for (int i=2; i<8; i++)
      {
                checksum += cmd6;
      }
      cmd6 = (uint8_t)~checksum;//计算校验码
}
执行语音播放的主函数如下,其运行状态如图3所示。void main( )
{
       UINT16 i = 0;
         CfgFsys( );                                                                  
       mDelaymS(20);
       mInitSTDIO( );
       #if GPIO_INTERRUPT
       GPIOInterruptCfg();                                                      
         EA = 1;
       CH554UART0SendByte(0x7f);
         setVolume(15);
            for(i=0;i<10;i++)
         {
                  CH554UART0SendByte(cmd6);         
       }
                mDelaymS(80);
                playn(2);
                for(i=0;i<10;i++)
         {
                  CH554UART0SendByte(cmd3);         
       }
#endif
          while(1);
}
图3 播放状态图
此内容由EEWORLD论坛网友jennyzhaojie原创,如需转载或用于商业用途需征得作者同意并注明出处


</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

沁恒USB单片机 发表于 2017-10-20 11:33

如果拍个播放的视频就更直观了:lol

dcexpert 发表于 2017-10-20 16:52

用CH554控制MP3不错

jennyzhaojie 发表于 2017-10-21 10:42

沁恒USB单片机 发表于 2017-10-20 11:33
如果拍个播放的视频就更直观了

回头试一试。

沁恒USB单片机 发表于 2017-10-23 11:53

CH554系列USB实用例程请参考:https://bbs.eeworld.com.cn/thread-571344-1-1.html
页: [1]
查看完整版本: 基于CH554开发板的MP3语音播放