基于Mega128的MP3播放系统_第1页
基于Mega128的MP3播放系统_第2页
基于Mega128的MP3播放系统_第3页
基于Mega128的MP3播放系统_第4页
基于Mega128的MP3播放系统_第5页
已阅读5页,还剩38页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1第一章绪论11音频格式背景音频格式是指要在计算机内播放或是处理音频文件,是对声音文件进行数、模转换的过程。音频格式最大带宽是20KHZ,速率介于4050KHZ之间,采用线性脉冲编码调制PCM,每一量化步长都具有相等的长度。音频文件格式常见的特点有要在计算机内播放或是处理音频文件,也就是要对声音文件进行数、模转换,这个过程同样由采样和量化构成,人耳所能听到的声音,最低的频率是从20HZ起一直到最高频率20KHZ,20KHZ以上人耳是听不到的,因此音频文件格式的最大带宽是20KHZ,故而采样速率需要介于4050KHZ之间,而且对每个样本需要更多的量化比特数。音频数字化的标准是每个样本16位96DB的信噪比,采用线性脉冲编码调制PCM,每一量化步长都具有相等的长度。在音频文件的制作中,正是采用这一标准。现如今音频格式已经日新月异,到2008年音频格式包括CD格式、WAVE(WAV)、AIFF、AU、MP3、MIDI、WMA、REALAUDIO、VQF、OGGVORBIS、AAC、APE。12MP3文件格式MP3格式诞生于八十年代的德国,所谓的MP3也就是指的是MPEG标准中的音频部分,也就是MPEG音频层。根据压缩质量和编码处理的不同分为3层,分别对应“MP1“/“MP2”/“MP3”这3种声音文件。需要提醒大家注意的地方是MPEG音频文件的压缩是一种有损压缩,MPEG3音频编码具有101121的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHZ到16KHZ高音频这部分的质量来换取文件的尺寸,相同长度的音乐文件,用MP3格式来储存,一般只有WAV文件的1/10,而音质要次于CD格式或WAV格式的声音文件。由于其文件尺寸小,音质好;所以在它问世之初还没有什么别的音频格式可以与之匹敌,因而为MP3格式的发展提供了良好的条件。直到现在,这种格式还是风靡一时,作为主流音频格式的地位难以被撼动。但是树大招风,MP3音乐的版权问题也一直是找不到办法解决,因为MP3没有版权保护技术,说白了也就是谁都可以用。MP3格式压缩音乐的采样频率有很多种,可以用64KBPS或更低的采样频率节省空间,也可以用320KBPS的标准达到极高的音质。用装有FRAUNHOFERIISMPEGLYAER3的MP3编码器(现在效果最好的编码器)MUSICMATCHJUKEBOX60在128KBPS的频率下编码一首3分钟的歌曲,得到282MB的MP3文件。采用缺省的CBR(固定采样频率)技术可以以固定的频率采样一首歌曲,而VBR(可变采样频率)则可以在音乐“忙”的时候加大采样的频率获取更高的音质,不过产生的2MP3文件可能在某些播放器上无法播放。把VBR的级别设定成为与前面的CBR文件的音质基本一样,生成的VBRMP3文件为29MB。MP3是到2008年止使用用户最多的有损压缩数字音频格式了。它的全称是MPEGMPEGMOVINGPICTUREEXPERTSGROUPAUDIOLAYER3,刚出现时它的编码技术并不完善,它更像一个编码标准框架,留待人们去完善。早期的MP3编码采用的的是固定编码率的方式(CBR),看到的128KBPS,就是代表它是以128KBPS固定数据速率编码你可以提高这个编码率,最高可以到320KBPS,音质会更好,自然,文件的体积会相应增大。因为MP3的编码方式是开放的,可以在这个标准框架的基础上自己选择不同的声学原理进行压缩处理,所以,很快由XING公司推出可变编码率的压缩方式(VBR)。它的原理就是利用将一首歌的复杂部分用高BITRATE编码,简单部分用低BITRATE编码,通过这种方式,进一步取得质量和体积的统一。当然,早期的XING编码器的VBR算法很差,音质与CBR(固定码率)相去甚远。但是,这种算法指明了一种方向,其他开发者纷纷推出自己的VBR算法,使得效果一直在改进。目前公认比较好的首推LAME,它完美地实现了VBR算法,而且它是是完全免费的软件,并且由爱好者组成的开发团队一直在不断的发展完善。而在VBR的基础上,LAME更加发展出ABR算法。ABR(AVERAGEBITRATE)平均比特率,是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。13ATMEGA128单片机结构特点高性能、低功耗的AVR8位微处理器先进的RISC结构133条指令大多数可以在一个时钟周期内完成32X8通用工作寄存器外设控制寄存器全静态工作工作于16MHZ时性能高达16MIPS非易失性的程序和数据存储器128K字节的系统内可编程FLASH寿命10,000次写/擦除周期具有独立锁定位、可选择的启动代码区通过片内的启动程序实现系统内编程真正的读修改写操作4K字节的EEPROM寿命100,000次写/擦除周期4K字节的内部SRAM多达64K字节的优化的外部存储器空间可以对锁定位进行编程以实现软件加密可以通过SPI实现系统内编程3外设特点两个具有独立的预分频器和比较器功能的8位定时器/计数器两个具有预分频器、比较功能和捕捉功能的16位定时器/计数器具有独立预分频器的实时时钟计数器6路分辨率可编程(2到16位)的PWM输出比较调制器8路10位ADC7个差分通道2个具有可编程增益(1X,10X,或200X)的差分通道面向字节的两线接口两个可编程的串行USART可工作于主机/从机模式的SPI串行接口具有独立片内振荡器的可编程看门狗定时器片内模拟比较器特殊的处理器特点上电复位以及可编程的掉电检测片内经过标定的RC振荡器片内/片外中断源6种睡眠模式空闲模式、ADC噪声抑制模式、省电模式、掉电模式、STANDBY模式以及扩展的STANDBY模式可以通过软件进行选择的时钟频率通过熔丝位可以选择ATMEGA103兼容模式全局上拉禁止功能I/O和封装53个可编程I/O口线64引脚TQFP与64引脚MLF封装工作电压4555VATMEGA128速度等级016MHZATMEGA1284第二章方案与论证21需求分析本MP3播放系统功能较多,针对这些功能,要选择合适的控制芯片及外部芯片来实现,以下介绍一下选用芯片MP3解码本播放系统是利用AVR单片机控制来实现歌曲播放功能的,但对单片机本身来说不能进行音频解码(速度与资源都不符合要求),所以只能利用外部解码芯片来实现歌曲播放功能。MP3解码芯片常见的有VS100X系列和STA01X系列,VS系列自带DAC输出功能,而且能解码的音频格式也比较多;而STA系列需要外加DAC,使用起来多有不便,而且只能解码MP3一种格式的音乐文件。经过对此比较,选用VS1003作为解码芯片,该芯片支持MP3、WMA、WAV、MIDI、等格式的解码,自带DAC输出;同时,还可以调节音量、高低音等,更重要的是它还具有MIC功能,如需要,还可以实现录音功能。因此,选用此芯片作为解码芯片。音效处理虽然VS1003自带了音效处理,但是其效果不是很理想,而且无法对外部音源进行音效处理,所以,本播放器采用一块外部数字音效处理芯片来进行音效处理。CD3314是一个具有四组立体声输入的双声道数字音质处理器,CD3314将音量、音调(BASSANDTREBLE)、声道平衡(LEFT/RIGHT),响度等处理及输入增益选择内建于单一芯片中。这些功能令CD3314仅需要少数外部元件即可实现高效的音质处理功能。所用功能均由I2C总线控制。FM收音本播放器的收音功能只针对FM调频进行收音,采用飞利浦公司生产的TEA5767芯片来实现。TEA5767是一款低功耗、电调谐、调频立体声收音芯片,内部集成了中频选频网络和解调网络,可以做到完全免调,因此需要很少量的小体积外围元件。TEA5767芯片可以应用在中国、欧洲、美国和日本不同的FM波段环境。该芯片通过I2C总线控制,就可以实现调频接收,频率覆盖范围从76108MHZ,而且是立体声接收,带信号强度指示。所以,根据以上优点,采用此芯片来完成FM收音功能。人机交互人机交互采用红外用空加LCD液晶显示方式实现。输入端采用遥控方式实现,不但能节省I/O口,而且使用起来更加方便,本播放器采用PT2262/PT2272红外遥控芯片。该芯片是一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/PT2272最多可有12位A0A11三态地址端管脚悬空,接高电平,接低电平,任意组合可提供531441地址码,PT2262最多可有6位D0D5数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。编码芯片PT2262发出的编码信号由地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。液晶显示普通单色LCD来实现,这里考虑到音乐播放显示、同步歌词显示、5音量显示等诸多功能,同时兼顾成本,故选用价格较为便宜的NOKIA5110点阵LCD来实现。该液晶屏本身不带有字库功能,所以,系统需要有外部字库文件,来实现曲目及歌词的汉字显示。存储媒介作为MP3播放器,肯定需要很大的存储器来存放歌曲,可以选择FLASH芯片存储、SD卡、U盘等。如果选用FLASH,则整个系统要求较多的I/O口来读取,更重要的一点是,这样做的后果就是整个系统的容量就被固定了,扩容存在困难。而U盘和SD卡都是不错的选择,并且U盘和SD卡均容易购买到,并且价格较为低廉,所以,存储部分选用U盘或SD卡读取来实现。22基本方案设计通过以上的需求分析,对本系统的所有的主要芯片有了初步的了解。本MP3播放系统已ATMEGA128为控制核心,通过SPI通信协议控制SD卡和VS1003通信,通过I2C总线控制收音机模块,对于其他的芯片则是通过普通I/O口连接的。以下是硬件系统的连接框图,如图21具体的芯片功能和详细的电路图将在下一章做以详细介绍。ATMEGA128I2CSPITEA5767收音模块NOKIA5110液晶显示SD卡U盘VS1003音频解码红外遥控PT2262PT2272串口及空闲I/O口图21以上是本MP3播放系统的硬件框图,是该播放系统具有的基本功能,每个功能可以单独运行。实现以上这几个关键功能部分需要具备FAT文件体统的管理歌曲名字及歌词的汉字显示UNICODE与CBK编码的转换。SPI通信协议的具体设置I2C总线结构的设置及通信USART通信协议的建立与设置。以上功能将在下面的章节中予以陈述。6第三章硬件电路与软件设计31硬件部分311音频解码电路基本电路图,如图311图311VS1003特性能解码MPEG1和MPEG2音频层III(CBRVBRABR);WMA40/41/7/8/95384KBPS所有流文件;WAVPCMIMAADPCM产生MIDI/SPMIDI文件。对话筒输入或线路输入的音频信号进行IMAADPCM编码支持MP3和WAV流高低音控制单时钟操作1213MHZ内部PLL锁相环时钟倍频器低功耗内含高性能片上立体声数模转换器,两声道间无相位差内含能驱动30欧负载的耳机驱动器7模拟,数字,I/O单独供电为用户代码和数据准备的55KB片上RAM串行的控制,数据接口可被用作微处理器的从机特殊应用的SPIFLASH引导供调试用途的UART接口新功能可以通过软件和4GPIO添加VS1003概述VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含一个高性能,自主产权的低功耗DSP处理器核VS_DSP4,工作数据存储器,为用户应用提供5KB的指令RAM和05KB的数据RAM。串行的控制和数据接口,4个常规用途的I/O口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个18位过采样多位DAC。通过串行总线控制解码器。除了基本的解码,在用户RAM中它还可以做其他特殊应用,例如DSP音效处理。312U盘模块电路基本电路图,如图312图312CH375是一个USB总线的通用接口芯片,支持USBHOST主机方式和USBDEVICE/SLAVE设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。在USB主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU等相连接。CH375的USB设备方式与CH372芯片完全兼容,CH375包含了CH372的全部功能。CH375的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB协议与USB设备8通讯。CH375还内置了处理MASSSTORAGE海量存储设备的专用通讯协议的固件外部单片机可以直接以扇区为基本单位读写常用的USB存储设备(包括USB硬盘/USB闪存盘/U盘)。特点低速和全速USBHOST主机接口,兼容USBV20,外围元器件只需要晶体和电容。低速和全速USB设备接口,完全兼容CH372芯片,支持动态切换主机与设备方式。主机端点输入和输出缓冲区各64字节,支持12MBPS全速USB设备和15MBPS低速设备。支持USB设备的控制传输、批量传输、中断传输。自动检测USB设备的连接和断开,提供设备连接和断开的事件通知。内置控制传输的协议处理器,简化常用的控制传输。内置固件处理海量存储设备的专用通讯协议,支持BULKONLY传输协议和SCSI、UFI、RBC或等效命令集的USB存储设备(包括USB硬盘/USB闪存盘/U盘/USB读卡器)。通过U盘文件级子程序库实现单片机读写USB存储设备中的文件。并行接口包含8位数据总线,4线控制读选通、写选通、片选输入、中断输出。串行接口包含串行输入、串行输出、中断输出,支持通讯波特率动态调整。支持5V电源电压和33V电源电压,支持低功耗模式。采用SOP28无铅封装,兼容ROHS,提供SOP28到DIP28的转换板,引脚基本兼容CH374芯片。313SD卡存储接口电路基本电路图,如图313图313SD卡的体系结构将在这里叙述。它定义了数据区域的逻辑结构。对于如分割数据9区域的区别,第一分区有主启动记录和分区表。SD卡文件系统使用FAT文件系统ISO/IEC9293并支持FAT12和FAT16文件系统格式。如表31和表32文件系统层PSNLSN分区部分主启动记录和分区表0到38分区启动部分390文件分配表40到631到24系统部分根目录64到9525到56用户部分用户部分用户区96到12979157到129752表31表320到445主启动记录此间内容不被叙述。446到461分区表(第一部分)10这个部分叙述了第一分区在体系中的信息。这个分区意味着使用者可以没有相互的证明使用普通区域。如表33462到477分区表(第二部分)如果体系只有一个分区,此间内容为0。478到493分区表(第三部分)如果体系只有一个分区,此间内容为0。494到509分区表(第四部分)如果体系只有一个分区,此间内容为0。510到511信号字SIGNATUREWORD此处记录了0X55BP510和0XAA。分区表BP长度文件名内容01启动指示0X00或0X8011启始磁头数值22启始柱面和扇区数值41系统ID号0X01或0X04或0X0651终止磁头数值62终止柱面和扇区数值84RELATIVESECTOR数值124总扇区数值表33BP0启动指示如果以SD卡作为启动(盘),记录0X80,否则记录0X00。BP1启始磁头此处叙述分区的起始磁头。BP2和3启始柱面和扇区此处将叙述分区的启始柱面和扇区。6个位在BP2中0到5位,将作为启始扇区。10个位在BP2中的6和7位,在BP3中的0到7的将作为启始柱面。BP4系统ID号此处叙述文件系统类型。如果分区大小是少于32680个扇区,它将被记录0X01。如果少于65536个扇区,它将被记录0X04。否则,它将被记录0X06。BP5终止磁头此处记录终止磁头。BP6和7终止柱面和扇区此处记录终止柱面和扇区。6个位在BP6中的0到位5位作为结束扇区。10个位在BP6中的位6和7位,在BP7中的0到7位作为结束柱面。BP8到11RELATIVESECTOR此处叙述这此分区的起始扇区之前存在的数目。BP12到15总扇区此处记录总扇区数量。11申请分配表FATFAT将包含一个格式ID号和一些项目,每个使用者区域的指示簇。这些项目连续的将是有限的出发由于2而且项目数目将和相等对应的簇的数目。每个项目在FAT中将指示对应的簇状态。FAT项目将用来识别被分派到每个文件的簇组。314红外遥控接收电路基本接收电路,如图314,基本发射电路,如图315图314图315PT2262/PT2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/PT2272最多可有12位A0A11三态地址端管脚悬空,接高电平,接低电平,任意组合可提供531441地址码,PT2262最多可有6位D0D5数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。编码芯片PT2262发出的编码信号由地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHZ的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHZ的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHZ的高频12发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100的调幅。PT2262/PT2272特点CMOS工艺制造,低功耗外部元器件少RC振荡电阻工作电压范围宽2615V数据最多可达6位地址码最多可达531441种315LCD液晶显示接口电路基本电路如图图316图316LPH7366是NOKIA公司生产的可用于5110、6150、6100等系列移动电话的液晶显示模块,国内厂家也生产有类似的兼容产品。该产品除应用于移动电话外,也可以广泛应用于各类便携式设备的现实系统。与其它类产品相比,该模块具有以下特点8448的点阵LCD,可显示4行汉字采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线只有9条,支持多种串行通信协议(如AVR单片机的SPI、MCS51的串口模式0等),传输速率可高达4MBPS,可全速写入显示数据,无等待时间。可通过导电胶连接模块与印制板,而不用连接电缆用模块上的金属钩可将模块固定到印制板上面,因而非常便于安装和更换。LCD控制器/驱动芯片及绑定到LCD晶片上,模块的体积很小。采用低电压供电,正常显示时的工作电流在200UA以下,且具有掉电模式。13316FM收音模块电路基本电路如图图317图317TEA5767特点高灵敏度内置集成低噪声输入运放FM混频转换,在不同频段之间可以自由转换RFAGC自动增益控制LC调谐振荡器和低成本固定芯片电感器无需外部鉴相器,内部集成了FM解调器晶体参考频率振荡器,振荡频率可操作在32768KHZ晶体和65MHZ晶体频率PLL合成调谐系统IIC总线模式和3线总线模式可以选择,由芯片BUSMODE引脚控制7位IF计数器有总线输出软静音功能TEA5767内置了主频高达75MHZ的数字信号处理器,实现384KBPS/48KHZ的MD级高品质MP3音乐文件回放,加上拥有一般MP3播放器难以企及的高保真回放线路(信噪比高达95DB,THD总谐波失真率0。05同时非常省电。TEA5767中的UESR模式给人的印象最为深刻,感觉有点像艾丽和中的3D效果,能很好并且充分表现出各个音色的质地,让人听起来十分的舒服,音质个人主观意想占比较大的份额,有的人喜欢低音偏重些,有的人喜欢高音明朗些,所以对于音质的探讨还是自己亲身体验一下是最好的选择,不过话说回来TEA5767给人的印象十分出色,很对的起他自身的价值高清晰度FM广播支持移动存储,多种音乐格式MP3,WMA;录音功能非常出色,可以直接对输入音频进行MP3编码,也就是说即使你没有PC机也可以从CD机/卡带机等音频设备上14获得动听的音乐,还支持FM转录功能AB复读;更具个性化设计是可自定义设计开机画面。317万年历时钟电路基本电路如图图318图318DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1RES复位2I/O数据线3SCLK串行时钟时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信DS1302工作时功耗很低保持数据和时钟信息时功率小于1MWDS1302是由DS1202改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应VCC1为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域下。DS1302时钟芯片的特点实时时钟具有能计算2100年之前的秒分时日日期星期月年的能力还有闰年调整的能力318位暂存数据存储RAM串行I/O口方式使得管脚数量最少宽范围工作电压2055V工作电流20V时,小于300NA读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式8脚DIP封装或可选的8脚SOIC封装根据表面装配简单3线接口与TTL兼容VCC5V可选工业级温度范围4085与DS1202兼容在DS1202基础上增加的特性对VCC1有可选的涓流充电能力15双电源管用于主电源和备份电源供应备份电源管脚可由电池或大容量电容输入附加的7字节暂存存储器32软件部分MP3播放系统的硬件已经设计完成,但是没有软件的支持,硬件就不能正常工作,形同虚设。软件是硬件的灵魂,控制着整个硬件系统的运行。整个MP3的软件涉及的方面比较多,是一个比较复杂的系统,对软件的编写采用模块的设计思想,将整个软件系统逐步划分为子系统,实现预期功能。对整个系统来说,按其与硬件是否直接相关,可以把软件划分为两个大部分与硬件相关的底层驱动软件子系统;与硬件无关的应用软件子系统。当进行模块化程序设计时,首先要明确模块的功能作用,将其划分为一个个独立的功能模块,封装为函数,供给其他模块调用。底层驱动主要实现一些基本的底层功能,如硬件初始化、与硬件密切相关的时序函数等。应用层实现整个软件系统的应用功能函数。321系统软件框图本系统的主控制程序通过调用各个模块的相关函数,实现整个系统的各个功能。系统开机之后,第一步进行的是对系统各个硬件模块的初始化;第二步是对FAT文件系统的初始化,智力要判断是否初始化成功,如果不成功,则系统会一直检索SD卡,直到检测到能被系统识别的卡和文件系统为止;第三步是查找系统文件,本系统启动,需要系统文件FONT12FON和UNITOGBBIN两个系统文件,第一个是系统的字库文件,第二个是UNICODE码转GBK码的转换码表。系统只有在找到这两个文件之后才能启动。在查找系统文件成功之后,系统会加载启动界面,完成系统启动。启动之后,系统等待用户输入,在用户按下遥控之后,系统就根据用户的选择执行相应的功能。在功能完成之后又会加载系统主界面,回到启动使得界面,再次等待用户输入。如图图32116图321322音频解码程序设计VS1003驱动框图如图图322。在开始播放音乐之前,先要对VS1003进行一系列的初始化,完成对VS1003的基本设置,然后才能正确的播放音频文件。在系统启动时会对VS1003初始化。第一步初始化MCU与VS1003相连接的I/O口,接着对VS1003进行硬件复位和软件复位,之后初始化VS1003的内部寄存器,之后就可以向VS1003写数据,进行音乐播放的功能了。VS1003I/O口初始化硬复位VS1003软复位VS1003初始化VS1003内部寄存器VS1003写命令VS1003写数据VS1003读数据外部程序调用图322VS1003解码芯片是通过SPI实现数据通信的,与SD卡公用一个SPI接口,通过不同的片选信号,分时复用。VS1003通过7根线与单片机进行通信,即XRST、XDCS、XCS、DREQ、SCK、MOSI、MISO。在默认情况下,数据将在SCLK的上升沿有效(被读入VS1003),一次需要在SCLK的下降沿更新数据,并且字节发送以MSB在先。第一步,I/O口初始化,这部分初始化MCU与VS1003相连接的I/O口,并初始化AVR的SPI的相关寄存器,实现代码如下VOIDMP3_PORT_INITSPI_INITMP3_DDR|MP3_DATA_CS|MP3_CMD_CS|MP3_DATA_RESTMP3_DDRMP3_PORT|MP3_DATA_CS|MP3_CMD_CS|MP3_DATA_REST|MP3_DATA_REQVOIDSPI_INITDDRB0XBFSPCR0X53SPSR0X0117第二步,对VS1003进行复位和寄存器的设置,这几个步骤在系统启动的时候会执行一遍,在音乐开始播放的时候,也要执行这个步骤,来清除上次的设置,并初始化相关寄存器。DEFINEMP3RESETMP3_PORTDELAY_MS10MP3_PORT0XFF硬复位很简单,只要把VS1003的RST引脚拉低一定时间(135MS,12288MHZ),然后再置高电平就实现了硬复位。这里采用宏定义的形式来实现VOIDVS1003_RESETWHILE1IFPINBBREAKRESETDECODETIMEVS1003_CMD_WRITE0X00,0X0804/DELAY_US15000软复位先等待VS1003空闲,然后设置SCI_MODE0X00寄存器的BIT2为1,实现VS1003的软复位。这里在软复位之前,还对VS1003的解码时间进行了清空操作,以确保上次解码的时间被清除掉。VOIDVS1003_INITUCHARTIFVS1003EPM015FORT0T5TVS1003EPMTVS1003RAMTVS1003_CMD_WRITE0X00,0X0800SET1003VS1003_CMD_WRITE0X03,0X6000在硬复位和软复位之后,就开始对VS1003的内部寄存器进行设置包括对模式(0X00)、音量(0X0B)、音调(0X03)、时钟(0X03)的设置。此函数中的VS1003EPM和VS1003RAM数组是保存音效的寄存器数组。前者保存在EEPROM,使得用户设置的音效再掉电后可以保存;后者保存在SRAM中,使得用户可以反复操作,两者之间是相互映射的。音效和音量的设置通过函数SET1003来实现。以上介绍了VS1003的初始化过程,在完成以上的操作后,就可以向VS1003中直接放入音频数据了,然后VS1003就会开始音频解码,并且播放音乐了。18323存储部分驱动程序设计上电延时等待上电完成发送74个脉冲发送复位命令CMD0发送激活命令CMD1关CRC,设置扇区字节数结束图323SD卡存储了系统文件非常重要的信息,如果SD卡驱动出现问题,将直接导致系统崩溃(无法开机),所以,SD卡的驱动对系统来说是至关重要的,只要SD卡成功地初始化了,后面的处理就相对简单,所以关键在于初始化。SD卡有两个可选的通信协议SD模式和SPI模式。SD模式是SD卡标准的读/写方式,选择SPI模式读取SD卡。因为SD卡在上电初期自动进入SD总线模式,在此模式下向SD卡发送复位命令CMD0。如果SD卡在接收复位命令过程中CS低电平有效,则进入SPI模式,否则工作在SD总线模式。如图图323在SD卡初始化时注意SPI时钟频率一定不要超过400KHZ,在初始化之后则可以提高到25MHZ。具体的SD卡初始化函数如下VOIDSD_INITVOIDUCHARRETRY,TEMPUCHARIMMC_PORTSPI_SETSPEED0DELAY_US250FORI0I30/高电平时间过长,则退出处理程序GICR|11/接受一位数据IFK8ADDRIADDRI|0X80/高电平时间大于056,则为数据1K0/计时清零325LCD显示接口驱动程序设计如图图325。是LCD显示程序的本分框图。21LCD模块初始化字符显示函数汉字显示函数图片显示函数清屏函数外部程序调用图325LCD显示是本系统人机交互界面的核心部分,本系统绝大部分信息都是通过LCD来实现与用户交互的,而且在系统调试的时候,LCD显示的实现也能该系统调试带来很大的方便。在系统开机之后,将会LCD模块初始化,在初始化之后,LCD模块的各种高层应用函数就都可以调用了。通过外部程序调用这些高层应用函数,就输出所要显示的各种信息了。该LCD通过5根线与单片机通信,控制简单。第一步实现的就是对LCD的初始化,否则其他高层应用函数都无法实现。LCD初始化代码如下VOIDLCD_INITDDRC|0XFCLCD_SDA0LCD_SCK0LCD_RS0LCD_RST1LCD_CS1LCD_LED0LCD_RST0DELAY_MS10WIRTE_COMD0XAEWIRTE_COMD0XA1WIRTE_COMD0XC8WIRTE_COMD0XA2WIRTE_COMD0X2FWIRTE_COMD0X22WIRTE_COMD0X81WIRTE_COMD0X18DELAY_MS10CLEARDISPLAY4从上面的程序可以看出第一步,现对LCD与单片机相连的接口初始化,把这些接口全部设置成输出;第二步,对LCD进行硬件复位(拉低RST线),在硬复位之后,开始对LCD模块内部的寄存器进行操作,完成LCD的一系列初始化过程;第三步,开启LCD的显示,然后执行清屏操作,这样就完成了LCD的初始化。在完成LCD的初始化之后,关于LCD的各种高层应用函数就都可以操作了。关于字符显示函数,函数先设置字符显示地址,然后写入点阵数据,从而实现字符的显示。ASC2为ASCII字符的点阵数据存储数组。该数组被定义在FONTH中。参数CHR要减去32,因为32是第一个ASCII字符“空格”的ASCII编码,对输入的字符必须减去这个偏移量,得到在ASC2数组中的绝对地址,从而去得所需要的点阵数据。在取得点阵数据之后,就把这些数据按顺序写入LCD的GRAM中,从而实现字符的显示。字符显示函数的实现代码VOIDSHOW_CHARUNSIGNEDCHARX,UNSIGNEDCHARY,UNSIGNEDCHARCHR22UNSIGNEDCHARTSET_PAGE2XSET_COLUMNYFORT0T76000IFCH_NUM30CH_NUM0IFCH_CHO30CH_CHO0SCH_NUMCH_NUMSCH_CHOCH_CHOIFJPUSJPSSENDDATA3JPUSSENDDATA40X00RETURNSET5767TEA5767_INIT实现了对该模块的初始化,SENDDATA数组用来保存电台频率、频段PLL等设置参数(READDATA用来保存从TEA5767读到的参数)。在该函数中调用了SET5767函数,这个函数主要是将数据按照TEA5767规定的格式送入,使对TEA5767的配置生效。自动搜台程序设计思想先把频率设置到最低点,然后通过调用前后搜台的函数,当每搜到一个满足条件的电台就保存下来,然后继续搜台,直到频率的最高点才退出,这样就实现了自动搜索电台的功能了。327音乐播放程序设计先通过文件系统浏览找到所需要播放的音频文件,然后通过用户输入来确定是否播放。在播放音频文件时,用户可以设置播放模式、歌词显示、音调调节、暂停、快进和换曲的操作。在执行完这些操作之后,又回到播放状态。如图图32724文件系统浏览播放音频文件NY播放播放模式歌词显示音效调节暂停快进换曲执行操作返回图327音乐文件查找设计思路因为要浏览文件系统,具体到要浏览每个系统,每次浏览文件系统都要查找的文件类型都是已知的。比如找音乐文件,会查找的文件类型就是音频文件,其它类型的文件可以不理会。但是如果在这个文件夹内还有其他的文件夹,也要查找出来,因为这些文件夹内可能存在音频文件。所以,把文件夹也包括在查找范围之内,这样,每次查找一个目录都需要查找至少两种类型的文件,把这两种类型的文件按照其在文件夹中的先后顺序统一编号,方便查找。系统提供4个文件的存储空间(液晶一次只能显示4个文件名)。所以,每次只要查找4个有用文件即可。第一次查找时,先查找文件夹,当所有的文件夹被炒找完之后,在查找目标文件,这样就实现了文件的浏览。每查找到一个文件,要记录的参数很多,在文件查找时有两个参数要用到文件类型(TYPE)和文件在目录下的索引号(FILEINDEX)。文件类型告诉我们下次查找的是什么类型的文件,文件搜引号告诉我们下次从哪个地址开始查找。STRUCTDIRENTRYMUSICINFO/音乐文件的信息,32字节短目录记录,包含短名称及其他/STRUCTDIRENTRYLRCINFO/歌词文件的信息,32字节的目录记录短,短名称及其他/IFFIX_DIRECTORYDEFINEMUSIC_PATHENDIFDEFINELRC_PATH“LRC“VOIDBOOTLOADERENTRYVOID0XF800UINT16TOTALSONGS/歌曲总数/UINT8TYPE/当前歌曲的文件类型,MP3播放的WMA或WAV中寻/UINT8LRC0/GLOABLE变量来表明一首歌曲是否有歌词文件,1表示有/UINT8HANZIENABLE0/GLOABLE变量来表明的固件是否存在,1表示存在/STRUCTLRCSTRUCT_SSTRUCTLRCSTRUCT_SNEXT/下一个节点/UINT32TIME/TIME/25UINT16EEADDRSTRUCTLRCSTRUCTHEAD_SSTRUCTLRCSTRUCT_SHEADER/指针的时间标记的第一个节点结构/DEFINETI_LEN32UINT8TITLETI_LEN/标题/DEFINEAR_LEN16UINT8ARTISTAR_LEN/艺术家/UINT16OFFSET/OFFSET/UINT8SIGNDEFINEDEBUG0/用于调试宏,如果一抛出调试信息将显示在UART/STRUCTLRCSTRUCTHEAD_SLRCSTRUCTHEAD/GLOABLE结构变量来记录信息的抒情/DEFINEMAXITEM80UINT8LRCBUFFERSIZEOFSTRUCTLRCSTRUCT_SMAXITEMDEFINEMAXLRCDATSIZE650/SRAM的最大数据大小,另将存储在EEPROM/UINT8LRCDATBUFMAXLRCDATSIZEUINT8TRACK128/STROE的歌曲信息(置位表示已播放的歌曲)/VOIDCLEARTRACKINFO/CLEARE阵列轨道128/UINT8IFORI0IFUSEBITS”读取芯片中熔丝位实际状态后,再使用“ALL”选项。(4)新的AVR芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。(5)AVR芯片加密以后仅仅是不能读取芯片内部FLASH和E2PROM中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将FLASH和E2PROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其它熔丝位的状态。(6)正确的操作程序是在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的锁定位。(7)使用ISP串行方式下载编程时,应配置SPIEN熔丝位为“0”。芯片出厂时SPIEN位的状态默认为“0”,表示允许ISP串行方式下载数据。只有该位处于编程状态“0”,才可以通过AVR的SPI口进行ISP下载,如果该位被配置为未编程“1”后,ISP串行方式下载数据立即被禁止,此时只能通过并行方式或JTAG编程方式才能将SPIEN的状态重新设置为“0”,开放ISP。通常情况下,应保持SPIEN的状态为“0”,允许ISP编程不会影响其引脚的I/O功能,只要在硬件电路设计时,注意ISP接口与其并接的器件进行必要的隔离,如使用串接电阻或断路跳线等。(8)当你的系统中,不使用JTAG接口下载编程或实时在线仿真调试,且JTAG接口的引脚需要作为I/O口使用时,必须设置熔丝位JTAGEN的状态为“1”。芯片出厂时JTAGEN的状态默认为“0”,表示允许JTAG接口,JTAG的外部引脚不能作为I/O口使用。当JTAGEN的状态设置为“1”后,JTAG接口立即被禁止,此时只能通过并行方式或ISP编程方式才能将JTAG重新设置为“0”,开放JTAG。(9)一般情况下不要设置熔丝位把RESET引脚定义成I/O使用(如设置ATMEGA8熔丝位RSTDISBL的状态为“0”),这样会造成ISP的下载编程无法进行,因为在

温馨提示

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

评论

0/150

提交评论