毕业论文 - 图文(6)

2019-01-10 10:32

华南理工大学学士学位论文

图2.18 系统板PCB

2.6 本章小结

在本章中,我们首先对整个设计的总体方案进行了选取,包括存储媒介的选择、MCU

的选型、硬件器件的选型以及互交方式的确定,经过总体方案论证,我们得到了初步的技术方案,具体确定了硬件器件的选型。接着详细介绍了各模块硬件电路的设计,并且介绍了一些本系统的PCB布线规则,接着下来的任务就是设计该系统的软件系统。软件系统的设计将在下一章详细说明。

26

第三章 系统软件设计

第三章 系统软件设计

3.1 设计思路

经过上一章,多功能MP3的的硬件系统已经设计出来了,但是没有软件的支持,硬件

就不能正常工作,形同虚设。软件是硬件的灵魂,控制着整个硬件系统的运行。所以软件对整个系统的重要性从某种意义上说比硬件更加重要。

整个MP3的软件系统涉及到很多方面,是一个比较复杂的系统,不可能一次把所有的代码都写出来。这里对软件代码的编写采用模块化的设计思想,将整个软件系统逐步划分为子系统,再将子系统逐步细化为单一功能的模块来实现,最后再将所有的模块整合成一个大系统,实现预期的功能。

3.2 软件模块化设计

从整个系统来说,按其与硬件是否直接相关,可以把软件分为两大部分:(一)与硬

件相关的底层驱动软件子系统。(二)与硬件无关的应用软件子系统。这两个子系统的软件又可以细化为许多模块。

对于底层驱动软件子系统包括如下模块程序:LCD驱动模块、触摸屏驱动模块、SD卡驱动模块、VS1003驱动模块、PT2314驱动模块、FM24C16驱动模块、TEA5767驱动模块、温度传感器驱动模块、彩灯驱动模块、实时时钟驱动模块。

对于应用软件子系统包括如下模块程序:JPEG/BMP解码模块、FAT文件系统管理模块、音乐播放模块、图片浏览模块、游戏模块、闹钟模块、时间模块、设置管理模块、电子书模块、收音机模块、彩灯控制模块。

当进行模块化程序设计时,我们首先要明确模块的功能作用,将其划分为一个个独立的功能模块,将其封装为函数,供给其他模块调用。底层驱动主要实现一些基本的底层功能,如硬件初始化、与硬件密切相关的时序函数等等。应用层实现整个软件系统的应用功能函数。

3.2.1 LCD模块驱动程序设计

本系统用到的LCD是八位数据模式,驱动IC型号是FMT0371,该芯片为松下合资厂

生产的一个LCD驱动IC。最高支持26万色的TFT LCD,有6位、8位、16位和18位数据模式,可以方便选择。本系统配套的LCD使用的是八位数据模式,65K色。

根据该LCD的DATASHEET,每个像素点的GRAM实际上是一个18bit的数据寄存器。

27

华南理工大学学士学位论文

在16bit模式下与写入数据的对应关系如图3.1 所示:

图3.1 写入数据与GRAM对应关系

从图中可以看出,RGB的有效位数分别为565,比如写入0XF800则显示纯红色,写入0X07E0则显示纯绿色,写入0X001F 则显示纯蓝色。在处理数据的时候要把像素值先变换为这样的结构,然后再写入LCD。LCD的显示状态都是由LCD的控制命令控制的,通过写入不同的控制命令和数据,就可以实现不同的现实功能和效果。分析DATASHEET得到几个重要的控制命令:

00H:这个命令用来控制内存操作模式,这里我们主要用它来改变LCD的扫描方向。 02H,03H:这两个命令用来分别设置X,Y方向的开始显示的点坐标。 04H,05H:这两个命令用来分别设置X,Y方向的结束显示的点坐标。 0EH,0FH:这两个命令用来写入和读取显存。

LCD驱动部分包括几个关键函数:LCD读写寄存器函数、LCD读写数据函数、LCD初始化函数和LCD画点函数。有了这几个基本函数,其他的画线、画面、甚至画图都比较容易了。LCD与MCU的连线包括D0~D7、CS、RS、RST、WR、RD、BL共14根线。 D0~D7:数据线

CS:LCD的片选线,低电平有效。

RS:LCD的地址/数据控制,高电平表示数据,低电平表示地址。 RST:复位线,低电平有效。 WR:写数据访问控制。 RD:读数据访问控制。 BL:LCD背光,高电平有效。 LCD读写寄存器

