lcd控制器
- 格式:doc
- 大小:370.00 KB
- 文档页数:16
常见液晶驱动控制芯片详解前言因此各位朋友在选择LCD液晶模块的时候,在考虑到串行,还是并行的方式时,可根据其驱动控制IC的型号来判别,当然你还需要看你选择的LCD模块引脚定义是固定支持并行,还是可选择并行或串行的方式。
一、字符型LCD驱动控制IC市场上通用的8×1、8×2、16×1、16X2、16X4、20X2、20X4、40X4等字符型LCD,基本上都采用的KS0066 作为LCD 的驱动控制器。
二、图形点阵型LCD驱动控制IC2.1、点阵数122X32—SED1520。
2.2、点阵数128×64。
(1)RA8816,支持串行或并行数据操作方式,内置中文汉字字库。
(2)KS0108/RA8808,只支持并行数据操作方式,也是最通用的12864点阵液晶的驱动控制IC。
(3)ST7565,支持中行或并行数据操作方式。
(4)S6B0724,支持中行或并行数据操作方式。
(5)RA6963,支持并行数据操作方式。
2.3、其他点阵数如192×64、240×64、320X64、240X128 的一般都是采用RA6963驱动控制芯片。
2.4、点阵数320X240,通用的采用RA8835 内置ASCII字库,以及RA8806驱动IC内置ASCII和中文等字库。
这里列举的只是一些常用的,当然还有其他LCD 驱动控制IC,在写LCD 驱动时要清楚是哪个型号的IC,再到网上去寻找对应的IC 数据手册吧。
后面我将慢慢补上其它一些常见的。
三、12864 液晶的奥秘CD1601/1602和LCD12864 都是通常使用的液晶,有人以为12864是一个统一的编号,主要是12864 的液晶驱动都是一样的,其实12864只是表示液晶的点阵是128*64点阵,而实际的12864 有带字库的,也有不带字库的:有5V电压的,也有3.3V工作电压:归根到底的区别在于驱动控制芯片,常用的控制芯片有RA8816、KS0108/RA8808、RA6963等等。
TFT LCD控制器说明书V1.2在使用彩色TFT液晶显示器的时候需要为其提供多种时序,大容量高速显存(GRAM)。
当所选处理器(如:ARM7,DSP,8/16位MCU)不带LCD控制器时将会给方案带来一定的难度。
再者当处理器自带的LCD控制器因为60Hz不间断刷屏时序消耗了较多系统资源时(存储器总线带宽),这必定将大大降低系统性能。
通常自带LCD控制器的处理器(如:ARM9)都会使得系统变得相对较庞大、复杂,这时就不得不使用操作系统、文件系统、GUI等搭配使用,一定程度上增加了系统的庞大性、复杂度及成本。
该TFT LCD控制器能降低系统复杂度、简化系统设计、降低成本和加快产品上市,提高了用户产品的竞争优势,同时却不会带来产品性能上的下降。
该控制器可以提供几乎全部可能的TFT LCD时序及较大容量显存,使不带TFT LCD控制器的处理器能轻松使用真彩TFT LCD的构想成为可能。
一、功能特性1.16位双向并行总线用于设置工作寄存器和读/写GRAM数据;2.写GRAM时可分别掩摸高/低字节(当工作在8bpp、24bpp时能提高写入速度);3.灵活的写GRAM地址增量方式,可选的读GRAM地址增量方式;4.内部构建多个FIFO和DMA,使得读/写GRAM时无需判忙,大数据量传输无雪花;5.提供1个SYNC信号输出,可提高刷屏换图时的画面质量;6.最大支持2MB显存(IS61LV51216 * 2),考虑成本通常使用IS61LV25616(1或2片);7.GRAM按16位数据结构寻址,所有单元可读/写;8.可选择单片SRAM的容量(A18=0:256K*16;A18=1:512K*16);9.优化的读GRAM功能,能极大程度提高读操作的效率;10.可以轻松驱动点时钟<=32MHz的任意TFT屏,如常规分辨率:800*600、800*480、640*480、480*272、480*232、320*240等;11.可工作在8bpp、16bpp、24bpp模式(分别占用1、2、3字节GRAM);12.可将8bpp、16bpp数据转换为24bpp输出;13.当使能8/16bpp转24bpp时,24bpp的RGB低位值可设置任意固定逻辑状态;14.LCD行参数可设置(THP、THB、THD、THF);15.LCD帧参数可设置(TVP、TVB、TVD、TVF);16.LCD点时钟分频数可设置,可以提供最高32MHz的时钟(64MHz主频);17.LCD时序信号可设为反相输出(CK、HS、VS、DE);18.提供一个DISP状态信号输出(类似LQ043T等LCD需要此信号);19.LCD引脚可以使能/关闭(避免上电就工作在不一定正确的时序下);20.提供插针式的LCD信号输出接口,可以连接到其他任意LCD屏;21.提供一个触摸屏电路,可以选择为ADS7843输出或4线电阻式输出;22.板载背光DC/DC变换,且背光亮度可调整(可调范围:关闭、1~15亮度);23.板载+5V DC/DC变换,因此工作电压可以降低到3.1V;24.LCD起始地址可设置(多图层时可做轮流切换);25.程序版本和分频因子可读取;26.LED工作指示(LCD帧频率除4,默认15Hz)。
LCD1602及其控制器的基本显⽰⽅法LCD显⽰及键盘⽤法LCD1602及其控制器的基本显⽰⽅法向LCD输⼊的数据为ASCII码,需要通过数码扫描依次送到LCD显⽰,下⾯介绍LCD 控制器IP核LCD16X2A及其相关程序。
逻辑符号如下图:U_lcd_ctrl模块即为该控制器核在AltiumDesinger原理图中的符号表⽰。
其作⽤是接受前⾯⽤户⾃⼰的逻辑单元送来的ASCII码数据和控制信号,然后与外部的LCD显⽰器通讯,显⽰相应字符。
数据总线使⽤输⼊输出分离模式,IP核后⾯需要增加双向BUF控制单元(U8)。
L CD控制器端⼝说明如下:⽤户控制逻辑接⼝:CLK:控制器⼯作时钟,上升沿有效RST:复位信号,⾼电平有效DA TA[7..0]:ASCII码数据总线ADDR[3..0]:字符在LCD屏幕上的地址(共两⾏,每⾏16个字符)ADDR=“0000”~“1111”对应每⾏的第0~15个字符LINE:LCD1602屏幕上的⾏选择信号,LINE=0时数据在第⼀⾏显⽰,LINE=1时数据在第⼆⾏显⽰BUSY:控制器忙信号,数据未显⽰稳定时BUSY=1;反之为0STROBE:数据输⼊有效使能,⾼电平有效LCD显⽰器接⼝:LCD_E:LCD显⽰器使能LCD_RW:LCD读写⽅向控制LCD_RS:LCD命令,数据选择LCD_DA TA_TRI:LCD数据⾼阻态控制LCD_DA TAO:LCD数据输出总线LCD_DA TAI:LCD数据输⼊总线控制器⼯作原理如下:A 控制器复位当RST信号有效时(⾼电平),控制器进⼊LCD复位与初始化操作,此时,BUSY信号持续⾼电平,表⽰控制器忙,LCD不能进⾏⽤户请求的操作。
RST信号由⾼变低后的⼤约80us之后,LCD控制器初始化完成,可以响应⽤户的操作请求,此时,BUSY信号变低。
LCD处于显⽰模式。
B 字符显⽰上电后的LCD必须初始化⼀次,之后LCD控制器停留于“WAIT FOR DA TA”状态。
ST7567A LCD控制器简介ST7567A是一款专门设计用于驱动图形液晶显示模块的控制器芯片。
它采用了SPI接口进行通信,并能够支持图形和字符显示。
本文档将会介绍ST7567A的主要特性、工作原理、接口说明和使用方法。
特性一些ST7567A的主要特性包括:•支持128x64像素的图形显示•支持8位字模和5x8点阵字符显示•SPI接口,支持8位和9位帧格式•内部集成256字节的RAM,用于存储显示缓存•支持硬件复位和休眠模式工作原理ST7567A的工作原理非常简单。
控制器将通过SPI接口接收来自主控制器的命令和数据,然后根据这些命令和数据来控制液晶显示模块的像素点亮和内容显示。
主控制器可以通过发送特定的命令,来设置显示模式、控制光标位置等。
ST7567A还具有内部256字节的RAM,用于存储显示缓存。
主控制器可以将要显示的图形或字符数据写入这个RAM 中,然后控制器会根据RAM中的数据来控制液晶显示模块的像素点亮。
接口说明ST7567A使用SPI接口进行通信。
下面是一些与SPI接口相关的信号说明:•SCLK:时钟信号,由主控制器提供•SDIN:数据输入信号,由主控制器提供•CS:片选信号,由主控制器提供,用于选择ST7567A进行通信•RES:复位信号,由主控制器提供,用于将ST7567A复位到初始状态•A0:命令/数据选择信号,由主控制器提供使用方法使用ST7567A控制器驱动LCD显示模块的方法如下:1.将ST7567A与液晶显示模块进行连接,确保引脚连接正确。
2.连接主控制器和ST7567A之间的SPI接口,包括SCLK、SDIN、CS和A0信号。
3.如果需要,连接复位信号(RES)。
以下是一个简单的示例代码,展示了如何使用ST7567A控制器来显示一个简单的图形:#include <SPI.h>#define SCK_PIN 13#define MOSI_PIN 11#define CS_PIN 10#define RES_PIN 9#define A0_PIN 8void ST7567A_command(uint8_t command) {digitalWrite(A0_PIN, LOW);digitalWrite(CS_PIN, LOW);SPI.transfer(command);digitalWrite(CS_PIN, HIGH);}void ST7567A_data(uint8_t data) {digitalWrite(A0_PIN, HIGH);digitalWrite(CS_PIN, LOW);SPI.transfer(data);digitalWrite(CS_PIN, HIGH);}void setup() {SPI.begin();SPI.setClockDivider(SPI_CLOCK_DIV2);pinMode(CS_PIN, OUTPUT);pinMode(RES_PIN, OUTPUT);pinMode(A0_PIN, OUTPUT);digitalWrite(RES_PIN, HIGH);digitalWrite(RES_PIN, LOW);delay(10);digitalWrite(RES_PIN, HIGH);ST7567A_command(0xE2); // 软件复位delay(100);ST7567A_command(0xAF); // 打开显示ST7567A_command(0xA4); // 打开正常显示模式}void loop() {// 清除显示缓存for (uint16_t i = 0; i < 128 * 64 / 8; i++) { ST7567A_data(0x00);}// 在坐标(32,16)处绘制一个矩形for (uint8_t y = 16; y < 48; y++) {ST7567A_command(0xB0 | (y / 8));ST7567A_command(0x10 | ((y >> 4) & 0x0F)); ST7567A_command(0x00 | (y & 0x0F));for (uint8_t x = 32; x < 96; x++) {ST7567A_data(0xFF);}}delay(1000);}结论ST7567A是一款功能强大的LCD控制器芯片,它能够通过SPI接口轻松驱动液晶显示模块。
lcd信号处理原理
LCD信号处理原理主要是通过LCD控制器来实现的。
LCD控制器是用于控制LCD显示器的微处理器,它接收来自显示器的视频信号,并将其转换为LCD面板可以理解的电信号。
LCD控制器通常包括一个时序发生器(timing generator)和一个源驱动器(source driver)。
时序发生器负责产生控制时序信号,以控制LCD面板的刷新率和显示方式。
源驱动器则负责将视频信号转换为LCD面板可以理解的电信号,并驱动每个像素点的液晶分子偏转,从而控制像素点的亮度和颜色。
在LCD控制器中,还有一个重要的组成部分是存储器(memory)。
存储器用于存储图像数据和显示控制信息,如显示区域、显示模式等。
在控制器处理视频信号时,它会从存储器中读取所需的图像数据,并将其转换为LCD面板可以理解的电信号。
除了控制器外,LCD信号处理还涉及一些其他的技术和原理,如差分信号技术、LVDS(低压差分信号)技术等。
这些技术主要用于将视频信号转换为低电压、高速传输的信号,以减小信号传输过程中的干扰和损失。
总之,LCD信号处理原理是一个比较复杂的过程,涉及多个组成部分和技术。
但总的来说,它的主要作用是将视频信号转换为LCD面板可以理解的电信号,从而控制LCD面板的显示效果和质量。
ARM920T处理器S3C2440A驱动RGB接口TFT LCD的研究[ 来源:机电论文| 类别:技术| 时间:2009-5-18 9:00:53 ] [字体:大中小]1 引言随着科技的进步,TFT LCD作为显示器件在各种嵌入式系统中得到越来越广泛的应用。
带触摸屏的TFT LCD模组在系统应用中不仅能为人机界面提供高质量的画面显示,而且能提供更直观、方便的交互性输入。
TMT035DNAFWU1是深圳天马微电子股份有限公司生产的8.89 cm(3.5 in)TFT LCD模组,该模组内置了LCD驱动器,集成了四线电阻式触摸屏和背光电路。
S3C2440A 是三星公司设计的一款基于ARM920T内核的32位嵌入式RISC(reduced instructions set computer)微处理器,它的最高工作频率可达533 MHz,内部集成了通用的LCD控制器、8通道10位ADC和触摸屏接口,且具备高性能、低功耗的优点,适用于智能手机、便携式媒体播放器、手持导航仪等领域。
本文基于S3C2440A嵌入式系统,以TMT035DNAFWU1为显示设备,设计了TFT LCD驱动电路,并完成Linux下驱动显示效果的调试。
2 TFT LCD接口时序TMT035DNAFWU1的显示分辨率为320×240,采用24位数字RGB接口,可以显示16.7 M颜色。
RGB接口是为TFT LCD模组提供高品质显示而设计的接口,该接口可以高速、低功耗地完成动画显示,其中包含4个重要的控制信号VSYNC、HSYNC、DCLK 和VDEN,分别用于帧、行、像素的数据传输。
图1为TMT035DNAFWU1模组RGB接口时序示意图。
图1 RGB接口时序图3 S3C2440A LCD控制器介绍S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。
它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块,其控制器框图如图2所示。
图2 S3C2440A LCD控制器框图3.1 控制总框图LCD控制器主要由REGBANK、LCDCDMA两大部分组成,用于产生必要的控制信号和传输数据信号,如图2所示。
REGBANK有17个可编程寄存器组和256×16的调色板存储器,用来设定LCD控制器。
LCDCDMA 是一个专用的DMA(Direct Memory Access),自动从帧存储器传输视频数据到LCD控制器,视频数据可以不经CPU处理直接显示在屏上。
TIMEGEN 由可编程逻辑器件组成,产生VFRAME/VSYNC、VLINE/HSYNC、VCLK/DCLK、VM/VDEN信号等,以支持不同的LCD驱动器的接口时序和速率。
LPC3600与LCC3600是专用LCD控制器,在此不做详细介绍。
3.2 TFT控制器介绍通过对REGBANK 寄存器组中的LCDCON1/2/3/4/5进行配置,TIMEGEN产生可编程控制信号来支持不同类型的LCD驱动器。
VSYNC和HSYNC脉冲与LCDCON2/3的HOZV AL和LINEV AL设置相关,HOZV AL 和LINEV AL的值由LCD屏的分辨率决定,如下公式:HOZV AL=(Horizontal display size)-1 (1)LINEV AL=(Vertical display size)-1 (2)VCLK的频率取决于LCDCON1中CLKVAL的设置,在LCDCON1中配置,VCLK和CLKV AL的关系如下(CLKV AL的最小值是0):VCLK(Hz)=HCLK/[(CLKV AL+1)×2] (3)HCLK为S3C2440A 中PLL时钟发生器产生的时钟信号。
VSYNC的频率即为帧频,它与LCDCON1/2/3/4均有关,计算公式如下:FrameRate=1/{[(VSPW+1)+(VBPD+1)+(LINEV AL+1)+(VFPD+1)1×[(HSPW+1)+(HBPD+1)+(HFPD +1)+(HOZVAL+1)]×[2×(CLKV AL+1)/(HCLK)]} (4)公式(1)~(4)各参数数值的设置方法在§5.2中给出。
4 驱动电路设计除数据传输信号接口外,TFT LCD模组的驱动电路还包括提供给模组的电源电路、VGL、VGH、VCOM 电压电路等。
根据TFT LCD模组的接口和S3C2440A 内嵌的控制器输出管脚,完成LCD显示的控制线路设计。
电路接口设计如图3所示。
图3 TFT LCD显示接口电路设计VCOM 电压信号由TFT LCD模组上SOURCEDRIVER IC输出的POL信号提供。
POL 信号经过VCOM BUFFER电路,产生VCOM电压信号提供给TFT LCD模组。
TFT LCD模组采用行翻转方式驱动,设计的VCOM BUFFER 电路能够完成VCOM电压的交流电压成分和直流电压成分的调节。
通过调节VCOM BUFFER电路,使VCOM 中心点电压及其幅值达到应用的要求,有效地消除TFT LCD显示闪烁问题并改善显示质量。
5 Linux下驱动程序软件设计5.1 帧缓冲设备帧缓冲为Linux 2.2.XX以上版本内核中的一种驱动程序接口。
该接口采用mmap系统调用,将显示设备抽象为帧缓冲区,允许上层应用程序在图形模式下直接对显示缓冲区进行读写和I/O控制操作。
帧缓冲设备属于字符设备,采用“文件层-驱动层”的接口方式。
5.2 LCD驱动设计TFT LCD驱动程序设计的主要工作包括:初始化S3C2440A 的LCD控制器LCDCON1~5,通过写寄存器设置显示模式和颜色数,然后分配LCD显示缓冲区。
根据TMT035DNAFWU1接口时序及显示要求,屏幕显示分辨率Horizontal display size=320,Vertical display size=240,VCLK=6.4 MHz,而HCLK=133 MHz,故CLKV AL=9。
缓冲区大小为:点阵行数×点阵列数×用于表示一个像素的比特数/8。
缓冲区通常分配在大容量的片外SDRAM 中,起始地址保存在LCD控制寄存器中,需要分配的显示缓冲区为150 kB。
最后是初始化一个fb_info结构,填充其中的成员变量,并调用fbmem.C里的register_framebuffer(struct fb_info *fb info)将fb_info登记入内核。
5.3 RGB接口显示参数调整S3C2440A 的LCD 控制寄存器主要有:LCDCON1~5。
LCDCON1可以对LCD的类型、数据位数、是否需要VDEN输出及DCLK进行设置;LCDCON2主要对VBPD、VFPD、VSPW进行设置;LCDCON3及LCDCON4对HBPD、HFPD、HSPW 进行设置;LCDCON5可以对DCLK、HSYNC、VSYNC 的极性做设置。
图4为RGB接口显示工作原理示意图,各个参数在实际显示中的作用效果见图4所示。
图4 RGB接口显示工作原理图4中,最终显示区域(DISPLAY AREA)是由像素时钟信号(DCLK)、行同步信号(HSYNC)、帧同步信号(VSYNc)、数据使能信号(VDEN/ENABLE)共同作用的结果,其大小及位置由各参数实际配置来确定,其中HSPW、HBPD及HFPD确定显示区域的行有效数据信息,VSPW、VBPD和VFPD确定显示区域中帧有效数据信息。
基于Linux下驱动显示程序,以下为调试成功的部分源代码:/******s3c2440fb.c******/#define H_SW 35;#define H_FP 15;#define H_BP 30;#define V_SW 5;#define V_FP 5;#define V_BP 10;……static struct s3c2440fb_mach_info xxx_stn_info __initdata={pixclock:PIXEL_CLOC, hpp: PIXEL_BPP,xres:H_RESOLUTION, yres: V_RESOLUTION,hsync_len: H_SW, vsync_len : V_SW,left_margin: H_BP, upper_margin:V_BP,right_margin:H_FP, lower_margin:V_FP,sync:0, cmap_static:1,reg:{lcdcon1: LCD1_BPP_16T | LCD1_PNR_TFT | LCD1_CLKV AL(12),lcdcon2: LCD2_VBPD(V_BP) | LCD2_VFPD(V_FP) | LCD2_VSPW(V_SW),lcdcon3: LCD3_HBPD(H_BP) | LCD3_HFPD(H_FP),lcdcon4: LCD4_HSPW(H_SW),lcdcon5: LCD5_FRM565 | LCD5_INVVLINE | LCD5_INVVFRAME | LCD5_HWSWP | LCD5_PWREN,},};在实际的驱动程序编写过程中,不同的TFTLCD模组的参数会有所不同,因此需要根据实际数据的有效位置进行相关的参数调整。
图5为RGB接口参数配置调整前后的系统显示对比效果图。
如果软件初始化设置中,未能正确地分配HSPW、HBPD和HFPD,行有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的整体左右偏移,如图5(a)所示,液晶显示器显示画面向左偏移。
同理,未能正确地配置VSPW、VBPD和VFPD,帧数据中有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的上下偏移。
5.4 触摸屏驱动设计设置触摸屏接口为等待中断模式(INT_TC中断),如果中断发生,立即激活相应的AD 转换。
转换模式一般选择分离的X/Y轴坐标转换模式或者自动(连续的)X/Y轴坐标转换模式来获取触摸点的X/Y坐标。
在得到触摸点的X/Y轴坐标值后,返回到等待中断模式。
触摸屏的驱动流程如图6。
图6 触摸屏控制流程图触摸屏设备在Linux系统中也被定义为一个字符设备,需要对触摸屏设备驱动程序中的全局变量struct TS_DEV进行设置,该变量用来保存触摸屏的相关参数:等待处理的消息队列、当前采样数据、上一次采样数据等信息,变量定义如下:typedef struct{unsigned int penStatus;/* PEN_UP,PEN_DOWN,PEN_SAMPLE */TS_RET buf[MAX_TS_BUF];/*环形缓冲区*/unsigned int head,tail;/* 环形缓冲区的头、尾*/wait_queue_head_t wq;spinlock_t lock;}TS_DEV ;根据触摸屏对应TFT LCD的分辨率大小,对环形缓冲区的大小进行初始化配置。