

免费预览已结束,剩余42页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
江西师范大学2012届本科毕业设计题目:多功能mp3播放器title: multi-function mp3 player院系名称:物理与通信电子学院学生姓名: 学生学号: 专 业: 电子信息工程 指导老师: 完成时间: 2012年4月 毕业论文声明本人郑重声明:1此毕业论文是本人在指导教师指导下独立进行研究取得的成果。除了特别加以标注地方外,本文不包含其他人或其它机构已经发表或撰写过的研究成果。对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。本人完全意识到本声明的法律结果由本人承担。2本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。本人授权江西师范大学物理与通信电子学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。3若在江西师范大学物理与通信学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。学位论文作者(签名): 2012 年 4 月 23 日 摘 要本系统以cortex-m3 32位高性能单片机为核心,由音频解码芯片vs1003、tft彩屏、sd卡、文件系统fatfs09和键盘等模块组成了一个多功能mp3播放器。该播放器实现了歌曲播放、图片浏览、录音、游戏、闹钟、温度显示、日历、电子书和计算器等功能。歌曲和图片文件存放在内存卡当中。系统有两个音频接口和一个麦克风接口,以及一个用于录音的声音拾取器。系统有按键和触屏两种控制方式,支持全触摸操作。关键词:cortex-m3单片机,解码芯片,tft彩屏,文件系统,sd卡,mp3iabstractthis system to cortex-m3 32-bit high-performance single chip microcomputer as the core, from audio decoder chip vs1003, tft colour screens, sd card, the file system fatfs09 and keyboard module a multi-function mp3 player. the players realized the songs played, picture browsing, recording, game, alarm clock, temperature display, calendar, e-books and calculator etc. function. songs and pictures of the files are stored in a memory card. the system has two audio interface and a microphone interface, and one for the recording voice is up. with keys and touch screen system two control mode, support the touch operation.keywords: cortex-m3 microcontroller, decoder chip, tft colour screens, the file system, sd card, mp3ii目 录毕业论文声明2摘 要iabstractii1 引言- 1 -2 设计要求- 1 -3 方案论证- 1 -3.1 控制器选择- 1 -3.2 显示模块- 2 -3.3 存储器模块- 2 -3.4 音频解码模块- 3 -4 硬件部分- 3 -4.1 单片机- 3 -4.1.1 lm3s9b95概述- 3 -4.1.2 lm3s9b95外围电路介绍- 4 -4.2.1 芯片封装- 6 -4.2.2 引脚定义- 6 -4.2.3 芯片特性- 7 -4.2.4 供电系统- 8 -4.2.5 读写操作时序- 8 -4.3 tft彩屏- 9 -4.4 触摸屏控制芯片- 10 -4.4.1 ads7846简介- 10 -4.4.2 ads7846引脚功能- 10 -4.4.3 工作原理- 11 -4.5 温度传感器- 12 -4.5.1 tmp175简介- 12 -4.5.2 i2c总线- 13 -4.6 时钟芯片ds1339- 15 -4.7 sd卡- 16 -5 软件部分- 17 -5.1 开发工具介绍- 17 -5.2 程序框图- 18 -5.3 文件系统- 18 -5.4 gui程序的设计- 21 -5.5主要功能的实现原理- 22 -5.5.1游戏- 22 -5.5.2图片浏览- 23 -5.5.3录音- 24 -5.5.4音乐播放- 25 -5.5.5日历- 25 -5.5.6文件管理- 26 -5.5.7电子书- 26 -6 系统功能测试与分析- 27 -结语- 32 -参考文献- 33 -附录一:系统原理图一- 34 -附录二:系统原理图二- 35 -附录三:源程序- 36 - iv1 引言随着电子技术的快速发展,电子类产品尤其是消费类电子产品跟新换代的速度越来越快。mp3就是对人们生活很重要的一款消费类电子产品。mp3早在多年前就打败了cd、md播放器,夺取了随身听市场的头把交椅。然而事隔多年,mp3播放器非但没有任何即将衰败的迹象,反而因为越来越强悍的功能,越来越多变的造型以及工业设计新元素的添加,让mp3能够持久地焕发着生机和活力。2 设计要求设计并制作一个mp3播放器,支持wma、mp3、wav等常见歌曲格式,并具有录音、图片浏览等多个功能。基本要求:(1)支持文件系统。能以文件的形式播放歌曲、浏览图片等;(2)存储介质为内存卡。歌曲文件存放在内存卡中。扩展要求:(1)采用tft彩屏,并支持触屏;(2)增加功能,如录音、图片浏览、电子书、万年历、游戏等。3 方案论证根据设计要求先确定了本系统的整体设计原理框图,如图1:图1 原理框图3.1 控制器选择方案一:采用51单片机作为主控制器。51单片机具有价格便宜、控制方便等特点。但处理速度偏低,io口较少。方案二:采用lm3s9b95 作为主控制器。lm3s9b95是ti公司推出的一款以cortex-m3为内核的32位高性能单片机。拥有多达65个io口。本系统对主控制器的速度有较高要求,速度对歌曲的播放效果有较大的影响,lm3s9b95最大可以达到80mhz,这个51单片机远不可及的。此外,由于系统需要至少50个io口,而51单片机最多只有40个,无法满足系统的要求。所以选择方案二,采用lm3s9b95作为系统的主控制器。3.2 显示模块方案一:采用12864点阵式液晶。12864是128*64点阵液晶模块的点阵数简称,该点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。一页共可以显示32个汉字或者64个字符。方案二:采用tft彩屏。tft彩屏在消费电子产品中有着广泛的应用。色阶是表示彩屏显示屏亮度强弱的指数标准,也就是通常所说的色彩指数。目前彩屏手机的色阶指数从低到高可分三个层次,最低单色,其次是256色、4096色、 65536色; 目前最高的为26万色。彩屏相对点阵式液晶具有色彩丰富、分辨率高的优点。尤其在图片显示方面,点阵式液晶只能显示单色,大大的影响图片的显示效果。而且,彩屏还可以支持触屏,方便系统的控制。综上所述,系统选择方案二,采用tft彩屏作为显示器件。3.3 存储器模块方案一:采用sd卡作为存储器。sd卡(secure digital memory card)是一种基于半导体快闪记忆器的新一代记忆设备。sd卡由日本松下、东芝及美国sandisk公司于1999年8月共同开发研制。大小犹如一张邮票的sd记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。sd卡在32mm24mm2.1mm的体积内结合了sandisk快闪记忆卡控制与mlc(multilevel cell)技术和toshiba(东芝)0.16u及0.13u的nand技术,通过9针的接口界面与专门的驱动器相连接,不需要额外的电源来保持其上记忆的信息。而且它是一体化固体介质,没有任何移动部分,所以不用担心机械运动的损坏。方案二:采用flash芯片作为存储器。flash芯片是应用非常广泛的存储材料,诸多的存储器件都是以flash为基础开发的。sd卡相对于flash芯片,读取速度较慢,但接口简单,存储容量大。一般的sd卡都能达到上百m。同等容量的flash芯片的价格则远远高于sd卡。在满足系统速度要求下,容量较大且价格更便宜的sd卡是理想的选择。因此,选择方案一。3.4 音频解码模块方案一:采用硬解码的方法。硬解码是指通过专门的解码芯片来完成mp3的解码算法工作。解码的主要工作是由解码芯片来完成的,如vs1003。方案二:采用软解码的方法。软解码是指将解码用的算法转换成指令放在主控制器中,解码主要通过主控制器来完成。这个对主控制器的主频有较高要求。软解码适合用在主频较高的控制器中,如个人电脑。本系统的主控制器lm3s9b95的最高时钟速度只有80mhz,无法满足软解码的要求,否则解码时间会非常漫长,影响播放效果。相反,硬解码则可以在较低的时钟速度下和短时间内完成解码工作。因此,系统采用方案一,即采用vs1003硬解码的方式。4 硬件部分4.1 单片机4.1.1 lm3s9b95概述lm3s9b95是ti公司推出的第四代cortex-m3内核32位微处理器。具有令人惊叹的快速响应能力,thumb-2 技术将 16 位和 32 位指令相结合,使代码密度和性能达到了最佳平衡。thumb-2 比纯 32 位代码使用的内存要少 26%,从而降低了系统成本,同时将性能提高了 25%。主要特性如下:1、256k flash、96k ram;2、cortex-m3处理器内核,最高时钟频率可达80mhz;3、32路直接内存访问控制器(dma);4、5个定时器、2个看门狗定时器和rtc实时时钟;5、8个pwm发生模块;6、2个can总线模块、3个uart通用串行模块、10/100m 以太网控制器;7、2个i2c总线模块、2个spi总线模块,10位、16通道ad转换模块;8、多达65个可配置的io口,100 pin lqfp封装,管脚图如图2。图2 lm3s9b95管脚图4.1.2 lm3s9b95外围电路介绍1、供电系统lm3s9b95电源电压为3.3v,电源芯片采用ti公司的tlv1117-33。tlv1117-33是ti公司推出的具有单输出ldo、固定电源(3.3v)、内部电流限制、过流保护特性的线性稳压器。电路图如图3:图3 tlv1117-33电路图输入电压范围为4.7v-15v,额定输出电压3.3v。系统采用12v供电。图中c12、c13和l1起滤波和隔离的作用。2、晶振振荡电路lm3s9b95有4个时钟源可供使用。分别是内部振荡器(iosc)、主振荡器、内部30khz振荡器和外部时钟振荡器。内部振荡器是片内时钟来源,它不需要使用外部任何元件。不依赖精确时钟有利于降低系统成本。主振荡器由osc0输入管脚输入一个外部单端时钟信号或在osc0输入管脚和osc1输出管脚之间连接一个外部晶体。如果主振荡器作为pll的时钟参考源,那么支持的晶体的频率范围为3.579545mhz-8.192mhz。系统采用8mhz晶振,如图4:图4 lm3s9b95外部晶振振荡电路图3、复位电路lm3s9b95外部复位输入管脚(rst)为低电平有效。复位电路如图5:图5 lm3s9b95复位电路图电路在上电时会提供一个上电复位信号,同时按下按键s2也能对系统复位。4、jtag接口jtag端口由5个标准的管脚组成。数据通过tdi串行发至控制器,然后通过tdo从控制器串行输出。程序的下载、调试都是通过jtag口来完成的。电路图如图6:图6 lm3s9b95 jtag接口电路4.2 音频解码芯片vs1003vs1003是由荷兰vlsi公司出品的一款单芯片的mp3/wma/midi音频解码和adpcm编码芯片,其拥有一个高性能低功耗的dsp处理器核vs_dsp,5k的指令ram,0.5k的数据ram,串行的控制和数据输入接口, 4个通用io口,一个uart口;同时片内带有一个可变采样率的adc、一个立体声dac以及音频耳机放大器。4.2.1 芯片封装vs1003采用lqfp-48封装,封装图如图7:图7 vs1003封装图4.2.2 引脚定义 vs1003共有48个管脚,引脚定义如表1: 表1 vs1003管脚功能 管脚名称lqfp-48管脚类型管脚功能micp1ai同相差分话筒输入,自偏压micn2ai反相差分话筒输入,自偏压xreset3di低电平有效,异步复位端dgnd04dgnd处理器核与i/o地cvdd05cpwr处理器核电源iovdd06iopwri/o电源cvdd17cpew处理器核电源dreq8do数据请求,输入总线gpio/dclk9dio通用i/o2 /串行数据总线时钟gpio3/sdata10dio通用i/o3 /串行数据总线数据xdcs/bsync13di数据片选端/字节同步iovdd114iopwri/o 电源vco15do时钟压控振荡器vco 输出dgnd116dgnd处理器核与i/o 的地xtalo17ao晶振输出xtali18ai晶振输入iovdd219iopwri/o 电源dgnd220dgnd处理器核与i/o 地dgnd321dgnd处理器核与i/o 地dgnd422dgnd处理器核与i/o 地xcs23di片选输入,低电平有效cvdd224cpwr处理器核电源rx26diuart接收口,不用时接iovddtx27douart发送口sclk28di串行总线的时钟si29di串行输入so30do3串行输出cvdd331cpwr处理器核电源test32di保留做测试,连接至iovddgpio0/spiboot33dio通用i/o0 /spiboot,使用100k 下拉电阻gpio134dio通用i/o1agnd037apwr模拟地,低噪声参考地avdd038apwr模拟电源right39ao右声道输出agnd140apwr模拟地agnd241apwr模拟地gbuf42ao公共地缓冲器avdd143apwr模拟电源rcap44aio基准滤波电容avdd245apwr模拟电源left46ao左声道输出agnd347apwr模拟地line in48ai线路输入4.2.3 芯片特性vs1003的特性:(1)能解码mpeg1 与mpeg2音频层iii(cbr+vbr+abr);wma 4.0/4.1/7/8/9 5384kbps所有流文件;wav(pcm+ima ad-pcm);产生midi/sp-midi文件;(2)对话筒输入或线路输入的音频信号进行ima adpcmm编码;(3)支持mp3和wavv流;(4)高低音控制;(5)单时钟1213mhz;(6)内部plll锁相环时钟倍频器;(7)低功耗;(8)内含高性能片上立体声数模转换器,两声道间无相位差;(9)内含能驱动30欧负载的耳机驱动器(10)模拟,数字,i/o单独供电;(11)为用户代码和数据准备的5.5kb片上ram;(12)串行的控制/数据接口(13)可被用作微处理器的从机;(14)特殊应用的spi flash引导;(15)借高度用途的uart接口;(16)新功能可以通过软件和4 gpio添加。4.2.4 供电系统模拟、数字i/o单独供电,电压值分为3.3v和2.5v。3.3v统一使用系统3.3v直流电,但需加相应的隔离器件以防止干扰。2.5v电压使用tlv1117-25单独供电。tlv1117-25是ti公司单通道ldo线性稳压器,输入电压范围3.9v-15v,输出固定电压2.5v。电路图如图8:图8 tlv1117-25电路图 4.2.5 读写操作时序vs1003采用spi总线模式,时序图如图9:图9 vs1003 spi读写时序图4.3 tft彩屏系统采用的彩屏分辨率为240*320,2.8寸。支持262k/65k色,数据位为8/16位可选,控制器为ili9325。引脚定义如图10:图10 tft彩屏引脚图引脚功能:db0-db15:16位数据线;rs:寄存器选择信号wr:写信号开关rd:读信号开关reset:复位y+、y+:触摸屏y轴输出x+、x-:触摸屏x轴输出led+a:液晶背光公共端led-k1led-k4:背光选择vdd:电源gnd:地其中led+a为公共端,接3.3v电压,led-k1led-k4用来设置背光亮度,全部接10欧姆电阻再接地背光最亮。4.4 触摸屏控制芯片4.4.1 ads7846简介ads7846 是美国burr - brown 公司推出的新一代4 线制触摸屏控制器,当与触摸屏连用,只要笔或手指点触摸在屏上时, 即可迅速得到该点的位置信号以达到在触摸屏表面寻址的目的。ads7846是一款4线式阻性触摸屏控制电路,支持1.5v到5.25v间的低压io接口。内含一个2.5v的内部基准电路。ads7846有tssop16、qfn16和vfbga48等封装形式,在-40c到+85c温度范围内工作。引脚图如图11:图11 ads7846管脚图4.4.2 ads7846引脚功能ads7846有16个引脚,引脚功能介绍如图12:1+vcc电源引脚2x+x+位置输入端3y+y+位置输入端4x-x-位置输入端5y-y-位置输入端6gnd地引脚7vbat电源检测输入端8aux备选输入端9vref基准电压输入/输出10+vcc电源引脚11penirq中断输出管脚12dout串行数据输出端,当cs为高时为高阻态13busy忙信号输出,当cs为高时为高阻态14din串行数据输入端,当cs为高时为高阻态15cs片选信号输入16dclk时钟输入端口图12 ads7846引脚图4.4.3 工作原理(1)ads7846内部有一个由多个模拟开关组成的供电-测量电路网络和12 位的a/d 转换器。ads7846 根据微控制器发来的不同测量命令导通不同的模拟开关,以便向工作面电极对提供电压,并把相应测量电极上的触点坐标位置所对应的电压模拟量引入a/d 转换器。在触摸点x、y 坐标的测量过程中,测量电压与测量点的等效电路如图13 所示,图中p 为测量点。图13 等效电路图(2)数字接口ads7846 与微控制器之间通过标准的spi 口相连,由微控制器启动3 次spi 传送来完成转换,如图5 所示。第一次spi 传送由微控制器向ads846 发控制字,包括起始位、通道选择、8/12 位模式、差分/单端选择和掉电模式选择,接下来的两次spi 传送则是微控制器从ads7846 取a/d 转换结果数据(最后四位自动补零),完成触摸屏控制器和微控制器之间的一次通信。(3)控制时序ads7846采用spi总线模式,spi时序图如图14:图14 ads7846控制时序图4.5 温度传感器4.5.1 tmp175简介系统温度传感器采用tmp175。tmp175是ti公司生产的12位分辨率(可设定)、带双总线接口(i2c和smbus)的数字温度传感器。测量范围-40c - 125c,测量精度0.5c(-40c - 85c)。系统采用i2c总线进行控制。引脚图如图15:图15 tmp175管脚图电路图如图16:图16 tmp175电路图4.5.2 i2c总线i2c(interintegrated circuit)总线是由philips公司开发的两线式串行总线,一条串行数据线sda,一条串行时钟线scl,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。lm3s9b95集成2个i2c模块,提供与总线上其它i2c器件互联(发送和接收)的能力。下面将介绍lm3s9b95的i2c模块。(1)基本概念 发送器:本次传送中发送数据(不包括地址和命令)到总线的器件 接收器:本次传送中从总线接收数据(不包括地址和命令)的器件 主机:初始化发送、产生时钟信号和终止发送的器件,它可以是发送器或接收器。主机通常是微控制器。 从机:被主机寻址的器件,它可以是发送器或接收器。(2)信号线与连接方式 i2c总线仅使用两个信号:sda和scl。 sda是双向串行数据线,scl是双向串行时钟线。当sda和scl线为高电平时,总线为是空闲状态。总线连接形式如图17:图17 i2c总线连接形式i2c模块必须被连接到双向的开漏管脚上。如图1.1所示为i2c总线的典型连接方式,要注意主机和各个从机之间要共gnd,而且要在信号线scl和sda上接有适当的上拉电阻rp(pull-up resistor)。(3)起始和停止条件i2c总线的协议定义了两种状态:起始和停止。当scl为高电平时,在sda线上从高到低的跳变被定义为起始条件;而当scl为高电平时,在sda线上从低到高的跳变则被定义为停止条件。如图18:图18 i2c总线起始条件和停止条件(4)应答数据传输必须带有应答。与应答相关的时钟脉冲由主机产生。发送器在应答时钟脉冲期间释放sda线。接收器必须在应答时钟脉冲期间拉低sda,使得它在应答时钟脉冲的高电平期间保持稳定(低电平)。 (5)带有7位地址的数据格式数据传输的格式如图19所示。从机地址在起始条件之后发送。该地址为7位,后面跟的第8位是数据方向位,这个数据方向位决定了下一个操作是接收(高电平)还是发送(低电平),0表示传输(发送);1表示请求数据(接收)。 图19 带7位地址的完整数据传输 首字节的前面7位组成了从机地址(见图20)。第8位决定了消息的方向。首字节的r/s位为0表示主机将向所选择的从机写(发送)信息。该位为1表示主机将接收来自从机的信息。 图20 在第一个字节的r/s位(6)数据地址(子地址) 带有i2c总线的器件除了有从机地址(slave address)外,还有数据地址(也称子地址)。从机地址是指该器件在i2c总线上被主机寻址的地址,而数据地址是指该器件内部不同部件或存储单元的编址。 数据地址实际上也是像普通数据那样进行传输的,传输格式仍然是与数据相统一的,区分传输的到底是地址还是数据要靠收发双方具体的逻辑约定。数据地址的长度必须由整数个字节组成,可能是单字节,也可能是双字节,还可能是4字节,这要看具体器件的规定。 4.6 时钟芯片ds1339ds1339是美国达拉斯半导体公司的串行实时时钟芯片,实时时钟(rtc)记录秒、分、时、星期、日、月、年信息,具有有效至2100年的闰年补偿。2线串口接口;可编程的方波输出;自动电源失效检测与转换电路及电池充电功能。其引脚图如图21:图21 ds1339管脚图sda和scl为i2c总线,sqw/int为中断输出管脚,当闹钟时间到时,sqw/int会产生中断。vbackup电池电源管脚,电路这个脚接纽扣电池正端,系统断电后时钟芯片依然能够工作。电路图如图22:图22 ds1339电路图ds1339采用i2c总线接口,和tmp175挂载在同一条总线上,但器件地址不同,ds1339的器件地址为0x68,tmp175则为0x49。控制器对时钟芯片的操作主要是对寄存器的操作,读取时间、设定时间、设定闹钟等都是对寄存器的操作。例如,读寄存器00h就能把时间的秒数读出来,01h则是分钟。注意,读写数据采用bcd码格式。ds1339的寄存器如图23:图23 ds1339内部寄存器读写时序如图24:图24 ds1339读写时序图4.7 sd卡sd卡(secure digital memory card)是基于flash储存介质的新一代记忆设备,具有体积小、容量大、数据传输快、移动灵活、安全性能好以及兼容mmc卡等特点。sd卡有sd和spi两种工作模式,相对于sd模式,spi模式可以简化主机设计,降低成本。因lm3s9b95单片机没有sd总线接口,所以只能使用spi模式。sd卡管脚定义,如图25:图25 sd管脚定义在spi模式下,1脚8脚保留(未使用)、2脚片选端、3脚数据输入端、4脚6脚电源端、5脚时钟信号端、7脚数据输出端。sd卡的工作电压为2.73.6v。电路图如图26:图26 sd卡电路图系统中sd卡的主要作用是存储歌曲文件、图片、中文字库以及录音文件。相对于flash芯片,sd卡容量更大,而且驱动程序较为简单。sd卡采用spi总线模式。lm3s9b95集成了2个spi接口,方便系统的控制。5 软件部分5.1 开发工具介绍程序的开发采用iar embedded workbench for arm这个软件。iar embedded workbench for arm(下面简称iar ewarm)由全球领先的嵌入式系统开发工具和服务的供应商iar system开发,是一个针对arm 处理器的集成开发环境,它包含项目管理器、编辑器、c/c+编译器和arm 汇编器、连接器xlink和支持rtos 的调试工具c-spy。在ewarm 环境下可以使用c/c+和汇编语言方便地开发嵌入式应用程序。比较其他的arm 开发环境,iar ewarm 具有入门容易、使用方便和代码紧凑等特点。目前iar ewarm支持arm cortex-m3 内核的最新版本是 5.4,该版本支持luminary全系列的mcu。5.2 程序框图软件流程图如图27:图27 程序流程图5.3 文件系统文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。目前,常见的文件系统有fat、ntfs、exfat、aw、raw以及gnu/linux中的ext2、ext3、ext4等。目前应用的最多是fat文件系统。本系统采用的是fatfs文件系统。5.3.1 fatfs简介fatfs是一个通用的文件系统模块,用于在小型嵌入式系统中实现fat文件系统。 fatfs 的编写遵循ansi c,因此不依赖于硬件平台。它可以嵌入到便宜的微控制器中,如 8051, pic, avr, sh, z80, h8, arm 等等,不需要做任何修改。fatfs文件系统时一个完全免费且开源的fat文件系统模块。本系统采用的版本是fatfs09。fatfs源码包中的文件有7个,分别是:“ffconf.h”文件:fatfs文件系统的配置;“ff.h”文件:fatfs文件系统api函数声明;“ff.c”文件:fatfs源码;“diskio.h”文件:fatfs与储存设备接口函数声明;“diskio.c”文件:fatfs与储存设备接口函数;“integer.h”文件:fatfs用到的所有变量类型的定义;“cc936.c”文件:fatfs长文件名编码转换表;fatfs 提供下面的函数:f_mount - 注册/注销一个工作区域(work area)f_open - 打开/创建一个文件f_close - 关闭一个文件f_read - 读文件f_write - 写文件f_lseek - 移动文件读/写指针f_truncate - 截断文件f_sync - 冲洗缓冲数据 flush cached dataf_opendir - 打开一个目录f_readdir - 读取目录条目f_getfree - 获取空闲簇 get free clustersf_stat - 获取文件状态f_mkdir - 创建一个目录f_unlink - 删除一个文件或目录f_chmod - 改变属性(attribute)f_utime - 改变时间戳(timestamp)f_rename - 重命名/移动一个文件或文件夹f_mkfs - 在驱动器上创建一个文件系统f_forward - 直接转移文件数据到一个数据流 forward file data to the stream directlyf_gets - 读一个字符串f_putc - 写一个字符f_puts - 写一个字符传f_printf - 写一个格式化的字符磁盘i/o接口5.3.2 文件系统的移植文件系统能以文件的形式打开文件并进行读写、删除、重命名等操作。在本系统当中,可以通过文件系统打开歌曲文件送至音频解码芯片进行解码播放,也可以打开图片送至液晶显示。在做这些工作之前,先要对文件系统进行移植。文件系统的移植其实就是更改底层驱动。由于系统的存储器是sd卡,所以底层驱动即是sd卡的驱动程序。sd卡的时序图如图28:图28 sd卡时序图前面已经介绍了sd卡的相关内容。sd卡采用spi总线方式驱动。sd卡的相关驱动在“diskio.c”中。分别是:select 打开sd卡片选deselect 关闭sd卡片选xmit_spi -写一个字节rcvr_spi - 读一个字节wait_ready - 等待sd卡准备好send_initial_clock_train 时钟初始化power_on 端口初始化set_max_speed 配置spi接口的速度移植过程中只需将更改这几个底层驱动即可,最主要的是sd卡的读写操作函数rcvr_spi和xmit_spi以及端口的正确配置。系统对sd卡的驱动是采用spi0。这样就完成了移植的基本步骤。5.3.3 文件系统长文件名的支持由于文件系统默认8.3的文件名格式,所谓8.3是指8字节文件名和3字节的扩展名。超过8字节的文件名是不支持的。也就是说文件名不能超过8个英文字母或者4个中文汉字,多余部分只能显示出“”。因此,系统为方便对文件的控制,增加了对长文件名的支持。首先在ffconf.h文件里更改宏定义,具体做法如下:#define _code_page936 / 936为中文编码转换表#define_use_lfn1 /* 0 to 3 */ / 是否支持长文件这样做完之后,通过调用cc936.c里面的转换函数就可以支持长文件名了。转换函数其实是一个查表函数,在cc936.c里有两个数组,这个两个数组非常大,有将近9万个元素。如果这两个数组放在控制器当中,将占用大量的flash,虽然lm3s9b95有256kb的flash能够存下这两个数组,但是代码量过大将影响调试过程。在这里解决的办法是将这两个数组转换成bin文件放在sd当中,从sd卡里读取相关数据完成转换。具体代码如下:res=f_open(&file,gbu2.bin,fa_open_always|fa_write);/新建一个名为“gbu2”的文件,并写入数据,程序如下:for(j=0;j2724;j+)/每次32个字节,一共2724次 for(i=0;i8);/高位 table4i=b;/低位在前,第一个元素 table4i+1=c;/高位在后 k=k+2; res=f_write(&file,table4,32,&b1);/读到的32个字节写入文件中 res=f_close(&file);/关闭,相当于保存 res=f_open(&file,gbu2.bin,fa_open_always|fa_write); f_lseek (&file,32*(j+1); res=f_close(&file);/关闭,相当于保存res=f_open(&file,gbu2.bin,fa_open_existing|fa_read); /读这个文件,查看是否正确f_read(&file,table5,128,&b1);b=table52;这样就把这两个数组以bin文件的形式存放在sd卡当中。文件名分别是“gbu2.bin”和“u2gb.bin”。5.4 gui程序的设计图形用户界面(graphical user interface,简称 gui,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。本系统移植了个小型gui,用来设计系统的操作界面,tft彩屏大量使用了gui内的相关函数。为适应系统需要,做了一定的裁剪。底层驱动程序函数定义在“ili9325_driver.c”和“gui_basic.c”中,具体如下:lcd_init - 液晶初始化 lcd_writecmd - 向液晶模块写命令lcd_writedata - 向液晶模块写数据lcd_writereg - 向液晶的控制寄存器中写入命令字 ili9320_readdata - 读取控制器数据ili9320_readregister - 读取指定地址寄存器的值lcd_disponepixel - 显示一个像素点gui_hline - 绘制水平直线gui_rline - 绘制竖直直线gui_ellipsefill - 画正椭圆,并填充gui_square - 画正方形gui_square_fill - 画填充矩形在对液晶操作前应调用“lcd_init”对液晶初始化,然后再进行其他操作。5.5主要功能的实现原理5.5.1游戏系统内设五子棋和俄罗斯方块两个游戏。下面将分写介绍两个游戏的实现方法。1,五子棋五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。标准的五子棋棋盘大小为14*14,棋子摆放在各条线的交叉点。在本系统中,如果按照标准棋盘来设置,由于液晶屏尺寸有限,棋盘方格会很小不便触屏操作。因此,在这将棋盘设为10*10,方格大小为21*21,棋子摆放在方格内。其初始化界面程序如下:for(i=0;i11;i+)/加载棋盘 lcd_disprandomline(15+21*i,15,15+21*i,225,black); for(i=0;i11;i+) lcd_disprandomline(15,15+21*i,225,15+21*i,black); 在棋手每下一个棋子后,系统都要判断这个棋子是否有5个连在一起,如果有,则表明这位棋手胜利。在这个棋子的横、竖、撇(左斜)、捺(右斜)四个方向上均要判断。以横为例,先判断棋子左边四个是否与这个棋子同色,如果不是,则判断左边三个,右边一个;还不是的话,则判断左边两个,右边两个。以此类推,最后在四个方向均完成一次判断。如果胜利则显示某位棋手胜利,否则游戏继续。具体判断程序详见函数judge(uint8 mode)。2,俄罗斯方块俄罗斯方块(tetris, 俄文:)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。游戏设置了五个按键,分别是左、右、下、变形、暂停/开始。游戏开始时,系统将随机选择一个模型,并向下移动,同时,将提示下一个是什么模型。玩家通过按键可以对模型进行左、右、下移动,同时可以变形操作。模型的显示函数为displaybasemodel。系统需要判断模型是否碰到左右两边、底部的边框,当到了底部之后需要判断是否有一整排连在一起,有的话将最下面那一排消除,并且加上相应的得分。游戏设有5个难易等级。5个难易等级是通过调整模型移动的速度来实现的。系统是通过定时器定时移动模型的,定时短将加快移动速度。因此调整难易等级就是调整定时器的定时值。变量timer_init用来存储定时器的初值。此外函数judge_key()用来判定左右下变形和暂停按键。5.5.2图片浏览系统带有图片浏览的功能。仅支持bmp图片格式,其他格式暂不支持。支持bmp24位深度和32位深度格式图片。判断是否是bmp格式图片的方法是:用文件系统函数f_open打开一个图片文件,然后再用f_read读36个字节数据存放在一个数组中。再判断数组元素0和元素1是否分别等于0x42和0x4d,是的话就是bmp格式,程序如下:res3 = f_open(&file4, bmp_name, fa_open_existing | fa_read); /打开图片res3 = f_read(&file4, newdata, 0x36, &br); /读取文件头信息 if(newdata0=0x42 & newdata1=0x4d) /文件格式标记为bm接下来再分别读出图片的高度、宽度信息和图片深度位数,最后送至液晶显示。以24位为例,其显示程序如下:/24位深度图片 if(temp2=24) while(1) res3 = f_read(&file4, newdata, 3, &br); /读取3个数据 if(res3|br=0) /错误跳出 break; for(i=0;i1;i+) /*画点函数*/ lcd_disponepixel(x+p,y+temp1-1-q,(newdatai*3+2*32/256)11|(newdatai*3+1*64/256)5|(newdatai*3*32/256) p+; if(p=temp) p=0; q+; if(q=temp1) q=0; 通过按键或触屏可以查看上下页。选择“返回”直接退出图片浏览模式回到主界面。5.5.3录音vs1003内设高质量的立体声数模转换器(dac),16位可调片内模数转换器(adc),高质量的立体声耳塞驱动(30欧)和一个麦克风接口,具有录音功能。系统采用驻极体作为声音提取器进行录音。录音步骤如下:1,vs1003初始化,调用函数vs_recorde_init()使vs1003进入录音状态。vs_recorde_init()函数定义在record.c文件中;2,等待按键按下,选择录音;3,调用函数vs_recorde_save()将录音数据保存到sd中。vs1003初始化后,通过功放或者耳机可以听到回声,表明初始化成功,这时就可以进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技园配套基础设施建设项目规划设计方案(仅供参考)
- 乡村医疗卫生人才队伍建设面临的主要问题与障碍
- 繁星春水:诗歌意境与情感表达教学教案
- 农村农户绿色生态种植协议规范
- 元宇宙概论 课件 -第十讲 元宇宙应用-数字人
- 生态产品产业链协同与资源整合路径
- 企业新闻发布记录表
- 顾客群体:消费者年龄分布表
- 中医药适宜技术推广的健康管理与服务模式
- 2025年音乐表演艺术专业综合能力考试试卷及答案
- 北大夏令营试题及答案
- 建设项目全生命周期安全风险管理研究
- 钢结构电梯井道合同模板
- 室内装修施工设计方案模板
- 湘教版六年级音乐教案下册
- 四川省内江市隆昌市2024-2025学年六年级下学期小升初真题数学试卷含解析
- 变频器应用课件
- 人工智能在地球观测中的应用-深度研究
- 2023年中小学心理健康教育课程标准
- 煤矿各类重大灾害预兆
- 逻辑思维训练500题(带答案)
评论
0/150
提交评论