(1)对LCD寄存器的操作线设置RS为低,表示写入寄存器,然后拉低片选信号,给BL 送入数据,然后通过一个WR的脉冲,就可以把数据写入到LCD了。最后释放RS,CS,完成此次操作。对LCD寄存器的读操作和写操作差不多,不同之处就是把WR脉冲改为RD脉冲。

(2) LCD读写数据

对于LCD数据的读写,和寄存器的读写差不多,只要把RS设置为高,就表示此次操对于以上两步,要注意在读写数据的时候必须先对寄存器写入0X0E/0X0F命令来表明

28

作是对数据的读写,其他同寄存器的读写操作一样。

第三章 系统软件设计

是读还是写。 (3) LCD初始化

这部分是在前面两步成功的基础上才能进行的,LCD的初始化涉及到其内部很多寄存器的初始化。比较复杂,由void TFT_Init(void)函数实现,具体初始化过程请参考附件里面的代码。 (4) LCD画点

画点的实现,要先设置LCD开始显示和结束显示的范围,通过0X02H~0X04H这四个命令实现。之后写入0X0E命令,开始写入数据,就可以写入像素值(16bit)了,对于画点,我们只要写入一个像素点就可以了,这样就完成了在LCD上画一点。具体见附件里面的void TFT_DrawPoint(u8 x,u16 y)函数。

以上四个函数是LCD的主要函数,是最底层的。其他任何功能的函数都可以在这几个底层函数基础上实现。其他功能的LCD驱动函数均在tftlcd.c里面有定义和说明,具体见附件。

3.2.2 触摸屏模块驱动程序设计

本系统的输入系统采用的是四线电阻式触摸屏加ADS7846实现的,整个系统的控制都

是由触摸屏控制的,所以,触摸屏控制算法的好坏直接影响着整个系统的使用,这里有必要认识触摸屏和ADS7846的工作原理。

触摸屏工作原理:触摸屏附着在显示器的表面,与显示器相配合使用,如果能测量出触摸点在屏幕上的坐标位置,则可根据显示屏上对应坐标点的显示内容或图符获知触摸者的意图。触摸屏按其技术原理可分为五类:矢量压力传感式、电阻式、电容式、红外线式、表面声波式,其中电阻式触摸屏在嵌入式系统中用的较多。电阻触摸屏是一块4层的透明的复合薄膜屏,如图3.2,最下面是玻璃或有机玻璃构成的基层,最上面是一层外表面经过硬化处理从而光滑防刮的塑料层,中间是两层金属导电层,分别在基层之上和塑料层内表面,在两导电层之间有许多细小的透明隔离点把它们隔开。当手指触摸屏幕时,两导电层在触摸点处接触。

触摸屏的两个金属导电层是触摸屏的两个工作面,在每个工作面的两端各涂有一条银胶,称为该工作面的一对电极,若在一个工作面的电极对上施加电压,则在该工作面上就会形成均匀连续的平行电压分布。如图3.3所示,当在X方向的电极对上施加一确定的电压,而Y方向电极对上不加电压时,在X平行电压场中,触点处的电压值可以在Y+(或Y -)电极上反映出来,通过测量Y+电极对地的电压大小,便可得知触点的X坐标值。同理,当在Y电极对上加电压,而X电极对上不加电压时,通过测量X+电极的电压,便可得知触点的Y坐标。电阻式触摸屏有四线和五线两种,我们这里用的是四线式的。四线式触摸屏的X工作面和Y工作面分别加在两个导电层上,共有四根引出线,分别连到触摸屏的X

29

华南理工大学学士学位论文

电极对和Y电极对上。

图3.2 触摸屏触摸示意图

图3.3 触摸屏输入系统的组成

ADS7846工作原理:控制器的主要功能是分时向X、Y电极对施加电压,并把测量电

极上的电压信号转换为相应触摸点的X、Y坐标。ADS7846 内部有一个由多个模拟开关组成的供电-测量电路网络和12位的A/D转换器(见图3.4)。ADS7846根据微控制器发来的不同测量命令导通不同的模拟开关,以便向工作面电极对提供电压,并把相应测量电极上的触点坐标位置所对应的电压模拟量引入A/D转换器。在触摸点X、Y坐标的测量过程中,测量电压与测量点的等效电路如图3.5所示,图中P为测量点。

图3.4 ADS7846的功能框图

30


毕业论文 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:热电厂施工组织设计 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: