TFTLCD原理与驱动与指令介绍

一,TFTLCD简介

TFTLCD : 薄膜晶体管液晶显示器

在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT)
克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,提高图像质量

TFTLCD优点:
亮度好,对比度高,层次感强,颜色鲜艳,是目前最主流的LCD显示器
广泛用于电视,手机,电脑,平板等各种的电子产品


二,ALINETEK 2.8寸 TFTLCD模块介绍

TFTLCD

240*320分辨率
16位真彩显示(65536色)
自带电阻触摸屏
自带背光电路

三,ALINETEK 2.8寸 TFTLCD模块原理图

TFTLCD原理图

1,2.8寸LCD引脚

2.8寸LCD引脚

2,TFTLCD 为对外接口,引出2*17排针

TFTLCD对外接口

3,电阻触摸屏驱动XPT2046

XPT2046

4,触摸屏信号控制

触摸屏信号连接

TFT2.8 12-15引脚 X+ Y+ X- Y- 为电阻触摸屏信号,连接到XPT2046,再由TFTLCD引出

5,LCD的兼容处理

LCD兼容

IM0:兼容不同LCD的兼容处理,由于2.8寸屏不支持8或16位设置,所以此处R1,R2未焊接
LEDA为LCD背光控制,背光电压可以选择3.3V或来自BL_VDD
BL_VDD来自TFTLCD的BL_VDD,可不接,开发板上接5V
此处R3焊接,R4未焊接,所以BL_VDD无用,LEDA=3.3V

6,LCD背光控制电路

LCD背光控制电路

通过TFTLCD的BL_CTR引脚,控制S8050三极管,从而控制背光是否点亮,R6-R9为限流电阻

三,ALINETEK 2.8寸 TFTLCD对外接口说明(16位80并口)

TFTLCD对外接口

LCD_CS:LCD片选信号
LCD_WR:LCD写信号
LCD_RD:LCD读信号
DB[17:1]:16位双向数据线。
LCD_RST:硬复位LCD信号
LCD_RS:命令/数据标志 (0:命令,1:数据)
BL_CTR:背光控制信号
T_MISO/T_MOSI/T_PEN/T_CS/T_CLK,触摸屏接口信号

注意:DB1~DB8,DB10~DB17,共16引脚,总是按顺序连接MCU的D0~D15

如果我们只是要点亮LCD,不使用触摸屏可不接相关引脚(29-34)


四,ALINETEK 2.8寸 TFTLCD 16位80并口驱动

模块的8080并口读/写的过程为:

1,先根据要写入/读取的数据的类型,设置RS为高(数据)/低(命令)
2,拉低片选CS,选中ILI9341
3,根据读/写数据,将置RD/WR置低

4-1.读数据:在RD的上升沿, 读取数据线上的数据(D[15:0])

TFTLCD读数据

4-2.写数据:在WR的上升沿,使数据写入到ILI9341里面

TFTLCD写数据


五,ILI9341驱动的几个重点时序

ILI9341驱动时序

1,读ID低电平脉宽(trdl)     ID指LCD的ID号
trdl低电平最小持续时间需要45ns

2,读ID高电平脉宽(trdh)
trdl低电平最小持续时间需要90ns

读ID时序

3,读FM低电平脉宽(trdlfm)     FM指帧缓存,即:GRAM
读取FM低电平脉宽最小持续时间trdlfm需要355ns

4,读FM高电平脉宽(trdhfm)
读取FM高电平脉宽最小持续时间trdlfm需要90ns

结论:
    读FM低电平时速度比较慢,高电平和读ID相同都是90ns

5,写控制低电平脉宽(twrl)
写LCD低电平最小持续时间15ns

6,写控制高电平脉宽(twrh)
写LCD高电平最小持续时间15ns

结论:
    写LCD速度较快

4个读时序(主要用于配置FSMC的读时序)和2个写时序(主要用于配置FSMC的写时序)

如果开发板没有FSMC,可以使用IO模拟的方式实现,此时不需要关注时序,因为一定会大于最小时间


六,TFTLCD驱动流程

TFTLCD驱动流程

硬复位:
    1,连接到MCU复位引脚,随MCU一起复位
    2,连接到MCU的IO引脚,先拉低,延迟,再拉高实现复位
