logo资料库

SPFD5408.pdf

第1页 / 共70页
第2页 / 共70页
第3页 / 共70页
第4页 / 共70页
第5页 / 共70页
第6页 / 共70页
第7页 / 共70页
第8页 / 共70页
资料共70页,剩余部分请下载后查看
1 关于本书
1.1 基于通用版LCD驱动程序
1.2 与操作系统无关
1.3 一些建议
2 LPC2000系列与MzT24
2.1 使用LPC2000作为MCU本书平台
2.2 MzT24彩色TFT模块
2.2.1 MzT24模块简介
2.2.2 显示RAM区映射情况
2.2.3 MzT24操作时序
2.2.4 控制方法及LCD显示特性
2.2.5 MzT24的控制寄存器
2.3 LPC2292驱动控制MzT24
2.3.1 LPC2292与MzT24模块的连接
2.3.2 修改LCD_Driver_User.c文件
2.3.3 LCD_Config.h的配置修改
2.3.4 为了速度作一些简单的优化
2.4 利用外部总线连接MzT24
3 TFT模块的扩展功能驱动程序
3.1 LCD_Extend
3.1.1 一些有用的功能扩展
3.1.2 功能代码分析
3.2 Dis_Window
3.2.1 Dis_Window的理解
4 RGB565格式图像取模显示
4.1 图像取模
4.2 代码分析
4.3 显示效果参考
5 BMP文件解码显示
5.1 BMP文件格式
5.1.1 BMP文件构成分析
5.1.2 位图文件头结构详解
5.1.3 位图信息头结构详解
5.1.4 色表结构分析
5.1.5 图像数据分析
5.2 将BMP文件数据整合进Keil的工程
5.3 BMP文件的解码分析
5.4 应用参考
6 JPG文件解码显示
6.1 有关JPG解码算法库
6.1.1 JPG解码库的相关说明
6.1.2 JPG解码库的特点
6.1.3 JPG解码显示的软件架构
6.2 将JPG文件数据整合进Keil的工程
6.3 JPG文件的解码显示代码分析
6.4 应用参考
TTFFTT 液液 晶晶 彩彩 色色 图图 像像 显显 示示 方方 法法 —— —— 点点 阵阵 LL CC DD 驱驱 动动 显显 控控 原原 理理 下下 册册 ——小丑 powerint V1.0 – 2009.02 Mz 出品
目 录 1 关于本书 ........................................................................................................................................................1 1.1 基于通用版LCD驱动程序 .....................................................................................................................1 1.2 与操作系统无关 .....................................................................................................................................1 1.3 一些建议 .................................................................................................................................................1 LPC2000 系列与MzT24 ................................................................................................................................2 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 TFT模块的扩展功能驱动程序 ...................................................................................................................19 3 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 JPG文件解码显示........................................................................................................................................56 6 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 驱动程序 TFT 液晶彩色图像显示方法 在《点阵 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:644272644 2009-2-23 于北京 1
2 LPC2000 系 列 与 MzT24 2.1 使用 LPC2000 作为 MCU 本书平台 TFT 液晶彩色图像显示方法 彩色 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.2 MzT24 彩色 TFT 模块 MzT24 彩色 TFT 模块是一个 2.4 英寸的 TFT 模块,内置 TFT 控制器,对外连接直接通过 8 位的 8080 总线进行指令和数据的传输。MzT24 有像素点数为 240×320,色彩深度为 16 位色,也就是每一个像素点 需要用 16 位的数据来表示其显示的内容。 有关 MzT24 模块的介绍,请参考它的编程手册,在那里有详尽的说明,在此仅介绍一些在本书的介 绍中所涉及的一部分。 2.2.1 MzT24 模块简介 MzT24 彩色 TFTLCD 显示模块的 LCD 驱动控制 IC 为 SPFD5408,用户在对 MzT24 模块进行操作时, 实际上是对 SPFD5408 进行相关的控制寄存器、显示数学据存储器进行操作的。下图是实物图: 2
TFT 液晶彩色图像显示方法 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 模块的像素点与显存对应关系如下图所示: R G B D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 Every dot have 16bit Display RAM(2 bytes) X Address=0 ~~~~X Address=239 Y Address=0 X Addr=0 Y Addr=0 TFT-LCD显示面板 Y Address=319 显存与像素点对应关系示意图 3
TFT 液晶彩色图像显示方法 MzT24 模块内部有一个显存地址累加器 AC,即用于在读写显存时对显存地址进行自动的累加,这 在连续对屏幕显示数据操作时非常有用,特别是应用在图形显示、视频显示时。此外,AC 累加器可以设 置为各种方向的累加方式,如通常情况下为对 X Address 累加方式,具体为当累加到一行的尽头时,会切 换到下一行的开始累加;还可以为对 Y Address 累加方式,具体为当累加到一列(垂直方向)的尽头时, 会切换到下一个 X Address 所对应的列开始累加,详细介绍请参见 2.3.2。 另外,MzT24 模块还提供了窗口操作的功能,可以对显示屏上的某一个矩形区域进行连续操作,详 细介绍也请参见 2.3.3。 2.2.3 MzT24 操作时序 MzT24 模块支持标准 intel8080 总线,总线的最高速度可达 8MHz,也就是说,如果控制 MCU 速度 足够快的话,是可以支持视频的显示的。下图为 MzT24 模块的总线时序图: MzT24 模块总线时序图 注意:MzT24 模块的总线接口是 8 位的,也就意味着对显存的某一个地址操作时,需要连续进行两 次操作方可完成,先传高字节再传低字节。 表 2.1 时序特性(IOVcc=2.4V~3.3V ,TA=25℃) 参数 写周期 读周期 总线周期时间 控制低脉冲宽度(RW) 控制低脉冲宽度(RD) 控制高脉冲宽度(RW) 符号 tCYCW tCYCR PWLW PWLR PWHW 单位 最小值 典型 最大值 ns ns ns ns ns 125 450 45 170 70 -- -- -- -- -- -- -- -- -- -- 4
参数 控制高脉冲宽度(RD) 符号 PWHR 读/写控制信号上升/下降时间 tWRr,tWRr 建立时间 写(RS to CS,RW) 读(RS to CS,RD) 地址保持时间 写数据建立时间 写数据保持时间 读数据延迟时间 读数据保持时间 复位时序的示意图如下图所示: tAS tAH tDSW tH tDDR tDDR TFT 液晶彩色图像显示方法 单位 最小值 典型 最大值 ns ns ns ns ns ns ns ns ns 250 -- 0 10 2 25 10 -- 5 -- -- -- -- -- -- -- -- -- -- 25 -- -- -- -- -- 200 -- 表 2.2 复位时序特性 参数 复位低电平宽度 复位上升沿时间 符号 tRES trRES 单位 最小值 典型 最大值 ms us 1 -- -- -- -- 10 2.2.4 控制方法及 LCD 显示特性 MzT24 模块控制方法 对 MzT24 模块的操作主要分为两种,一是对控制寄存器的读写操作,二是对显存的读写操作;而这 两种操作实际上都是通过对 LCD 控制器(SPFD5408)的寄存器(register)进行操作完成的,SPFD5408 提供了一个索引寄存器(Index register),对该 Index register 寄存器的写入操作可以指定操作的寄存器索 引,以便于完成控制寄存器、显存操作寄存器的读写操作。MzT24 提供了 RS(有些资料称 A0)控制线, 并以此线的高低电平状态来区别这对 Index register 操作还是对所指向的寄存器进行操作:当 RS 为低电平 时,表示当前的总线操作是对 Index register 进行操作,即指明接下去的寄存器操作是针对哪一个寄存器的; 当 RS 为高电平时,表示为对寄存器操作。 MzT24 模块内部有控制寄存器,用户在使用 MzT24 之前以及对其进行操作过程当中,需要对一些寄 存器进行写操作以完成对 LCD 的初始化,或者是完成某些功能的设置(如当前显存操作地址设置等)。 对控制寄存器进行操作前,需要先对索引寄存器(Index register)进行定入操作,以指明接下去的寄 存器读写操作是针对哪一个寄存器的。操作的步骤如下: 1、 在 RS 为低电平的状态下,写入两个字节的数据,第一个字节为零,第二字节为寄存器索引值。 2、 然后在 RS 为主电平的状态下,写入两个字节数据,第一字节为高八位,第二字节为低八位;如 5
分享到:
收藏