《基于stc12c5a60s2的mp3播放器设计-毕业论文.doc》由会员分享,可在线阅读,更多相关《基于stc12c5a60s2的mp3播放器设计-毕业论文.doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 五邑大学本科毕业设计摘 要MP3播放器从上世纪90年代末开始,发展至今已经是一种相当成熟,广泛应用的电子娱乐消费产品。目前市面上的MP3播放器种类繁多,功能各异,各种MP3方案层出不穷以适应不同的需求,本设计以51单片机为主控核心,VS1003为音频解码模块,MicroSD卡为音频文件的存储煤质,加上TFT彩屏友好的人机交互界面作为该毕业设计的MP3播放器方案。同时,为提高本设计的灵活性,可拓展性,方便后续升级,引入文件系统,而界面系统可依据需求进行配置。关键字: MP3播放器,51单片机,音频解码,文件系统Abstract MP3 player since the late 1990 s,
2、 the development so far is a quite mature and widely used electronic entertainment consumer products. MP3 player currently on the market a wide variety, different function, all kinds of MP3 solutions emerge in endlessly to adapt to the different requirements, the design of 51 single-chip microcomput
3、er as the core, control VS1003 audio decoding module, MicroSD card for audio files stored coal quality, coupled with TFT color screen friendly human-computer interaction interface as the graduation design of MP3 players.At the same time, in order to improve the flexibility of the design, can expand
4、sex, convenient upgrade follow-up, the introduction of the file system, and the interface system can be configured according to the requirements.Key words: MP3 players, 51 single-chip, audio decoding, filesysterm目 录摘 要IAbstractII第1章 绪论11.1 课题背景11.2 设计意义11.3 方案论证1第2章 系统硬件原理及概述32.1 系统硬件总体框架介绍32.2 系统硬件
5、各模块介绍42.2.1 主控芯片STC12C5A60S2处理器简介42.2.2 VS1003音频解码模块52.2.3存储煤质MicroSD卡简介92.2.4 LCD12864液晶模块简介122.2.5 按键控制电路简介122.3 本章小结13第3章 系统软件原理及概述143.1 系统软件总体流程介绍143.2 Petit FatFS在STC12C5A60S2实现移植153.2.1 Petit FatFS 简介153.2.2 移植流程163.3 VS1003核心代码介绍173.3.1 VS1003相关细节代码的设计173.3.2 VS1003初始化介绍183.3.3 VS1003的正弦测试203
6、.4 MirocSD卡核心代码介绍213.4.1 MirocSD相关细节代码的设计213.4.2 MirocSD的初始化流程223.5 LCD12864核心代码介绍253.6 按键控制电路核心代码简介263.7 本章小结27第4章 系统调试与作品展示284.1 软件调试篇284.2 硬件调试篇294.3 作品展示30结 论31致 谢32参考文献33III第1章 绪论1.1 课题背景MP3是一种音频压缩技术,是MPEG-1 audio layer 3的简称。MPEG-1是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果也最好,在低码率的条件下基本能达到CD的音质效果。如
7、果对于一段声音不进行压缩的话,那么每存储一秒钟的立体声CD音质音乐必须用14Mbit,这是个十分大的开销。通过运用MPEG音频标准的压缩技术,我们可以把存储空间压缩到原来的112而不会降低声音的音质。即使使用124的压缩因子,仍然比单纯降低采样率的音质要好。低数据量和高播放品质的优点使其成为音乐存储、数字广播、网上音乐传输的主要方式。而MP3播放器则是能够播放MP3格式音频文件,同时具有存储,显示一体这一特定功能的小型电脑。1.2 设计意义随着电子技术的发展,MP3播放器向大容量、高音质、小巧便携方向不断发展,如今的MP3播放器基本与存储器一体设计,使MP3播放器更加的便于携带,但与此同时也带
8、来其他新的问题,比如存储容量有限,尤其是在追求播放器小巧的今天,其容量一般不会很大,如果想升级更大容量的,就只能去购买新的产品了,从而造成资源浪费;另一方面,一体化的设计又限制了MP3播放器在其他领域的应用,比如LCD液晶显示升级或更换,与其他系统模块的整合,因此,MP3播放器的模块独立化也是其发展的另一方向。本设计以单片机为主控中心,MicroSD卡为音频数据的存储煤质,其容量大小可根据需求进行自由更换,同时,以VS1003为音频解码模块,该模块也可根据解码速率及音频格式进行更改,MCU通过对MicroSD卡上的音频文件进行读取送到解码模块进行解码,并通过音频接口进行播放,且将相应信息显示在
9、液晶屏幕实现人机交互。1.3 方案论证(1) 主控芯片选择:作为本设计的核心大脑,主控芯片必须具有能够富有余力的执行整个代码流程的能力,这在其处理速度上有着硬性要求,照此看来,ARM系列或者STM系列或是不错的选择,无论是其强大的处理速度还是丰富的接口,都有比其他处理器有着先天的优势,但对于MP3播放器这一类的电子产品,其价格是其致命伤,成本控制同样是重要的考量因素,而51单片机似乎是个不错的选择,成本低,市场量高,是一款成熟的处理器,很多中低端的产品都有它的身影,支持度也很好,唯一的缺点是处理速度不够快,为此,我选择51系列的增强版STC12C5A60S2,该款单片机不仅价格便宜,使用度广,
10、同时1T最高可达35MHZ的处理速度相较于AVR也毫不逊色,接口也基本满足设计需求。尤其是具有硬件SPI。(2) 解码方式选择:音频解码可分为软解码和硬解码两种方式,软解码需要大量的运算,无论是空间资源还是时间资源都消耗很大,因此要求处理器的存储容量(存储软解码代码的ROM和运行时所需的RAM)及处理速度都要求很高,市面上的一般的单片机甚至ARM7都很难做到对音频流畅无压力的解码,何况解码后的数据还要DAC转换才能形成模拟信号,要是其DAC驱动能力不够的话,还需另外添加功率放大电路,总之付出的硬件成本是比较高的。硬件解码一般是由专门的解码芯片实现,处理速度快,集成度高(内含DAC,功放等所需电
11、路),且除去繁琐的控制使得处理器可以解脱出来做其他事情,要做的只是将音频数据送入到解码模块中即可。常见的MP3解码芯片有VS100X系列和STA01X系列,由于VS100X系列不仅自带DAC输出功能,支持MP3、WMA、WAV、MIDI等音频格式,还具有调节音量,高低音等,更为可喜的是具有MIC功能。这极大地提高了MP3播放器的可拓展性和丰富性,本设计选择VS1003作为音频解码模块。(3) 存储煤质选择:一首歌的大小普遍在34MB左右,音质稍微好点的基本在5MB以上,显然存储在处理器内部是不现实的,这要求外设存储设备,且需要大容量的,可以选择外接Flash,MicroSD卡,U盘等,由于Fl
12、ash是焊接到PCB上,一旦确定其大小就被固定了,对后续升级不便,且也不方便移动和携带,而MicroSD卡和U盘是不错的选择,大容量,可插拔,价格不贵容易购买,考虑到SD卡和microSD卡兼容,大部分人相机用的是SD卡而手机用的就是microSD卡,所以本设计选择以MicroSD卡作为音频的存储设备。(4) LCD界面选择:良好的用户体验离不开具有人机交互的图形界面,所以本设计也着重于界面的设计,从界面的实现功能要求及成本考虑,本设计的界面模块也采用广泛使用的液晶LCD12864,该模块基本满足设计要求,如果要升级的话也可采用与LCD12864接口兼容的彩屏,不过考虑成本及目前实现的功能需求
13、来说,暂不需要彩屏,同时,由于LCD12864具有串行传输模式和并行传输模式可供选择,增加了灵活性,因此,本设计最终采用LCD12864作为界面显示模块。(5) 文件系统选择:对音频文件的存储,管理,检索,播放离不开文件系统的支持,而当前对存储设备管理的文件系统当属FatFS,FatFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)开源文件系统。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051, PIC, ARM, Z80, 68K 等等,而不需要做任何
14、修改。其提供的函数接口足以满足我们对存储设备的操作,但由于本设计所使用的处理器为STC12C5A60S2,内部资源尤其是RAM非常有限,且大部分的函数功能不需要用到,因此采用Petit FatFs文件传统,Petit FatFs 是FatFs的精简版,比较适用于低端8位单片机中。可以用在小RAM的单片机中,RAM可以小于扇区的RAM(512bytes)中。 因此,本设计最终方案以STC12C5A60S2为主控芯片,MicroSD卡为音频存储设备,VS1003为音频解码模块,TFT彩屏为人机交互界面,通过主控MCU搭载的Petit FatFs文件传统对MicroSD卡上的音频文件进行检索并显示在
15、界面,根据用户选择将相应音频文件输出至VS1003模块进行解码播放,同时将其信息如歌曲名,歌词,播放时长等显示到界面。第2章 系统硬件原理及概述2.1 系统硬件总体框架介绍 TFTLCD STC12C5A60S2 Petit FatFs 歌曲 信息 SD card VS1003 音频流 硬件SPI serial4*1按键 PC机 图2-1 系统硬件框架图 硬件启动流程:上电后,主控芯片STC12C5A60S2设置启用硬件SPI功能并采用该SPI对存储设备MicroSD卡进行初始化后检索根目录下的MP3格式音频文件名,然后按照检索的顺序依次显示在LCD上供用户浏览,用户可根据4个独立的按键进行选
16、择操作,4个按键中分别为 prev ,next ,play , quit ,由于按键数量不多但要完成的操作多余4个,故采用复用功能,在选择歌曲界面时,prev表示前一首歌曲,next表示下一首歌曲,play表示播放;当处于播放状态时,prev表示快退,next表示快进,而play表示暂停,且在暂停状态时,prev表示音量调小,next表示音量调大,最后的quit是退出当前的界面返回上一级界面。MCU收到用户的按键信息后会根据不同的指令对对应的文件名进行读取,并将数据流直接送到VS1003解码模块进行解码,用户即可通过解码模块VS103的音频口听到优雅的音乐了,同时,MCU会将该音频文件的其他信
17、息显示到LCD上,包括MP3文件名,播放时长,以方便用户阅览并后续的操作,另外,为方便设计期间对代码的调试,也添加了serial串口模块(可裁剪),以方便开发人员软件设计的调试,可通过设置宏定义使得开发期间使能串口打印功能,而当完成调试relase的时候禁止打印功能即可。2.2 系统硬件各模块介绍2.2.1 主控芯片STC12C5A60S2处理器简介 在众多的51系列单片机中,要算国内STC公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60KFLASHROM,这种工艺的存
18、储器用户可以用电的方式瞬间擦除、改写。片上集成1280字节RAM,基本满足大部分程序运行所需内存大小。而且STC系列单片机支持串口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。重要的一点STC12C5A60S2目前的售价与传统51差不多,市场供应也很充足,是一款高性价比的单片机。 STC12C5A60S2单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍(工作频率范围:0-35MHz,相当于普通8051
19、的0420MHz)。内部集成MAX810专用复位电路、2路PWM、8路高速10位A/D转换(250K/S)、双串口、特别适用强干扰场合。本设计着重其具有的硬件SPI功能!因为对MicroSD卡扇区的读写操作需要更快的操作。这是普通51单片机所没有的先天优势。 其各引脚分布如下: 图2-2 STC12C5A60S2引脚分布图2.2.2 VS1003音频解码模块 VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含一个高性能,自主产权的低功耗DSP处理器核VS_DSP4,工作数据存储器,为用户应用提供5KB的指令RAM和0.5KB的数据RAM。串行的控制和数据接口,4
20、个常规用途的I/O口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个18位过采样多位-DAC。通过串行总线控制解码器。除了基本的解码,在用户RAM中它还可以做其他特殊应用,例如DSP音效处理。 图2-3 VS1003架构图 由于本设计主要是利用VS1003的解码功能,所以仅要求了解其解码相关的部分引脚即可,其相关引脚如下 引脚名称LQFP-48引脚类型引脚功能XRESET3DI低电平有效,异步复位端DGND04DHND处
21、理器核与I/O地CVDD05CPER处理器核电源IOVDD06IOPWRI/O电源CVDD17CPEW处理器核电源DREQ8DO数据请求GPIO2/DCLK9DIO通用I/O2/串行总线时钟GPIO3/SDATA10DIO 通用 I/O3 / 串行数据总线数XDCS/BSYNC13DI数据片选端/字节同步IOVDD1 14IOPWRI/O 电源XTALO17AO晶振输出XTALI18AI晶振输入IOVDD219IOPWRI/O 电源DGND220DGND处理器核与 I/O 地DGND321DGND处理器核与 I/O 地DGND422DGND处理器核与 I/O 地XCS23DI片选输入,低电平有
22、效CVDD224CPWR处理器核电源RX26DIUART接收口,不用时接 IOVDDSCLK28DI串行总线的时钟SI 29DI串行输入SO30DO3串行输出 CVDD3 31CPWR处理器核电源TEST32DI保留做测试,连接至 IOVDDGPIO0/SPIBOOT33DIO通用 I/O0 /SPIBOOT,使用 100K 下拉电阻GPIO134DIO 通用 I/O1AGND037APWR 模拟地,低噪声参考地AVDD0 38APWR模拟电源RIGHT39AO右声道输出AGND140APWR模拟地AGND241APWR模拟地GBUF42AO 公共地缓冲器AVDD143APWR模拟电源AVDD
23、245APWR模拟电源LEFT46AO左声道输出AGND347APWR模拟地 表2-4 VS1003重要引脚说明在VS1003的使用中除了对引脚有所了解外,还要对其寄存器有很好的了解才能对相应寄存器进行设置从而使用该芯片。VS1003共有16个16位的寄存器,地址分别为0x00xF;除了模式寄存器(MODE,0x0)和状态寄存器(STATUS,0x1)在复位后的初始值分别为0x800和0x3C外,其余的寄存器在VS1003初始化后的值均为0。下面将VS1003各寄存器逐一介绍:1)MODE(地址0x0;RW,可读写)模式寄存器在VS1003中是一个较为重要的寄存器,其每一位都对应着VS1003
24、的不同设置。bit0:SM_DIFFSM_DIFF=0正常音频相位SM_DIFF=1左声道反转当SM_DIFF置位时,VS1003将左声道反相输出,立体声输入将产生环绕效果,对于单声道输入将产生差分(反相)左/右声道信号。bit1:SM_SETTOZERO置零bit2:SM_RESETSM_RESET=1,VS1003软复位。软复位之后该位会自动清零。bit3:SM_OUTOFWAVSM_OUTOFWAV=1,停止WAW解码。当你要中途停止WAV、WMA或者MIDI文件的解码时,置位SM_OUTOFWAV,并向VS1003持续发送数据(对于WAV文件发送0)直到将SM_OUTOFWAV清零;同
25、时SCI_HDAT1也将被清零。bit4:SM_PDOWNSM_PDOWN=1,软件省电电模式,该模式不及硬件省电模式(由VS1003的xReset激活)bit5:SM_TESTSSM_TESTS=1,进入SDI测试模式。bit6:SM_STREAMSM_STREAM=1,使能VS1003的流模式,具体请参考应用笔记VS10XX。bit7:SM_PLUSVSM_PLUSV=1,MP3+V解码使能。bit8:SM_DACTSM_DACT=0,SCLK上升沿有效;SM_DACT=1,SCLK下降沿有效。bit9:SM_SDIORDSM_SDIORD=0,SDI总线字节数据MSB在前,即须先发送MS
26、B;SM_SDIORD=1,SDI总线字节数据LSB在前,即须先发送LSB;该位的设置不会影响SCI总线。bit10:SM_SDISHARESM_SDISHARE=1,SDI与SCI将共用一个片选信号(同时SM_SDINEW=1),即将xDCS与xCS这两根信号线合为一条,能省去一个IO口。bit11:SM_SDINEWSM_SDINEW=1,VS1002本地模式(新模式)。VS1003在启动后默认进入该模式。注:这里的模式指的是总线模式。bit12:SM_ADPCMSM_ADPCM=1,ADPCM录音使能。同时置位SM_ADPCM和SM_RESET将使能VS1003的IMAADPCM录音功能
27、。bit13:SM_ADPCM_HPSM_ADPCM_HP=1,使能ADPCM高通滤波器。同时置位SM_ADPCM_HP、SM_ADPCM和SM_RESET将开启ADPCM录音用高通滤波器,对录音时的背景噪音有一定的抑制作用。bit14:SM_LINE_IN录音输入选择,SM_LINE_IN=1,选择线入(linein);SM_LINE_IN=0,选择麦克风输入(默认)。2)SCI_STATUS(0x1,RW)SCI_STATUS为VS1003的状态寄存器,提供VS1003当前状态信息。3)SCI_BASS(0x2,RW)重音/高音设置寄存器。VS1003的内置的重音增强器VSBE是种高质量的
28、重音增强DSP算法,能够最大限度的避免音频削波。当SB_AMPLITUDE(bit:7-4)不为零时,重音增强器将使能。可以根据个人需要来设置SB_AMPLITUDE。例如,SCI_BASS=0x00f6,即对60Hz以下的音频信号进行15dB的增强。当ST_AMPLITUDE(bit:15-12)不为零时,高音增强将使能。例如,SCI_BASS=0x7a00,即10kHz以上的音频信号进行10.5dB的增强。4)SCI_CLOCKF(0x3,RW)在VS1003种对该寄存器的操作有别于VS10x1和VS1002。SC_MULT(bit:15-13)时钟输入XTALI的倍频设置,设置之后将启动
29、VS1003内置的倍频器。SC_ADD(bit:12-11)用于在WMA流解码时给倍频器增加的额外的倍频值。SC_FREQ(bit:10-0)当XTALI输入的时钟不是12.288M时才需要设置该位段,其默认值为0,即VS1003默认使用的是12.288M的输入时钟。5)SCI_DECODE_TIME(0x4,RW)解码时间寄存器。当进行正确的解码时,读取该寄存器可以获得当前的解码时长(单位为秒)。可以更改该寄存器的值,但是新值须要对该寄存器进行两次写操作。在每次软件复位或是WAV(PCM、IMAADPCM、WMA、MIDI)解码开始与结束时SCI_DECODE_TIME的值将清零。6)SCI
30、_AUDATA(0x5,RW)当进行正确的解码时,该寄存器的值为当前的采样率(bit:15-1)和所使用的声道(bit:0)。采样率须为2的倍数;bit0=0,单声道数据,bit0=1,立体声数据。写该寄存器将直接改变采样率。7)SCI_WRAM(0x6,RW)该寄存器用来加载用户应用程序和数据到VS1003的指令和数据RAM中。起始地址在SCI_WRAMADDR中进行设置,且必须先于读写SCI_WRAM。对于16位的数据可以在进行一次SCI_WRAM的读写中完成;而对于32位的指令字来说则需要进行两次连续读写。字节顺序是大端模式,即高字节在前,低字节在后。在每一次完成全字读写后,内部指针将自
31、动增加。8)SCI_WRAMADDR(0x7,RW)用于设置RAM读写的首地址。地址范围见数据手册P32。9) SPI_HDAT0和SPI_HDAT1(0x8,0x9,R)这两个寄存器用来存放所解码的音频文件的相关信息,为只读寄存器。当为WAV文件时,SPI_HDAT0=0x7761,SPI_HDAT1=0x7665;当为WMA文件时,SPI_HDAT0的值为解码速率(字节/秒),要转换为位率的话则将SPI_HDAT0的值乘8即可,SPI_HDAT1=0x574D;当为MIDI文件时,SPI_HDAT0的值请参考数据手册P33,SPI_HDAT1=0x4D54;当为MP3文件时,SPI_HDA
32、T0和SPI_HDAT1包含较为复杂的信息(来自于解压之后的MP3文件头),包括当前正在解码的MP3文件的采样率、位率等,具体请参考数据手册P33-P34。复位后SPI_HDAT0和SPI_HDAT1将清零。10)SCI_AIADDR(0xA,RW)用户应用程序的起始地址,初始化先于SCI_WRAMADDR和SCI_WRAM。如果没有使用任何用户应用程序,则该寄存器不应进行初始化,或是将其初始化为零,具体请参考应用笔记VS10XX。11)SCI_VOL(0xB,RW)音量控制寄存器。高八位用于设置左声道,低八位用于设置右声道。设置值为最大音量的衰减倍数,步进值为0.5dB,范围为0到255。最
33、大音量的设置值为0x0000,而静音为0xFFFF。例如,左声道:-2.0dB,右声道:-3.5dB,则SCI_VOL=(4256)+7=0x0407。硬件复位将使SCI_VOL清零(最大音量),而软件复位将不改变音量设置值。注:设置静音(SCI_VOL=0xFFFF)将关闭模拟部分的供电。12)SCI_AICTRLx(0xC-0xF,RW)用于访问用户应用程序。2.2.3存储煤质MicroSD卡简介 由于microSD 卡是由SD卡派生而来,和SD卡兼容,电气性能基本一致。这里我们有必要简单了解一下SD卡。SD卡的全称是Secure Digital Memory Card ,由松下、东芝,和
34、SanDiSK SanDiSK于1999年 年8月共同推出,并成立了SDA(SD Association, SD协会),共同来推广SD标准。 SD卡的数据传输和物理规范由MMC发展而来,其尺寸和MMC相近,为24mm32mm2.1mm。对比MMC卡为24mm32mm1.5mm,相比SD卡略厚,显然有更多的堆叠空间。SD卡表面积和一张邮票差不多,重量只有约2g。SD卡具备串行和随机存取能力,可通过优化速度的串行接口访问,数据传输可靠。因此Secure Digital这个命名就有“安全数码 安全数码”的意思。SD卡通过9Pin接口与相应读写设备连接,由于采用NAND闪存介质而不易损坏,读写数据、格
35、式化都比较方便,被MP3,数码相机、游戏机等多种设备广泛采用。SDA对SD卡的速度用Class等级来标识,目前主要有Class2,Class4,和Class6 三种。主要以写入速度来区别不同的Class:Class2表示写入速度大于或等于2MB/s,Class4表示写入速度大于或等于4MB/s,Class6表示写入速度大于或等于6MB/s,SD卡内部结构和实物图意图如下: 图2-5 SD卡分布及外观 SD卡虽然得到了广泛的采用,但由于手机越来越小,性能越来越高,内部留给存储卡的空间也越来越少。同时,一些别的领域也需要体积更小的存储卡产品。面对这样的情况SandiSK开发出了T-Flash微型存
36、储卡,后来更名为TransFlash卡。而SDA在2005年3月14日以TransFlash卡标准为基础公布microSD的格式,并于2005年7月13日批准了 microSD最终的规格。并被MOTOROLA率先应用在手机产品上。因为这样的关系,至今microSD也被人们叫为T- Flash卡或TF卡。MicroSD卡的尺寸为15mm*11mm*1mm,确实是指甲盖那么大,重量减少为接近0.5g。针脚改为8pin,电气性能仍然和SD卡兼容,工作电压依然是2.7V-3.6V。MicroSD卡发售时一般会附带转接卡,通过转接卡可作为标准SD卡使用。其大小和实物如下: 图2-6 Micro SD卡外
37、观及卡槽 为兼容SD卡和MicroSD卡,本设计采用SD卡接口作为PCB封装,实际存储煤质为MicroSD卡,通过转接卡实现转换。另外,MicroSD有两种读写模式,分别为SD模式和SPI模式,其针脚定义是不一样的,如图: 图2-7 SD卡与Micro SD卡的Pin分布 由于STC12C5A60S2引脚有限且自带硬件SPI功能,所以本设计采用MicroSD卡的SPI模式。2.2.4 LCD12864液晶模块简介 带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16
38、*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。2.2.5 按键控制电路简介 人机交互肯定离不开输入系统,由于采用LCD12864作为界面而非彩屏特用的触摸屏功能,所以本设计采用简单的按键作为输入系统模块,过多或过少的按键数量都影响用户对产品的体验效果,太少了虽操作简单,但同时能实现或
39、体验的功能也少,按键数量多了虽给予用户更多的功能选择,但由于按键太多用户时间操作效果不佳,所以本设计折中,采用四个按键,每个按键实现一种或多种功能以实现一键多用的复用功能。如图: 图2-8 按键分布 四个按键名分别为prev,next,play,quit。其中在主菜单界面时,prev为选择上一级菜单,next为选择下一级菜单,play表示进入,而quit由于在最顶层菜单所以无效。当进入一级菜单后(以进入音乐菜单为例,其它类似),prev为选择上一首歌曲,next为选择下一首歌曲,play表示播放,quit表示返回主菜单,当键值为play时进入播放MP3状态,此时prev表示快退,next表示快
40、进,play表示暂停,quit表示返回上一级菜单。当然对于其他菜单会依据菜单的实际功能而设置按键对应的功能。2.3 本章小结本章主要介绍了本设计的硬件系统总体框架及主要部分硬件模块的相关介绍,合理的,协调的硬件设计是本设计的基础,将各模块的硬件资源进行有效的整合是一个考验,例如利用MCU的自带硬件SPI与SD卡的SPI模式结合,同时由于MCU的引脚有限,尽量的在完成要求下少占用IO口资源。本设计之处原打算将SD卡和VS1003的SPI都用MCU的硬件SPI,通过不同的片选信号来选择具体要驱动哪块模块,但考虑到MCU的驱动能力及两模块对电平的不同要求,以及SD卡更需要硬件SPI,而VS1003本
41、身具有强大的解码效率,所以VS1003采用普通IO口来模拟SPI。第3章 系统软件原理及概述3.1 系统软件总体流程介绍 开 始 挂载文件系统pf_mount(&fatfs)初始化硬件SPI SPI_Init()挂载成功 ? 初始化串口 Uart_Init() Y显示界面UI初始化MirocSD卡 MirocSD_Init() Y N是否有键按下 ?初始化LCD12864 LCD12864_Init() 结 束 初始化VS1003 VS1003_Init() 图3-1 系统软件流程图整体软件启动流程如上图所示,程序一开始先对各模块进行初始化,经过一系列初始化后开始初始化Petit FatFS也
42、即搭载该文件系统,然后进入主菜单界面,接着是个死循环,不断的等待用户键入值,且去执行相应的功能同时显示到界面上实现与用户互动,例如当键入音乐菜单时,系统会读取MirocSD卡所有的MP3文件,并显示到界面一边用户的后续操作。3.2 Petit FatFS在STC12C5A60S2实现移植3.2.1 Petit FatFS 简介 Petit FatFs 是FatFs的精简版,比较适用于低端8位单片机中。可以用在小RAM的单片机中,RAM可以小于扇区的RAM(512bytes)中。 Features: (1)Very small RAM consumption (44 bytes work are
43、a + certain stack). (2)Very small code size (2K-4K bytes). (3)Supports FAT32. (4)Single volume and Single file. (5)File write function with some restrictions. 看最后一条,写函数有一些限制。如果不用于写操作的话,这个文件系统是个不错的选择,RAM与ROM消耗都很少,用keil编译的话会消耗250字节左右的栈空间。支持FAT32,FAT。本设计目前暂不用写操作。同时,官方介绍的限制:1、只能挂载一个设备。2、Petit FatFs不能创建文件,只能对已存在的文件进行操作。3、写函数只能写到原来文件的大小,不能扩展大小,不能更新文件时间信息,不能写只读文件。Petit FATFs能够在不同的单片机平台上运行,具有良好的层次结构,其层次结构,如下图: 图3-2 Petit FATFS 框架图应用层位于最顶层,它提供供了以下几个函数: pf_mount :为Petit FATFs模块注册或者卸载一块工作区域,它包括了设备的初始化(disk