TFT液晶彩图显示法

  • 格式:pdf
  • 大小:1.98 MB
  • 文档页数:70

T F T液晶彩色图像显示方法——点阵L C D驱动显控原理下册——小丑 powerintV1.0 – 2009.02Mz出品目 录1 关于本书 (1)1.1 基于通用版LCD驱动程序 (1)1.2 与操作系统无关 (1)1.3 一些建议 (1)2 LPC2000系列与MzT24 (2)2.1 使用LPC2000作为MCU本书平台 (2)2.2 MzT24彩色TFT模块 (2)2.2.1 MzT24模块简介 (2)2.2.2 显示RAM区映射情况 (3)2.2.3 MzT24操作时序 (4)2.2.4 控制方法及LCD显示特性 (5)2.2.5 MzT24的控制寄存器 (8)2.3 LPC2292驱动控制MzT24 (8)2.3.1 LPC2292与MzT24模块的连接 (8)2.3.2 修改LCD_Driver_User.c文件 (10)2.3.3 LCD_Config.h的配置修改 (15)2.3.4 为了速度作一些简单的优化 (16)2.4 利用外部总线连接MzT24 (16)3 TFT模块的扩展功能驱动程序 (19)3.1 LCD_Extend (19)3.1.1 一些有用的功能扩展 (19)3.1.2 功能代码分析 (20)3.2 Dis_Window (23)3.2.1 Dis_Window的理解 (26)4 RGB565格式图像取模显示 (27)4.1 图像取模 (27)4.2 代码分析 (30)4.3 显示效果参考 (33)5 BMP文件解码显示 (34)5.1 BMP文件格式 (34)5.1.1 BMP文件构成分析 (34)5.1.2 位图文件头结构详解 (38)5.1.3 位图信息头结构详解 (39)5.1.4 色表结构分析 (39)5.1.5 图像数据分析 (40)5.2 将BMP文件数据整合进Keil的工程 (41)5.3 BMP文件的解码分析 (43)5.4 应用参考 (53)6 JPG文件解码显示 (56)6.1 有关JPG解码算法库 (56)6.1.1 JPG解码库的相关说明 (56)6.1.2 JPG解码库的特点 (56)6.1.3 JPG解码显示的软件架构 (57)6.2 将JPG文件数据整合进Keil的工程 (58)6.3 JPG文件的解码显示代码分析 (59)6.4 应用参考 (64)1关于本书1.1基于通用版LCD驱动程序在《点阵LCD驱动显控原理》一书中,已经对我们所提供的通用LCD驱动程序作了详细的介绍,在本书所介绍的的利用TFT显示彩色图像的方法(或者说是代码、算法都无所谓)是基于上述书中所介绍的通用LCD驱动程序的,在此就不会再多花费笔墨对它们进行一一详述了。

而对于我们介绍过的通用版LCD驱动程序,在那本书中介绍的都是单色的点阵LCD屏的驱动程序,不过这份驱动程序是可以适应彩色TFT模块的应用接口的,在书中亦有提过。

其实就简单而言,彩色的TFT液晶模块也是点阵的LCD,只不过相比单色LCD模块,它的每个像素点所需要使用的数据量增多了而已。

不过,需要说明一下,本书中所介绍的方法是针对于那些TFT屏上带有控制器的模块,也就是可以使用MCU的端口或者外部总线直接控制它的,与控制显示单色屏差不多。

而一些RGB接口的TFT数字屏以及模拟屏,或者是VGA接口的各种TFT屏,在使用方法上还是不太一样的,这里就暂不涉及讨论它们了。

1.2与操作系统无关本书所介绍的显示方法以及所提供的例程全部是在MCU上祼跑的代码,不基于任何嵌入式操作系统,如果有感兴趣的朋友,也可以自行进行将它们往操作系统上移植,这里介绍的还是方法和参考。

1.3一些建议与上一本书《点阵LCD驱动显控原理》类似,我们为了让程序更容易理解以及更便于移植到不同的MCU或者液晶模块上面,在一些速度以及性能上作了牺牲,比如BMP文件解码显示以及JPG文件解码显示的处理上,如果单照着某一块TFT屏以及某一个MCU作优化,显示的速度还是会比所提供的代码要快一倍以上的,这些我们都在给客户订制的产品方案中使用过。

而如果您在使用我提供的例程中,感觉有些功能程序在使用上不能完全符合你的设计要求,也请多多见谅,毕竟条条大路通罗马,不大可能把它做得符合所有人的使用习惯;一般来说,我希望能够给读本书的朋友提供的是一种方法和参考,有些问题请参阅本书的朋友尽量能够自行体会和理解,当然您想与我联系的话,还是欢迎的,你可以通过QQ或者邮件与我取得联系。

欢迎有限度的骚扰。

——小丑(或者叫我“小强”)QQ:6442726442009-2-23 于北京2LPC2000系列与MzT242.1使用LPC2000作为MCU本书平台彩色TFT模块的显示往往需要较为大量的数据,特别是要显示彩色图像时动则上百K byte的数据量,这对驱动它的平台提出了要求,所以本书将会使用NXP公司的LPC2000系列ARM7作为范例的平台。

书中所介绍的代码以及所附带的例程,都是在LPC2292上跑过的,如果读者需要将它们移植到别的平台,有些工作是需要自己进行的,包括对LCD驱动程序的移植,以及一些与编译器有关的代码。

