当前位置:首页 > 单片机 > 单片机
[导读]1.硬件原理要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现

1.硬件原理

要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。嵌入式LCD主要以薄膜式晶体管型TFT为主流。TFTLCD特性:

支持每像素1、2、4、8位调色显示。

支持每像素16位、24位真彩TFTLCD.

支持最大1600万色(24位每像素模式)TFTLCD.

典型实际分辨率:640x480,320x240,160*160

最大虚拟分辨率:4M字节.

最大虚拟分辨率(65536色)2048x1024.

下图给出了TFT的典型时序图。

我们先来理解下面引脚有寄存器中相关参数的意义吧

外部引脚信号:

VSYNC:帧同步信号,表示扫描1帧的开始,一帧就是LCD显示的一个画面。

HSYNC:行同步信号,表示扫描1行的开始。

VDEN:数据使能信号。

VD[23:0]:LCD像素数据输出端口。

VCLK:像素时钟信号。

寄存器参数:

VSPW:帧同步信号的脉宽,单位为1行(Line)的时间。

VFPD:帧同步信号的前肩,单位为1行(Line)的时间。

VBPD:帧同步信号的后肩,单位为1行(Line)的时间。

LINEVAL:帧显示尺寸-1,即屏行宽-1,

HBPD:行同步信号的后肩,单位为1VCLK的时间。

HFPD:行同步信号的前肩,单位为1VCLK的时间。

HSPW:行同步信号的脉宽,单位为1VCLK的时间。

HOZVAL:行显示尺寸-1,即屏列宽-1,

2.芯片手册

3.mini2440电路图

4.S3C2440寄存器

要想正确使用LCD,必须注意两点:1、时序;2、显示缓存区。

4.1.时序

LCD一般需要三个时序信号:VSYNC、HSYNC和VCLK。VSYNC是垂直同步信号,在每进行一个帧(即一个屏)的扫描之前,该信号就有效一次,由该信号可以确定LCD的场频,即每秒屏幕刷新的次数(单位Hz)。HSYNC是水平同步信号,在每进行一行的扫描之前,该信号就有效一次,由该信号可以确定LCD的行频,即每秒屏幕从左到右扫描一行的次数(单位Hz)。VCLK是像素时钟信号。s3c2440处理LCD的时钟源是HCLK,通过寄存器LCDCON1中的CLKVAL可以调整VCLK频率大小,它的公式为:

VCLK=HCLK÷[(CLKVAL+1)×2]

例如,HCLK的频率为100MHz,要想驱动像素时钟信号为6.4MHz的LCD屏,则通过上式计算CLKVAL值,结果CLKVAL为6.8,取整后(值为6)放入寄存器LCDCON1中相应的位置即可。由于CLKVAL进行了取整,因此我们把取整后的值代入上式,重新计算VCLK,得到VCLK=7.1MHz。

按理说,对于一个已知尺寸(即水平显示尺寸HOZVAL和垂直显示尺寸LINEVAL已知)的LCD屏,只要确定了VCLK值,行频和场频就应该知道了。但这样还不行的,因为在每一帧时钟信号中,还会有一些与屏显示无关的时钟出现,这就给确定行频和场频带来了一定的复杂性。如在HSYNC信号先后会有水平同步信号前肩(HFPD)和水平同步信号后肩(HBPD)出现,在VSYNC信号先后会有垂直同步信号前肩(VFPD)和垂直同步信号后肩(VBPD)出现,在这些信号时序内,不会有有效像素信号出现,另外HSYNC和VSYNC信号有效时,其电平要保持一定的时间,它们分别叫做水平同步信号脉宽HSPW和垂直同步信号脉宽VSPW,这段时间也不能有像素信号。因此计算行频和场频时,一定要包括这些信号。HBPD、HFPD和HSPW的单位是一个VCLK的时间,而VSPW、VFPD和VBPD的单位是扫描一行所用的时间。在s3c2440中,所有的这些信号(VSPW、VFPD、VBPD、LINEVAL、HBPD、HFPD、HSPW和HOZVAL)都是实际值减1的结果。这些值是通过寄存器LCDCON2、LCDCON3和LCDCON4来配置,只要把这些值配置成与所要驱动的LCD中相关内容的数据一致即可。例如,我们所要显示的LCD屏大小为320×240,因此HOZVAL=320-1,LINEVAL=240-1。水平同步信号的脉宽、前肩和后肩分别为30、20和38,则HSPW=30-1,HFPD=20-1,HBPD=38-1;垂直同步信号的脉宽、前肩和后肩分别为3、12和15,则VSPW=3-1,VFPD=12-1,VBPD=15-1。

下面我们就具体计算一下行频(HSF)和场频(VSF):

HSF=VCLK÷[(HSPW+1)+(HSPD+1)+(HFPD+1)+(HOZVAL+1)]

=7.1÷408=17.5kHz

VSF=HSF÷[(VSPW+1)+(VBPD+1)+(VFPD+1)+(LINEVAL+1)]

=17.5÷270=64.8Hz

在有些情况下,s3c2440的LCD时钟信号的默认极性与所控制的LCD时钟信号的极性相反,这时可以通过寄存器LCDCON5的相关位来改变某些时钟信号的极性。

4.2.显示缓存区

只要把所要显示的数据放入显示缓存区内,就可以在屏幕上呈现内容。该缓存区是我们自己编程时开辟的一段内存区。一般我们是通过定义一个与屏幕尺寸大小相同的二维数组来开辟该空间的,这样控制屏幕内容会方便一些,如当屏幕的尺寸为320×240时,可以定义该缓存区为LCD_BUFFER[240][320]。由于s3c2440支持16位和24位的非调色板真彩色的TFT型LCD模式,而24位颜色模式是用32位数据来表示的,所以前面定义的那个二维数据的数据类型应该是半字整型或全字整型的。例如,在24位颜色模式下,我们想要在尺寸大小为320×240屏幕的中心处设置为白色像素,则:LCD_BUFFER[120][160]=0xffffffff。

