你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32驱动LCD原理

[复制链接]
STMCU-管管 发布时间:2020-9-7 14:59
TFTLCD即薄膜晶体管液晶显示器。它与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。
) O; Z3 s6 z- K) f' P

0 ^7 @9 x. U& b& s
1.png
1 h  r5 m8 y0 I  C3 b: ~
▲驱动流程

- E' z0 O# ?2 v1 x+ @/ G: L$ E; |1 w9 \2 b1 e5 D# H2 r
01   使用FSMC驱动LCD
9 Y+ n/ v) @" v3 }' F; |2 E

" B5 X: O( s0 r1 \7 M. X9 g0 T7 Z8 d
关于FSMC,把数据写入相应的地址,FSMC就会把地址从FSMC_A出去,写入的数据会会从FSMC_D发出去。至于片选等信号线都是自动的。读的话,直接读相应的地址,就会拿到改地址上的数据。
2 R& ]2 v* V2 E

2 I+ X0 v# i4 Y' g) t- b' \
  Z' g. j1 C+ j8 ?) w' F
FSMC驱动外部SRAM时,外部SRAM的控制一般有:

# @* i: ~7 x- I% g/ @
  • 地址线(如A0~A25)
    4 _, }9 n5 X! f) d8 s5 n6 |3 V
    6 i2 |+ H4 J3 o! W
  • 数据线(如D0~D15)

    ' s& w2 I( F" N

    * Q2 w) H$ T) A
  • 写信号(WE,即WR)
    + h3 v, U" [5 V* A! `; ^2 y
    - _, q( h' z- e) H
  • 读信号(OE,即RD)

    8 D8 u4 F, Q& }* M# W

    & O: F/ M; b) l1 y$ A
  • 片选信号(CS)

    8 P1 e0 a/ p4 ~! d

      j" S& o3 Z8 z% H* D+ u
如果SRAM支持字节控制,那么还有UB/LB信号。
; A/ {& }8 w9 L# k
而TFTLCD的信号包括:RS(命令数据标志位)、D0~D15、WR、RD、CS、RST和BL等,其中真正在操作LCD的时候需要用到的就只有:

5 s" @& `; I3 @0 r( ?3 `- a
  • CS

    3 d4 E# F( C3 f) o* s6 x
    " L' E7 Q1 Y/ C& M' p. H9 G5 @
  • WR
    9 C# D+ q* o& F' o2 N
    6 w; A" s* {( g0 }/ B: \/ N3 L. P) P
  • RS

    / m$ b4 j# T( }1 F: X
    " c  |( k0 w) d
  • D0~D15

    % B9 v% H* _2 R+ k

    ( x( c" E# B9 ]0 P; F# D
  • RD
      a1 }9 I9 w- D- I/ f

    : l  I* K. f1 r, A% `( _
其操作时序和SRAM的控制完全类似,唯一不同就是TFTLCD有RS信号,但是没有地址信号。
4 G# `7 U5 P/ n+ Z) t

+ O& C/ e7 W# e6 S3 S
TFTLCD通过RS信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,比如我们把RS接在A0上面,那么当FSMC控制器写地址0的时候,会使得A0变为0,对TFTLCD来说,就是写命令。而FSMC写地址1的时候,A0将会变为1,对TFTLCD来说,就是写数据了。这样,就把数据和命令区分开了,他们其实就是对应SRAM操作的两个连续地址。当然RS也可以接在其他地址线上。
因此,可以把TFTLCD当成一个SRAM来用,只不过这个SRAM有2个地址,这就是FSMC可以驱动LCD的原理。

6 G% [5 m2 T+ X5 i/ x0 _/ O02 标准8080接口

9 K* w2 x- e; ]- ^: p# H! O, _
8080总线又叫Intel总线,大致来说,Intel总线的控制线有四根,RD写使能,WR读使能,ALE地址锁存,CS片选。
9 h2 M5 k  B- F3 R3 V, \
8080中:有RD(read),WR(Write)脚,RD,WR可以同时为高,不能同时为低!!RD为低时表示要从LCD中读出数据在D0-D7脚上,WR为低时表示:将当前D0-D7上的数据写入LCD
7 Z. J/ Z7 S7 |. r2 s6 j6 A
模块的8080并口读/写的过程为:

/ J$ Q* \9 s9 e# g
先根据要写入/读取的数据的类型,设置RS为高(数据)/低(命令),然后拉低片选,选中液晶IC,接着我们根据是读数据,还是要写数据置RD/WR为低,然后:

* X% B, A7 p& ]1 c) B5 p- ?
1.读数据:在RD的上升沿,读取数据线上的数据(D[15:0]);
; X3 p1 ^8 o! `
2.写数据:在WR的上升沿,使数据写入到液晶IC里面;

4 i/ _$ C+ C3 ?. `3 o6 F7 X
2.png
) A6 H/ ?2 M; V; t( d! X  b6 z5 N
▲8080并口写时序
* y1 K* {1 G) O( X8 |6 u

8 u: @' w# v4 y2 ^) q
/ Z- D% D0 r! z+ B
3.png
  a. e; K  O, @, I/ I
▲8080并口读时序

. |% c( Z$ ^9 y, D, e+ M. `. r: s6 T9 z4 N" Q# X
4.png

5 C5 b5 T- i, ]. {/ u, T9 G5 m' |$ `
▲写时序
! S' R  q  O& J8 y* o+ w
5.png
▲读时序
03 使用FSMC驱动8080接口
# L0 x2 Y/ B2 V) g) I/ _: ~
6.png
▲读时序
- ?2 Q5 h5 s( V. |% B. h& u8 u! z
7.png
6 U- X+ s; V. t  ?. V$ A8 q  q+ s

5 w0 v! V6 L" k, t; ]9 e' F
▲写时序
) z$ R7 z) n) p
5 p  r6 q: m2 A' S" z/ S4 X4 _
7 R) I5 a6 l$ U4 k( Q8 E- @' U

. b) b+ E+ o% S+ Y8 M" y

; V6 I% \: S& H& p2 {' T
04 颜色模式

5 C+ B8 h" O1 e1 `9 p  C. M; ?
/ G1 _; x! b, n' ?8 e% D3 {  J$ W

# x% G' M! [) {6 N) Y, `
6 g5 N% B8 @5 `* t1 }; d+ P5 u
4.1RGB565
每个像素用16比特位表示,占2个字节,RGB分量分别使用5位、6位、5位
8.png
4.1RGB888
) M& n% T2 X6 Q. F, b- C' r
每个像素用8比特位表示,占1个字节,注意:在内存中RGB各分量的排列顺序为:BGRBGR BGR ......
10.png
. j, k& k4 }  h- N' s2 f

0 s: l  J  k  z3 D4 L5 @- |6 m( a2 o+ h8 ~! J
9.png
赞 收藏 1 评论0 发布时间:2020-9-7 14:59

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版