随着人们对便携式音乐播放器要求的提高,MP3播放器以其较小的体积和较好的音质赢得了广大音乐爱好者的青睐。起初,MP3文件只能由电脑来播放,随着互联网的发展,促进了MP3播放器的产生,随着人们对MP3产品进一步的认识和更高层次的需求,MP3发生了一系列的变化,其更加小巧精致,更人机化和情趣化,个性区分也越来越强。还出现了功能的融人和产品的整合,总之,MP3播放器正朝着功能强大、外观丰富、价格便宜的方向发展。这里提出一种基于AT89C51SND1C的MP3播放器设计方案。
1 MP3播放器简介
MP3播放器是一种新兴的数字音乐播放器,播放MP3、WMA等格式的文件。通过用MPEG-1 Layer 3编码技术,可以得到大约12:1压缩的有损音乐信号。尽管MP3音乐是有损的,它在压缩过程中对功率谱较弱的信号有所丢失,但它同CD原声区别不大,不影响一般音乐爱好者对音乐的欣赏。MP3大大缩小了声音文件的长度,使音乐的存储和传输更方便。
1.1 结构
MP3播放器一般分成3个部分:CPU、MP3硬件解码器存储器。其中可以将前两部分集成在一起,即带MP3硬件解码器的CPU;或将后两部分集成在一起,即集成硬件解码、D/A转换及音频输入。存储器可以是Flash存储器或硬盘。综合考虑元器件性价比等各方面的因素,选定方案为:1)CPU+MP3解码器+USB控制器:AT89C51SND1C;2)D/A转换器:CS4330;3)音频放大器:任意双路运算放大器即可;4)存储器:K9F120 8;5)串口调试选用串口电平转换器:MAX3232;6)MP3屏幕显示器:LCD1602。
1.2 功能
在该硬件系统设计中,采用美国Atmel公司生产的AT89C51SND1C作为主控MCU,可以实现如下功能:1)能对MP3或WMA格式的文件进行解码播放;2)可以进行模拟音量,音效调节,声道选择,音量的范围:+18~+75 dB,最小为静音;3)可对歌曲进行选择,具有进、退、快进、快退功能及指定播放第几首歌曲的功能;4)通过USB接口,可直接从PC机上高速下载音乐,应用标准语音编码格式压缩和存储数据。
2 MP3播放器工作原理
MP3播放器的基本工作原理如图1所示。通过USB接口把Flash存储器上的MP3或者WMA等格式的数字音乐文件,送到主芯片内部集成的解码芯片进行解码,这些音乐文件经过解码后解码为数字信号,然后通过A/D转换将数字信号转换为模拟音频信号,再通过功率放大器进行音频放大,最后通过耳机输出。本系统的一般工作过程如下:当用户要求播放MP3音乐时,如果在该系统Flash存储器里没有歌曲,可以通过USB接口连接PC机来下载音乐文件到存储芯片中;若该系统中已存有MP3歌曲,用户可根据显示屏上的文件名选择或者顺序选择MP3文件,选择文件后主芯片将所选的音频文件从Flash闪存中读到主芯片集成的MP3解码器解码后变成数字信号,该信号按照用户设定的外部D/A转换器格式通过音频接口输出的外部A/D转换器,外部A/D转换器将数字信号转换为人耳可接受的模拟信号并且通过功率放大器放大后送到耳机。在播放过程中可以进行音量的增减等的选择和控制。
3 MP3播放器的设计
3.1 硬件设计
该设计方案可以方便地将外部的MP3格式的音乐文件传输到本系统的存储器Flash中。由图2硬件连接框图可以看出本系统的具体硬件设计主要包括:1)主芯片AT89C51SND1C和存储器K9F1208之间的连接设计,包括片选信号,读写信号以及AD信号的连接;2)主芯片和USB接口的连接设计,此部分主要用于MP3文件的传输和固件下载;3)主芯片和按键以及LCD之间的设计连接,用户通过显示屏幕获取播放器的进程信息,通过按键来对音乐进行选择和控制;4)主芯片和D/A转换器之间,这一系统将该系统解码后的数字信号转换为人耳能识别的模拟信号,这一部分主要包括时钟信号、数据信号以及反馈信号的连接;5)电源转换部分,本系统内部使用的电源一般为3.3 V,而USB接口以及电池的电源都需要DC-DC部分来进行转换,从而为系统提供所需的3.3 V电源;6)播放系统和存储系统的切换电路设计。
3.1.1 主电路设计
系统的主芯片采用美国ATMEL公司的AT89C51SND1C,该芯片是一个2.5~3.3 V低电压、80 mW低功耗、运算速度高、功能完善、高度集成并且低成本的单芯片数字(MPEG1,2,2.5&3)音频解码器。其特点如下:1)基于8位C51MCU核(最大时钟频率20 MHz);2)内部集成了单独的
MP3解码器,而且支持48,44.1,32,24,22.05,16 kHz采样频率,支持左右声道独立的音量控制(软件使用31级)、重低音、中音、高音均衡控制(31级)、重低环绕声效果、辅助数据输出、“CRC错误”和“MPEG帧同步”指示;3)有44通用I/O口的嵌入式C51 Nand Flash,SSF-DC,I2S,SPI和IDE多种扩展功能接口容易适应多种应用场合Flash/CD/HDD播放器等;4)具有适应市场上不同的D/A转换器的可编程的音频输出接口,兼容PCM格式和I2S格式;5)内置2 304 B RAM;6)64KB Flash程序空间和4 KB引导闪存(AT89C51SND1),在系统编程:通过USB,UART接口进行在系统编程;7)USB1.1控制器,“Full speed”数据传输;8)内置锁相环,提供MP3音频时钟和USB时钟;9)兼容MultiMedia Card(MMC)卡接口、Atmel Data Flash SPI接口、IDE/ATAPI(硬盘)接口;10)通道10位A/D转换器,8 kHz(8位真有效值),包括电池电压监视和软监控的录音;11)两个标准的16位的定时/计数器、硬件看门狗、带有波特率发生器的标准通用异步串口、主从I2C控制器、主从SPI控制器;12)电源管理模块。包括上电复位、软件可编程MCU时钟和空闲、掉电模式。
AT89C51SND1C内部结构简化后实际就是64K80C51+MP3解码器+USB,使用该芯片设计MP3播放系统具有很多优点,如支持在系统编程不需要昂贵的仿真器,系统设计成本降低;内置2 304 B的RAM,方便用户增加复杂的功能。此外,由于该芯片内部集成了大量的接口,所以只需要很少的外围器件如DC-DC,音频D/A转换器和存储器就可以实现系统的要求,这样可以做到系统空间很小,这一点正好适应现代系统设计的纤小而功能全面的要求。
3.1.2 存储部分
采用三星公司的Nand Flash K9F1208作为系统的数据存储器,用来存储本系统所需播放的音乐文件。主芯片AT89C51SND1C和Flash存储器间的通信跟读取一般的存储器RAM、EEPROM等基本上是一致,不同的就是多了CLE和ALE这2个引脚,这是由Flash本身的特点所决定的。主芯片通过读取R/B这个引脚来判断Flash读写是否完成的,如果正在读写那么这个引脚就为低电平表示正忙,如果读写完成,该引脚电平变高,处于READY(准备)状态,等待下次操作。ALE和CLE这两个信号均为上升沿有效。WP引脚为写保护,用来保护当电源由于切换等造成不稳定的情况下丢失数据的情况。
3.1.3 接口部分
AT89C51SND1C内嵌了USB1.1控制器,这样便于与外部PC机的连接。AT89C51SND1C有特定的引脚来检验USB接口是否接入USB主机设备,当电平由低变高,表示已接入USB主机,系统进入U盘功能。该控制器支持全速数据传输,所需的48 MHz的参考时钟是由PLL锁相环提供给控制器的。控制器内部通过数字锁相环DPLL生成控制器内部所需的12 MHz的时钟。如图3所示,USB接口电路中除了根据USB协议的要求,要在D+、D-上串联20 Ω电阻,并在D+上接一个1.5 KΩ的上拉电阻,还增加了一个USB插入的检测电路以及USB工作指示灯。USB插入检测电路由一个电阻分压组成。当USB插入PC上的USB接口时,USB_Insert信号会输出高电平到P3.4,此引脚检测到此信号后,便会执行U盘功能;否则,程序运行时会执行MP3功能。P3.5输入低电平时,VD1会点亮,这个二极管用于表示USB的数据交换状态,当USB的端点有数据交换时,此灯会闪烁。
3.1.4 D/A转换部分
当MP3或者WMA等格式的音乐文件经过主芯片内部解码后为数字信号,而人耳所能识别的信号却为模拟信号,系统利用CS4330进行转换。AT89C51SND1C从Flash中读取数据之后,将MP3格式的音乐在其内部进行硬件解码为二进制数据,之后通过D/A转换器CS4330来对这些数据进行数模转换,转换成人耳可以接受的音乐。主芯片AT89C51SND1C内部有一个音频输出接口,支持不同格式的音频数据流格式,如PCM格式和I2S格式,该接口可以跟几乎所有的通用音频D/A转换器相连。CS4330在改善音频质量,降低信噪比等方面都很好。同时AT89C51SND1C内部集成了MP3硬件解码器,系统不需要外接额外的解码器。解码后的数字信号经过D/A转换后还原为模拟音频信号。
3.1.5 控制部分
播控系统的设置通过按键来选择,AT89C51SND1C提供4个按键输入口,连接USB前,短接了DFU跳线,运行Boot Loader,进入到固件下载;接到USB前,按下了FORMAT,则格式化U盘;连接到USB,不按任何键,则进入U盘功能。使用电池供电时,不按任何键,则进入MP3模式。MP3键盘由4个键组成,分别为Play/Pause键、Preview键、Next键和Func键:Func,功能切换;Next,向后;Previous,向前;Pla-y/Pause,播放/暂停。用户在使用播放器时可以方便地根据自己的喜好来选择歌曲播放或暂停。操作状态和设置信息通过LCD1602来显示。LCD采用液晶显示模块,可显示汉字及图形。液晶显示具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,正好适应MP3播放器的需求。
3.2 系统软件设计
MP3播放器的软件设计由2大部分组成:MP3播放功能模块和USB通信功能模块。
3.2.1 MP3播放程序设计
MP3播放程序设计要与键盘配合起来使用。在主程序中,如果已经处于播放状态,则调用Play MP3程序播放歌曲,直至播放到最后一首。在Play MP3程序里面,MP3解码器一旦开始工作以后,就会一直向CPU请求数据,直至歌曲结束。如果用户想切换歌曲,则可直接按暂停键,这样此程序函数将会提前结束,进入下一首歌曲的播放。其播放流程如图4所示。
3.2.2 USB通信功能程序设计
USB通信功能模块用于对Flash存储器内的文件进行管理,实现MP3文件的下载,由于AT89C51SND1C没有外部中断引脚,USB中断没有中断向量地址入口,USB驱动程序采用中断查询工作方式。其流程如图5所示,在USB控制器使用前,首先对其进行初始化,然后在主程序中循环读取USB端点中断寄存器,当查询到有中断产生时则进入到相应的中断处理程序,开始设备配置和数据传输。
4 结束语
本文提出基于AT89C51SND1C单片机的MP3播放器的设计方法,此MP3播放器系统既有播放歌曲的功能又有U盘功能。两种功能的转换用USB接口检测电路来控制。当MP3播放器上的USB设备插入PC机上的USB接口进行文件下载时执行U盘功能,否则程序运行执行MP3功能。此设计低功耗,易扩展,性价比高,与同类产品相比,有很强的市场竞争能力和实用价值。