在s3c2440中,寄存器LCDSADDR1和LCDSADDR2用于设置显示缓存区,即把我们定义的那个二维数组告诉s3c2440。其中LCDBANK的9位数据指定LCD的BANK,即显示缓存区的第30位到第22位地址;LCDBASEU的21位数据指定了LCD的基址,即显示缓存区开始地址的第21位到第1位;LCDBASEL的21位数据指定了LCD的尾址,即显示缓存区结束地址的第21位到第1位。例如,我们想要在尺寸为320×240的屏幕上显示24位颜色,定义的显示缓存区数组为LCD_BUFFER[240][320],则LCDBANK等于LCD_BUFFER的第30位到第22位数据值(因为LCD_BUFFER表示的就是数组的首地址),LCDBASEU等于LCD_BUFFER的第21位到第1位数据值,由于是用32位数据表示24为颜色,因此每个像素值是4个字节,所以LCDBASEL等于(LCD_BUFFER+(240×320×4))结果的第21位到第1位的数据值。另外寄存器LCDSADDR3有两个内容:OFFSIZE和PAGEWIDTH。OFFSIZE用于虚拟屏幕的偏移长度,如果我们不使用虚拟屏幕,就把它置为0;PAGEWIDTH定义了视口的宽,单位是半字,如在上面的例子中,PAGEWIDTH应该为320×32÷16。

lcd.h


/*******************************************************************

*Copyright(C),2011-2012,XXX.

*FileName:lcd.h

*Author:HuangYinqing

*Version:1.0

*Date::2012-04-22

*Description:LCD驱动.

*FunctionList:

*History:

******************************************************************/

#ifndef__LCD_H__

#define__LCD_H__

#defineLCD_W35//320*240/3.5英寸TFT真彩液晶屏

#ifdefined(LCD_W35)

#defineLCD_CLKVAL7

#defineLCD_WIDTH320

#defineLCD_HEIGHT240

#defineLCD_HBPD0x44//开始

#defineLCD_HFPD0x4//结束

#defineLCD_HSPW1//ThewidthofHSYNC

#defineLCD_VBPD10//开始

#defineLCD_VFPD4//结束

#defineLCD_VSPW1//ThewidthofVSYNC

#endif

#defineBPPMODE_1BPP0x8

#defineBPPMODE_2BPP0x9

#defineBPPMODE_4BPP0xA

#defineBPPMODE_8BPP0xB

#defineBPPMODE_16BPP0xC

#defineBPPMODE_24BPP0xD

#defineLCDTYPE_TFT0x3

#defineENVID_DISABLE0

#defineENVID_ENABLE1

#defineFRM_55510

#defineFRM_5651

#defineHSYNC_NORM0

#defineHSYNC_INV1

#defineVSYNC_NORM0

#defineVSYNC_INV1

#definePWREN1

#defineBSWP1

#define HWSWP

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

Holtek A/D Flash LCD MCU新增系列成员HT67F2362A与HT67F2372A,分别为HT67F2362及HT67F2372的延伸产品,特点为新增C-type LCD驱动使得低压时可维持显示效果,...

关键字: MCU LCD LED 驱动电路

LCD与LED是两种采用不同工作原理的显示技术,LCD是由液态晶体组成的显示屏,而LED则是由发光二极管组成的显示屏。

关键字: LED 手机屏 LCD

台湾液晶显示面板制造商——群创光电,近日传出了变相裁员、逼迫员工自愿离职的消息。

关键字: LCD 显示器 群创光电

为增进大家对显示屏的认识,本文将对LCD显示屏、延长LCD显示屏寿命的方法、防止LCD显示屏静电的方法予以介绍。

关键字: LCD 显示屏 指数

为增进大家对显示屏的认识,本文将对LCD显示屏驱动方法以及定制LCD显示屏需要注意的参数予以介绍。

关键字: LCD 显示屏 指数

为增进大家对显示屏的认识,本文将对LCD显示屏的特点、LCD显示屏存储注意事项、处理LCD显示屏花屏的方法予以介绍。

关键字: LCD 显示屏 指数

液晶显示器(Liquid Crystal Display,简称LCD)是一种常见的显示技术,其基本工作原理是利用液晶材料的物理特性实现图像显示。下面我们将详细介绍LCD的基本工作原理和构造。

关键字: 液晶显示器 LCD

液晶显示器(LCD)作为现代主流的显示设备,已经广泛应用到各个领域中。它以其低功耗、低辐射、高清晰度和长寿命等优点,赢得了广大用户的青睐。然而,任何产品都不可能完美,LCD同样存在其优劣势。本文将针对LCD在使用方面的优...

关键字: 液晶显示器 LCD CRT技术

液晶显示器(LCD)作为一种主流的显示设备,已经深入到人们的日常生活和工作之中。它以其低功耗、低辐射、高清晰度和长寿命等优点,赢得了广泛的市场和用户青睐。如何进行液晶显示器的系统设计,直接影响其性能和用户体验。本文将详细...

关键字: 液晶显示器 LCD

一、引言 随着科技的飞速发展,液晶显示器(LCD)已经成为了我们日常生活和工作中的重要组成部分。然而,面对着不断变化的市场环境和消费者需求,我国液晶显示器市场也正在经历前所未有的挑战和机遇。本文将探讨我国液晶显示器...

关键字: LCD 液晶显示器
关闭
关闭