当前位置:首页 > 单片机 > 单片机
[导读]TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地

TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD也被叫做真彩液晶显示器。

TFT液晶原理:


*背光模组:提供光源
*上下偏光片,TFT Glass Substrate,液晶:形成偏振光,控制光线的通过与否
*彩色滤光片:提供TFT LCD R/G/B(三原色)的来源
*ITO透明导电层:提供透明的导电通路
*Photo Spacer:提供一个固定高度给彩色滤光片和TFT Glass Substrate,作为灌入液晶的空间,以及做为上下两层Glass的支撑

液晶特性:

TFT-LCD使用的液晶为TN(Twist Nematic)型液晶,分子成椭圆状。TN型液晶一般是顺着长轴方向串接,长轴间彼此平行方式排列;当接触到槽状表面时,液晶分子就会顺着槽的方向排列与槽中


当液晶被包含在两个槽状表面中间,且槽的方向相互垂直,则液晶分子的排列为:
a)上表面分子:沿着a方向;
b)下表面分子:沿着b方向;
c)介于上下表面中间的分子:产生旋转的效应。
因此液晶分子在两槽状表面间产生90°的旋转

当线性偏极光射入上层槽状表面时,此光线随着液晶分子的旋转也产生旋转。
当线性偏极光射出下层槽状表面时,此光线已经产生了90度的旋转


当在上下表面之间加电压时,液晶分子会顺着电场方向排列,此时入射光线不再会旋转,因而光线直线射出下表面

偏光片特性:
将非偏极光(一般光线)过滤成偏振光。
当非偏极光通过a方向的偏光片时,光线被过滤成与a方向平行的线性偏极光
上图:偏振方向相同,线性偏极光继续前进,通过第二片偏光片时,光线通过。
下图:偏振方向不同,通过第二片时,光线被完全阻挡

偏振光透过液晶分子,偏振方向发生旋转,光线可通过偏光片


当液晶分子呈如图方向排列时,光线偏振方向将不再发生旋转,最终无法通过偏光片

TFT上下各有一片偏振方向垂直的偏光片,背光板发出的光经背光模组散射后,先通过下层偏光片形成偏振光
之后通过液晶分子,并由液晶分子的旋转角度决定通过液晶分子后的偏振方向
在经过彩色滤光片产生红、绿、蓝三色光,最后通过上偏光片,并由偏振光偏振方向与偏光片偏振方向夹角决定最终输出的光强,以形成不同的色彩。



发光强弱由MOS管控制液晶偏转角度,从而控制光线出口强弱达到控制色彩目的.
假设240*320分辨率液晶则由于 基本色彩是3原色 所以总共有240*320*3个 MOS管


“像素”(Pixel) 是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的,是用来计算数码影像的一种单位,如同摄影的相片一样,数码影像也具有连续性的浓淡阶调,我们若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(Pixel)。这种最小的图形的单元能在屏幕上显示通常是单个的染色点。越高位的像素,其拥有的色板也就越丰富,越能表达颜色的真实感。

每个点显示的颜色如何由确定?
由于TFT 液晶我使用的是2.8寸的240*320分辨率(像素),16位真彩显示(接近自然色)
该模块采用的是显尚光电的DST2001PH TFTLCD,DST2001PH的控制器为ILI9320(可能为其他),采用16位的80并口。
驱动芯片显存GRAM与色彩关系:

由于是16为数据,所以最低5位代表蓝色,中间6位为绿色,最高5位为红色。数值越大,表示该颜色越深。
就是向显存里面写入不同数据,产生不同的颜色.
常见颜色确定:

利用画图工具里面3原色可能确定需要的显存数据。


本人使用ALIENTEK MiniSTM32开发板自配2.8寸液晶
液晶驱动芯片硬件接口:


采用16位数据线(低了速度太慢,用彩色就没什么效果了)。该模块的80并口有如下一些信号线:
CS:TFTLCD片选信号。
WR:向TFTLCD写入数据。
RD:从TFTLCD读取数据。
D[15:0]:16位双向数据线。
RST:硬复位TFTLCD。
RS:命令/数据标志(0,读写命令;1,读写数据)。

ILI9320常用寄存器指令:


