欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32实现FSMC驱动TFTLCD液晶显示屏

程序员文章站 2024-02-23 20:18:58
...

1、TFTLCD接口及驱动流程

TFTLCD液晶显示屏的接口说明,这里是16位80并口接线方式,关于这种方式的简介可以参考百度文库
80并口协议

LCD引脚包括:
CS:片选信号
WR:写信号
RD:读信号
DB[1-17]:16位双向数据线
RST:复位信号
RS:命令0/数据标志1
CTR:背光控制信号
还有当其作为输入设备时一系列接口信号

80并口读写的时序图如下:

读时序:
STM32实现FSMC驱动TFTLCD液晶显示屏

(1)根据读取的数据类型设置RS为0(命令)/1(数据),然后拉低片选信号。
(2)读信号时,WR设置常高,当RD为低时,读取数据或者命令。

写时序:
STM32实现FSMC驱动TFTLCD液晶显示屏

(1)根据写入的数据类型设置RS为0(命令)/1(数据),然后拉低片选信号。
(2)写信号时,RD设置常高,当WR为低时,写入数据或者命令。

LCD驱动流程:

STM32实现FSMC驱动TFTLCD液晶显示屏

2、FSMC简介
FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。
STM32实现FSMC驱动TFTLCD液晶显示屏

FSMC驱动外部SRAM时,外部SRAM的控制一般有:地址线、数据线、写信号、读信号、片选信号,如果SRAM支持字节控制,那么还有UB/LB信号。

TFTLCD的信号在前面介绍过,包括CS:片选信号、WR:写信号、RD:读信号
、DB[1-17]:16位双向数据线、RST:复位信号、RS:命令0/数据标志等。其操作时序和SRAM的控制完全类似,唯一不同就是TFTLCD有RS信号,但是没有地址信号。但是TFTLCD通过RS信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,只不过只有两个地址,比如把RS接在A0上面,那么当FSMC控制器写地址0的时候,会使得A0变为0,对TFTLCD来说,就是写命令。而FSMC写地址1的时候,A0将会变为1,对TFTLCD来说,就是写数据了。这样,就把数据和命令区分开了,他们其实就是对应SRAM操作的两个连续地址。

因此,可以把TFTLCD当成一个SRAM来用,只不过这个SRAM有2个地址,这就是FSMC可以驱动LCD的原理。

3、源码
首先进行lcd初始化

void LCD_Init(void)
{
    初始化GPIO;
    初始化FSMC;           
    读取LCD ID; 
    printf(“LCD ID:%x\r\n”,lcddev.id);//打印LCD ID,用到了串口1
    根据不同的ID执行LCD初始化代码;
    LCD_Display_Dir(0);    //默认为竖屏
    LCD_LED=1;     //点亮背光
    LCD_Clear(WHITE);   //清屏
}

初始化gpio非常简单,fsmc初始化要根据lcd的读写时序来设置fsmc的读写时序,然后设置fsmc的模式、位宽等。

初始化结束后,根据显示内容编程进行显示。

源码连接
lcd显示