TFT液晶显示屏 控制器的设计
- 格式:doc
- 大小:235.00 KB
- 文档页数:13
TFT-LCD原理与设计
TFT-LCD(薄膜晶体管液晶显示器)是一种广泛使用于平板
电视、电脑显示器、手机等设备中的液晶显示技术。
其工作原理是利用薄膜晶体管和液晶分子的特性实现图像显示。
TFT-LCD的结构由多个层次组成,包括色彩滤光片、透明电极、薄膜晶体管和液晶层等。
色彩滤光片用于调节液晶层的颜色显示,透明电极用于施加电场,而薄膜晶体管则负责控制电流的流动。
这些层次协同工作,使得液晶分子在电场作用下产生偏转,并改变光的透过率,从而形成显示图像。
TFT-LCD的工作原理基于液晶的光电效应。
液晶分子具有两
种状态:向列方向对齐的“ON”态和与列方向垂直的“OFF”态。
当施加电场时,液晶分子会发生扭曲,产生向与列方向垂直的“ON”态。
通过调节电场的强弱和方向,可以控制液晶分子的
偏转程度,进而控制透过液晶层的光的亮度和颜色。
TFT-LCD还需要使用后端的驱动电路来控制薄膜晶体管的导
通和断开,以及控制液晶分子的偏转。
这些驱动电路通常由晶体管和电容器组成,能够实现高速刷新和精确的图像显示。
在TFT-LCD的设计中,需要考虑多个因素,包括像素密度、
色彩还原、亮度和对比度等。
为了提高图像质量,设计者需要选择合适的材料、优化电流和电场的控制参数,并采用高精度的光学和电子元件。
总之,TFT-LCD利用薄膜晶体管和液晶分子的特性,通过控
制电场来实现图像显示。
其设计需要考虑多个因素,以实现高质量的图像效果。
触摸屏技术方便了人们对计算机的操作使用,是一种极具发展前途的交互式输入技术,受到各国的普遍重视,并投入大量的人力、物力对其进行研发,使得新型触摸屏不断涌现[1]。
特别是四线电阻式触摸屏具有制造工艺简单、成本低廉、使用方便等特点,已经被广泛应用于不同的电子设备[2]。
随着嵌入式技术的高速发展,尤其是CPLD/FPGA的出现,其基于SoPC技术的IP核的使用给开发人员带来了诸多方便。
但在SoPC中并没有彩色触摸屏的IP 核,因此需要自己编写硬件的时序控制[3]。
本文提出一种基于FPGA的彩色触摸屏控制器的设计方案,通过单片FPGA芯片可以实现彩色触摸屏的驱动逻辑,从而实现硬件上时序控制,在此控制器的基础上可以进一步开发彩色触摸屏的IP核。
1 彩色触摸屏控制器的设计1.1 总体结构及其工作原理彩色触摸屏控制器的总体结构如图1所示。
该彩色触摸屏的控制器主要由TFT-LCD控制器和ADS7843芯片控制器两部分组成。
由图1可以看出,TFT-LCD控制器的作用是将图像数据采集后,通过SDRAM进行缓冲,然后将图像数据输出给TFT-LCD。
它的主要功能是完成图像数据的采集和缓冲、TFT-LCD的时序控制及最终数据在TFT-LCD上的显示。
1.2 TFT-LCD控制器的设计图像数据经采集和缓冲之后,通过TFT-LCD的时序控制可以将数据按如图2所示时序图进行输出。
本设计中采用的TFT-LCD的分辨率为480×272,其RGB数据位均为8 bit,可以显示16 777 216种颜色。
其中,PCLK为LCD像素时钟信号,HSYNC为行同步信号,VSYNC 为帧同步信号,VDEN为数据使能信号,VD[23:0]为LCD像素数据输出端口,tvpw、tvp、tvbp、tvfp分别为垂直同步脉冲、垂直扫描时间、垂直后回归、垂直前回归,thpw、thp、thbp、thfp分别为水平同步脉冲、水平扫描时间、水平后回归、水平前回归[4]。
一种基于STM32的控制TFT-LCD显示的设计方法摘要:TFT-LCD 即薄膜晶体管液晶显示器。
其英文全称为: Thin Film Transistor-Liquid CrystalDisplay。
TFT-LCD 与无源TN-LCD、 STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。
本文设计了一种基于STM32开发板的ILI9341芯片控制液晶屏的方法。
摘要:STM32,LCD, ILI9341,TFT一、开发硬件介绍本设计开发板使用的屏幕是3.2寸TFT液晶彩屏,分辨率为320x240,并使用ILI9341芯片控制液晶屏。
液晶屏的控制芯片内部结构非常复杂,最主要的是位于中间的GRAM(Graphics RAM),可以理解为显存。
GRAM 中每个存储单元都对应着液晶面板的一个像素点。
芯片内部有电路把 GRAM存储单元的数据转化成液晶面板的控制信号,使每个像素点呈现特定的亮度和颜色,这些点组合起来则成为显示界面。
所用液晶屏模块原理图如图所示:从模块接口电路可以看出,LCD采用16位的并方式与外部连接,之所以不采用8位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用8位数据线,就会比16位方式慢一倍以上,我们当然希望速度越快越好,所以我们选择16位的接口。
二、用STM32驱动LCDILI9341的 8080 通讯接口时序可以由 STM32 使用普通 I/O 接口进行模拟,但这样效率较低,它提供了一种特别的控制方法——使用FSMC接口。
根据STM32对寻址空间的地址映射,地址0x6000 0000 ~0x9FFF FFFF是映射到外部存储器的,而其中的0x60000000 ~0x6FFF FFFF 则是分配给 NOR FLASH、PSRAM这类可直接寻址的器件。
STM32单片机对TFTLCD的驱动设计STM32单片机对TFTLCD(TFT液晶屏)的驱动设计是一种基于STM32单片机的液晶显示技术。
TFTLCD是一种高分辨率、高色彩鲜艳的显示技术,常用于嵌入式设备的显示界面。
在设计STM32单片机对TFTLCD的驱动时,需要考虑到单片机的硬件资源和软件设计。
一、硬件设计:1.接口设计:根据TFTLCD的规格书,确定TFTLCD的接口类型(如SPI、RGB等),然后根据接口类型选择合适的引脚来连接TFTLCD与STM32单片机。
2.时钟设计:TFTLCD需要一个稳定的时钟信号来提供时序控制,可以使用STM32单片机的定时器来生成时钟信号。
3.电源设计:TFTLCD需要一定的电压供应,可以通过外部的电源模块提供合适的电压给TFTLCD。
二、软件设计:1.初始化:在驱动设计的开始阶段,需要初始化TFTLCD的相关参数,如分辨率、颜色格式等。
2.数据传输:根据TFTLCD的接口类型,使用合适的通信协议进行数据传输。
如果是SPI接口,可以使用STM32的SPI外设来传输数据;如果是RGB接口,可以通过GPIO口来控制数据线的高低电平。
3.显示控制:通过向TFTLCD发送相应的控制指令,来实现对显示内容的控制,如清屏、画点、画线、显示图像等。
4.刷新机制:TFTLCD的驱动需要实现刷新机制,即在TFTLCD的刷新周期内,不断向TFTLCD发送新的数据。
可以使用双缓冲机制,先将数据写入一个缓冲区,再将缓冲区的数据一次性发送给TFTLCD,以提高刷新效率。
在STM32单片机对TFTLCD的驱动设计中,需要根据具体的TFTLCD型号和规格书来进行具体的硬件和软件设计。
每个TFTLCD的驱动设计都是独特的,需要根据具体的需求和要求来进行设计。
同时,也需要根据单片机的性能和资源来进行合理的设计,以确保驱动的效率和稳定性。
总结来说,STM32单片机对TFTLCD的驱动设计需要同时考虑硬件和软件的设计。
TFTLCD驱动芯片的研究与设计首先,我们需要了解TFT LCD的工作原理。
TFT LCD(Thin Film Transistor Liquid Crystal Display)是一种先进的液晶显示技术,它采用薄膜晶体管(TFT)作为像素的控制器,使每个像素点能够独立地控制其透明度。
每个像素由一个液晶分子和一个TFT组成。
TFT负责控制电流的流动以改变液晶分子的排列方式,从而实现像素的亮度和颜色变化。
TFTLCD驱动芯片是将输入信号转换为输出电压的核心部件。
它主要包括控制逻辑电路、模拟电路和电源管理电路。
控制逻辑电路负责接收输入信号,并将其转换为驱动信号以控制TFT。
模拟电路负责将驱动信号转换为适当的电压信号,以满足每个像素的需求。
电源管理电路则负责提供适当的电源电压和电流。
1.像素驱动方案设计:像素驱动是TFTLCD驱动芯片的核心任务之一、研究人员需要研究不同的驱动方案,如单路列驱动(SLS),双路列驱动(DLS)和动态驱动等,以提高像素点的刷新率、亮度和对比度。
2.电压转换电路设计:电压转换电路用于将输入信号转换为适当的驱动电压。
研究人员需要设计高效的电压转换器,以确保每个像素都能够获得所需的电压,同时尽量减少功耗和电磁干扰。
3.输入信号接口设计:TFTLCD驱动芯片需要与其他系统(如控制器和处理器)进行通信。
因此,设计人员需要设计适当的输入信号接口,以支持不同的通信协议和数据格式。
4.芯片布局与布线设计:良好的布局和布线设计对于TFTLCD驱动芯片的性能至关重要。
设计人员需要合理安排各个功能模块的布局,并进行优化以最小化信号干扰和功耗。
5.电源管理:电源管理电路是TFTLCD驱动芯片的重要组成部分。
它需要提供稳定的电源电压和电流,并具有较高的能效。
研究人员需要设计合适的电源管理电路以满足这些要求。
总结起来,TFTLCD驱动芯片的研究与设计需要涉及到像素驱动方案设计、电压转换电路设计、输入信号接口设计、芯片布局与布线设计以及电源管理等方面。
一.设计原理:1、系统工作原理:图1如图1所示,Nios II处理器在SDRAM中开辟framebuffer,可以是单缓冲也可以是双缓冲,以单缓冲为例。
Nios II处理器将一帧图象数据(640×480×2Bytes,RGB565,16bit)存入framebuffer,然后将framebuffer的首地址写入到LCD控制器,并启动LCD控制器,该控制器自动从传来的首地址处开始读取图象数据,并按照TFT的格式输出。
图中各模块由Avalon Bus连接在一起。
Avalon Bus是一种简单的总线结构,在SOPC 中,Nios II软核处理器和各种外设都通过Avalon Bus连接在一起。
由图1可以看出,作为Slaver的SDRAM Controller分别要受到Processor 和LCD Controller的控制,为了解决总线冲突,Avalon Bus自动在有冲突的接口上加入了Arbitrator这样一个仲裁模块,用于合理分配总线时间,用户通过改变每个模块的权值来改变对其分配总线时间的多少。
在这个系统中,SDRAM Controller处的冲突是影响整个系统性能的关键。
以SDRAM时钟频率为100MHz 计算,16bit位宽的SDRAM其数据总带宽为200MByte/s,640*480*2Bytes*60Hz的TFT LCD 要占用36MByte/s左右的带宽,这对于还要处理其他任务的处理器来说是很大的影响。
解决的办法是另外增加一块SDRAM,专门用作Frame buffer,这样就可以有效减少对系统总线带宽的占用。
2、LCD Controller工作原理图2如图2所示,LCD Controller主要由Avalon 总线接口、寄存器组、控制模块、DMA、FIFO以及时序生成模块组成。
每个寄存器独立编址,处理器可以通过总线读写存储器的方式来访问。
处理器通过Avalon总线接读写寄存器,从而完成对LCD控制器工作状态的设定与控制。
控制器启动后,DMA Master通过avalon总线读取SDRAM中的数据,然后存入FIFO 中,时序生成模块按照TFT时序要求从FIFO中读取数据,然后送出去显示。
整个数据读取过程不需要处理器干涉,实际上是一个DMA过程。
考虑到DMA读取的速度与TFT时序发生器输出的速度不一致(前者大于后者),所以在DMA与TFT时序发生器之间加入了FIFO用来缓冲数据。
DMA有控制模块控制其工作。
控制模块不断检测FIFO状态,当FIFO快满时,暂停DMA,当FIFO快空时,重新启动DMA,如此循环,可保证FIFO不溢出,保证显示画面连续稳定。
二、设计目标:设计一个LCD控制器,该控制器基于Altera的SOPC系统,通过SOPC中的Avalon总线接口与Nios II处理器和SDRAM控制器通信,使之能显示640*480分辨率,显示颜色深度达到16bit,输出接口兼容TFT LCD。
三、设计细节1、Avalon Bus Slaver从总线接口Avalon从总线接口负责处理器与LCD控制器的接口控制,LCD控制器在整个系统中作为从设备,通过该接口,接受CPU的控制。
根据设计需要,该接口所需要的各信号为:这些信号均要求满足Avalon总线的时序要求:(采用基本时序)读时序:图3如图3所示,读时序在一个系统时钟周期内完成。
在第一个clk上升沿,系统将address、byteenable、read信号输出到从设备接口,系统内部对address进行地址译码,生成chipselect 信号也传输到从设备接口,一旦chipselect被置高,从设备立即将readdata信号输出到从设备接口,系统在第二个时钟上升沿读取该数据,从而完成一次读操作。
为满足此时序,可利用第一个clk的下降沿来检测address、read、chipselect信号是否有效,如果有效,立即输出数据。
代码如下:always @(posedge slave_clk or negedge reset_n)beginif(reset_n == 0)beginslave_readdata <= 0;endelse if(slave_chipselect && ~slave_read_n)begincase(slave_address)2'b00: slave_readdata <= controlReg;2'b01: slave_readdata <= interStatus;2'b10: slave_readdata <= startAddress;2'b11: slave_readdata <= addressCounter;endcaseendend写时序:图4如图4所示,写操作也在一个时钟周期内完成。
在第一个clk上升沿,系统设置address、byteenable、writedata、write信号有效,然后内部将address信号译码得出chipselect信号并立即传输到从设备接口,从设备在第二个clk上升沿捕获接口上的数据,从而完成一个写操作。
为满足此时序,从设备接口在第二个clk上升沿检测address、write、chipselect信号是否有效,若有效,则将数据口上的数据writedata写入到内部寄存器。
代码如下:always @(posedge slave_clk or negedge reset_n)beginif(reset_n == 0)begincontrolReg <= 0;// statusReg <= 0;startAddress<= 0;frameLength <= 0;endelse if(slave_chipselect && ~slave_write_n)begincase(slave_address)2'b00: controlReg <= slave_writedata;//2'b01: statusReg <= slave_writedata;2'b10: startAddress <= slave_writedata;2'b11: frameLength <= slave_writedata;endcaseendendclk信号为系统时钟信号,这里取100MHz。
reset_n为复位信号,低电平有效,复位后,LCD控制器应该处于一个设定好的状态。
irq为中断请求信号,当控制器满足下列条件之一时,向系统发出中断请求信号,将irq 信号置高,直到系统响应该信号,并用软件将其清零。
(暂时未使用)2、Avalon Bus DMA Master主设备接口Avalon Bus DMA Master负责按照控制模块的指令,读取SDRAM中的数据,并写入到FIFO中。
其核心部分是DMA地址累加器,当条件满足时,地址累加器开始在100MHz的时钟下以4为单位开始累加(为何以4为单位,是由avalon总线的地址映射方式决定的。
avalon总线按字节进行编址,而SDRAM控制器一次读取32bit即4Byte的数据,所以地址要以4为单位累加),用于生成读取SDRAM的地址。
读完一帧的数据后,自动复位到首地址,继续累加。
主设备接口信号列表:主设备接口时序:图5如图5所示,主设备接口采用带延迟的主设备读传输模式,在这种传输模式下,即使没有接收到上一次的有效数据,主设备也可以发起下一次读命令。
当waitrequest信号无效(低电平)时,主设备可以连续的发起读命令,当waitrequest信号有效(高电平)时,主设备开始等待,知道其变为低电平。
当readdatavalid信号有效(高电平)时,表示读数据有效,此时主设备可以锁存数据口上的有效数据。
这里我们没有使用flush信号,flush信号会清楚前面一切未完成的读命令。
Avalon总线保证数据的输出顺序与主设备要求的顺序一致(即与主设备地址输出顺序一致)。
readdatavalid信号可以作为FIFO的wrreq信号,这样可以直接将读回来的数据写入到FIFO中。
地址累加器满足以下条件时,则开始累加,当当前地址等于尾地址时,则复位累加器,使之重新开始从首地址累加:1)、非FIFO快满(即fifo_almostfull信号无效)2)、master_waitrequest无效地址累加器代码:wire [31:0] endAddress;reg [31:0] addressCounter;wire addressCounter_sload;wire addressCounter_inc;assign endAddress = startAddress + frameLength;assign addressCounter_sload = (~controller_GoBit) | (addressCounter ==endAddress);assign addressCounter_inc = (~master_read_n) & (~master_waitrequest) &(controller_GoBit);assign master_address = addressCounter;assign master_read_n = ~(fifo_almostfull ^ controller_GoBit);always @(posedge master_clk or negedge reset_n)beginif(reset_n == 0)beginaddressCounter <= 0;endelse if(addressCounter_sload == 1)beginaddressCounter <= startAddress;endelse if(addressCounter_inc == 1)begin// address incs as 0,4,8,16,...addressCounter <= addressCounter + 4;endend3、FIFO(先入先出存储器)FIFO的作用是对DMA输出的图象数据进行缓存,以匹配时序控制模块的输出速度。
FIFO大小暂定为4096*16bit,在实际设计时,再根据系统需要以及资源状况作出适当调整,原则是,在系统资源允许的情况下,将FIFO大小尽量设置大点。
FIFO由DMA控制器写入数据,写入时钟为100MHz;由LCD控制器的时序发生模块读出数据,读出时钟为PCLK,即LCD的象素点扫描频率,通常取25MHz。