LPC2292是ARM7核心的MCU,144脚封装,片内256K byte的程序Flash,以及16K byte的片内SRAM,并且可以通过其片上引出的最大32位宽度的外部总线来连接片外Flash/ROM以及SRAM,或者一些可以用总线来连接的外设。

在此就不对LPC2292多作介绍了,感兴趣的朋友可以从网络上下载相关的资料进行查阅;不过,请放心,书中介绍的代码基本上是与CPU无关的,也就是与你使用什么样的MCU平台没有太多关系,重要的是方法和思路。

2.2MzT24彩色TFT模块MzT24彩色TFT模块是一个2.4英寸的TFT模块,内置TFT控制器,对外连接直接通过8位的8080总线进行指令和数据的传输。

MzT24有像素点数为240×320,色彩深度为16位色,也就是每一个像素点需要用16位的数据来表示其显示的内容。

有关MzT24模块的介绍,请参考它的编程手册,在那里有详尽的说明,在此仅介绍一些在本书的介绍中所涉及的一部分。

2.2.1MzT24模块简介MzT24彩色TFTLCD显示模块的LCD驱动控制IC为SPFD5408,用户在对MzT24模块进行操作时,实际上是对SPFD5408进行相关的控制寄存器、显示数学据存储器进行操作的。

下图是实物图:2.2.2显示RAM区映射情况MzT24模块的2.4英寸TFT-LCD显示面板上,共分布着240×320个像素点,而模块内部的TFT-LCD 驱动控制芯片内置有与这些像素点对应的显示数据RAM(简称显存)。

模块中每个像素点需要16位的数据(即2字节长度)来表示该点的RGB颜色信息,所以模块内置的显存共有240 × 320 × 16bit的空间,通常我们以字节(byte)来描述其的大小。

MzT24模块的显示操作非常简便,需要改变某一个像素点的颜色时,只需要对该点所对应的2个字节的显存进行操作即可。

而为了便于索引操作,模块将所有的显存地址分为X轴地址(X Address)和Y 轴地址(Y Address),分别可以寻址的范围为X Address=0~239,Y Address = 0~319,X Address和Y Address 交叉对应着一个显存单元(2byte);这样只要索引到了某一个X、Y轴地址时,并对该地址的寄存器进行操作,便可对TFT-LCD显示器上对应的像素点进行操作了。

提示:以上的描述意味着,当我们对某一个地址上的显示进行操作时,需要对该地址进行连续两次的8位数据写入或读出的操作,方可完成对一个显存单元的操作。

MzT24模块的像素点与显存对应关系如下图所示:显存与像素点对应关系示意图MzT24模块内部有一个显存地址累加器AC,即用于在读写显存时对显存地址进行自动的累加,这在连续对屏幕显示数据操作时非常有用,特别是应用在图形显示、视频显示时。

此外,AC累加器可以设置为各种方向的累加方式,如通常情况下为对X Address累加方式,具体为当累加到一行的尽头时,会切换到下一行的开始累加;还可以为对Y Address累加方式,具体为当累加到一列(垂直方向)的尽头时,会切换到下一个X Address所对应的列开始累加,详细介绍请参见2.3.2。

另外,MzT24模块还提供了窗口操作的功能,可以对显示屏上的某一个矩形区域进行连续操作,详细介绍也请参见2.3.3。

2.2.3MzT24操作时序MzT24模块支持标准intel8080总线,总线的最高速度可达8MHz,也就是说,如果控制MCU速度足够快的话,是可以支持视频的显示的。

下图为MzT24模块的总线时序图:MzT24模块总线时序图注意:MzT24模块的总线接口是8位的,也就意味着对显存的某一个地址操作时,需要连续进行两次操作方可完成,先传高字节再传低字节。

表 2.1时序特性(IOVcc=2.4V~3.3V ,TA=25℃)参数符号单位最小值典型最大值写周期t CYCW ns 125 -- -- 总线周期时间读周期t CYCR ns 450 -- -- 控制低脉冲宽度(RW)PW LW ns 45 -- --控制低脉冲宽度(RD) PW LR ns 170 -- --控制高脉冲宽度(RW) PW HW ns 70 -- --参数符号单位最小值典型最大值控制高脉冲宽度(RD) PW HR ns 250 -- -- 读/写控制信号上升/下降时间t WRr,t WRr ns -- -- 25 写(RS to CS,RW)ns 0 -- --建立时间读(RS to CS,RD)t ASns 10 -- --地址保持时间t AH ns 2 -- --写数据建立时间t DSW ns 25 -- --写数据保持时间t H ns 10 -- --读数据延迟时间t DDR ns -- -- 200读数据保持时间t DDR ns 5 -- -- 复位时序的示意图如下图所示:表 2.2复位时序特性参数符号单位最小值典型最大值复位低电平宽度t RES ms 1 -- --复位上升沿时间t rRES us -- -- 102.2.4控制方法及LCD显示特性z MzT24模块控制方法对MzT24模块的操作主要分为两种,一是对控制寄存器的读写操作,二是对显存的读写操作;而这两种操作实际上都是通过对LCD控制器(SPFD5408)的寄存器(register)进行操作完成的,SPFD5408提供了一个索引寄存器(Index register),对该Index register寄存器的写入操作可以指定操作的寄存器索引,以便于完成控制寄存器、显存操作寄存器的读写操作。