MP3播放器
AU7842是MVSILICON公司设计的一款集成了微控制器、MP3/WMA解码器、USB主机控制器、SD/MMC卡控制器、16 bit音频解码器和一个红外线解码器的MP3/WMV音频解码芯片。本文介绍用STC12C561624 AD通过I2C总线控制AU7842芯片,运用软件对寄存器的读写操作,实现多种音效的MP3播放。
1 I2C总线技术及AU7842芯片原理
1.1 I2C协议
I2C总线作为同步串行数据输出总线,由一条串行数据线(SDA)和一条串行时钟线(SCL)组成。它是一个真正的多主机总线,如果2个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏。每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址;主机可以作为主机发送器或主机接收器[1]。
1.2 AU7842芯片原理
AU7842芯片是将在存储器中以数字信号形式存储的音乐解码成可以播放的模拟信号。它可以解码MP3和WMA两种格式的音频信号。工作原理如图1所示。开机后,单片机循环检测解码芯片周围电路的动作。当检测到芯片外围有存储设备接入,单片机控制芯片直接访问存储器里的内容,读取数据送入MP3/WMA解码器,解码得到的数字信号通过数模转换器转换成模拟信号,经模拟音频放大和低通滤波,就可以听到音乐[2]。
2 硬件电路
2.1 电路设计
根据车载MP3播放器的特点选STC12C5624 AD系列单片机。该单片机是***宏晶公司推出的51增强型单片机,其具有低功耗,计算速度快等特点。当关闭MP3播放器时,单片机进入低功耗休眠状态,单片机切断所有外围模块的供电。播放器需要工作时,通过外部中断唤醒单片机工作,这样最大限度地减少功耗[3]。其计算速度是普通单片机的8~12倍。播放器电路图如图2所示。
2.2 外围硬件模块
本文以STC12C5624AD单片机为核心,来控制其他模块的工作。硬件模块框图如图3示。
(1)电源模块:完成对整个MP3播放器的供电。电源模块的电压输入端是发电机或蓄电池,电压经过开关型集成稳压电路(LM2575/LM2576),得到的输出电压稳定且纹波小[4]。
(2)LCD模块:显示MP3播放时的曲目序号、播放的时间、文件的格式以及播放模式。
(3)按键模块:结合软件可以实现控制MP3播放器的工作,如浏览播放、顺序播放、随机播放以及不同播放音效之间的切换等。
(4)MP3模块:读取存储设备(SD卡/U盘)中的音频文件(MP3/WMA),通过数模转换将数字信号解码成模拟信号。
(5)音效模块:音效模块提供音效处理功能。来自MP3模块的音频信号经过音效处理,能够以爵士、摇滚、古典、流行等多种音效播放音乐,带给听众很好的听觉感受。
(6)其他:包括USB接口和SD接口等。
3 软件设计
MP3播放器受控于按键模块,单片机循环检测按键模块按键的动作,并通过软件对相关的寄存器进行读写操作,实现MP3播放器相应的功能。
3.1存储设备读取及切换
单片机循环检测芯片外围电路电平的变化,判断当前是否有存储设备插入,是否须进行存储设备之间的切换。通过软件改变相应标志位的值,实现存储设备的读取或存储设备的切换。读取流程如图4所示。
MP3处理模块子程序:
if(mp3_start_flag==1) /*初次插入设备*/
{ ……
mp3_flag=1;
/*AU7842启动标志位置位,开始响应*/
currentchannel=0x01;
if(Current_PlayDev==1) /*检测到USB接口有存储
设备接入*/
{ ……
Play_BreakPoint_USB(1);
/*读取USB存储设备中的数据 */
}
else if(Current_PlayDev==2)
/*检测到SD接口有存储设备接入*/
{ ……
Play_BreakPoint_SD(1); /*读取SD卡中的数据*/
}
} /* */
if((Dev_Status!=0)&&(Current_DevStatus!=Dev_Status)&&(Current_DevStatus==DEV_USB_SD))
/*后设备的启动播放*/
{ ……
if(Current_PlayDev==DEV_USB)
/*正在播放的USB存储器*/
{ DEV_Change_Flag=1; /*切换标志位置位*/
uart_putc(0x55);
uart_putc(0x00);
uart_putc(0xFF);
uart_putc(0x15);
uart_putc(0xEA);
……
Play_BreakPoint_SD(1);
/*切换到从SD卡播放*/
}
else if(Current_PlayDev==
DEV_SD) /*正在播放的是SD卡*/
{ DEV_Change_Flag=1; /*切换标志位置位*/
uart_putc(0x55);
uart_putc(0x00);
uart_putc(0xFF);
uart_putc(0x1B);
uart_putc(0xE4);
……
Play_BreakPoint_USB(1);
/*切换到从USB存储器播放*/
}
}
3.2掉电记忆功能
为满足使用的要求,车载MP3播放器应具有掉电记忆功能。掉电记忆功能可实现MP3播放器在掉电或关机后,上次各种设定值(如音量、音效、播放模式等)不会因断电而复位,在下一次开机时不需重新设定,可以直接调用上次设定值。记忆流程如图5所示。
掉电记忆子程序:
void Save_Data(void) /*定义掉电记忆函数*/
{ Wirte_EEPROM(0x06db,vol_val);
/*记忆掉电前音量设定值*/
Wirte_EEPROM(0x06dc,bass_val);
/*记忆掉电前低音设定值*/
Wirte_EEPROM(0x06dd,tre_val);
/*记忆掉电前高音设定值*/
Wirte_EEPROM(0x06de,loud_val);
/*记忆掉电前低音设定值*/
Wirte_EEPROM(0x0700,Save_USB_Song1);
/*记忆掉电前USB曲目顺序号*/
… …
Wirte_EEPROM(0x0703,Save_USB_Min1);
/*记忆掉电前USB中正在播放曲目的播放时间*/
… …
Wirte_EEPROM(0x0707,Save_SD_Song1);
/*记忆掉电前SD中正在播放的曲目顺序号*/
… …
Wirte_EEPROM(0x070a,Save_SD_Min1);}
/*记忆掉电前USB中正在播放曲目的播放时间*/
本文设计的车载MP3播放器,在MP3音频文件存储设备方面有较大的突破,新型大容量存储设备(SD卡等)取代了传统卡带存储,并能够以多种音效播放。系统操作简便, MP3播放性能良好。
全部0条评论
快来发表一下你的评论吧 !