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

STM32驱动LCD原理

[复制链接]
STMCU-管管 发布时间:2020-9-7 14:59
TFTLCD即薄膜晶体管液晶显示器。它与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。
3 V& E; l2 Z) z9 X" y
; d3 F, c) {8 p& ~, |
1.png
$ G- H0 u& c6 ]3 I( q, X4 O. I
▲驱动流程

- s9 x' \; X1 h( h8 y; ]0 x2 E* L9 _  W3 _0 R( a6 f, H
01   使用FSMC驱动LCD

( A( f; P% z4 i
; W  b5 G) }% c- ?1 q
关于FSMC,把数据写入相应的地址,FSMC就会把地址从FSMC_A出去,写入的数据会会从FSMC_D发出去。至于片选等信号线都是自动的。读的话,直接读相应的地址,就会拿到改地址上的数据。

. ^5 o, M% A; x6 u1 O+ i, j

- B6 P' h3 i- h0 b( `6 g% v- p
( V" x3 E" z& b! u& d
FSMC驱动外部SRAM时,外部SRAM的控制一般有:

1 R! p1 u8 Y8 w, [6 s0 c
  • 地址线(如A0~A25)

    : Z1 D! Q6 A, c: |. t& X6 Z
      d0 ?6 h% D6 k, v* h
  • 数据线(如D0~D15)

    2 V- c" k+ D4 D5 o' q1 c; b0 k3 J

    # z, L9 z# l* P6 S: T2 q, X- c
  • 写信号(WE,即WR)

    4 R9 l- E9 [- ^( M8 z, ?3 z
    6 x7 j9 l  K5 d8 v# j! `# d/ \% T
  • 读信号(OE,即RD)

    : @% r7 c! u& S7 f3 u# F2 z
    % L. D7 k- M0 T  I
  • 片选信号(CS)
    3 A/ S9 m8 d3 m& g
    ' `6 z+ w# Z2 R+ u! o+ J1 G# W+ _
如果SRAM支持字节控制,那么还有UB/LB信号。
* y+ X% L5 J; O, b& }$ D
而TFTLCD的信号包括:RS(命令数据标志位)、D0~D15、WR、RD、CS、RST和BL等,其中真正在操作LCD的时候需要用到的就只有:

9 E8 M! d. d( v( \3 t  m
  • CS

    4 r8 O4 c6 N+ y" W

    2 [2 }1 g- J, `; X
  • WR
    " `& ~/ _+ Z7 @( z8 z
    ; i1 w( u+ L% P9 {5 N" a
  • RS
    # S4 v/ w+ j, A9 g

    # H$ j' p5 `* H" \1 M- v
  • D0~D15
    ' s- ?; H4 i; r2 Z

    3 ~  @' C4 M, J' y/ z& E( ]
  • RD
    . e5 ^- C8 {/ R. C; {

    5 b, `: {0 b, D0 X4 N0 o. r
其操作时序和SRAM的控制完全类似,唯一不同就是TFTLCD有RS信号,但是没有地址信号。
2 e: v" l, u0 |: F: @) V% ]

) Q2 ~! ]5 Q: b0 j0 ?
TFTLCD通过RS信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,比如我们把RS接在A0上面,那么当FSMC控制器写地址0的时候,会使得A0变为0,对TFTLCD来说,就是写命令。而FSMC写地址1的时候,A0将会变为1,对TFTLCD来说,就是写数据了。这样,就把数据和命令区分开了,他们其实就是对应SRAM操作的两个连续地址。当然RS也可以接在其他地址线上。
因此,可以把TFTLCD当成一个SRAM来用,只不过这个SRAM有2个地址,这就是FSMC可以驱动LCD的原理。
$ z; i  [2 K; A
02 标准8080接口

! d) T( k# l( B+ p  K  e
8080总线又叫Intel总线,大致来说,Intel总线的控制线有四根,RD写使能,WR读使能,ALE地址锁存,CS片选。

$ ^5 G" ^2 Q' C  }; K
8080中:有RD(read),WR(Write)脚,RD,WR可以同时为高,不能同时为低!!RD为低时表示要从LCD中读出数据在D0-D7脚上,WR为低时表示:将当前D0-D7上的数据写入LCD

9 r3 Q& f) Q) E. b1 A, n
模块的8080并口读/写的过程为:
; E. j# q, ^2 C* \$ N. |# I
先根据要写入/读取的数据的类型,设置RS为高(数据)/低(命令),然后拉低片选,选中液晶IC,接着我们根据是读数据,还是要写数据置RD/WR为低,然后:
2 }  a8 z- `# W" F  T5 S
1.读数据:在RD的上升沿,读取数据线上的数据(D[15:0]);
; x7 q$ B  U' u. d
2.写数据:在WR的上升沿,使数据写入到液晶IC里面;

* u2 m) G9 ?2 T+ _
2.png

1 x' P& c3 b0 X
▲8080并口写时序

4 ?, ^2 H3 d; W$ x& c* K6 S

6 N% p* p7 A5 v, p
2 s' F; |% n5 z* s1 v7 c
3.png
$ r2 U. e4 N9 N& _% h) T+ P, N
▲8080并口读时序
$ P; C/ a8 W8 k) K% i9 u, X' q
( l" m2 r4 W" e8 K
4.png
# `9 q% m& X! P2 G" |9 q" V& M: E: ~
▲写时序
5 t9 P) K+ B" p( D9 P  f2 C' b
5.png
▲读时序
03 使用FSMC驱动8080接口
! f' D. R- W% C0 R! D
6.png
▲读时序

% A* Q- @4 `" [/ r: a
7.png

) n7 @+ Z9 o' g7 R% B& G
9 I4 ?) d/ `" L6 a8 R
▲写时序
+ y' g! s+ B6 E% [, x8 c* X6 G5 x9 u( ^
2 O. U! ^8 D5 R" m7 u1 [

. x, m& L7 S% S4 B. A

2 w: p* D7 D* C5 y/ y

/ Y: e" D; }4 v) _+ a# u! ~* O  u6 f0 k
04 颜色模式
. P1 W" o5 z% q! T0 S  H

; j/ g% s' a9 P* Y
  O0 K7 c" d/ C# d- p

  V4 y/ |. q! c4.1RGB565
每个像素用16比特位表示,占2个字节,RGB分量分别使用5位、6位、5位
8.png
4.1RGB888
0 \) o9 D2 [3 ?9 f6 G
每个像素用8比特位表示,占1个字节,注意:在内存中RGB各分量的排列顺序为:BGRBGR BGR ......
10.png
: z* e/ P2 M( X" H' ^( k

8 s4 d7 k; s; x! K* }$ o
. f9 S2 Y2 l* S" Q
9.png
赞 收藏 1 评论0 发布时间:2020-9-7 14:59

举报

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