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