毕业设计(论文)-基于单片机的MP3音乐播放器设计.doc_第1页
毕业设计(论文)-基于单片机的MP3音乐播放器设计.doc_第2页
毕业设计(论文)-基于单片机的MP3音乐播放器设计.doc_第3页
毕业设计(论文)-基于单片机的MP3音乐播放器设计.doc_第4页
毕业设计(论文)-基于单片机的MP3音乐播放器设计.doc_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的音乐存储播放器设计摘 要随着科学技术的发展,带数字语音功能的数码终端类产品在日常生活中得到了广泛的使用。这也促进了与该功能相关的数字音频压缩技术的发展,在数字音频压缩技术中,MP3技术以其优异的性能得到了广泛的使用。本次设计主要针对市场上MP3的容量及播放格式有限等问题加以设计,可方便进行SD或MMC卡等微型存储器的容量扩展,并且播放MP3、WMA、WAV、MIDI等格式文件。使用者只需要将MP3等格式文件放到存储卡中,便可以播放这些音乐。本设计可以作为车载音响,也可以用于家用播放、办公场合或便携设备等。关键词:MP3播放起 SD卡 1 绪 论 1.1 研究背景MP3播放器,顾名思义也就是可播放MP3格式的音乐播放工具。MP3是MPEG Audio Layer 3的简称,MPEG压缩格式是由运动图像专家组(Motion Picture Experts Group)制定的关于影像和声音的一组标准,其中MP3就是为了压缩声音信号而设计的是一种新的音频信号压缩格式标准。随着社会经济的发展,在信息家电和行业应用手持信息设备等信息终端类产品中,具备MP3功能已成为此类产品的发展趋势之一。如我们常见的智能手机、电子词典、PDA一般都具有MP3的功能实现。网络数字音乐的风潮是由MP3所引起的,它是MPEGLayer3的缩写,狭隘的讲就是以MPEG Layer 3标准压缩编码的一种音频文件格式。MP3本身是一种压缩与解压缩的计算方式,用来处理高压缩比的声音信息。而且在低码率条件下基本能达到CD的音效效果,使人耳听起来,感受到的音乐效果却没有什么不同,而文件大小却只有其十二分之一。因此原本一张光盘只能存储约12-20首的CD格式音乐,若存成MP3格式,则约克储存将近100首。自韩国世韩(Seahan)公司1998年推出世界上第一台MP3随身听以来,MP3播放器以其小巧的外形、不错的近乎于CD的音质、前卫的功能,越来越受到消费者的青睐,也成为业界甚至大众媒体关注的一个热门话题。由于MP3是数字化的音乐,MP3随身的听不仅可以上传下载MP3格式的文件,也可以是其他任何格式的电脑文件。这样的MP3随身听还可以当作一个小的移动存储设备来使用。在市场消费刺激下,各大公司纷纷推出了自己的MP3产品,IC供应商提供了众多MP3解码芯片及其解决方案。除了MIC方案(MAS3507+DAC3550)、TI软解压单芯片方案(TMS320C5409),还有台湾创品方案(T33510,T33520)、美国SigmaTel 方案(STMP3400)和TI的DA-250解决方案。这使得MP3播放器的研制与生产变得更加容易,成本也大大降低,市场更加广阔。总之,低数据量和高播放品质,支持多种功能,体积小、重量轻、连续播放时间长、音质好是MP3播放器的发展趋势。、1.2 研究目的本设计主要研究基于C51单片机的MP3播放器,实现音乐存储播放。系统主要是由单片低电压低功耗的LPC932A1 作为控制核心和VS1003音频解码模块、SD卡模块1.3 研究意义本次论文主要是为了开发出一套低成本、可扩展容量的MP3。现在一般个人随身携带使用MP3存在容量固定,性价比较低的情况。此次论文便是根据这些情况而设计。此次设计的突出优势是:1、突破了存储容量限制。本系统提供了SD卡接口,可以方便地访问外部的移动存储介质,这样就不会有特定的容量限制。当前,个人多媒体娱乐市场的需求快速增长,各种多媒体的应用也日趋丰富,对存储容量的要求必然越来越高,因此本系统采用的方案可以说是应势而生。2、低成本。由于MP3 编码算法的CPU 的性能要求非常,因此目前大部分的MP3实时编码都是采用专用的DSP 芯片来实现,这些芯片大部分价格较高8。本系统采用通用单片机处理,对MP3算法做了硬件方式的实时编码满足音质要求。 2 系统总体设计2.1方案的选择方案一,系统采用CH375型号的USB模块,此模块能通用USB1.0或者USB2.0的移动U盘/移动硬盘。方便使用者对本系统的存储工具的携带,但是CH375外围电路比较复杂,价格较昂贵且驱动CH375模块时涉及USB枚举等系列问题。方案二,存储工具采用SD卡模块,此模块与CH375功能大致相当,外围电路简单,价格便宜,但是SD卡模块的主要核心SD/MMC卡体积较细,故容易弄掉,用户使用携带时多加留意。还有SD卡对电源输出电流的要求比较高。综合考虑,在功能大致相同的情况下本设计主要考虑的是使用难度,灵活性更强、性价比更高,所以本设计采用方案二。2.2系统研究的内容1。分析FAT磁盘文件格式。由于此次论文要求对SD卡数据进行读写,而现在大多数SD卡的数据格式几乎都是FAT或FAT16格式。其内部数据存储方式及引导区大小等情况显得尤其重要。如果忽略此环节,势必在读取数据时造成错误,对结果造成重大影响。2。分析出mp3解码方法。在使用MP3解码芯片解码时,必然会用到解码相关知识。而且,在将数据送到MP3解码芯片前,对数据做必要的处理也可以提高MP3解码芯片处理效率,增加设计的可实现性。如果对MP3解码不够了解,就可能导致设计的失败。3。了解mp3解码芯片的相关使用。对于不同的MP3解码芯片,其操作、控制字及外围电路也各不相同,找出性价比高且外围电路简单的芯片就显得比较重要。这不但可以降低成本,也会大大提高系统的可行性并降低系统成本。4。对Mini SD卡的初始化及文件读写。SD属于存储设备,但是,它却与一般存储设备不同。其与集成芯片相似,需要对其初始化才能正常工作。而对其进行读写操作也与其它存储器不同,每次读写均需写入相应的命令控制字,否则,对SD卡的操作均为无效操作。2.3总系统流程框架图系统主要是由单片低电压低功耗的LPC932A1 作为控制核心,由VS1003解码芯片和SD卡模块组成MP3音乐播放功能单元。24C08存储器LPC932A1+5V电源电路VS1003音频解码芯片SD卡模块图2-1 总系统流程框架图3 硬件系统设计3.1硬件电路设计总流程图本系统着重介绍基于SD卡的MP3播放器设计和TEA5767收音功能的硬件设计。其设计流程如图3-1所示。性能分析选择器件接口设计硬件测试结束图3-1 硬件设计流程图3.2单片机及其硬件电路设计P89LPC932A1是一款单片封装的微控制器,含有多种低成本的封装形式。它采用了高性能的处理器结构,指令执行时间只需2到4个时钟周期。6倍于标准80C51器件。P89LPC932A1集成了许多系统级的功能,这样可大大减少元件的数目和电路板面积并降低系统的成本。主要特性 8KB可擦除Flash程序存储器,具有1KB扇区和64字节可页。可字节擦除特性使得任何字节都可用于非易失性数据存储。 256字节 RAM数据存储器。512字节附加片内RAM。 512字节片内用户数据EEPROM存储区,可用来存放器件序列码及设置参数等。 2个模拟比较器。可选择输入和参考源。 2个16位定时/计数器(每一个定时器均可设置为溢出时触发相应端口输出或作为PWM输出),23位的系统定时器可用作实时时钟(RTC)。 增强型UART。具有波特率发生器、间隔检测、帧错误检测和自动地址检测功能。400kHz字节方式I2C通信端口和SPI通信端口。 捕获/比较单元(CCU)提供PWM,输入捕获和输出比较功能。 选择片内高精度RC振荡器时不需要外接振荡器件。可选择RC振荡器选项并且其频率可进行很好的调节。 VDD操作电压范围为2.43.6V。I/O口可承受5V(可上拉或驱动到5.5V)。 28脚TSSOP、PLCC和HVQFN封装。最少23个I/O口,选择片内振荡和片内复位时可多达26个I/O口。 3.3电源电路介绍系统为方便取电,电源由9V 2A的电源适配器(俗称变压器) 、滤波电容、LM7085稳压芯片及电源指示灯组成, 变压器先经滤波电容,再进集成稳压芯片LM7805进行稳压,其输出再经滤波电容的滤波,尽可能的滤去交流部分的杂波,使其成为标准+5V电源, 再由用一个发光二极管指示灯指示电源状态。图3-3 系统电源电路3.5 VS1003音频解码电路分析VS1003 是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含一个高性能,自主产权的低功耗DSP 处理器核VS_DSP4,工作数据存储器,为用户应用提供5KB 的指令RAM 和0.5KB 的数据RAM。串行的控制和数据接口,4 个常规用途的I/O 口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。如图3-8所示。VS1003 通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个18 位过采样多位- DAC。通过串行总线控制解码器。除了基本的解码,在用户RAM 中它还可以做其他特殊应用,例如DSP 音效处理。3.5.1 VS1003特性介绍1. 能解码 MPEG 1 和MPEG2 音频层 III(CBR+VBR+ABR);WMA 4.0/4.1/7/8/9 5-384kbps 所有流文件;WAV(PCM+IMAAD-PCM);产生MIDI/SP-MIDI 文件。2. 对话筒输入或线路输入的音频信号进行IMAADPCM编码。3. 支持 MP3 和WAV 流。4. 单时钟操作12.13MHz。5. 内部PLL锁相环时钟倍频器。6. 内含高性能片上立体声数模转换器,两声道间无相位差。7. 内含能驱动30 欧负载的耳机驱动器。8. 模拟,数字,I/O 单独供电。9. 为用户代码和数据准备的5.5KB片上RAM。10. 串行的控制,数据接口。11. 可被用作微处理器的从机。12. 特殊应用的SPI Flash引导。13. 新功能可以通过软件和4 GPIO 添加。图3-8 VS1003音频解码电路3.5.2 VS1003与微处理器的正确与可靠连接这一步很关键,必须确保连线的正确而且是确实连接上的(在插线之前最好用万用表测一下导线的连通性),否则以后的工作将是浪费时间。下图3-9为VS1003模块连接头定义:图3-9 VS1003与STC12C5A60S2单片机连接网络对于STC12C5A60S2单片机来说,总共需要其7个IO口。MOSO、MOSI与SCLK分别接STC12C5A60S2的P1.6、P1.5和P1.7,其余的四根线XRESET、DREQ、XDCS、XCS分别接到其他的四个通用IO口P1.0、P1.1、P0.5和P0.6。对于其他微处理器来说接法类似。3.6 SD卡模块电路分析在本次设计中,我们采用SD卡作为数据存储介质。因此,我们现在来分析一下其接口及数据传输模式。SD卡有10个引脚,它们分别是:VCC、GND、DAT0-DAT3、CLK、CMD。其中,它们在不同的模式下有不同的定义。其具体定义如表3-1所示。表3-1 SD卡引脚定义针脚名称类型1描述1CLKI时钟2CSI/O/PP片选3SII/O/PP输入4SOI/O/PP输出5VCCS供电电压6WPI/O/PP写保护7NcdI/O/PP插入检测8DAT1I/O/PPSD模式D19DAT2I/O/PPSD模式D210GNDS电源地SD卡数据传输分为SPI模式和SD模式。在SD模式下速度较快,但是,由于使用引脚过多,而且,在SPI模式下速度已经足够,因此,本次设计中采用SPI模式。在SPI模式下,SD卡只需要接SO、SI、CS、CLK、VCC、GND这6个引脚就可以了。对于本设计的STC12C5A60S2单片机来说需要4个IO口与之连接,分别是P1.6、P1.5、P0.7和P1.7。在本次设计中驱动电路图如3-10所示。图3-10 SD卡模块驱动电路图3.9硬件设计小结这个基于单片机的MP3音乐播放器毕业设计,也清楚知道系统硬件设计是本次设计的首先要解决的问题,经过到图书馆查很多相关的资料,由于一块51单片机的IO口不够用,且系统本身需要的晶振频率不一样,也难以协调,所以最后决定采用2块单片机的方案。还有当初设想使用U盘作为存储器件,但后来发觉难以实施,决定采用较简单且价格也相对优惠的SD卡作为存储器件。方案确定后,我便开始采购元器件,着手焊接电路板,边焊接边测试电路的导通情况。焊好的部分电路我都会采用小软件烧入测试的方式检验电路板各个端点电气性是否满足设计要求。经过自己的努力,我成功的焊接好了各个元器件,为后面的软件总体调试打下了坚实的基础。4 软件系统设计4.1 MP3音乐播放软件设计总流程首先,我们分别对VS1003b、SD卡、FAT进行驱动程序设计,然后对这些驱动程序加以排列、组合,做到最优启动顺序,最后进行高层人机接口程序的设计。为了能够明确我们具体所需的驱动程序设计,下面我们先将MP3音乐播放设计的总体程序流程图确定下来。如图4-1所示否是是开始初始化各驱动程序是否有歌曲否结束播放一帧数据扫描键盘一次获取歌曲信息读入一帧数据歌曲是否结束下一曲图4-1 程序流程图在完成程序流程图之后,我们需要分别对各个部分进行程序设计,下面就分别介绍各种驱动程序的编写方法4.1.1 VS1003音频解码芯片驱动VS1003 驱动框图如图:图4-1。在开始播放音乐之前,先要对 VS1003 进行一系列的初始化,完成对VS1003 的基本设置,然后才能正确的播放音频文件。在系统启动时会对 VS1003初始化。第一步初始化 MCU 与 VS1003相连接的 I/O 口,接着对 VS1003进行硬件复位和软件复位,之后初始化 VS1003 的内部寄存器,之后就可以向 VS1003写数据,进行音乐播放的功能了。VS1003 I/O 口初始化硬复位VS1003软复位 VS1003初始化VS1003 内部寄存器VS1003写命令VS1003写数据VS1003读数据外部程序调用图4-2 VS1003驱动流程图VS1003解码芯片是通过 SPI 实现数据通信的,与 SD卡 公用一个 SPI 接口,通过不同的片选信号,分时复用。VS1003 通过 7根线与单片机进行通信,即 XRST、XDCS、XCS、DREQ、SCK、MOSI、MISO。在默认情况下,数据将在 SCLK的上升沿有效(被读入VS1003),一次需要在 SCLK 的下降沿更新数据,并且字节发送以 MSB 在先。第一步,I/O 口初始化,这部分初始化 MCU 与 VS1003 相连接的 I/O 口,并初始化 单片机STC12C5A60S2的虚拟SPI 的相关寄存器,实现代码如下:Void mp3_port_init() spi_init(); MP3_DDR|=MP3_DATA_CS|MP3_CMD_CS|MP3_DATA_REST; MP3_DDR&=MP3_DATA_REQ; MP3_PORT|= MP3_DATA_CS|MP3_CMD_CS|MP3_DATA_REST| MP3_DATA_REQ;Void spi_init() DDRB=0XBF; SPCR=0X53; SPSR=0X01;第二步,对 VS1003 进行复位和寄存器的设置,这几个步骤在系统启动的时候会执行一遍,在音乐开始播放的时候,也要执行这个步骤,来清除上次的设置,并初始化相关寄存器。#define MP3Reset()MP3_PORT&=MP3_DATA_REST;delay_ms(10);MP3_PORT=0XFF;硬复位很简单,只要把 VS1003 的 RST 引脚拉低一定时间(1.35ms,12.288MHz),然后再置高电平就实现了硬复位。这里采用宏定义的形式来实现: Void vs1003_Reset() while(1) if(PINB&MP3_DATA_REQ) vs1003_data_write(0x00); break; ResetDecodeTime(); vs1003_cmd_write(0x00,0x0804)/delay_us(15000; 软复位先等待 VS1003空闲,然后设置 SCI_MODE(0X00)寄存器的 bit2 为 1,实现 VS1003的软复位。这里在软复位之前,还对 VS1003的解码时间进行了清空操作,以确保上次解码的时间被清除掉。 void vs1003_init() uchar t; if(vs1003epm015) for(t=0;t5;t+) vs1003epmt=vs1003ramt;vs1003_cmd_write(0x00,0x0800);set1003();vs1003_cmd_write(0x03,0x6000);在硬复位和软复位之后,就开始对 VS1003 的内部寄存器进行设置:包括对模式(0x00)、音量(0x0b)、音调(0x03)、时钟(0x03)的设置。此函数中的 vs1003 epm和 vs1003 ram数组是保存音效的寄存器数组。前者保存在 eeprom,使得用户设置的音效再掉电后可以保存;后者保存在 SRAM 中,使得用户可以反复操作,两者之间是相互映射的。音效和音量的设置通过函数 set1003 来实现。以上介绍了 VS1003 的初始化过程,在完成以上的操作后,就可以向 VS1003 中直接放入音频数据了,然后 VS1003 就会开始音频解码,并且播放音乐了。4.1.2 SD卡存储模块驱动程序设计SD 卡存储了系统文件非常重要的信息,如果 SD 卡驱动出现问题,将直接导致系统崩溃,所以,SD卡的驱动对系统来说是至关重要的,只要SD卡成功地初始化了,后面的处理就相对简单,所以关键在于初始化。SD 卡有两个可选的通信协议:SD 模式和 SPI 模式。SD 模式是 SD卡标准的读/写方式,选择 SPI 模式读取SD卡。因为SD卡在上电初期自动进入SD总线模式,在此模式下向SD卡发送复位命令CMD0。如果 SD卡在接收复位命令过程中CS低电平有效,则进入 SPI 模式,否则工作在SD总线模式。如图4-3。上电延时等待上电完成发送74个脉冲发送复位命令CMD 0发送激活命令 CMD 1关CRC,设置扇区字节数结束 图4-3 SD驱动流程图在 SD 卡初始化时注意 SPI 时钟频率一定不要超过 400 kHz,在初始化之后则可以提高到25MHz。具体的 SD 卡初始化函数如下:void SD_init(void) uchar retry,temp; uchar i; MMC_PORT&=MMC_CS_PIN;SPI_SetSpeed(0); delay_us(250); for(i=0;i0x0f;i+) Write_Byte_SPI(0XFF); retry = 0;do temp=SD_Write_Command(0,0);retry+;if(retry =100) return 0xff;while(temp!=1);retry = 0;do temp=SD_Write_Command(1,0);retry+;if(retry =100);while(temp!=0);retry = 0;SD_Write_Command(59,0);SD_Write_Command(16,512);MMC_PORT|=MMC_CS_PIN;SPI_SetSpeed(1);return(0);4.1.3 FAT驱动程序设计当读取到SD卡中的数据后,我们还不能直接使用这些数据,这些数据是根据微软制定的FAT/NTFS格式排列存放的。其中,在磁盘的开始区域存放的是磁盘系统的相关信息。当我们读取到这些信息时,还需要进行一些相应的计算,找出其中的MP3或其它音乐格式文件的数据入口地址、结束地址等,这样,单片机才能够获得相应的数据,并对数据进行分析送给解码芯片解码。现在市场上大多数SD/MMC卡都采用的是FAT32格式,因此,下面我们就开始以FAT格式为例进行分析。在本次设计中,为了能够方便地看到SD卡内部数据,我们采用WinHex软件对SD看内部数据进行分析。每张磁盘都有自己固定的存储结构。磁盘的第一个区域是系统区,从0面,0磁道,1扇区开始。系统区一般用来存放系统存储和维护的信息,系统区由三部分组成:1.引导记录(包含磁盘大小、格式、存储方式等信息);2.文件分配表FAT(为文件分配磁盘空间);3.目录(包括文件名、磁盘地址和文件状态)。其具体结构如图4-4所示。图4-4 系统区和数据区组织图本次设计中,需要对引导记录进行详细分析,计算出数据位置,找到音乐文件。而在引导区最重要的部分为前512字节。在前512字节中,前96字节记录了系统的详细信息,这些信息可以帮助我们算出系统区和数据区各组成部分的位置。其内部前96个字节如图4-5所示。图4-5 SD卡前96字节截图在图3-5中,每个字节含有为:前3字节为跳转指令结构;4-11字节为依赖的系统文件名;第12、13字节为字节数/扇区;14字节为扇区数/簇;15、16字节为保留扇区数;17字节为FAT数目;18、19字节为启动入口;19-21字节为小卷标扇区数;第22字节为多媒体类型描述(一般为F8);23、24字节为扇区数/小卷标FAT;25、26字节为扇区数/磁道;27字节为头字节数;29-32字节为隐藏扇区数;第33-36字节为磁盘总扇区数;37-40为扇区数/FAT;41字节为扩展标志位;42-44字节为磁盘版本号;45-48字节为启动目录的第一簇;49-50启动信息扇区位置;51、52字节为启动数据备份扇区位置;另外,83-87字节为文件系统格式;其余信息在本次设计中暂未用到。知道以上信息及其含有,我们就可以计算出磁盘数据的位置等信息。为了能够方便地使用这些信息,在设计中可用如图4-6所示的结构体进行赋值,使程序能够高效的运行。在知道以上信息后,可以采用下面计算公式进行计算,算出数据所在位置。FAT表起始地址=(隐藏扇区数+保留扇区数)*字节数/扇区目录区起始地址=FAT表起始地址+FAT数目*扇区数/FAT*字节数/扇区+启动目录首簇*扇区数/簇*字节数/扇区第一个数据扇区地址=目录区起始地址+目录簇数*扇区数/簇*字节数/扇区目录区的大小是不固定,其大小会根据文件的多少而进行调整,只有在一个文件目录后不存在其它文件,才说明已经不含有其它文件。因此,在读取到的数据名为00H时,就说明文件已经结束,可以不再往后面读取文件。图4-6 启动信息结构体在获取到启动信息以及数据区等位置关系以后,就可以读取自己需要的数据了。在使用过程中,我们可以编写一些专门用于计算文件下一簇/扇区的程序,这样就可以通过调用函数的方法方便地找到自己需要的数据,判断文件是否结束等情况。4.3软件设计小结之前参加过广东省电子设计比赛,我主要负责系硬件方面的设计,而软件方面稍微欠缺,所以今次毕业设计中软件方面对我是个不少的考验。例如:程序在调试的过程中经常遇到了一些无法跳出,形成一个死循环,使程序异常,每次经仔细排查后都能解决,主要原因是自己不够细心,编程时常使跳出循环的条件不符或条件判断的变量一直无变化引起。5 系统调试与分析5.1 硬件调试 硬件调试流程图详细见图5-1:Y功指示灯亮?成功电源焊接第一步 :N功检查测试蜂鸣器响亮单片机最小系统焊接加蜂鸣器第二步 :单独执行演示程序,是否能正常显示显示模块焊接第三步 :上述元件与LCD各自单独执行最简单程序,是否能发生在LCD对应的现象DS1302、24C08、TL1838、DS18B20焊接第四步 :收音功能是否正常TEA5767芯片、24C08与TDA2822功放单片机最小系统第五步 :MP3功能是否正常单片机最小系统VS1003解码模块与SD卡模块第六步 :第七步 :所有模块相连,一起调试。图5-1 硬件调试流程 硬件设计思路见路程图,在硬件调试的过程中主要出现以后几个问题:(1)排除逻辑故障这类故障出现的比较多,要包括错线、开路、短路。排除的方法是首先将焊接的电路板认真对照原理图,看两者是否一致。我特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路。必要时我利用数字万用表的短路测试功能,这样可以缩短排错时间。 (2)排除元器件失效 一般造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。在保证安装无误后,可以通过用替换方法排除错误,或者通过测试元器件相连接的元器件是否工作来排除错误。 (3)排除电源故障 每次在通电前,都一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏,这方面我都很小心,加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,单片机在5V48V之间属正常。调试结果:第一步: 电源指示灯亮;第二步:蜂鸣器响亮;第三步:各自功能都能正常使用;第四步:MP3能正常播放;第五步:所有模块都能紧密相连,正常使用;5.2 软件调试软件的测试重要是使用Keil C51软件,通过使用软件编程测试,重要是调试编程中出现的问题,在调试过程中经常出现的问题有以下几个问题:(1) 单片机指令的使用错误,例如在命名引脚的过程中出现过把” sbit SD_SCL=P17”写为“bit SD-SCL=P1.7;(2) 语法错误,语法错误就比较经常见到,很难找,最好就是用单步跟踪指令来查看,这样既方便也不会很盲目;(3) 书写的错误,就是说程序是正确的,但是运行不成功的时候就查看那些标点符号或者是分号又没有问题,例如正确的应该是”;”而不是“;”这两个看是一样,但是在调试的过程中往往是最厉害的隐藏杀手,所以一定要特别的注意。下面图5-2为本设计的调试结果: 图5-2 软件程序调试结果从图5-2可以看出调试成功,如果不能运行,可以双击单行程序,经行修改,或者是程序的思路或者其他问题开始调试,也可以一步一步的调试修改。5.3 系统调试小结经过硬件和软件的调试,可以确定本设计是可以正常使用的。但如果要达到市面上出售的MP3的效果,电路设计还需进一步改善,尤其系电源部分,由于SD卡模块在工作时需要的电流比较大,所以正常的稳压芯片L7805有些吃力,虽然在后期制作中,已经加多一块L7805并在一起,增加了电源输出的总电流,但是稳压芯片在长时间的使用也会出现发烫的现象。系统调试是本设计成功与否的关键,软件与硬件的结合是本设计的最终目标。经过这一次调试,我对硬件电路理解的更加透彻,对软件的纠错能力也有了进一步的提高,并且熟悉了Keil C51的操作,使自己对单片机的使用更加熟悉。参考文献1 CECA:Chain Electronic Components AssociationOL,http:/ic-ceca.Org. cn . 2007。2 沈磊:基于ColdFire 和uCLinux 的便携式多媒体播放器软件系统的设计与实现 D,上海交通大学报, 2005-1-2。3 有风无雨:历史不会忘记索尼Walkman 数十年回忆 OL, http:/www. / doc/0/104/104282.shtml, 2005-8。4 workstar:百度百科 MP3 OL,http:/baike. /view/1310.htm #8 , 2009-6-10。5 麦建邦:百度百科 MP3播放器 OL, /view/ 136 14.htm l , 2009-2-22。6 文梦梦:浅谈MP3播放器发展趋势D,PCPOP-电脑时尚, 2005-2-19。7 谭文杰:基于USB主机的多媒体播放器的设计与实现 D, 中山大学校报 , 2007-1。8 陈杰:基于ARM平台的MP3编码器的实现及其性能优化 D,上海交通大学报 , 2007-1。9 陈冬云、杜敬仓、任柯燕等:ATmega128单片机开发原理与指导M,机械工业出版社,2006-10-4。10 VLSI Solution . VS1003 PRELIMINARY S,Version 0.92, 2005-06-07。11 SMC1602A LCM 使用说明书 S,长沙太阳人电子有限公司。12 沈美明 温冬婵 编著IBM-PC汇编语言程序设计 M(第二版)北京:清华大学出版社。13 佚名:MP3文件格式 EB,2006-1-2。14 魏广寅:VS1003-MP3/WMA 音频解码器S,贵阳永青仪电科技开发部。15VS1003 - MP3/WMA AUDIO CODEC 数据手册S,Version 0.92, 2005-06-07。附 录1 MP3功能主要程序源代码#include /* special function register declarations */#include #include #include #define bool bit#define false 0#define true 1#define uchar unsigned char#define ulong unsigned long#include key.h#include vs1003.h#include DataTypeDef.h#include New_sd.h#include PinConfig.h#defineUINT8unsigned char#defineUINT16unsigned short#defineUINT32unsigned long/#defineUINT8Xunsigned char xdata/#defineUINT8VXunsigned char volatile xdata/* FAT数据区中文件目录信息 */typedef struct _FAT_DIR_INFO UINT8DIR_Name11;/* 00H,文件名,共11字节,不足处填空格 */UINT8DIR_Attr;/* 0BH,文件属性,参考前面的说明 */UINT8DIR_NTRes;/* 0CH */UINT8DIR_CrtTimeTenth;/* 0DH,文件创建的时间,以0.1秒单位计数 */UINT16DIR_CrtTime;/* 0EH,文件创建的时间 */UINT16DIR_CrtDate;/* 10H,文件创建的日期 */UINT16DIR_LstAccDate;/* 12H,最近一次存取操作的日期 */UINT16DIR_FstClusHI;/* 14H */UINT16DIR_WrtTime;/* 16H,文件修改时间,参考前面的宏MAKE_FILE_TIME */UINT16DIR_WrtDate;/* 18H,文件修改日期,参考前面的宏MAKE_FILE_DATA */UINT16DIR_FstClusLO;/* 1AH */UINT32DIR_FileSize;/* 1CH,文件长度 */ FAT_DIR_INFO;/* 20H */typedef FAT_DIR_INFO *P_FAT_DIR_INFO;FAT_DIR_INFO idata FDB_Current;/*全局文件控制块信息*/* 错误码 */#define ERR_SUCCESS0x00/* 操作成功 */#define ERR_DISK_DISCON0x82/* 磁盘尚未连接,可能磁盘已经断开 */#define ERR_STATUS_ERR0x83/* 磁盘状态错误,可能正在连接或者断开磁盘 */#define ERR_MBR_ERROR0x91/* 磁盘的主引导记录无效,可能磁盘尚未分区或者尚未格式化 */#define ERR_TYPE_ERROR0x92/* 磁盘分区类型不支持,只支持FAT12/FAT16,需要由磁盘管理工具重新分区 */#define ERR_BPB_ERROR0xA1/* 磁盘尚未格式化,或者参数错误,需要由WINDOWS采用默认参数重新格式化 */#define ERR_TOO_LARGE0xA2/* 磁盘非正常格式化并且容量大于4GB,或者容量大于250GB,需要由WINDOWS采用默认参数重新格式化 */#define ERR_FAT_ERROR0xA3/* 磁盘的文件系统不支持,只支持FAT12/FAT16,需要由WINDOWS采用默认参数重新格式化 */#define ERR_DISK_FULL0xB1/* 磁盘文件太满,剩余空间太少或者已经没有,需要磁盘整理 */#define ERR_FDT_OVER0xB2/* 目录内文件太多,没有空闲的目录项,FAT12/FAT16根目录下的文件数应该少于500个,需要磁盘整理 */#define ERR_MISS_DIR0xB3/* 指定路径的某个子目录没有找到,可能是目录名称错误 */#define ERR_FILE_CLOSE0xB4/* 文件已经关闭,如果需要使用,应该重新打开文件 */#define ERR_OPEN_DIR0x41/* 指定路径的目录被打开 */#define ERR_MISS_FILE0x42/* 指定路径的文件没有找到,可能是文件名称错误 */#define ERR_FOUND_NAME0x43/* 搜索到与通配符相匹配的文件名,文件名及其完整路径在命令缓冲区中,如果需要使用,应该打开该文件 */* 文件属性 */#define ATTR_READ_ONLY0x01/* 文件为只读属性 */#define ATTR_HIDDEN0x02/* 文件为隐含属性 */#define ATTR_SYSTEM0x04/* 文件为系统属性 */#define ATTR_VOLUME_ID0x08/* 卷标 */#define ATTR_DIRECTORY0x10/* 子目录 */#define ATTR_ARCHIVE0x20/* 文件为存档属性 */#define ATTR_LONG_NAME( ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID )unsigned char xdata Sector_Buf512;/全局磁盘扇区缓冲区。/文件系统用全局变量UINT8SecPerClus;/* 逻辑盘的每簇扇区数 */UINT32 FATStartSecotr;/*FAT表起始扇区号*/UINT32 BootDirStart;/根目录的起始扇区号UINT32 DiskDataStart;/*存放数据的起始扇区号*/bool bReadSectorAttrib;/*所读扇区的属性*/#define c_The_First 0#define c_The_Continue 1uint uiCurrentSubDirectoryCluster;/当前文件夹的起始簇号unsigned int uiCurrentFileClusterNo;unsigned char ucSectorOfClusterCount;/* 簇内扇区偏移量*/idata unsigned long ulSectorAddress;idata unsigned char ucCurrentPlayFileName16;uint uiFilterFileCount;/查找文件夹中当前类型的文件,查找到的总数uchar ucBoardConfigValue;/读取到的当前模块功能配置值/-应用层软件使用的全局变量-uchar ucSelectMusicDir;/选择的音乐文件夹#define c_MusicDir_11#define c_MusicDir_22bool bEndLoopPlayFlag;/结束当前文件夹循环播放的标志位uchar ucUserDirFileCount_1;/用户应用文件夹1下的音乐文件总数uchar ucUserDirFileCount_2;/文件夹2下的文件总数/-unsigned char FAT_TYPE; #define c_FAT_Type_FAT12 0#define c_FAT_Type_FAT16 1#define c_FAT_Type_FAT32 2void Delay(uchar ucCount);#define c_Key_NULL0x00#define c_Key_SW2_ScanCode 0x01#define c_Key_SW3_ScanCode 0x02#define c_Key_SW4_ScanCode 0x04#define c_Key_SW5_ScanCode 0x08#define c_Key_SW6_ScanCode 0x10uchar KbGet(void)uchar ucReturnValue;ucReturnValue = 0x00;if(!c_Key_SW2)ucReturnValue |= c_Key_SW2_ScanCode;if(!c_Key_SW3)ucReturnValue |= c_Key_SW3_ScanCode;if(!c_Key_SW4)ucReturnValue |= c_Key_SW4_ScanCode;return(ucReturnValue);/* 从U盘读取1个扇区的数据块到全局缓冲区 */unsigned charmReadSector( unsigned long iLbaStart);/* * FAT文件系统层* */#if 1UINT16mGetPointWord( UINT8 *iAddr ) /* 获取字数据,因为MCS51是大端格式,U盘FAT通常是小端格式,所以转换 */return( iAddr0 | (UINT16)iAddr1 8 );/*uint uiReturnValue;(uchar*)&uiReturnValue0 = *iAddr;(uchar*)&uiReturnValue1 = *iAddr;return uiReturnValue;*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论