该文档均来自互联网,如果侵犯了您的个人权益,请联系我们将立即删除!
实验八 uClinux下的LCD显示
一、实验目的
了解LCD显示原理,学习S3C44B0的LCD控制器特性,熟悉LCD控制器与LCD驱动器的连接接口,了解uClinux下framebuffer显示驱动的使用。
二、实验内容
LCD工作原理:
LCD 的横截面很像是很多层三明治叠在一起。每面最外一层是透明的玻璃基体,玻璃基体中间就是薄膜电晶体 。 颜色过滤器和液晶层可以给显示出红、蓝和绿三种最基本的颜色。通常,LCD后面都有照明灯以显示画面。一般只要电流不变动,液晶都在非结晶状态。这时液晶允许任何光线通过。液晶层受到电压变化的影响后,液晶只允许一定数量的光线通过。光线的反射角度按照液晶控制。当液晶的供应电压变动时,液晶就会产生变形,因而光线的折射角度就会不同,从而产生色彩的变化。
一个完整的TFT 显示屏由很多像素构成,每个像素象一个可以开关的晶体管。这样就可以控制TFT 显示屏的分辨率。如果一台LCD的分辨率可以达到1024 x 768 像素 (SVGA),它就有那么多像素可以显示。HOZVAL = (水平行点数/有效数据线宽度)-1
彩色: HOZVAL = (水平行点数×3/有效数据线宽度)-1
LINEVAL:
单扫描:LINEVAL = 垂直点数-1
双扫描:LINEVAL = (垂直点数/2)-1
VCLK信号的频率由LCDCON1中的CLKVAL决定,公式如下:
VCLK = MCLK / (CLKVAL × 2)
VFRAM信号的频率计算公式如下:
frame_rate(Hz) = 1 / [ ( (1/VCLK) x (HOZVAL+1)+(1/MCLK) x (WLH+WDLY+LINEBLANK) ) x ( LINEVAL+1) ]
VCLK(Hz) = (HOZVAL+1) / [ (1 / (frame_rate x (LINEVAL+1))) - ((WLH+WDLY+LINEBLANK) / MCLK )]
EV44B0-II现配有160*240的单色显示屏, 4比特单扫描。EV44B0-II将的LCD控制信号线连接到JP6上,与LCD模块相连。在LCD模块上,集成了LCD驱动器和专门的电压转换电路,用以驱动LCD屏幕和适配LCD工作电压。下表为LCD连接器的信号定义:
Table 1 LCD连接器信号定义
Pin SignalPin SignalPin SignalPin Signal1 VM6 VDD11 VD216 VD72 VRAME7 GND12 VD317 TSPX3 VLINE8 VD413 GND18 TSMX4 VCLK E9 VD014 VD519 TSPY5 GPB1010 VD115 VD620 TSMY
图4 EV44B0II的LCD接口原理图
linux系统下的显示设备的驱动一般称为Framebuffer(FB)驱动程序。EV44B0II的显示驱动程序在/linux/drivers/video/s3c44b0fb.c中,设备文件的设备类型是字符型,主设备号为29,从设备号为0,即/dev/fb0。
三、实验设备及工具(包括软件调试工具)
硬件:EV44b0 ARM实验板、JEDI仿真器、PC机。
软件:PC机操作系统win2K、Hitools for uClinux集成开发环境、uClinux软件包(EV44b0实验板)。
四、程序说明
该实验程序包含两个个文件,lcd.c,jxs.h。其中的头文件中以数组形式存储了图像的点阵结构。
图5 实验程序流程图
附原程序:
#include
#include
#include
#include
#include
#include
/* Get a test bitmap */
#include "jxs.h"
/* Define LCD screen parameters */
// Pixels per word
#define SCREEN_X 240
#define LCD_XDIM (SCREEN_X/4)
// Number of lines in a sc