博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TFTLCD原理与驱动与指令介绍
阅读量:2222 次
发布时间:2019-05-08

本文共 3086 字,大约阅读时间需要 10 分钟。

一,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_VDDBL_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,选中ILI93413,根据读/写数据,将置RD/WR置低

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

TFTLCD读数据

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

TFTLCD写数据


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

ILI9341驱动时序

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

读ID时序

3,读FM低电平脉宽(trdlfm)     FM指帧缓存,即:GRAM读取FM低电平脉宽最小持续时间trdlfm需要355ns4,读FM高电平脉宽(trdhfm)读取FM高电平脉宽最小持续时间trdlfm需要90ns结论:    读FM低电平时速度比较慢,高电平和读ID相同都是90ns5,写控制低电平脉宽(twrl)写LCD低电平最小持续时间15ns6,写控制高电平脉宽(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,为00H4,RS=1数据,WR=1为读取,在RD上升沿读取参数3,为93H5,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和ECSC和EC是列地址的起始值和结束值,所以SC必须小于ECLCD分辨率是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-勘误-修改错别字,及部分逻辑

你可能感兴趣的文章
linux放音乐cd
查看>>
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>