实验4 S3C2410 LCD的驱动控制实验.docx
《实验4 S3C2410 LCD的驱动控制实验.docx》由会员分享,可在线阅读,更多相关《实验4 S3C2410 LCD的驱动控制实验.docx(11页珍藏版)》请在冰豆网上搜索。
实验4S3C2410LCD的驱动控制实验
实验4S3C2410LCD的驱动控制实验
一、实验目的
1.学习LCD与ARM的LCD的控制器的接口原理;
2.掌握内置LCD控制器驱动编写方法;
3.学习调用简单的GUI绘图。
二、实验设备
硬件:
UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。
软件:
PC机操作系统REDHATLINUX9.0+超级终端(或X-shell)+ARM-LINUX开发环境。
三、预备知识
学习LCD显示器的基本原理,理解其驱动控制方法。
掌握两种LCD驱动方式的基本原理
和方法。
并用编程实现:
1.用总线方式直接驱动带有驱动模块的LCD。
2.用ARM内置的LCD控制器来驱动LCD。
四、实验原理
1.LCD(LiquidCrystalDisplay)原理
液晶得名于其物理特性:
它的分子晶体,以液态存在而非固态。
这些晶体分子的液体特性使得它具有两种非常有用的特点:
1、如果让电流通过液晶层,这些分子将会以电流的流向方向进行排列,如果没有电流,它们将会彼此平行排列。
2、如果提供了带有细小沟槽的外层,将液晶倒入后,液晶分子会顺着槽排列,并且内层与外层以同样的方式进行排列。
液晶的第三个特性是很神奇的:
液晶层能使光线发生扭转。
液晶层表现的有些类似偏光器,这就意味着它能够过滤除了那些从特殊方向射入之外的所有光线。
此外,如果液晶层发生了扭转,光线将会随之扭转,以不同的方向从另外一个面中射出。
液晶的这些特点使得它可以被用来当作一种开关——即可以阻碍光线,也可以允许光线通过。
液晶单元的底层是由细小的脊构成的,这些脊的作用是让分子呈平行排列。
上表面也是如此,在这两侧之间的分子平行排列,不过当上下两个表面之间呈一定的角度时,液晶随着两个不同方向的表面进行排列,就会发生扭曲。
结果便是这个扭曲的螺旋层使通过的光线也发生扭曲。
如果电流通过液晶,所有的分子将会按照电流的方向进行排列,这样就会消除光线的扭转。
如果将一个偏振滤光器放置在液晶层的上表面,扭转的光线通过(如图A),而没有发生扭转的光线(如图B)将被阻碍。
因此可以通过电流的通断改变LCD中的液晶排列,使光线在加电时射出,而不加电时被阻断。
也有某些设计为了省电的需要,有电流时,光线不能通过,没有电流时,光线通过。
LCD显示器的基本原理就是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。
因此,LCD的驱动控制归于对每个液晶单元的通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。
2.电致发光
LCD的发光原理是通过控制加电与否来使光线通过或挡住,从而显示图形。
光源的提供方式有两种:
透射式和反射式。
笔记本电脑的LCD显示屏即为透射式,屏后面有一个光源,因此外界环境可以不需要光源。
而一般微控制器上使用的LCD为反射式,需要外界提供光源,靠反射光来工作。
电致发光(EL)是液晶屏提供光源的一种方式。
电致发光的特点是低功耗,与二极管发光比较而言体积小。
电致发光(EL)是将电能直接转换为光能的一种发光现象。
电致发光片是利用此原理经过加工制作而成的一种发光薄片,如图7-2所示。
其特点是:
超薄、高亮度、高效率、低功耗、低热量、可弯曲、抗冲击、长寿命、多种颜色选择等。
因此,电致发光片被广泛应用于各种领域。
3.LCD的驱动控制
市面上出售的LCD有两种类型:
一种是带有驱动电路的LCD显示模块,这种LCD可以方便地与各种低档单片机进行接口,如8051系列单片机,但是由于硬件驱动电路的存在,体积比较大。
这种模式常常使用总线方式来驱动。
另一种是LCD显示屏,没有驱动电路,需要与驱动电路配合使用。
特点是体积小,但却需要另外的驱动芯片。
也可以使用带有LCD驱动能力的高档MCU驱动,如ARM系列的S3C2410X。
(1)总线驱动方式
一般带有驱动模块的LCD显示屏使用这种驱动方式,由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。
驱动模块具有八位数据总线,外加一些电源接口和控制信号。
而且自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。
由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。
下图为一个典型的显示模块(HY-12864B)提供的总线接口。
(2)控制器扫描方式
S3C2410X中具有内置的LCD控制器,它具有将显示缓存(在系统存储器中)中的LCD图象数据传输到外部LCD驱动电路的逻辑功能。
S3C2410X中内置的LCD控制器可支持灰度LCD和彩色LCD。
在灰度LCD上,使用基于时间的抖动算法(time-basedditheringalgorithm)和FRC(FrameRateControl)方法,可以支持单色、4级灰度和16级灰度模式的灰度LCD。
在彩色LCD上,可以支持256级彩色,使用STNLCD可以支持4096级彩色。
对于不同尺寸的LCD,具有不同数量的垂直和水平象素、数据接口的数据宽度、接口时间及刷新率,而LCD控制器可以进行编程控制相应的寄存器值,以适应不同的LCD显示板。
内置的LCD控制器提供了下列外部接口信号:
VFRAME/VSYNC/STV:
帧同步信号(STN)/垂直同步信号(TFT)/SECTFT信号
VLINE/HSYNC/CPV:
行同步脉冲信号(STN)/水平同步信号(TFT)/SECTFT信号
VCLK/LCD_HCLK:
象素时钟信号(STN/TFT)/SECTFT信号
VD[23:
0]:
LCD像素数据输出端口(STN/TFT/SECTFT)
VM/VDEN/TP:
LCD驱动交流偏置信号(STN)/数据使能信号(TFT)/SECTFT信号
LEND/STH:
行结束信号(TFT)/SECTFT信号
LCD_PWREN:
LCD面板电源使能控制信号
LCDVF0:
SECTFTOE信号
LCDVF1:
SECTFTREV信号
LCDVF2:
SECTFTREVB信号
上图为S3C2410X中内置的LCD控制器的逻辑框图,它用于传输显示数据并产生必要的控制信号,如VFRAME,VLINE,VCLK,和VM等信号。
除了控制信号,还有显示数据的数据端口VD[23:
0]如图7-5。
LCD控制器包含REGBANK,LCDCDMA,VIDPRCS,TIMEGEN和LPC3600。
REGBANK具有17个可编程寄存器和256×16颜料存储器,用于配置LCD控制器。
LCDCDMA为专用DMA,它可以自动地将显示数据从帧内存中传送到LCD驱动器中。
通过使用这一专用的DMA,可以实现在不需要CPU介入的情况下显示数据。
VIDPRCS从LCDCDMA接收数据,变换为合适的数据格式(比如4/8位单一扫描和4位双扫描显示模式)后通过VD[23:
0]发送到LCD驱动器。
TIMEGEN包含可编程的逻辑,以支持常见LCD驱动器所需要的不同接口时序、速率要求。
TIMEGEN部分产生VFRAME,VLINE,VCLK,VM等信号。
(3)与ARM自带LCD驱动器有关的寄存器
LCD驱动控制端口与ARM的端口是共用的,因此,要设置相应的寄存器,将其定义为功能端口,即LCD驱动控制端口。
注意:
当LCD控制器开启时,如果想滚屏需要改变LCDBASEU和LCDBASEL值。
但是用户不能在帧尾通过查LCDCON1中LINECNT的值来改变寄存器LCDBASEU和LCDBASEL的值。
因为LCD的FIFO取下一帧的数据优先级高于改变LCDBASEU和LCDBASEL值的优先级。
所以,如果改变了帧,那么预取的FIFO数据就不是最新的了,导致LCD的显示不正确。
查询LINECNT前,中断要屏蔽掉。
如果在读取了LINECNT之后发生任何中断,因为中断服务程序执行消耗的时间导致读取到的LINECNT的值不是最新的。
五、实验步骤
1.启动ARMJTAG仿真器并进行初始化配置。
2.启动ADS1.20新建工程,将“Exp6LCD驱动控制实验”中的文件添加到工程中。
3.定义有关常量与宏
4.编写LCD初始化函数(lcd640.c),设置各功能寄存器。
5.编写LCD刷新函数(lcd640.c)。
此函数主要是将二级缓存LCDBuffer的数据由32位彩色图形信息转换成16位的图形信息,然后放到pLCDFB指向的一级缓存。
转换公式:
pixcolor=((pbuf[0]&0xf8)<<11)|((pbuf[1]&0xfc)<<6)|(pbuf[2]&0xf8)。
其中,pbuf[0]、pbuf[1]、pbuf[2]是一个象素的32位彩色数据的前24位,分别代表R、G、B。
6.编写主函数(main.c)
在LCD上显示16位色图形的关键是填充二级显示缓冲,将显示象素的24位颜色信息写入LCDBuffer。
将RGB三种基本颜色按一定比例混合即可构成更复杂的颜色,每个象素的三种基本颜色分别占一个字节,可以方便的在程序里改写各基本颜色的数值,从而改变该象素的混合颜色。
7.在ADS集成开发环境中编译、调试和运行工程程序。
六、实验思考
1)液晶显示的基本原理是什么?
2)总线方式驱动液晶模块和使用控制器进行驱动控制有什么异同?
3)LCD显示图形的基本思想是什么?