初始化序列:
    由LCD厂家提供,不同厂家不同型号都不相同
写GRAM:
    0X2C指令,详见后续
读GRAM:
    0X2E指令,详见后续

七,TFTLCD驱动原理-指令

1,RGB565

模块对外接口采用16位并口,颜色深度为16位,格式为RGB565

RGB565

2,ILI9341指令

指令格式:
    ILI9341所有的指令都是8位(高8位无效)
    参数除了读写GRAM的时候是16位,其他操作参数也都是8位的

重要指令

1,0XD3-读ID4指令

读取LCD控制器ID,可根据ID执行不同的LCD驱动初始化,实现多屏幕兼容

0XD3-读ID4指令

1,RS=0命令,RD=1为写入,在WR上升沿写入指令0xD3,高8位无效
2,RS=1数据,WR=1为读取,在RD上升沿读取参数1,为无效参数
3,RS=1数据,WR=1为读取,在RD上升沿读取参数2,为00H
4,RS=1数据,WR=1为读取,在RD上升沿读取参数3,为93H
5,RS=1数据,WR=1为读取,在RD上升沿读取参数4,为41H

结论:由参数3和参数4,组成LCD控制器ID-9341,确定执行9341的驱动代码

2,0X36-储存访问控制指令

可以控制ILI9341控制器的读写方向,即GRAM指针自增方向,从而控制显示

0X36-储存访问控制指令

1,RS=0命令,RD=1为写入,在WR上升沿写入指令0x36,高8位无效
2,RS=1数据,RD=1为写入,在WR上升沿写入参数数据,高8位无效

参数D5-D7位,控制GRAM自增方向,配置如下:

0X36参数

3,0X2A-列地址(X轴)设置指令

用于设置横坐标,默认从左到右,从上到下,由0x36指令设置储存访问控制

0X2A-列地址(X轴)设置指令

发送一个指令0X2A+四个参数确定两个坐标分别是SC和EC
SC和EC是列地址的起始值和结束值,所以SC必须小于EC
LCD分辨率是240*320,所以SC/EC不能大于240(0-239)

一般设置X坐标值,EC无变化(初始化已设置),只需设置SC(参数1和参数2)即可

4,0X2B-页地址(Y轴)设置指令

用于设置纵坐标,默认从左到右,从上到下,由0x36指令设置储存访问控制

0X2B-页地址(Y轴)设置指令

与列地址设置指令相似:
    发送一个指令0X2B+四个参数确定两个坐标分别是SP和EP
    SP和EP是页地址的起始值和结束值,所以SP必须小于EP
    LCD分辨率是240*320,所以SC/EC不能大于320(0-319)

一般设置Y坐标值,EP无变化(初始化已设置),只需设置SP(参数1和参数2)即可

应用:使用0X2A和0X2B指令可以在LCD屏进行开窗

5,0X2C指令-写GRAM指令

发送该指令后可向LCD-GRAM写入颜色数据,支持连续写入,地址自增,由0x36指令设置储存访问控制

0X2C指令-写GRAM指令

1,RS=0命令,RD=1为写入,在WR上升沿写入指令0x2C,高8位无效,随后可以写入颜色数据
2,RS=1数据,WD=1为写入,在WR上升沿可连续写入n个颜色参数,参数长度为16为即RGB565

6,0X2E指令-读GRAM指令

用于读取ILI9341的显存GRAM,支持连续读取,地址自增,由0x36指令设置储存访问控制

0X2E指令-读GRAM指令

1,RS=0命令,RD=1为写入,在WR上升沿写入指令0x2E,高8位无效,随后可以读取颜色数据
2,ILI9341收到0x2E指令后,第一次输出为dummy,即无效参数,从第二次开始为有效GRAM数据
3,RS=1数据,WR=1为读取,在RD上升沿可连续读取n个颜色参数,参数长度为16为即RGB565

如图所示,输出规律:
如:第一次输出R1G1,第二次输出B1R2->G2B2->R3G3->B3R4...

修改记录:
20161210-勘误-修改错别字,及部分逻辑

猜你喜欢

转载自blog.csdn.net/ABAP_Brave/article/details/53067431