基于MP3播放器的设计毕业设计.docx
《基于MP3播放器的设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于MP3播放器的设计毕业设计.docx(98页珍藏版)》请在冰豆网上搜索。
基于MP3播放器的设计毕业设计
梧州学院
毕业论文
论文题目基于…………..的设计
系别信息与电子工程学院
专业电子科学与技术
班级10电子科学与技术班
学号
学生
指导教师(签名)
完成时间2015年5月
摘要
随着电子技术的发展,MP3播放器已是目前市场上最流行的消费类数码产品之一,因其具有大容量、高音质、小巧便携等特点而倍受广大消费者的青睐。
而对于单片机编写的MP3播放器具有执行效率高、频率输出稳定、易于修改、高可靠性、高性价比、低电压、低功耗等优点,使单片机近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、数据采集系统、智能化仪器仪表及通讯设备、日常消费类产品、玩具等领域。
本设计主要利用ATmega128作为系统的中央处理器,采用VS1003B解码芯片作为音乐播放器的解码芯片,SD卡作为系统的存储器,CH375芯片作为读取外部U盘数据的驱动芯片。
通过ATmega128读取SD卡或者读取经CH375芯片传送的音频数据,再送入VS1003B解码芯片实现特定格式的音频解码,并通过耳机或者有源音响输出。
关键词:
Atmega128;MP3播放器;SD卡;CH375;VS1003B;
BasedonthedesignofATmega128musicplayer
Abstract
Withthedevelopmentofelectronictechnology,MP3playersonthemarkettodayisoneofthemostpopularconsumerdigitalproducts,becauseofitslargecapacity,favorofconsumers.Forthepreparationofsingle-chipMP3playerwith,etc.,sothatthemicrocontrollerinrecentyearstherapiddevelopmentandlarge-scalepromotion,widelyusedinindustrialcontrolsystems,dataacquisitionsystems,inligentinstrumentationandcommunicationsequipment,everydayconsumerproducts,toys,andotherfields.
ThemainadvantageofthisdesignATmega128asthecentralprocessorsystem,usingVS1003Bdecoderchipasthemusicplayerdecoderchip,SDcardasamemorysystem,CH375chipasUdiskreadexternaldatadriverchip.ATmega128SDcardorbyreadingthroughtheCH375chipreadsaudiodatatransmission,andthenintoVS1003Baudiodecoderchipdecodeaspecificformat,andthroughMPmanF10诞生,重65克。
但是当时的MP3存在信噪比太低、并口数据传输速度慢等缺点。
2000年,由于受到突飞猛进的USB技术影响,MP3播放器开始使用了USB接口的设计。
2000年中,创新发布了世界上第一台2.5寸硬盘MP3播放器——NOMADJukebox,这款音乐播放器的外形就像一个标准大小的CD播放器。
USB接口可以提供连接速度高达12Mbps,这种速度与并口速度相比提高幅度在10倍以上,运用这种速度下歌曲文件传输时间可以缩减为3秒,若要进行64MB大小容量的文件传送也不需要1分钟。
USB2.0标准进一步将接口速度提升到480Mbps,是普通USB速度的20倍,更大幅度地降低了MP3音乐文件的传输时间[3]。
后来使用整合式USB接口使数据传输更加方便。
伴随着“无驱动”闪存盘的技术实现,在Windows2000以上的操作系统中免去了安装驱动程序的麻烦。
直接带USB接口的MP3操作起来更加方便,但此时的MP3外形不够美观。
为了解决外观不美观的问题,MP3采用了伸缩式USB接口,可以提供高速传输,还可以即插即用。
随后又发展成为无线的数据传输方式的MP3。
如今,技术仍在不断地发展,MP3技术已经相当的成熟,甚至发展成为MP4、MP5。
但是MP3的技术却仍在广泛被应用,MP3播放器已经占据广大市场。
现在的MP3播放器具有大容量、高音质、小巧便携等优点,深受广大消费者的青睐,广泛被应用于汽车、手机等领域,已在生活中占据重要地位。
第二章系统概述
2.1系统设计总方案选择
系统初步设计图如图2-1所示
图2-1系统初步设计图
2.2系统可行设计方案对比选择
根据设计要求,结合实际情况和成本要求,对系统主要部分电路方案叙述如下。
2.2.1MCU微控制器可供选择方案对比
方案一:
采用ATMEL公司生产的AT89SXX系列单片机。
如采用初学者广泛使用的AT89S52单片机,它内部具有低损耗、高性能的CMOS微处理器,片内也具有8K字节的储存空间、4个8位的并口、1个全双工的串行口、128字节的RAM、2个16位定时计数器,其寻址范围也有64K,这些特点能满足简单的设计需要,但如果用这款单片机来设计MP3那最好要外接一个储存芯片,否则对数据的缓冲、处理速度跟不上,容易造成卡机现象。
方案二:
采用ATMEL公司生产的AVR系列单片机,它相对与AT89SXX系列单片机在功能特点上得到更大的改进,除了在体积、集成度、可靠性,扩展性上具有优势,而且其处理数据速度和功能得到了提升,是一种RISC精简指令集高速8位的单片机。
特别是ATMEL32、ATMEL64、ATMEL128的片内储存空间均在8K以上,尽量满足了MP3不卡机的条件之一。
而且如今其市场价格与89SXX系列也相差不远,运行速度更快。
综上所述,为了能更好地处理数据,得到流畅的播放效果,应考虑MCU数据处理能力,选择方案二中ATMEL公司的Atmega128单片机作为微处理控制器,它远远能满足MP3的数据解码速度要求。
2.2.2MP3解码方案对比选择
方案一:
直接用软件解码。
虽在硬件方面降低了成本,但其软件方面比较复杂,编程难度较高,工作量极大,而且对控制器的处理速度和资源要求也较高。
方案二:
直接用音频解码芯片解码。
使用高性能的VS1003MP3解码芯片,功能不仅强大而且价格也相当便宜,VS1003支持MP3、WAV、WMA、MIDI等诸多音频格式,音质可与市场上中档MP3播放器相媲美。
基于上述比较,故选择方案二;
2.2.3显示模块方案
方案一:
采用LCD1602液晶,完成数据显示。
LCD1602液晶驱动电路相当简单,它可以显示简单的中英文字符、图案,并且功能和设计的成本都比较低。
方案二:
采用LCD12864液晶,它不仅可以显示中英文字符,也可以显示图案。
但其图案分辨率很低,而且只能显示单色字符,在价格方面也不算很便宜。
方案三:
采用TFT液晶模块,它既可以显示彩色数字、中英文字符和图案,还可以加上触摸屏,实现GUI用户图形交互实时控制,但其模块价格较贵,并且设计要求并不需要使用触摸等功能。
方案四:
采用诺基亚5110液晶模块,它采用的是串行通信协议进行通信,传输速度快,耗能低,接口信号线数量少,能显示英文、数字还有图案,并且市场价格最便宜。
基于价格便宜,并且结合本系统设计需要,故选择方案四。
2.3系统设计硬件组成
本系统是基于Atmega128单片机所设计的MP3播放器,音频文件存储在SD卡上,通过文件系统的读取SD扇区或将音频存在U盘等USB外设储存器上,通过CH375驱动芯片读取外设储存器,由Atmega128单片机读取数据并送到VS1003B音频解码模块解码输出,同时还可以通过按键来选择实现歌曲切换,暂停播放和音量调整等功能。
本系统设计主要由以下模块组成:
单片机最小系统、诺基亚5110液晶显示、VS1003音频解码模块、SD卡读取模块、USB外设读取模块和电源模块以及功能按键。
系统框图如图2-2所示。
图2-2系统组成框图
2.4系统设计的功能介绍及操作说明
本系统设计的特点和可实现的功能及具体的操作说明如下:
本系统的特点是:
所用芯片少,设计简单,但是功能强大,与市场上的MP3播放器相比,本设计不仅具有其最基本的优点外,还在储存容量上得到了突破。
不仅能在SD卡上实现音频数据的读取还可以高速读取外部的USB储存设备,如U盘,硬盘等。
真正达到了成本低,音效好的特点。
对于功能的实现,本设计能实现对SD卡及U盘的高速读取,同时可在诺基亚5110液晶上显示歌曲进程、歌曲名及音频频谱。
需对SD卡数据存储结构及VS1003解码电路进行深入的了解。
在操作上,应用了简单的功能按键,控制音乐的播放、暂停、上下曲切换、音量调节等操作在显示液晶上清楚可见。
第三章硬件组成及设计
硬件设计包括整个系统的电路图,主要由单片机最小系统、VS1003解码模块、外部音频存储模块、诺基亚5110液晶显示模块、电源电路模块、MP3功能按键电路等组成,本章根据系统设计结构图来对每个部分的电路进行分析和说明,重点讲述MCU微控制器Atmega128、SD卡模块电路、VS1003B音频解码模块电路、CH375驱动外设模块电路、功能按键并且涉及到的一些芯片详细资料。
下面将整个音乐播放器的设计对各模块组成分别做个介绍。
3.1主控系统模块设计电路图
本模块设计包含了以下部分:
MCU微机处理器、复位电路、外围模块接口、程序下载口、功能按键等。
整个电路图设计相对而言比较简单,尽量地减少元器件,简化元器件布局,达到合理布局的目的。
对本模块各电路进行方案对比以及元器件价格比较,最终电源部分选用了AMS1117转换电压芯片,可将外部电压转换成MCU所需的电压,电路简单,效率高。
对于MCU的选择,考虑到效率问题,最终也选定了Atmega128作为主控芯片,它的外围电路简单,满足本设计的需要。
而显示部分也采用了诺基亚5110液晶模块,它具有既能显示英文和特殊符号还能显示中文,显示界面友好,控制简单,工作稳定,价格便宜,占用IO口少等优点,容易实现歌曲名的显示和歌曲进程的操作。
本模块设计电路图如3-1所示,系统使用内部8M晶振,下载熔丝位为E491FF不兼容103模式。
.
图3-1主控系统模块设计电路图
以下将介绍本模块的主要电路及芯片。
3.1.1供电电源电路
本电路是直接利用外部电源适配器进行接电,这样得到的电流和电压都比较稳定,然后利用ASM1117线性稳压芯片,将电源电压转换成稳定的,少纹波的5V、3.3V电压,为了能控制整个电路的电源供电,在适当处添加了一个六角开关,目的是截取适配器供电。
当然本电路供电方式不唯一,在没有电源适配器的条件下也可以使用下载器供电,简单又实用。
供电电源电路如图3-2所示
图3-2供电电源电路
3.1.2MCU微控制器
Atmega128的引脚图如3-3图所示。
它为64脚的贴片式芯片,本设计利用它为核心控制元件,只有它能正常工作后才能使其他的元件进入正常工作状态。
因此,下面对该芯片进行必要的说明。
图3-3图Atmega128的引脚
Atmega128芯片是一种高性能、低功耗8位的AVR微处理器,片内具有128K字节的系统可编程Flash,可解决卡机问题,能及时处理传送的数据。
具有4K字节的EEPROM,可以对一些操作数据进行存储,方便断电重启后,能对上一次的数据进行再现。
具有独立片内振荡器的可编程看门狗定时器,可解决一些程序跑飞的情况。
有53个可编程IO口,可方便外挂其他器件,具有可工作于从机主机模式的SPI串行接口。
本设计主要用到SPI模式,需对SPI管脚及其寄存器加以重视。
串行外设接口SPI允许ATmega128和外设之间进行高速的同步数据传输,接口管脚为PB1(SCK)、PB2(MOSI)、PB3(MISO)。
SPI串口方式特点有:
全双工,3线同步数据传输;主机或从机操作LSB首先发送或MSB首先发送;具有传输结束中断写碰撞标志检测;可以从闲置模式唤醒;可作为主机时具有双速模式(CK2)。
以上是本设计需要重视的主芯片特点。
3.1.3功能按键电路
功能按键电路在系统中起到手动切换播放模式及声音大小的调整。
考虑到本设计中需要的按键操作并不多,单片机的IO口完全可以满足,所以选择了独立式键盘设计,如图3-4所示,按键以低电平有效。
在硬件方面注意手动消抖,在软件方面,也应考虑按键消抖情况。
如图3-4所示,共有五个按键,分别实现歌曲的播放、暂停、上下曲切换、声音加减功能。
图3-4功能按键
3.2VS1003音频解码模块
VS1003B是芬兰VLSI公司生产一种VSXX系列的芯片,是一种单芯片MP3WMA音频解码器。
它拥有一个高性能,低功耗DSP处理器核VS_DSP4,5KB的指令RAM和0.5KB的数据RAM。
串行控制和数据接口,4个常规的IO口,一个UART,一个高品质可变采样率的ADC和立体声DAC、一个耳机放大器和地线缓冲器。
VS1003B解码模块对单片机从SD卡或者U盘中读取的数据流进行解析,并转换成模拟信号输出,同时能实现高低音控制和立体声数模转换,可直接驱动耳机。
本设计需将系统5V电源通过ASM1117-3.3、ASM1117-2.5转化成VS1003所需的3.3V、2.5V电压,并通过3.3UH的电感进行数字电压、模拟电压、以及IO口电压进行区分,单独供电,降低对解码信号的影响。
VS1003B封装图如3-5所示。
图3-5VS1003封装图
该芯片的主要管脚介绍:
1脚MICP:
同向差分话筒输入;2脚MICN:
同向差分话筒输出;3脚XRESET:
复位;8脚DREQ:
数据请求;13脚XDCS:
命令片选;23脚XCS:
命令片选;28脚SCLK:
串行时钟;29脚SI:
串行输入;30脚SO:
串行输出;42脚GBUF:
公共地缓冲器;44脚RCAP:
基准滤波电容。
3.2.1VS1003解码模块电路图
图3-6VS1003解码模块电路图
3.3SD卡模块电路及非正常播放的的解决办法
对于本模块电路设计,首要应该考虑电源电压和电流的要求,防止电压电流超过SD卡承受范围,进行烧卡,系统中供电电压一般为3.3V。
驱动SD卡的模式分为SD总线模式和SPI总线模式。
采用四根数据线并行传输数据,数据传输速率高的模式为SD卡总线模式,这种总线的传输协议并不简单,而且很多单片机都没有提供这样的总线接口,而且若用软件来模拟SD卡总线却又相当的繁琐,并且还会降低SD卡的数据传输速率;如果用SPI总线模式去驱动SD卡,那么就只需用到一根数据传输线,此时数据传输速率虽较低,可在很多单片机上都具有SPI总线接口,若用软件来模拟也十分的容易,其总线模式的传输协议十分简单,易于实现。
因此,本模块设计根据协议的简单性和实际需要则采用了SPI总线模式。
SPI总线模式的数据传输则以字节为单位进行,每个字节则为8位,每个命令或者数据模块都需以字节来对齐。
单片机对SD卡的读操作主要由主机控制,主机必须先拉低SD卡的片选信号CS,选中SD卡器件,然后再由主机向SD卡发送各种命令,SD卡对主机发送的任何命令进行响应,根据命令的不同执行不同的响应格式;在执行写操作时,SD卡还要对主机发送的每个数据模块进行响应。
通过执行命令和作出相对应的命令响应,完成单片机对SD卡的读写操作。
3.3.1调试中一些SD卡不能正常播放的解决办法
如果在软件方面只编写了FAT16文件系统,则不支持大于2G的盘,由此带来了两个问题。
若大于2G的盘,格式化的时候只能选择FAT32,FAT16的盘是不能正常播放的。
若小于2G的盘,请先使用软件USBOOT把SD卡工作模式更改为FDD模式,更改后即可正常播放。
3.3.2SD卡读写模块图(如图3-7所示)
图:
3-7SD卡读写模块图
3.4U盘通信读写模块
本模块设计是利用CH375芯片对外部的U盘内数据进行驱动读取。
CH375是一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICESLAVE设备方式[4]。
CH375是一个28脚的贴片式芯片,它具有串并行通信方式,可以通过读控制线、写控制线、片选控制线、中断输出线及8位数据总线,可非常方便地与单片机等控制器总线相连,实现并行传输。
当然还可以选择串行通信,通过串行输入线、输出线和中断输出线与单片机等实现数据传输。
CH375本身还内置了大量专用通信协议的固件,外部单片机可以直接通过调用其固件实现对常用的USB储存设备以扇区为单位的读写操作。
在本设计过程中用ASM1117-3.3芯片降压到所需的3.3V电压,并且还在并行串行的方式上预留了接口,即通过此接口可以选择串行和并行接口方式。
(注意:
CH375运用的是12M晶振,22PF瓷片电容组成的振荡电路)
3.4.1U盘通信电路图(如图3-8所示)
图:
3-8U盘读写模块图
3.4.2U盘工作原理
当CH375工作方式在主机方式时,单片机通过RD、WR、片选CS、中断INT#和地线A0进行控制,实现与CH375通讯。
当有U盘插入时CH375产生中断来告诉单片机,单片机每次得到CH375的中断后,都要用“获取状态码”来取消这个中断,让INT#恢复到高电平,为下次中断做准备。
要是U盘连接错误,那么就会返回状态码,若获取状态码GET_STATUS,那么表示U盘已经连接成功。
接下来就是磁盘的初始化DISK_INIT,同样也是等待中断,获取状态码,若获取USB_INT_SUCCE,则成功,否则返回状态码,此时初始化U盘成功,返回标志0。
当CS、RD和A0都为低电平时CH375的数据可以通过D0~D7输出;当CS、WR和A0都为低电平时,D0~D7上的数据被写入CH375芯片中;当CS和WR都为低电平,A0为高电平时,D0~D7中的数据可以作为命令码写入CH375中,这样就实现了CH375对U盘的读写[5]。
其过程为:
在CH375对U盘进行读写扇区时,首先送入磁盘读取命令DIST_READ,然后送入32位的扇区地址,从低字节开始送入,接着送入要读取的扇区数,当我们只读取一个扇区时,我们就只送一个入一个1,往下是等待中断读取状态,送入读数据命令再读数据(注:
数据的第一个字节是后面数据的长度,紧接着的才是真正的数据),写入继续读数据命令,等待中断获取状态USB_INT_SUCCESS,最后读取扇区成功。
补充:
CH375的数据缓冲区仅为64个字节,读取一个扇区(512字节)要读8次,每读完一次要从CH375中送入继续读取的命令,等待CH375的数据缓冲区更新为下面的64个字节后,再次等待中断,读取状态。
写入8次以后,512个字节被写入到了CH375中,最后一次继续写命令DISK_WR_GO,获得的状态码不再是USB_INT_DISK_WRITE。
3.4.3U盘模块部分容易造成影响的一些问题
在PCB设计中,应注意一些细节以防对设计造成不必要的影响。
例如注意振荡电路晶体的外壳接地,这样可以降低电磁辐射,减少外来干扰,并且振荡电路的电容应尽量靠近CH375,PCB的走线应该尽量短,最好可以在周边环绕接地或者敷铜。
对于USB数据线D+和D-的PCB应该平行布线,长度保持差不多[6]。
3.5诺基亚5110液晶模块
本设计采用诺基亚5110液晶显示,它不仅兼容了诺基亚3310液晶,而且在操作上也非常的简单。
它原本就是一个LCD点阵屏,可以显示4行汉字,与主机通过串口模式相接。
当然可以用主机的SPI模式,也可以简单地模拟SPI模式,这对于很多单片机来说都是可以做到的。
它的传输速率是1602液晶的四倍,在价格上也比较便宜,来源也很多。
对本设计的需求已经远远可以满足。
设计中模块接口如图3-9所示。
图3-9诺基亚5110液晶接口图
第四章软件设计
4.1开发工具介绍
本设计除了硬件方面的重要性,同时也应该注重软件。
一个单片机的使用不仅仅只有硬件,同时也应该有软件的支持,硬软结合才能发挥其更加强大的作用,在写汇编程序CPU可执行的机器码可分为手工汇编和机器汇编这两种方法。
利用汇编软件变为机器码的方式是机器汇编,在单片机的汇编软件历史上出现较早的有A51,但随着技术的发展,单片机开发技术也越来越成熟,汇编方式也从汇编语言变成了高级语言,ICCAVR这款AVR系列单片机软件已经成为了目前最流行的开发软件。
ImageCraft的ICCAVR是一个应用到了ANSI标准的C语言来开发微控制器(MCU)程序的工具。
ICCAVR是一个综合了编辑器和工程构建同体的软件。
在ICCAVR编辑器的状态窗口中可以很清楚地把编译出现的错误显示出来,当用鼠标单击编译出现的错误时,光标就会自动跳转到编辑窗口中引起错误的那一行,这样就省去了烦杂的查错工作[7]。
在编译程序通过时,还可以直接产生被大多数编程器所支持INTHEX格式文件,用于下载程序到芯片中。
对于ICCAVR软件,在编写程序的时候要注意各个中断函数的书写,还要注意管脚的使用,对包含的头文件也应该具有一定的了解。
4.2主程序流程图
主程序主要完成系统的初始化、对SD卡或者U盘数据的识别和读取,音频的解码,还有液晶的显示、按键的操作等,其主程序流程图如图4-1所示。
图4-1主程序流程图
各模块初始化后,单片机识别USD卡,再根据USD卡的主引导,通过FAT文件系统解析文件名,并调用UNICODE字库把文件名显示在诺基亚5110液晶上,然后单片机计算簇所在的地址,把读到的文件数据流送入到VS1003中进行解码,当读完一簇后,则计算下一次地址,如此便实现文件的链接。
4.3SD卡的读流程图
图4-2SD读流程图
SD卡读流程中,设置SPI低速模式,把CS设为低电平,即选择SD操作,然后发送至少74个时钟周期,发送CMD0指令,让SD卡复位,然后延时稍许,如果检测到0X01则发送CMD1初始化成功,否则不成功,在初始化成功后再发送8个脉冲,读取OCR寄存器把时钟送入SPI高速,再关掉校验,再发送CMD16就可以读取扇区的大小。
4.4SD卡文件系统的结构分析
SD卡内的数据要在操作系统下被识别,则需要在SD卡上创建操作系统所能识别的FAT16FAT32文件系统。
FAT16FAT32文件系统的结构大致可分为分区引导记录、文件分配表、文件目录表和数据区4大部分[8]。
在分区引导记录中又可分为BIOS参数记录块BPB(BIPSParameterBlock)、磁盘标志记录表、分区引导记录代码区和结束标志55AA这四块内容。
而在BPB表中其起始点是在扇区字节位移0bH处,这段总共占了25字节。
紧跟在分区引导记录后的是FAT(文件分配表)区,在一些文件系统中存在这样两份完全相同的文件分配表FAT1和FAT2,如FAT16FAT32文件系统就具有这样相同的两个文件分配表,并且每一份FAT表所占用空间的大小都可从BPB表中查询得到。
簇是一种文件存储在磁盘上的最小单位,为了防止一个文件的数据并不能完整放在磁盘的一个连续区域内的情况发生,因此一般将磁盘分为若干簇。
在文件的链式存储中通过FAT表记录文件存储中簇与簇之间的连接信息,这样就可以快速地查找文