打印
[其他ST产品]

STM32-TFTLCD显示

[复制链接]
2031|72
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1 TFTLCD驱动原理
1.1 TFTLCD简介
        TFTLCD即薄膜晶体管液晶显示器。它与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。
        TFTLCD具有:亮度好、对比度高、层次感强、颜色鲜艳等特点。是目前最主流的LCD显示器。广泛应用于电视、手机、电脑、平板等各种电子产品。

1.2 模块简介
1.2.1 ALINETEK 2.8寸 TFTLCD模块特点
                1)240*320分辨率
                2)16位真彩显示(65536色)
                3)自带电阻触摸屏
                4)自带背光电路

        注意:模块是3.3V供电的,不支持5V 电压的MCU,如果是5V MCU,必须 在信号线串接120R电阻使用。

使用特权

评论回复
沙发
尽快回复过|  楼主 | 2023-10-25 15:47 | 只看该作者
1.2.2 ALINETEK 2.8寸 TFTLCD模块原理图

使用特权

评论回复
板凳
尽快回复过|  楼主 | 2023-10-25 15:47 | 只看该作者
     注意:1)图中的TFT2.8'和TFT2.4'分别是2.8寸和2.4寸LCD的FPC接口,是内部接口。
                   2)图中的TFT_LCD(LCD1)是模块对外接口(排针),是连接MCU用的。
                   3)DB1-DB8与DB10-DB17,是针对LCD控制器(比如ILI9320)来说的。
        所以,对外连接MCU的时候,按从小到大的顺序依次连接MCU的D0-D15就可以了。

使用特权

评论回复
地板
尽快回复过|  楼主 | 2023-10-25 15:48 | 只看该作者
1.2.3 ALINETEK 2.8寸 TFTLCD接口说明(16位80并口)

使用特权

评论回复
5
尽快回复过|  楼主 | 2023-10-25 15:48 | 只看该作者
   注意:DB1~DB8,DB10~DB17,总是按顺序连接MCU的D0~D15

使用特权

评论回复
6
尽快回复过|  楼主 | 2023-10-25 15:48 | 只看该作者

使用特权

评论回复
7
尽快回复过|  楼主 | 2023-10-25 15:48 | 只看该作者
     注:TFTLCD 模块的 RST 信号线是直接接到 STM32 的复位脚上,并不由软件控制,这样可以省下来一个 IO口。另外我们还需要一个背光控制线来控制 TFTLCD 的背光。所以,我们总共需要的 IO 口数目为 21 个。

使用特权

评论回复
8
尽快回复过|  楼主 | 2023-10-25 15:49 | 只看该作者
1.2.4 ALINETEK 2.8寸 TFTLCD 16位80并口驱动简介
        ILI9341 控制器介绍:
        ILI9341 液晶控制器自带显存,通过操作显存RAM(传输的每个像素点的颜色值),来操作LCD屏的像素点,让LCD屏上相应的像素点点亮。其显存总大小为 172800( 24032018/8),即 18 位模式( 26万色)下的显存量。
在 16 位模式下, ILI9341 采用 RGB565 格式存储颜色数据,此时 ILI9341的 18 位数据线与 MCU 的 16 位数据线以及 LCD GRAM 的对应关系如图: ILI9341 在 16 位模式下面,数据线有用的是: D17~D13 和 D11~D1, D0和 D12 没有用到,实际上在我们 LCD 模块里面, ILI9341 的 D0 和 D12 压根就没有引出来,这样, ILI9341 的 D17~D13 和 D11~D1 对应 MCU 的 D15~D0。

使用特权

评论回复
9
尽快回复过|  楼主 | 2023-10-25 15:49 | 只看该作者
  MCU 的 16 位数据, 最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。 另外,特别注意 ILI9341 所有的指令都是 8 位的(高 8 位无效),且参数除了读写 GRAM 的时候是 16 位,其他操作参数,都是 8 位的。

下面是一些像素点与颜色值:1111 1000 0000 0000---0xF800---红色
        0000 0000 0001 1111---0x001F---蓝色
        0000 0111 1110 0000---0x07E0---绿色
        1111 1111 1111 1111----0xFFFF---白色
        00000000000000000---0x0000---黑色

使用特权