R0,这个命令,有两个功能,如果对它写,则最低位为OSC,用于开启或关闭振荡器。而如果对它读操作,则返回的是控制器的型号。这个命令最大的功能就是通过读它可以得到控制器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化。因为93xx系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制器。
R3,入口模式命令。我们重点关注的是I/D0、I/D1、AM这3个位,因为这3个位控制了屏幕的显示方向。
//------------------------------------------------------------------------------------------------------------------------------------------
AM:控制GRAM更新方向。当AM=0的时候,地址以行方向更新。当AM=1的时候,地址以列方向更新。
I/D[1:0]:当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加/减少1,
/--------------------------------------------------------------------------------------------------------------------------------------------




R7:显示控制命令。该命令CL位用来控制是8位彩色,还是26万色。为0时26万色,为1时八位色。D1、D0、BASEE这三个位用来控制显示开关与否的。当全部设置为1的时候开启显示,全0是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。

R32,R33:设置GRAM的行地址和列地址。R32用于设置列地址(X坐标,0~239),R33用于设置行地址(Y坐标,0~319)。当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了.

R34:写数据到GRAM命令,当写入了这个命令之后,地址计数器才会自动的增加和减少。该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数.

R80~R83:行列GRAM地址位置设置。这几个命令用于设定你显示区域的大小,我们整个屏的大小为240*320,但是有时候我们只需要在其中的一部分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣。此时我们就可以通过这几个命令,在其中开辟一个区域,然后不停的丢数据,地址计数器就会根据R3的设置自动增加/减少,这样就不需要频繁的写地址了,大大提高了刷新的速度。
//--------------------------------------------------------------------------------------------------------
我们接下来看看要如何才能驱动ALIENTEK TFTLCD模块,TFTLCD显示需要的相关设置步骤如下:
1)设置STM32与TFTLCD模块相连接的IO。
这一步,先将我们与TFTLCD模块相连的IO口设置为输出,具体使用哪些IO口,这里需要根据连接电路以及TFTLCD模块的设置来确定。
2)初始化TFTLCD模块。
其实这里就是上和上面OLED模块的初始化过程差不多。通过向TFTLCD写入一系列的设置,来启动TFTLCD的显示。为后续显示字符和数字做准备。
3)通过函数将字符和数字显示到TFTLCD模块上。

MiniSTM32开发板的IO口对应关系如下:
LCD_LED对应PC10;
LCD_CS对应PC9;
LCD _RS对应PC8;
LCD _WR对应PC7;
LCD _RD对应PC6;
LCD _D[17:1]对应PB[15:0];

基本GUI接口函数简介(一)

80并口时序图:

(一) :
//------写数据函数---------这里我们采用了宏定义的方式,以提高速度(由于显示图像写入读出频繁):
#define LCD_WR_DATA(data){

LCD_RS_SET; //选择数据
LCD_CS_CLR; //选择片
DATAOUT(data); //把数据放入端口
LCD_WR_CLR; //WR写数据来个上升沿(将数据写入)
LCD_WR_SET;
LCD_CS_SET; //CS上升沿 写入数据完成
}
上面函数中的‘’是C语言中的一个转义字符,用来连接上下文,因为宏定义只能是一个串,而当你的串过长(超过一行的时候),就需要换行了,此时就必须通过反斜杠来连接上下文。这里的‘’正是起这个作用
(二):
因为该函数使用频率不是很高,不使用宏定义
//----向寄存器发送指令函数------
void LCD_WR_REG(u8 data)
{
LCD_RS_CLR; //选择指令
LCD_CS_CLR; //选中芯片
DATAOUT(data); //端口放上指令
LCD_WR_CLR; //WR写数据来个上升沿(将数据写入)
LCD_WR_SET;
LCD_CS_SET; //CS上啦完成操作
}
(三) :
由下面2个寄存器设置快速IO


//-------读取寄存器值函数---------
u16 LCD_ReadReg(u8 LCD_Reg)
{
u16 t;
LCD_WR_REG(LCD_Reg); //写入要读的寄存器号
GPIOB->CRL=0x88888888; //将端口PORTB设置成输入模式
GPIOB->CRH=0x88888888;
GPIOB->ODR=0xffff; //端口上拉预备输入
#ifdef LCD_FAST_IO //判断快速IO口是否宏定义过
LCD_RS_SET; //运用快速IO口 (例:#define LCD_CS_SETGPIOC->BSRR=1<<9 //片选口PC9)
LCD_CS_CLR;
LCD_RD_CLR;
LCD_RD_SET; //RD脚产生上升沿
t=DATAIN;
LCD_CS_SET;
#endif
GPIOB->CRL=0x33333333; //恢复输出状态
GPIOB->CRH=0x33333333;
GPIOB->ODR=0xffff;
return t;
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