深度解析STM32驱动LCD原理

发布者:心怀梦想最新更新时间:2024-03-07 来源: elecfans关键字:STM32  驱动LCD  晶体管 手机看文章 扫描二维码
随时随地手机看文章

TFTLCD即薄膜晶体管液晶显示器。它与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。

5e890544-a4ba-11eb-aece-12bb97331649.png

01驱动流程

使用FSMC驱动LCD

关于FSMC,把数据写入相应的地址,FSMC就会把地址从FSMC_A出去,写入的数据会会从FSMC_D发出去。至于片选等信号线都是自动的。读的话,直接读相应的地址,就会拿到改地址上的数据。

FSMC驱动外部SRAM时,外部SRAM的控制一般有:

地址线(如A0~A25)

数据线(如D0~D15)

写信号(WE,即WR)

读信号(OE,即RD)

片选信号(CS)

如果SRAM支持字节控制,那么还有UB/LB信号。

而TFTLCD的信号包括:RS(命令数据标志位)、D0~D15、WR、RD、CS、RST和BL等,其中真正在操作LCD的时候需要用到的就只有:

CS

WR

RS

D0~D15

RD

其操作时序和SRAM的控制完全类似,唯一不同就是TFTLCD有RS信号,但是没有地址信号。

TFTLCD通过RS信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,比如我们把RS接在A0上面,那么当FSMC控制器写地址0的时候,会使得A0变为0,对TFTLCD来说,就是写命令。而FSMC写地址1的时候,A0将会变为1,对TFTLCD来说,就是写数据了。这样,就把数据和命令区分开了,他们其实就是对应SRAM操作的两个连续地址。当然RS也可以接在其他地址线上。

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

02标准8080接口

8080总线又叫Intel总线,大致来说,Intel总线的控制线有四根,RD写使能,WR读使能,ALE地址锁存,CS片选。

8080中:有RD(read),WR(Write)脚,RD,WR可以同时为高,不能同时为低!!RD为低时表示要从LCD中读出数据在D0-D7脚上,WR为低时表示:将当前D0-D7上的数据写入LCD

模块的8080并口读/写的过程为:

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

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

2.写数据:在WR的上升沿,使数据写入到液晶IC里面;

5ef267b4-a4ba-11eb-aece-12bb97331649.png

▲8080并口写时序

5f303ddc-a4ba-11eb-aece-12bb97331649.png

▲8080并口读时序在NXP的UsingFlexIO to Drive 8080 Bus Interface LCDModule文档中同样也提到了8080接口(P6),我找到的介绍8080接口的官方文档,就只有NXP这个文档。https://pan.baidu.com/s/1oYThPiVnc-_WSAyVy_vG2Q 提取码:i4vu(提示:公众号不支持外链接,请复制链接到浏览器下载)

5f658eb0-a4ba-11eb-aece-12bb97331649.png

写时序

5fc25dde-a4ba-11eb-aece-12bb97331649.png

读时序

03使用FSMC驱动8080接口

5fe7850a-a4ba-11eb-aece-12bb97331649.png

读时序

6023c1a0-a4ba-11eb-aece-12bb97331649.png

写时序04

颜色模式

4.1RGB565

每个像素用16比特位表示,占2个字节,RGB分量分别使用5位、6位、5位

6050d6b8-a4ba-11eb-aece-12bb97331649.png

4.1RGB888

每个像素用8比特位表示,占1个字节,注意:在内存中RGB各分量的排列顺序为:BGRBGR BGR 。..。..

60778786-a4ba-11eb-aece-12bb97331649.png


关键字:STM32  驱动LCD  晶体管 引用地址:深度解析STM32驱动LCD原理

上一篇:STM32G431之串口详解
下一篇:STM32开发中的位带操作机制

推荐阅读最新更新时间:2024-11-08 13:17