评论回复
10
尽快回复过|  楼主 | 2023-10-25 15:50 | 只看该作者
  MCU接口连接8080接口图:

     STM32可以通过FSMC来操作外部8080接口,FSMC的作用:扩展外部存储区域

使用特权

评论回复
11
尽快回复过|  楼主 | 2023-10-25 15:50 | 只看该作者
模块的8080并口读/写的过程为:
                1)先根据要写入/读取的数据的类型,设置RS为高(数据)/低(命令);
                2)拉低片选,选中ILI9341;
                3)根据是读数据,还是要写数据置RD/WR为低;
                4)读数据:在RD的上升沿, 读取数据线上的数据(D[15:0]);
                5)写数据:在WR的上升沿,使数据写入到ILI9341里面。

使用特权

评论回复
12
尽快回复过|  楼主 | 2023-10-25 15:50 | 只看该作者
    并口写时序图: ​



使用特权

评论回复
13
尽快回复过|  楼主 | 2023-10-25 15:51 | 只看该作者
   FSMC操作LCD屏:例如:给LCD屏上某一个像素点点亮某一种颜色值 -- (ILI9341的数据手册)           
                   1)发送设置列地址指令 -- 0x2A
                   2)发送列地址                -- 参数
                   3)发送设置行地址指令 -- 0x2B
                   4)发送行地址                -- 参数
                   5)发送显示的颜色值指令- 0x2C
                   6)发送颜色值              -- (16位数据)  
                   7)运行点函数点亮       --LCD_DrawPoint();

使用特权

评论回复
14
尽快回复过|  楼主 | 2023-10-25 15:51 | 只看该作者
    并口读时序图:

使用特权

评论回复
15
尽快回复过|  楼主 | 2023-10-25 15:51 | 只看该作者
1.2.5 ILI9341驱动时序

使用特权

评论回复
16
尽快回复过|  楼主 | 2023-10-25 15:52 | 只看该作者
        上图为:ILI9341 8080并口时序,详见:ILI9341_DS.pdf,232页

  重点时序:
                1)读ID低电平脉宽(trdl)
                2)读ID高电平脉宽(trdh)
                3)读FM低电平脉宽(trdlfm)
                4)读FM高电平脉宽(trdhfm)
                5)写控制低电平脉宽(twrl)
                6)写控制高电平脉宽(twrh)
        注意:ID指LCD的ID号;FM指帧缓存,即:GRAM。

使用特权

评论回复
17
尽快回复过|  楼主 | 2023-10-25 15:52 | 只看该作者
1.2.6 TFTLCD驱动流程

使用特权

评论回复
18
尽快回复过|  楼主 | 2023-10-25 15:52 | 只看该作者
      任何 LCD,使用流程都可以简单的用以上流程图表示。其中硬复位和初始化序列,只需要执行一次即可。而画点流程就是:设置坐标 -> 写 GRAM 指令 -> 写入颜色数据,然后在 LCD 上面,我们就可以看到对应的点显示我们写入的颜色了。读点流程为:设置坐标 -> 读 GRAM 指令 -> 读取颜色数据,这样就可以获取到对应点的颜色数据了。

使用特权

评论回复
19
尽快回复过|  楼主 | 2023-10-25 15:52 | 只看该作者
    1)设置 STM32 与 TFTLCD 模块相连接的 IO。
                先将我们与 TFTLCD 模块相连的 IO 口进行初始化,以便驱动 LCD。 这里需要根据连接电路以及 TFTLCD 模块的设置来确定。

使用特权

评论回复
20
尽快回复过|  楼主 | 2023-10-25 15:53 | 只看该作者
2)初始化 TFTLCD 模块。
                即上图的初始化序列,这里我们没有硬复位 LCD,因为 MiniSTM32 开发板的 LCD 接口,将 TFTLCD 的 RST 同 STM32 的 RESET 连接在一起了,只要按下开发板的 RESET 键,就会对 LCD 进行硬复位。
                初始化序列,就是向 LCD 控制器写入一系列的设置值(比如伽马校准),这些初始化序列一般 LCD 供应商会提供给客户,我们直接使用这些序列即可,不需要深入研究。在初始化之后, LCD 才可以正常使用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

517

帖子

0

粉丝