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[6] = (uint8_t)(index);
- for (int i=2; i<8; i++)
- {
- checksum += cmd6[i];
- }
- cmd6[8] = (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[i]);
- }
- mDelaymS(80);
- playn(2);
- for(i=0;i<10;i++)
- {
- CH554UART0SendByte(cmd3[i]);
- }
- #endif
- while(1);
- }
图3 播放状态图
此内容由EEWORLD论坛网友jennyzhaojie原创,如需转载或用于商业用途需征得作者同意并注明出处
本帖最后由 jennyzhaojie 于 2017-10-20 10:57 编辑