今天,学习TFTLCD 2.8寸模块 驱动IC TLI9341 电阻触摸屏16位并口驱动 240*320 3.3v供电 图中只焊接了R3, 背光通过 BL_CTR控制背光
2.8寸TFTLCD采用16位80并口,DB1-DB8,DB10-DB17,总是按顺序连接MCU的D0-D15
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 触摸屏接口信号
2.8 寸 TFTLCD 16位80并口驱动简介
模块的8080并口读写:
写命令 RS=1 写数据RS=0 拉低片选CS(选中ILI9341)
接着 读数据 RD=0 写数据 WR=0
读数据 RD为上升沿,读取数据线上的数据 (D[15:0])
写数据 在WR的上升沿,数据写入ILI9341
ILI9341驱动时序
读ID低电平脉宽(trdl)
读ID高电平脉宽(trdh)
读FM低电平脉宽(trdlfm)
读FM高电平脉宽(trdhfm)
写控制低电平脉宽(twrl)
写控制高电平脉宽(twrh)
ID指LCD id号
FM指帧缓存,即GRAM
TFTLCD 驱动流程
1 硬复位 LCD_RST=0 delay_ms(100); LCD_RST=1;
2 初始化序列由厂家提供
3 画点 设置坐标 写GRAM指令 写入颜色数据 LCD显示
4 读点 设置坐标 读GRAM指令 读出颜色数据 单片机处理 (其他函数也是基于这两个函数实现)
TFTLCD指令简介
RGB565格式说明
模块是16位对外接口 ,颜色深度为16位,格式为RGB565
ILI9341指令说明
ILI9341所有的指令都是8位数(高8位无效),且参数除了读写GRAM时是16位,其它操作参数都是8位
ILI9341 的指令有很多, 其中0xD3 0X36 0X2A 0X2B 0X2C 0X2E 常用。
对应位为1 显示该位颜色 0xf800 为全红色
0xD3指令
该指令为读ID4指令,用于读取LCD控制器的ID,不同的ID执行不同的LCD初始化。实现兼容。
0x36指令
储存访问控制指令,可以控制ILI9341的读写方向,简单地说,就是在连续写GRAM的时候,可以控制GRAM指针的增长方向,从而控制显示方式(读GRAM也是一样)可以不用频繁的设置坐标。
先利用 0x36指令设置坐标,之后再写入起始坐标,模块就会按0x36设置好的方向进行读写
0x2A 指令
该指令是地址设置指令,在从左到右,从上到下的扫描方式(默认)下面,该指令用于设置横坐标(x坐标),有4个参数,两个坐标值SC和EC,即列地址的起始与结束值。SC必须小于等于EC,且0<=SC/EC<=239 一般在设置x坐标的时候,设置SC即可,EC在初始化的时候设置,这样提高速度
0x2B 指令
该指令是页地址设置指令,在从左到右,从上到下的扫描方式(默认)下,该指令用于设置y坐标。
有4个参数,实际是两个坐标值 SP EP,即页地址的起始值与结束值,SP必须小于等于EP,且0<=SP/EP<=319 一般在设置y坐标的时候,我们只需要带两个参数即可,也就是设置SP即可。
但是如果要进行开窗就必须带4个参数。
0x2C 指令
这个指令是写GRAM指令,在发送该指令之后,我们便可以往GRAM里面写入颜色数据,该指令支持连续写入(地址自动递增)
在收到指令0x2c之后,数据有效位变为16位,我们可以连续写入LCD GRAM 值,而GRAM的值将根据MY/MX/MV设置的扫描方式进行自增,例如,假设设置为从左到右,从上到下的扫描方式。
0x2E 指令
读GRAM指令,作用:读显存(GRAM)支持连续读
ILI9341在收到该指令后,第一次输出的是dummy数据(无效),第二次开始才是有效的GRAM数据(从坐标:SC,SP开始)每个颜色分量占8位,一次输出两个颜色分量。例如:一次输出的是R1G1,随后规律为 B1R2->G2B2->R3G3->B3R4->G4B4->R5G5,以此类推(这里9341数据手册有错)
未完待续......(qq 860099671)
|