Ampleon发布800W高效射频功率晶体管
Ampleon发布了BLU9H0408L-800P 800W射频功率晶体管。BLU9H0408L-800P采用了Ampleon最新的Gen9(50v)LDMOS工艺技术,专门设计用于在400MHz至800MHz 超高频频段(UHF)工作的高功率雷达系统。 BLU9H0408L-800P非常适合用于大功率、远程雷达系统,支持现代雷达所需的长脉冲长度和高占空比,同时还提供出色的可靠性。BLU9H0408L-800P雷达系统的典型使用寿命为15至20年,因此无需维修或更换功率放大器模块,确保了高水平的雷达操作能力并降低了维护成本。 BLU9H0408L-800P的典型效率为70%,与竞争对手的晶体管相比,它的效率更高,因此需要
[网络通信]
Ampleon发布800W高效射频功率<font color='red'>晶体管</font>
STM32内部重要功能全记录
我们讲了内核、存储器和时钟,它们都是单片机核心功能的一部分,没有它们中的任何一个,单片机都不能正常工作。而核心功能还包括复位和电源管理两个部分,因为篇幅关系没有写完,这一期把它们补上。同时我还要继续介绍单片机的多个重要功能。之所以说“重要”,是因为单片机如果没有这些功能,虽然可以正常工作,但其性能和所发挥的作用会大大减弱。重要功能包括:低功耗模式、ADC、DMA、I/O端口、调试模式、定时器、看门狗定时器和嘀嗒定时器。因为我们现在是做入门的介绍,一开始不能讲得太深、太复杂,对于每个功能,我只介绍其表面上的功能与原理。大家只要看过,有一个基本的印象即可。待日后讲到编程设计时再深入讲解,你便会有温故知新的感觉。 【复位】 复位功能
[单片机]
<font color='red'>STM32</font>内部重要功能全记录
STM32之DAC君
先来张比如花漂亮的照片、大家请尽情欣赏:因为其够美丽了、所以我就不展现我美丽而销魂的涂鸦了、 鉴赏过之后、我们来看看STM32之DAC的Resume(简历简介): 2个DAC转换器:每个转换器对应1个输出通道 ● 8位或者12位单调输出 ● 12位模式下数据左对齐或者右对齐 ● 同步更新功能 ● 噪声波形生成 ● 三角波形生成 ● 双DAC通道同时或者分别转换 ● 每个通道都有DMA功能 ● 外部触发转换 ● 输入参考电压VREF+ 哇、、哇、、哇、、好多特征呀、、还记得上篇博客中ADC也有很多功能吗?在这里,我觉得,因为其功能多、所以其复杂、、这也没什么奇怪的哈、、 那我
[单片机]
<font color='red'>STM32</font>之DAC君
STM32 八路AD转换用DMA传输调试成功,DMA传输不错位
// // #include stm32f10x_conf.h //把DMA.h和ADC.h 的注释去掉 #include stm32f10x.h #include stm32_eval.h #include #define N 50 //每通道采50次 #define M 8 //为8个通道 #define ADC1_DR_Address ((u32)0x4001244C) vu16 After_filter ; //用来存放求平均值之后的结果 vu16 AD_Value ; //用来存放ADC转换结果,也是DMA的目标地址
[单片机]
STM32单片机常用的引脚及功能
STM32单片机是由意法半导体公司(STMicroelectronics)推出的一种高性能、低功耗的微控制器。它具有丰富的外设功能和强大的处理能力,广泛应用于各种嵌入式系统的开发中。 在STM32单片机中,引脚是连接外部设备和单片机内部模块的接口,通过引脚可以将输入信号传递给单片机,或将单片机处理后的信号输出到外部设备。在本文中,我们将介绍STM32单片机常用的引脚,并详细说明其功能。 GPIO引脚: GPIO(General-Purpose Input/Output)引脚是最常用的引脚类型之一,用于连接外部的数字输入和输出设备。STM32单片机中的GPIO引脚可以通过设置寄存器的值来进行输入和输出控制。 每个GPIO引脚
[单片机]
STM32 LL 为什么比 HAL 高效?
STM32的标准外设库、HAL、LL软件库,都有很多巧妙之处值得大家借鉴。 今天讲讲STM32Cbue LL库中巧妙运用“静态内联”使代码更高效。 概述 有些应用要求MCU能高效处理,特别是跑一些算法时,对CPU执行效率要求较高。 网上有很多文章说STM32CubeHAL执行效率不高,代码量大等问题,导致很多还没有入门,或初学的读者就产生各种各样的疑惑。 说实话,HAL相对标准外设库来说确实存在代码效率不高、代码量大灯这些问题,那么与之对应的STM32Cube LL恰好避免了这样的问题。 LL能高效的原因 简单总结一下原因:巧妙运用C语言静态、内联函数直接操作寄存器。 当然,这是其中重要的原因,还有一些其它原因,这
[单片机]
STM32之BKP后备域库函数介绍
1.BKP_DeInit函数的功能是将外设BKP的全部寄存器重设为默认值。 2.BKP_TamperPinLevelConfig函数的功能是设置侵入检测引脚的有效电平。 .BKP_TamperPinLevel可取的值有.BKP_TamperPinLevel_High/_Low.分别是检测高低电平。 3.BKP_TamperPinCmd函数的功能是使能或失能引脚的侵入检测功能。 BKP_TamperPinCmd(enable); 4.BKP_WriteBackupRegister函数的功能是想指定的后备寄存器中写入用户程序数据。他分别可以选用1~10不同的数据寄存器。 BKP_WriteBackupRegister(BKP_DR1,
[单片机]
ulink下在ram中调试stm32的方法
1.在项目文件夹 新建 RAM.ini ---------------------------------------------------------------- FUNC void Setup (void) { SP = _RDWORD(0x20000000); // 堆栈指针 PC = _RDWORD(0x20000004); // PC _WDWORD(0xE000ED08, 0x20000000); // 中断向量偏移地址 } LOAD ./basic.axf INCREMENTAL // Download,.axf 根据自己的文件名和目录修改 Setup();
[单片机]
ulink下在ram中调试<font color='red'>stm32</font>的方法
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved