徐阳(长江大学工程技术学院信息系,湖北 荆州 434023)
起初,MP3音乐文件只能由电脑来播放,随着互联网的发展,促进了MP3音乐播放器的产生。随着人们对MP3产品需求层次的进一步提高,MP3音乐播放器发生了一系列变化,其更加小巧精致,更人机化和情趣化,个性区分也越来越强,应用场合也越来越广,其不仅具有音频播放功能,同时还具有嵌入式信息处理功能,通常被应用于汽车导航、移动电话、个人数字助理(Personal Digital Assistant,PDA)等。为此,笔者提出了一种基于AT89C51SND1C单片机的MP3音乐播放器设计方案❶长江大学工程技术学院院级教学研究项目(JY201413)。。
MP3的全称为“MPEG1Layer-3”音频文件,即 MPEG音频文件第3层。MPEG音频文件是MPEG1标准中的声音部分,根据压缩质量和编码复杂程度划分为3层,分别对应于MP1、MP2和MP3这3种声音文件。音频编码层次越高,压缩率也越高,MP1和MP2的压缩率分别为4∶1和6∶1,而MP3的压缩率则高达12∶1。1min CD音质的音乐,未经压缩需要10MB左右的存储空间,而经过MP3编码压缩后只有1MB左右。不过MP3对音频信号采用的是有损压缩方式,为了降低声音失真度,MP3采取了“感官编码技术”,即编码时先对音频文件进行频谱分析,然后通过滤波器滤掉噪音,接着通过量化方式将剩下的每一位数据打散排列,最后形成具有较高压缩比的 MP3文件,并使压缩后的文件在回放时能够达到接近原音源的声音效果[1]。
MP3音乐播放器硬件电路图如图1所示。整个系统由AT89C51SND1C(单片机)、K9F2808U0A(FLASH存储器)、电源部分、音频部分(LM4880)、D/A转换部分(CS4330)、USB接口部分、键盘和显示部分组成。MP3播放器通过USB接口把FLASH存储器上的MP3或者WMA等格式的数字音乐文件送到单片机内部集成的解码单元进行解码,这些音乐文件经解码后成为数字信号,然后DA转换器CS4330通过D/A转换将数字音频信号转化为模拟音频信号,再通过功率放大器LM4880进行音频放大,最后通过耳机输出音乐。整个系统采用3V电源供电,系统电源可以取自USB接口,也可以来自干电池,所以系统电源由2部分组成:一部分通过降压芯片AS1117提供从USB接口的5V到3V的DC-DC降压转换,另一部分通过升压芯片MAX856提供从1.5V干电池到3V的DC-DC升压转换[2]。
AT89C51SND1C是Atmel公司专门针对MP3设计需求研发的一款多媒体8位微处理器,它具有C51内核,其主要特点是其内部嵌入一个MP3硬件解码器,支持48、44.1、32、24、22.05、16kHz采样频率,并且具有左右声道独立的音量控制和重低音、中音、高音均衡控制功能。另外,AT89C51SND1C内部有一个USB Rev1.1控制器,可以完成USB接口的数据通信。为了避免噪声对音频输出信号的影响,在AT89C51SND1C的正负电源间需要加上一个RC滤波电路以消除电路中的噪声,而且对于AVDD和UVDD的2个模拟电压和数字电源而言,两者需要在数字地和模拟地处单点通过一个磁珠相连,以免数字电源和模拟电源之间的影响[3]。
图1 MP3音乐播放器硬件电路图
电源电路部分包括升压芯片MAX856和降压芯片AS1117,由于AT89C51SND1C内部CPU的工作电压要求为3.3V,因此需要为MP3音乐播放器系统提供合适的工作电压,当电路由1.5V工作电压的5号电池供电时,通过升压芯片MAX856可以为系统提供3.3V稳定的电压;当电路由USB供电时,插入USB电缆,电路获得5V电压,再通过降压芯片AS1117后,可以将5V电压降为3.3V供系统使用。
采用三星公司的Nand Flash K9F2080作为系统的数据存储器,用来存储系统所需播放的音乐文件。主芯片AT89C51SND1C和Flash存储器间的通信与读取一般的存储器RAM、EEPROM等基本上是一致的,不同的是多了CLE和ALE这2个引脚,这是由Flash本身的特点所决定的。ALE和CLE的信号均为上升沿有效。WP引脚为写保护,用来保护当电源由于切换等造成不稳定的情况下丢失数据的情况。
音频部分是整个系统中最为重要的一部分,在数字信号转化为模拟信号的过程中,其容易产生噪声,这关系到MP3播放器声音效果的好坏,为此选择CS4330芯片,该芯片能兼容48、44.1和32kHz的音频流。声音数据通过串行输入引脚SDATA输入。左右输入时钟LRCK决定了左右声道,在串行输入时钟SCLK的驱动下数据被送入CS4330的数据缓存中,而主时钟决定了数据滤波器的使用。
USB接口部分一般通过PC的USB接口进行MP3文件的下载,传输速率为12Mbps。由于Atmel公司生产的AT89C51SND1C芯片仅支持USB1.1技术规范,因而接口速度稍慢。但对于MP3播放来说,已能够满足需要。
人机接口部分主要提供一个人和系统进行信息交换的接口,包括键盘输入、LED显示2个部分。键盘输入提供给用户选择功能的能力,包括向前、向后、播放、功能切换4种功能。LED显示播放器现在的工作状态,其中指示灯1和指示灯2为供电指示灯,当5~3V供电正常时,指示灯1亮;当1.5~3V供电正常时,指示灯2亮。指示灯3为U盘指示灯,当执行U盘功能时,无数据传输时灯亮,有数据传输时灯闪烁。指示灯4为MP3指示灯,当执行MP3功能时灯亮、播放时该灯闪烁。
MP3音乐播放器的软件设计按照模块,可以划分为以下几个部分:①MP3解码控制部分,该部分控制系统中间的MP3解码器把从Flash中取出来的MP3压缩数据流解码成音频数据流,提供给音频解码接口;②音频处理部分,该部分主要实现对音频驱动芯片进行配置以及控制,把解码后的数字信号转化为模拟声音并且驱动耳机;③FLASH存储与USB通信部分,该部分按照FAT文件格式对Flash芯片进行划分,对芯片的操作必须按照FAT格式进行;USB通信包括如何按照Windows 7中对USB移动硬盘的描述编写设备的固件程序,以便操作系统的运行;④人机接口部分,该部分由提供人机接口的键盘扫描驱动、LED显示驱动和数码管驱动等组成。
MCS-51内核和MP3的解码器接口是通过11个特殊功能寄存器来实现的,分别是MP3控制寄存器MP3CON、MP3解码状态寄存器MP3STA、MP3状态寄存器MP3STA1、MP3数据寄存器MP3DAT、MP3附加数据寄存器MP3ANC、MP3左声道控制寄存器MP3VOL、MP3右声道控制寄存器MP3VOR、MP3重音控制寄存器MP3BAS、MP3中音控制寄存器MP3MED、MP3高音控制寄存器 MP3TRE、MP3时钟寄存器MP3CLK。
对数据帧的处理过程可能产生层错误(layer error)、同步错误(sychronization error)和CRC错误(CRC error),每个错误将引起对应的中断,硬件将根据中断把相应寄存器中的数据位置位[4]。在 AT89C51SND1C中断过后,根据中断的不同,硬件将进入中断并且将相应数据位置位,这些标志位可向MCS-51内核申请中断,也可供内核查询。MP3解码控制程序流程图如图2所示。
图2 MP3解码控制程序流程图
音频部分是MP3音乐播放器的一个重要的组成部分,由于存在片上锁相环结构,AT89C51SND1C支持PCM和I2S2种音频结构,音频数据流可以来自MP3解码输出,也可以来自MCU直接音频输出,整个音频部分和MCS51内核也通过5个寄存器来进行数据和控制信息的交流,这5个寄存器分别是音频接口控制寄存器0(AUDCON0)、音频接口控制寄存器1(AUDCON1)、音频接口控制寄存器2(AUDSTA)、音频接口数据寄存器(AUDDAT)、音频时钟分频器(AUDCLK)。音频处理程序流程图如图3所示。
图3 音频处理程序流程图
在AT89C51SND1C单片机片内集成了一个USB控制器,支持USB1.1全速引擎,通过它可以方便地从PC机下载音乐文件到FLASH存储器中。FLASH存储功能是靠FLASH EEPROM芯片K9F2808实现的。对K9F2808的读操作流程图如图4所示。首先向K9F2808的命令端口写1个字节的命令字00h,接着向K9F2808的地址端口写入FLASH内部地址。由于K9F2808的存储容量是16MB,内部地址为24字节,因此要分3个字节写入,写入时第1个字节为A0-A7;第2个字节为A9-A16;第3个字节最高位为0,低7位为A17-A23。地址写入后就可以从K9F2808的数据端口读出Flash内部地址为A23-A0的存储单元对应的数据了。K9F2808的空闲区域可用来存放校验信息,如果希望使用校验信息来保证数据存放的可靠性,可以使用这一部分存储区域。
人机接口也称为输入/输出接口(I/O接口),是单片机和人机交互设备之间的交接界面,通过接口可以实现单片机与外设之间的信息交换。MP3音乐播放器中人机接口包括LED显示、键盘输入2个部分,LED主要用来指示MP3播放器当前的工作状态,包括电源供电、USB传输是否正常等部分;键盘输入提供给用户选择功能的能力,当执行MP3程序的时候,通过按键操作来控制MP3歌曲的播放,每个键对应一个键盘响应函数,这些函数分别是Func(功能切换)、Next(向后)、Previous(向前)、PlayPause(播放/暂停)。人机接口程序流程图如图5所示。
图4 K9F2808的读操作流程图
图5 人机接口程序流程图
为取得较好的音乐播放效果,采用基于AT89C51SND1C单片机设计MP3音乐播放器。由于宽带音频信号的取样率也较高(一般为44.1kHz以上),所以MP3编解码的运算量和数据量都相当庞大。设计的MP3音乐播放器系统既具有播放歌曲的功能又具有U盘功能,2种功能的转换用USB接口检测电路来控制。当MP3播放器上的USB设备插入PC机上的USB接口进行文件下载时执行U盘功能,否则程序运行执行MP3功能。此外,MPEG LayerⅢ解码算法在AT89C51SND1C上验证通过并获得较好的效果,通过优化后可流畅播放音乐。
[1]徐爱钧.单片机原理实用教程——基于Proteus虚拟仿真[M].北京:电子工业出版社,2011.
[2]博创科技.MP3播放器与U盘设计[M].北京:清华大学出版社,2004.
[3]熊开胜,董兆鑫.基于DSP技术的MP3播放器的硬件设计[J].现代电子技术,2007,30(12):164~166.
[4]黄勇坚,王亚丽.智能MP3播放控制系统的设计[J].电子技术,2006(10):36~38.