1.1 LCD控制器的简介
1.2 TFT-6862真彩液晶屏的结构与连接
1.2.1 屏幕和坐标
屏幕是由能够被单独控制的许多点组成,这些点称为象素。
屏幕中的每一个象素,可以用一个二维坐标系中的坐标来描述,这个坐标系如图1.1所示。
(0,0) X 坐标
Y 坐标
图1.1 LCD坐标示意图
如图1.1所示,水平刻度被称作X轴,而垂直刻度被称作Y轴。一个二维坐标用X轴和Y轴坐标表示,即(X,Y)。在程序中需要用到X和Y坐标时,X坐标总在前面。显示屏(或者一个窗口)的左上角为默认坐标(0,0)。正的X值方向总是向右;正的Y值方向总是向下。
1.2.2 TFT-6862结构简介
TFT-6862是一个真彩TFT模式的LCD显示器模块。使用TFT液晶显示控制芯片
LQ035Q1DG01。TFT-6862液晶模块X轴方向拥有320个象素,Y轴方向拥有240个象素。使用16位的RGB接口,即每一个象素包含 16 位的颜色数据。TFT-6862模块的结构如图1.2所示。
图1.2 TFT-6862的结构
1.2.3 LPC2400系列ARM与TFT-6862的连接
SmartARM2400开发平台采用了NXP LPC2400系列ARM,它片内带有LCD控制器,它和TFT-6862模块是以RGB接口模式连接。
此外,由于LPC2400使用的色彩模式为5:6:5,因此LPC2400与LQ035Q1DG01液晶控制器相连时,采用的是16位的RGB接口。LQ035Q1DG01可以控制最高262144色LCD,即每个象素最多可达18位颜色数据,用来控制65536色的LCD时,18位数据与16位彩色数据的对应关系如图1.3所示。
图1.3 LQ035Q1DG01的18位数据与16位彩色数据的对应关系示意图
如图1.3所示,18位数据的D0和D12未使用,D1~D5控制RGB色的蓝色部分,共5位。D6~D11控制RGB色的绿色部分,共6位。DB13~DB17控制RGB色的红色部分,共5位。
在LPC2400中,LCDVD[7:0]控制RGB色的红色部分,LCDVD[15:8]控制RGB色的绿色部分,LCDVD[24:16]控制RGB色的蓝色部分。因此,LPC2400与LQ035Q1DG01的连接示意图如图1.4所示。
图1.4 LPC2400与LQ035Q1DG01的连接示意图
1.3 LCD的驱动
1.3.1 LCD的API函数 1.3.2 驱动程序详细说明
为了让用户更深入地了解LCD控制器的操作,本节将详细地分析各个API函数。 1. LCD驱动函数 (1). 宏定义
对LPC2400的LCD控制器的基本操作代码,保存在LPC2478.C和LPC2478.H中。其中对LCD控制器进行初始化时所用到的宏,全部都是在LPC2478.H中定义的。用户只需修改这几个宏的值,就能使此驱动程序适用于不同的LCD上。
LPC2478.H中对宏的定义如程序清单1.1所示。
程序清单1.1 LCD控制器宏的定义
#define U_LCD_XSIZE 320 // LCD X轴的大小 #define U_LCD_YSIZE 240 // LCD Y轴的大小
#define LcdPwr 1 // 使能LCD 的数据输出 #define LcdTFT 1 // 选择TFT型LCD #define LcdBpp 6 // 设置每象素16位
3 7 3
// 水平同步脉冲信号后沿 // 水平同步脉冲信号前沿 // 水平同步脉冲信号 // 垂直同步脉冲信号后沿 // 垂直同步脉冲信号前沿
// 垂直同步脉冲信号 // 每行有多少个象素点
#define LcdEn 1 // 使能LCD的控制信号 #define HBP #define HFP #define HSW
#define VBP #define VFP
#define PPL
(U_LCD_XSIZE / 16) – 1 1 2
#define VSW 0
#define LPP U_LCD_YSIZE – 1 // 每屏有多少行
#define MIRROR_X
0
#define CPL U_LCD_XSIZE – 1 // 每行有多少个时钟
// X轴镜像输出
#define MIRROR_Y 0 // Y轴正常输出 #define HWORDMODE 1 // 用于图片数据输出 #define LCD_RED 0xf800 // 红色 #define LCD_GREEN 0x07e0 // 绿色
#define LCD_BLUE 0x001f // 蓝色 #define LCD_BLACK 0x0000 // 黑色 #define LCD_WHITE 0xffff // 白色
/******************************************************************************************* ** 作镜像处理
*******************************************************************************************/ #if (!MIRROR_X && !MIRROR_Y) #define SECTION_X(x, y) x #define SECTION_Y(x, y) y #elif (MIRROR_X && !MIRROR_Y)
#define SECTION_X(x, y) U_LCD_XSIZE - 1 - x #define SECTION_Y(x, y) y #elif (!MIRROR_X && MIRROR_Y) #define SECTION_X(x, y) x
#define SECTION_Y(x, y) U_LCD_YSIZE - 1 - y #elif (MIRROR_X && MIRROR_Y)
#define SECTION_X(x, y) U_LCD_XSIZE - 1 - x #define SECTION_Y(x, y) U_LCD_YSIZE - 1 - y #endif
由于TFT-6862液晶模块默认为非镜像输出,因此在程序清单1.1中,宏MIRROR_X定义为0,若定义为1使LCD显示区的X轴方向反转180度,将得到镜像的图像输出。如图1.5所示。
图1.5 镜像显示
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务