基于ATmega16的MP3设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第1页
基于ATmega16的MP3设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第2页
基于ATmega16的MP3设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第3页
基于ATmega16的MP3设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第4页
基于ATmega16的MP3设计与实现(程序代码+任务书+说明书+外文翻译+演示文稿)_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

基于ATmega16的MP3设计与实现摘要本课题实现了基于ATmega16的MP3设计与实现。论文通过自顶向下的方法从硬件到软件深入分析系统的需求,介绍了实现系统的总体规划,并分别阐述各模块的实现细节CH375通过CH375子程序库存取U盘并智能读取音频文件(MP3、WMA格式等)的方法、VS1003音频解码程序的方法、显示屏显示音频文件歌曲名等信息的方法以及通过按键控制播放曲目和音量的方法。U盘中的音频文件智能识别,存放音频路径到固定文件,并可以根据给定偏移量读取,最后声音的播放通过扬声器和耳机进行,基本实现了音乐播放器智能播放U盘中所有音乐的功能,并能根据按键控制歌曲和音量。关键字:ATmega16;MP3播放器;CH375U盘读写;VS1003;ISoftwareDesignofMusicPlayerBasedonATmega16MCUAbstractThistopichasrealizedbasedonATmega16MP3designandimplementation.Papersfromhardwaretosoftwarebyusingthemethodoftop-downanalysisthedemandofthesystem,thispaperintroducestheimplementationsystemofplanning,andexpoundstheimplementationdetailsofthevariousmodulesrespectively-CH375throughCH375subroutinelibraryaccessUdiskandintelligentreadingtheaudiofile(MP3,WMAformat,etc.)method,methodsofVS1003audiodecodingprocedures,screendisplayinformationsuchasaudiofilessongsnamemethod,andthroughthebuttoncontrolplaylistsandvolumemethod.Udishintheaudiofileintelligentidentification,storetheaudiopathtothefixedfiles,andcanbereadaccordingtothegivenoffset,thelastsoundbroadcastthroughthespeakersandheadphones,themusicplayerhasbeenbasicallyachievedintelligentplaythefunctionoftheusbdriveallmusic,andcanaccordingtothesongsandthevolumebuttoncontrol.Keywords:ATmega16;MP3player.CH375Uplate,speaking,readingandwriting;VS1003;目录摘要.IAbstract.II第一章绪论.11.1应用背景与意义.11.1.1背景.11.1.2意义.1第二章理论分析与方法论证.32.1理论分析.32.1.1ATmega16开发板和下载器.32.1.2MP3解码芯片.42.1.3USB总线设备接口芯片.52.1.4存储介质.52.1.5液晶显示屏.62.1.6控制设备.62.2方法论.6第三章软件开发平台.73.1编译器的选择.73.2AtmelStudio6简介.73.3下载器软件工具.8第四章系统设计.104.1硬件系统总体设计方案.104.2ATmega16处理器介绍.104.3ATmega16与外部芯片的连接.114.3.1ATmega16与VS1003的连接.114.3.2ATmega16与CH375b的连接.124.3.3ATmega16与LCD12864的连接.134.3.4ATmega16与按键的连接.14第五章系统软件设计.165.1需求分析.165.1.1数据流图.165.1.2数据字典.195.2软件总体设计.215.2.1结构化总体设计.215.2.2软件总体结构图的构建.215.3软件详细设计.225.3.1CH375管理模块.225.3.2VS1003管理模块.255.3.3LCD12864管理模块.285.3.4保存U盘所有音频文件路径名模块.295.3.5按指定条件读取新生成文件模块.315.3.6MP3播放模块.315.3.7液晶显示模块.325.3.8按键处理模块.335.3.9主模块.335.4系统测试.345.4.1LCD12864显示模块测试.345.4.2CH375读写模块测试.355.4.3VS1003播放模块测试.375.4.4按键控制模块测试.375.4.5CH375读写模块和VS1003播放模块联合测试.375.4.6综合测试.37结论.39参考文献.40致谢.41外文原文.42中文翻译.460第1章绪论1.1应用背景与意义1.1.1背景1998年韩国世韩(SEAHAN)推出了世界上第一台MP3MPManF10,在世韩为人们带来惊喜之后,美国的美国的帝盟(Diamond)公司挑头,于1998年底推出了RioPMP300,这是第一个让全世界都印象深刻的MP3。MP3(MPEGAudioLayer3)是采用国际标准MPEG(MovingPicturesExpertsGroup,动态图象专家组)中的第三层音频压缩模式,对声音信号进行压缩的一种格式。MPEG声音压缩算法是一种通用的声音编码技术,它对音源的性质没有作任何假设,而是利用人耳的听觉特性对声音进行压缩。MPEG音频层根据压缩质量和编码复杂程度划分为三层,即Layer1、Layer2、Layer3,且分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频编码的层次越高,编码器越复杂,压缩率也越高,MP1和MP2的压缩率分别为4:1和6:1-8:1,而MP3的压缩率则高达10:1-12:1。也就是说,一分钟CD音质的音乐,未经压缩需要10MB的存储空间,而经过MP3压缩编码后只有1MB左右。跨入21世纪,MP3的高速发展使人们不再满足于闪存那以MB为单位的容量。2000年1月,音频硬件领域的老大哥创新推出了世界第一台2.5寸硬盘MP3NOMADJukebox,它采用了富士通6.4GB的2.5英寸硬盘作为存储介质,可以存储相当于100多张CD的MP3音乐,容量远远超过了当时的闪存MP3,不过体积也非常惊人,竟比一般的CD随身听还要大,其外形也跟CD随身听非常相似。虽然采用硬盘介质,但为了保证在运动时音乐能流畅地进行播放,创新为其设计了可支撑5分钟的8MB防震缓存,这样即使在外出及移动的条件下也不会出现音乐跳轨现象。当日历翻到2014年这一页的时候,MP3随身听已经经历了数年的发展,而随身听市场的竞争亦趋于白热化,几乎每个星期甚至每天都会有新品MP3的推出,其发展的速度实在惊人!但一体化的设计导致存储容量固定,如果想下载更多的歌曲还得重新购买新的产品,造成了重大的浪费,另一方面,一体化又限制了MP3播放器在其他领域的应用,比如在一些固定场所使用MP3(非便携式),不方面拆卸。于是,将存储器和播放器分离成为MP3的另一个发展方向。1.1.2意义基于ATmega16的音乐播放器应用的方面特别广,不仅便携简单,而且在一些特殊环境,如车载MP3,浴室MP3,这些不易移动的产所有很广泛的用途,别且可以作为很多系统的辅助功能,如智能家具,智能手机的一个功能模块。本论文设计的MP3在于播放器与存储器相分离的思想,U盘在市场上很容易买到,支持常用的文件系统FAT12,FAT16以及FAT32,并且支持容量达100G,只要手上有U盘,而且有MP3等1音频格式的文件,那么就可以使用本系统所提供的USB接口,直接插上去就可以播放音乐,同时,通过显示屏可以知道当前播放的歌曲,还可以通过按键直接控制音量和歌曲,比起过去用flash保存的音乐要方便的多。最后,对我们大学生而言,提高了解决问题的能力,增强了动手能力,熟练了一些常见电子芯片的使用。2第2章理论分析与方法论证2.1理论分析针对MP3音乐播放系统,要选择合适核心控制芯片和外部芯片来配合实现,因为本课题要求基于ATmega16的控制芯片,所以核心控制芯片选择ATmega16,下面分别介绍芯片选用原则和最终芯片和模块的确定。2.1.1ATmega16开发板和下载器控制芯片已经确定为ATmega16,那么如何将程序下载到单片机中?一种方法就是自己设计基于Atmega16的最小系统和必要的外围电路;第二种方法就是利用已经设计好的开发板,用现成的工具,直接下载到单片机,而且现在的开发板都会为用户提供外围接口,使用户能够根据自己的需求去开发其它系统。第一种方法开发周期较长,所以采用第二种方法,选择用现成的开发板。本课题选用由天翔电子公司设计的AVR开发板,如图2-1,下载器使用由轩微科技出品的USBISP,不用JTAG的的原因是本系统占用的I/O会比较多,而JTAG会占用PC口,影响实验结果,USBISP有个缺点是不具备仿真功能,如图2-2。图2-1AVR开发板3图2-2USBISP下载器2.1.2MP3解码芯片首先联想到能否用ATmega16单片机来直接对MP3音频文件直接解码?答案是不行的,因为对单片机而言,数字处理速度和资源都远远达不到,所以只能简介通过外部解码芯片来实现解码,并播放歌曲。MP3解码芯片常见的有VS100X系列、SAA775X系列、STA01X系列等;SAA775X系列是MP3播放器解码芯片组功能最全,效果最好的芯片,但价格较贵;STA01X系列需要外加DAC,使用起来多有不便;VS100X系列自带DAC输出功能,而且能解码的音频格式也比较多,同时价格合理。经过比较,选用VS1003作为解码芯片,该芯片支持MP3、WMA、WAV、MIDI、等格式的解码,而且自带DAC输出;同时还可以调节音量、高低音等,更重要的是它还具有MIC功能,如需要还可以实现录音功能。因此,选用VS1003作为本课题音频解码芯片。如图2-3为VLSI公司生产的VS1003芯片图,2-4为由天翔电子公司设计的接入外围电路只提供与控制芯片接口的MP3播放器。图2-3VS1003图2-4MP3播放器(模块)42.1.3USB总线设备接口芯片USB总线设备接口设备较多较杂,在本课题中选用有南京沁恒公司生产的CH375b芯片,它是全速USB设备接口,兼容USBV2.0,即插即用,外围器件需要晶体电容,支持HOST主机方式和DEVICE设备方式。在本地端,CH375b具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU等控制器的系统总线上。在USB主机方式下,CH375b还提供了串行通信方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU等相连接。CH375b的USB主机方式支持各种常用的USB全速设备,外部单片机/DSP/MCU可以通过CH375b按照相应的USB协议与USB设备通信。单片机可以通过CH375b读写U盘中的数据,CH375提供了U盘文件级子程序库单片机可以直接调用子程序读写U盘中的文件数据,硬件上只需要在原单片机系统中增加一个CH375芯片,综合成本较低。CH375的U盘文件级子程序库支持常用的FAT12、FAT16和FAT32文件系统,支持容量高达100GB的U盘。如图2-5为CH375b芯片,图2-6为有天翔电子公司设计的接入外围电路只提供与控制芯片接口的CH375U盘模块。图2-5CH375B图2-6CH375U盘模块2.1.4存储介质MP3播放器需要大容量的存储器来存放歌曲,可以选择Flash芯片存储、SD卡、U盘等。如果选用Flash,则整个系统需要较多的I/O端口来读取,更重要的一点,也是本次课题要解决的一个问题,那就是整个系统的容量就被固定了,扩容存在空难;而U盘和SD卡都是不错的选择,并且U盘和SD卡均容易购买的到,同时价格较为低廉,所以,存储部分选用U盘读取来实现。52.1.5液晶显示屏为了兼顾成本,选择普通单色液晶显示屏,常用的有LCD1602和LCD12864,在本课题中选择LCD12864,因为LCD12864本身带有字库的功能,系统不需要添加外部字库文件,就可以实现曲目等有效信息汉字显示;而LCD1602只有常见的ASCII符号,要想显示中文必须添加外部字库文件。如图2-7为液晶LCD12864。图2-7LCD128642.1.6控制设备控制设备选用键盘,但是键盘又分为编码键盘和非编码键盘,键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘,而靠软件编程来识别的称为非编码键盘;由于成本低廉和结构简单考虑,在本次课题中选择非编码键盘。2.2方法论MP3播放器系统以ATmega16为控制核心,不仅要管理USB总线的通用接口芯片CH375b、MP3解码芯片VS1003b、LCD12864液晶显示屏和按键的处理,而且还管理USB存储设备中的文件系统,查找文件,写文件等等。存储器里的媒体文件首先要查询,查询到的文件确定是音频文件(MP3等)后,把MP3路径名写到固定文件中,将所有的音频文件路径名写到固定文件中后,按照文件偏移,读取固定文件中的音频文件路径名,根据路径名,读取音频文件到MCU的RAM中,然后又被送到解码芯片中,解码后的音频数据被还原成模拟音频,再由扬声器传出。由于ATmega16本身不支持USB接口功能,所以MCU无法直接与U盘完成数据传输的功能,存储设备需要通过自身的接口与CH375b相接。其它芯片是通过普通I/O端口连接的。6第3章软件开发平台在上一章中介绍了硬件设备的选择,那么我们知道,只有硬件而没有软件的机器就是一个没有灵魂的电人,所以,在这一章中介绍软件的开发平台,使没有灵魂的电人让它有自己的思想。3.1编译器的选择我们知道,机器只认识机器代码,所以要将我们所编写的程序翻译成二进制机器码必须要使用编译器。由于单片机内存和程序存储空间非常有限,好的编译器可以优化源代码,使程序的运行消耗资源小、效率提高,所以选择一个性能优越的编译器是必须的。AVR编译器非常多,常见的有ICCAVR,GCCAVR,IARAVR等;ICCAVR编译器是市面上教科书使用它作为AVR例程的较多,集成代码生成向导,虽然它的各方面性能均不是特别突出,但使用较为方便,一般作为教学方面的应用;GCCAVR,GCC是Linux的唯一开发语言,GCC编译器优化程度可以说是目前世界上民用软件中做的最好的,另外,它有一个非常大的有点,免费!在国外,使用它的人几乎是最多的但,相对而言,它的缺点是操作比较麻烦;IAR实际上在国外比较多的人使用,但它的价格较为昂贵,所以,中国大陆内,使用它的开发人员比较少,只有习惯用IAR的工程师才会去使用它。综上分析,使用GCCAVR是非常不错的选择。3.2AtmelStudio6简介Atmel公司在2012年推出广受欢迎的集成开发环境(IDE)的最新版ATmelStudio6,支持基于Atmel32位ARMCortex-M系列与Atmel8/32位AVR系列的处理器(MCU)。AtmelStudio6是免费的IDE,提供专业质量的开发工具,同时配有Atmel软件框架,因而显著降低了创建新设计的成本。利用Atmel软件框架,设计人员可以获得经验证的大型免费源代码库-包括近1000个设计样例。利用此IDE更快的产品开发周期,配合更低的片上闪存成本与速度更快的MCU,正在推动更多的设计工程师以C和C+语言编写代码,而不是使用汇编代码。AtmelStudio6使得工程师能够轻易编写、构建和调试其C/C+和汇编代码,还能够以无缝方式集成具备辅助代码编写功能的编辑器、用于快速创建新项目的向导工具、一个GNUC/C+编译器、一个功能强大的仿真器,以及适用于爱特梅尔所有Cortex-M系列和AVR处理器的编程器与在线调试器的前端可视化工具。目前用于AVR设计的模拟器通过提供准确的AVRMCU模型来加快应用开发。仿真器不仅为CPU和中断进行仿真,而且还可以为片上I/O模块仿真,无需实际的硬件即可进行全面的应用开发。基于上述AtmelStudio6各种优势,在本课题中使用此IDE进行代码编辑和程序编译。AtmelStudio6的代码编辑继承了VisioStudio2010的风格,所以编辑非常7方便,比如自动补全功能,在目前一般单片机IDE是做不到这一点的!在上述的简介中也提到AtmelStudio6自带编译器为GNUC/C+编译器,也就是上一届在AVR系列中的GCCAVR,这就意味着LinuxGCC编译器直接移植到此IDE中,继承了了GCC优化程度高,运行效率高等优点。如图3-1为AtmelStudio6的工程界面。图3-1Atmelstudio6工程界面3.3下载器软件工具经过上两节的论述,现在已经具备把写的C源程序编译成ATmega16单片机可以识别的机器语言,但是,还有一个问题,如何将在PC机上交叉编译好的hex(机器码,8进制)与单片机产生联系?也就是将程序下载到单片机上,让其运行,那么这就要用到下载器,上一章已经介绍了USBISP下载器的硬件,那么下载不仅要有硬件提供支持,还要有相应的软件工具。为了适合开发板的下载需求,在本课题中使用轩微编程器控制平台来对ATmega16来进行下载,如图3-2为轩微编程器控制平台界面。8图3-2下载器工具9第4章系统设计前两章已经为系统提供了纯硬件支持和软件工具,接下来将对各个模块建立起与主控芯片ATmega16的联系,并对系统进行整体的软硬件设计。由于ATmega16引脚在控制寄存器的控制下具有不同的功能,在这里对ATmega16的引脚做一个约定:在接下来作的图中,除4-1,模块与ATmega16连接的引脚只具备一个功能,而不具有其他功能,如有括号则说明使用括号中的功能,如图4-3,PD4只具有输入输出功能,而PB5则具有SPI总线的功能,因为括号中已经标明。这样就不会造成误解。4.1硬件系统总体设计方案ATmega16作为控制中心,它负责直接或间接控制所有的外围模块;MP3播放器系统需要音频文件,那么ATmega16通过直接给CH375发送数据和命令,间接的从U盘中取得音频数据;获得音频数据后ATmega16再把数据传送到VS1003b,当然,还得把获得的文件名信息传送给LCD12864液晶,这样周而复始,达到播放MP3的目的;本课题还提供四个按键对播放歌曲和音量进行控制,是单向的控制系统,已达到灵活控制系统,满足用户的需求。如图4-2为MP3系统的总体规划图。图4-1MP3系统总体规划4.2ATmega16处理器介绍ATmega16是基于增强的AVRRISC结构的高性能、低功耗8位CMOS微控制器。由10于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz。ATmega16拥有16K字节的系统可编程Flash,512字节的EEPROM,1K字节的片内SRAM,并且内部集成很多总线。如图4-2为ATmega16的引脚图。图4-2ATmega16引脚4.3ATmega16与外部芯片的连接4.3.1ATmega16与VS1003的连接表4-1简要列出了VS1003b与ATmega16直接联系的引脚功能说明,图4-3为芯片引脚连接图,连接具备某些原则,首先VS1003b的SI和SCLK必须和ATmega16的MOSI和SCK对应连接,因为在对VS1003b进行读写数据时会用到SPI总线,而其余四个控制读写的引脚可随意分配到ATmega1632个普通的I/O,但是出于和后续的三个模块相互间不产生影响,所以将剩余的四个控制引脚按图4-3连接。表4-1VS1003b的主要引脚功能说明管脚管脚类型功能SI输入串行输入SCLK输入串行总线的时钟XCS输入片选输入,低电平有效XREST输入低电平有效,异步复位端DREQ输出数据总线,输入总线XDCS输入数据片选端/字节同步11图4-3ATmega16与VS1003硬件连接4.3.2ATmega16与CH375b的连接表4-2简要列出了CH375b与ATmega16直接联系的引脚功能说明,图4-4为芯片引脚连接图;CH375b有两种读写方式,一种是串行读写,另一种是并行读写,串行读写灵活且比较节省引脚,而并行却相反,但是效率高;由于天翔电子的这款U盘模块没有提供串口读写数据的接口,所以本课题只能用并行读写数据,也就是用更多的引脚去完成对应的功能,如果不使用中断的方式,那么理论上这13个引脚可以与ATmega1632个普通的引脚任意连接,在本课题中,中断请求信号采用的是查询方式,所以也不需要接在ATmega16外中断引脚上。为了不与其它模块相互冲突,则采用图4-4的连接方式。表4-2CH375b的主要引脚功能说明管脚管脚类型功能DB7-DB0双向三态8位双向数据总线,内置弱上拉电阻RD输入读选通输入,低电平有效,内置弱上拉电阻WR输入写选通输入,低电平有效,内置弱上拉电阻CS输入片选控制输入,低电平有效,内置弱上拉电阻INT输出中断请求输出,低电平有效A0输入地址线输入,区分命令口与数据口,内置弱上拉电阻,当A0=1时可以写命令,当A0=0时可以读写数据12图4-4ATmega16与CH375b硬件连接4.3.3ATmega16与LCD12864的连接表4-3简要列出了LCD12864与ATmega16直接联系的引脚功能说明,图4-5为芯片引脚连接图;ST7920是LCD12864的控制器,也可支持串行传输和并行传输,在本课题中仍然采用并行的方式读写数据,如图4-5,从图中可以看出,LCD12864的并行数据传输接口和CH375b的控制端口用冲突,但是不会收到影响,因为当LCD12864在读写数据时,控制CH375b的引脚电频可能会在改变,但却不会给CH375b传送数据,而当CH375b在读写数据时LCD12864的控制端口处于不使能读写数据状态,所以两者不会造成紊乱,系统会很顺利的执行。表4-3的主要引脚功能说明管脚管脚类型功能DB7-DB0双向三态8位双向数据总线RS输入地址线输入,区分命令口与数据口,当RS=1时可以写命令,当RS=0时可以读写数据RW输入读写,RW=1时读,RW=0时写E输入允许信号,相当于片选RST输入重新复位13图4-5ATmega16与LCD12864的硬件连接4.3.4ATmega16与按键的连接图4-5为三个独立按键与ATmega16的连接,理论上这三个按键也是随意在Atmega16的任意一个普通引脚上连接的,但基于上述几个模块的引脚分配,最终将按键确定为图4-5;此处有三个按键,KEY3为状态键,用来改变其余两个按键KEY1,KEY2的职能,如果KEY3为选择曲目状态,则剩下两个按键的功能分别为KEY1下一曲,KEY2上一曲,如果KEY3为调节音量状态,则剩下两个键的功能分别为KEY1音量调高,KEY2音量调低。这样设计的好处在于增加了按键的灵活性,如果后续再继续扩展功能的话比较方便,比如增加暂停停止功能,又或者增加快进快退,只需增加状态即可,而不必用更多的独立按键去控制,那样既浪费引脚,又使检测按键的次数增加,增大控制延时,降低系统效率。14图4-6ATmega16与按键的硬件连接15第5章系统软件设计5.1需求分析需求分析的方法很多,常见的有功能分解法、结构化分析法、信息建模法、面向对象分析方法等,本系统从复杂程度和自身的特性综合考虑采用结构化分析法,用自顶向下逐层分解策略,描叙本系统满足功能需求的软件模型,通过结构化分析描述工具来理清本系统到底做什么。在画数据流图之前要先声明一个问题:对某个系统而言没有绝对的输入和输出;我们只是在抽象的层次去分析系统的输入和输出,围绕系统的具体功能去抽象;例如在使用VS1003解码芯片时,可以对它写入数据,播放音乐,即输出,也可以读取它某个寄存器的值,获取VS1003某时刻的状态,即输入;但在对VS1003功能进行抽象,它只具有播放功能,所以在这个抽象层次上认为VS1003只具有输出。5.1.1数据流图数据流图是结构化分析方法中用于表示系统逻辑模型的一种工具,它以直观的图形清晰地描述了系统数据的流通和处理过程,图中没有任何物理元素,主要强调的是数据流和处理过程,可以很方便的了解系统的真正需求。(1)顶层数据流图。顶层数据流图是最为复杂也是最容易看清系统到底是做什么的;在本系统中,按键为系统提供按键信号,CH375芯片为系统提供文件数据,程序为系统提供系统初始值,在本系统中也可以用读取配置文件的策略去得到系统初始值,但为了使系统更简化,直接让程序提供初始值,所以键盘、程序、CH375芯片做系统的输入;ATmega16负责处理数据的计算和搬运,因此作为系统的变换中心(也称控制中心);系统将控制命令和数据输出到VS1003解码芯片、LCD12864,以控制音频文件播放、控制音量以及显示音频文件名等,因此,VS1003、LCD12864一定作为系统的输出;那么CH375是不是也可以作为输出呢?为了能智能的读取U盘中的所有音频文件,而ATmega16又没有足够的内存去存放所有的音频路径名,所以在播放音乐之前先把所有音频文件的路径名写在固定文件中,以便后续操作,综合分析CH375芯片既作为系统输入又作为输出;程序中有许多控制数据是随一定条件下改变的,比如按键按下、音频路径名在文件中的偏移量等,所以将程序(内存)也作为逻辑输出,会使系统更清晰。通过上述的简要分析后,如图5-1为顶层数据流图,需要说明的一点,在输出流中都无一例外的使用了数据命令字眼,原因是本系统面对的是裸芯片,没有任何操作系统的支持,除了CH375芯片有子程序库的支持,VS1003芯片和LCD12864都没有直接的接口去调用,所以对于底层的驱动本系统也是要考虑的,不仅要提供数据,而且要把相应控制命令加进去。16图5.1顶层数据流图(2)0层数据流图顶层数据流图显然是非常复杂的,在MP3控制系统中几乎是不知道系统是如何进行数据处理进而得到想要的结果,显然要对顶层系统进行分解。首先,本系统是没有任何操作系统的,所以第一步就是要对VS1003解码芯片、CH375芯片、LCD12864进行初始化操作,使这些芯片处在就绪状态等待主控芯片对它进行读写操作,每个芯片初始化成功后,提供一个正确信息,保证系统正常运行;紧接着,程序提供一个目录(程序默认提供根目录),开始对U盘中所有的音频文件的路径名保存在固定文件(ZCX.TXT),这样做有助于对所有音频文件进行统一管理,并且使变换歌曲操作会很方便,录入成功后提供录入文件内容的大小;然后,通过给定偏移量数据(默认为0),在固定文件(ZCX.TXT)中读取音频路径名,输出音频路径名;最后,通过给定的音频路径名进行MP3播放处理和液晶显示处理,将音频数据输出到VS1003解码芯片和LCD12864液晶;在MP3播放的同时,加上按键处理,以便随时能够接收按键信号,进行相应的按键处理操作,改变现有的状态。通过上述分析后,如果5-2为0层数据流图,图中纵向在同一层次的表明没有先后顺序,在图中除了逻辑输出外,不加芯片代号的表明输入输出给程序(修改内存),这些数据基本都是控制信息,在下一节的数据字典中会有体现。17图5.20层数据流图(3)1层数据流图1层数据流图中系统处理基本明朗,每一个处理都基本可以明确各自的职能,只有在按键处理部分有些模糊,因为按键处理部分可以控制按键状态,可以变换歌曲的上下一曲,还可以调节音量,因此将上述的按键处理再细化,并且有对应的流程进行处理,使系统更清晰,如图5-3为1层数据流图。图5.31层数据流图185.1.2数据字典(1)数据流条目MP3系统数据=VS1003初始化数据+CH375初始化数据+LCD12864初始化数据+根目录+MP3控制数据MP3控制数据=初始偏移量数据+初始按键状态数据+新生成文件的文件名(ZCX.TXT)按键信号=状态信号+加信号+减信号VS1003数据命令=VS1003音频数据+VS1003控制命令LCD12864数据命令=LCD12864数据+LCD12864控制命令CH375数据命令=CH375数据+CH375控制命令音量数值=无符号高八位的音量数值+无符号低八位的音量数值音频文件名=由最大30个字节组成的字符串正确信息=true|false偏移量数据=当前音频文件名在新生成文件中的偏移量+下一首音频文件名在新生成文件中的偏移量+上一首音频文件名在新生成文件中的偏移量按键状态数据=变换歌曲状态+调节音量状态+按键连续状态(2)数据存储条目文件名:ZCX.TXT组成:所有音频文件路径名的集合组织方式:按查找到的音频文件名路径的顺序,依次写入(3)加工条目加工名:MP3控制系统编号:无输入:MP3系统数据,按键信号输出:VS1003数据命令,LCD12864数据命令,CH375数据命令,MP3控制数据加工名:VS1003管理编号:1输入:VS1003初始化数据加工逻辑:初始化VS1003解码芯片,使芯片处于就绪状态,随时准备工作。输出:正确信息加工名:CH375管理编号:2输入:CH375初始化数据加工逻辑:首先要做的是初始化CH375芯片,使芯片处于就绪状态,再者初始化CH375子程序库,使系统可以随时进行读写U盘。输出:正确信息加工名:LCD12864管理编号:3输入:LCD12864初始化数据19加工逻辑:LCD12864是由ST7920芯片控制的,准确来说是初始化ST7920,使显示液晶能正常工作。输出:正确信息加工名:保存U盘所有音频文件路径名编号:4输入:根目录加工逻辑:根据根目录,逐层检查文件,如果是音频文件,则将文件路径添加到ZCX.TXT文件中,如果不是则不做任何处理。输出:新生成文件(ZCX.TXT)大小加工名:按给定条件读取新生成的文件编号:5输入:偏移量数据,新生成文件大小加工逻辑:根据给定的偏移量数据先将文件偏移到指定位置,然后读出音频路径名输出:音频文件名加工名:MP3播放编号:6输入:音频路径名加工逻辑:根据音频路径名播放相应的歌曲输出:VS1003音频数据加工名:按键处理编号:7输入:按键信号加工逻辑:根据按键信号判断是什么信号,如果是状态信号则改变当前按键的状态,如果是加减信号,则根据当前的状态来判断是改变当前文件控制信息还是调节音量大小。输出:VS1003音量控制命令,按键状态值,偏移量数据加工名:液晶显示编号:8输入:音频路径名加工逻辑:根据给出的音频路径名,先处理得到音频文件名,然后经过给LCD发指令和数据,显示出音频文件名输出:LCD12864音频文件名数据加工名:按键状态判断编号:7.1输入:加减按键信号,按键状态数据加工逻辑:先判断是否存在加减信号,然后根据按键状态数据判断加减按键信号执行什么功能输出:变换歌曲状态,调节音量状态加工名:按键状态处理编号:7.2输入:按键状态数据,状态按键信号加工逻辑:先判断是否存在状态按键信号,然后修改当前按键状态20输出:新的按键状态数据加工名:变换歌曲编号:7.3输入:变换歌曲状态加工逻辑:先判断按键是加信号还是减信号,然后修改当前、上一曲、下一曲音频文件名在新生成文件的偏移量数据。输出:偏移量数据加工名:调节音量编号:7.4输入:变换音量状态加工逻辑:先判断按键是加信号还是减信号,然后通过对VS1003解码芯片写入音量控制命令,达到变换音量的目的输出:VS1003音量控制命令5.2软件总体设计经过需求分析阶段的工作,建立了由数据流图、数据字典和一组算法描述所定义的系统逻辑模型,系统“做什么”已经清楚,下一步将进入软件总体设计阶段,总体设计阶段描述软件的总体结构。5.2.1结构化总体设计结构化设计方法是一种把在需求分析中得到的数据流图映射为软件结构图的基于数据流的设计方法,通过用数据流图描绘信息系统在系统中的加工和流动情况。结构化设计方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构图,他是在比模块更高一层的层次上讨论软件结构问题。按照数据流图的性质,数据流图分为两种基本类型,变换型和事务型。变换型数据流图基本呈线形形状,由输入、变换、输出三个部分组成,变换是系统的变换中心。变换输入端的数据流为系统的逻辑输入,输出端为逻辑输出,而系统输入端为数据流的物理输入,输出端为物理输出。而事务型则是当一个数据项到达处理模块时,将有多个动作之一,就是事务型,这种类型数据流图呈辐射状,及数据沿着输入同路到达下一个处理,这个处理根据输入数据的类型分离成一束平行的数据流,然后选择执行若干个动作序列中的某一个来执行。按照上述描述,可以分析得出本课题的数据流图类型属于变换型和事务型两种类型的混合型,变换型是显而易见的,因为从始至终本系统都是为播放MP3而服务的,那么事务型从何体现?根据最终处理得到音频路径名的处理方式上,既要交给VS1003解码芯片,又要交给LCD12864显示液晶,所以此又为事务型。5.2.2软件总体结构图的构建通过对顶层和0层数据流图的分析,MP3控制系统本质上明确音频路径名后直接21进行播放,所以确定“按给定条件读取新生成的文件”作为系统变换中心,变换中心确定以后就相当于确定了主模块的位置,这就是软件的顶层;第一层至少要有输入、输出、变换中心三种功能的模块,因此首先要构建音频路径名文件(将U盘中所有音频文件的路径名保存在指定文件中),所以音频文件名录入处理做为第一层的输入,但前提必须首先调用芯片管理模块,为主模块提供可进行读写的音频文件名文件和必要的控制数据;紧接着,需要一个变换中心模块,用刚刚得到的数据去变换得到要播放的音频路径名,并得到音频路径名,传给主模块,最后主模块再分别调用MP3播放、按键处理、液晶显示模块,在此过程中读音频路径名和处理音频路径名是一个循环的过程,播完一曲再继续下一曲;在MP3播放、按键处理。液晶显示这三个模块都分别要调用芯片管理模块,所以芯片管理模块作为公共模块要将其放在最底层。如图5-6,为软件总体结构图,图中上层调用下层模块,并且VS1003管理模块,CH375管理模块,LCD12864管理模块作为基类模块,上层不少模块都在直接或间接的调用它们,所有为了不使图形太过杂乱,某些模块的输出并没有表示出来。5.6软件总体结构图5.3软件详细设计在上一节已经将系统划分为多个模块,并将它们按照一定的原则组装起来了,同时确定了每个模块的功能及模块与模块之间的外部结构,在本节中,将对系统各个模块进行详细的设计,用详细设计工具清晰地描述。22本系统将按照自底向上的顺序一一剖析每个模块,设计出程序的“蓝图”。5.3.1CH375管理模块CH375提供了U盘文件级子程序库,单片机可以直接调用子程序读写U盘中的文件数据,硬件上只需要在原单片机系统中增加一个CH375芯片,综合成本较低。CH375的U盘文件级子程序库支持常用的FAT12、FAT16和FAT32文件系统,支持容量高达100GB的U盘。AVR单片机的增强版子程序库,文件名是CH375HFB.A和libCH375HFD.A以及CH375HFJ.R90,分别支持ICC、WinAVR-GCC、IAR编译环境,在本课题中,使用的是libCH375HFD.A,利用WinAVR-GCC编译环境。1.CH375b子程序库相关配置虽然在CH375b子程序库中已经给用户提供了许多现成的接口,但有些配置符号常量的值仍然需要重新定义,再者CH375b中引脚与ATmeag16引脚之间的联系是动态的,用户可以根据自己的喜好去连接CH375b,所以在子程序库的头文件CH375HFD.H定义了三个外部定义有子程序库去掉用的三个接口实现,分别是往CH375b写命令的接口

温馨提示

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

评论

0/150

提交评论