uClinux下的LCD显示Word下载.docx
- 文档编号:17823787
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:12
- 大小:197.28KB
uClinux下的LCD显示Word下载.docx
《uClinux下的LCD显示Word下载.docx》由会员分享,可在线阅读,更多相关《uClinux下的LCD显示Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
它可以通过修改寄存器配置来适应不同的横纵向点数、不同的数据线宽度、不同的接口时序,以及不同的刷新频率。
它的主要特点如下:
>
支持单色、多灰度、彩色LCD。
支持4比特双扫描、4比特单扫描、8比特单扫描LCD.
支持虚拟屏幕显示,支持水平和垂直滚动。
使用系统内存作为显示内存。
专用的DMA通道,将数据传送到接口。
支持多种分辨率,如640×
480,320×
640,160×
160。
支持节点模式。
其内部结构框图如下:
图1LCD控制器内部结构图
外部总线定义:
VFRAME:
LCD控制器和LCD驱动器之间的帧同步信号,它用来通知LCD数据帧的开始。
VLINE:
水平行同步信号,LCD驱动器在VLINE有效时,将水平行数据驱动到LCD上。
VCLK:
数据时钟,LCD控制器在VCLK的上升沿发送数据,LCD驱动器在该时钟的下降沿采样数据。
VM:
该信号是模拟信号,LCD控制器使用该信号改变行列电压的极性,这样可以点亮和熄灭该点。
VD[0-7]:
显示数据输出。
下图为8比特单扫描的接口时序图:
图2 8比特单扫描接口时序图
从上图我们可以看到控制器使能VFRAME信号,通知LCD驱动器新FRAME的开始;
VLINE信号的使能通知LCD驱动器,一个水平行的数据传送完毕,可以显示该行,这一小段延时用WDLY表示;
显示数据在VCLK的上升沿发出。
下图为8比特单扫描时,显示数据与水平行的对应关系:
图3 显示数据与水平行的对应关系
LCD控制器配置:
VFRAME和VLINE的生成由LCDCON2寄存器的LINEVAL和HOZVAL决定,公式如下:
HOZVAL:
单色:
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_ratex(LINEVAL+1)))-((WLH+WDLY+LINEBLANK)/MCLK)]
EV44B0-II现配有160*240的单色显示屏,4比特单扫描。
EV44B0-II将的LCD控制信号线连接到JP6上,与LCD模块相连。
在LCD模块上,集成了LCD驱动器和专门的电压转换电路,用以驱动LCD屏幕和适配LCD工作电压。
下表为LCD连接器的信号定义:
Table1 LCD连接器信号定义
PinSignal
1VM
6VDD
11VD2
16VD7
2VRAME
7GND
12VD3
17TSPX
3VLINE
8VD4
13GND
18TSMX
4VCLKE
9VD0
14VD5
19TSPY
5GPB10
10VD1
15VD6
20TSMY
图4 EV44B0II的LCD接口原理图
linux系统下的显示设备的驱动一般称为Framebuffer(FB)驱动程序。
EV44B0II的显示驱动程序在/linux/drivers/video/s3c44b0fb.c中,设备文件的设备类型是字符型,主设备号为29,从设备号为0,即/dev/fb0。
三、实验设备及工具(包括软件调试工具)
硬件:
EV44b0ARM实验板、JEDI仿真器、PC机。
软件:
PC机操作系统win2K、HitoolsforuClinux集成开发环境、uClinux软件包(EV44b0实验板)。
四、程序说明
该实验程序包含两个个文件,lcd.c,jxs.h。
其中的头文件中以数组形式存储了图像的点阵结构。
图5实验程序流程图
附原程序:
#include<
stdio.h>
unistd.h>
sys/types.h>
sys/stat.h>
fcntl.h>
linux/fb.h>
/*Getatestbitmap*/
#include"
jxs.h"
/*DefineLCDscreenparameters*/
//Pixelsperword
#defineSCREEN_X240
#defineLCD_XDIM(SCREEN_X/4)
//Numberoflinesinascreen
#defineLCD_YDIM64
intmain(){
inti,fd;
structfb_fix_screeninfofb_fix;
structfb_var_screeninfofb_var;
printf("
openingdevice<
FrameBuffer>
fb0,"
);
fd=open("
/dev/fb0"
O_RDWR);
returnedhandler=0x%08X\n"
fd);
if(fd<
0)
gotoout;
if(ioctl(fd,FBIOGET_FSCREENINFO,&
fb_fix)==-1||
ioctl(fd,FBIOGET_VSCREENINFO,&
fb_var)==-1){
printf("
Errorreadingscreeninfo:
\n"
gotoout;
}
printf("
type=%d\n"
fb_fix.type);
visual=%d\n"
fb_fix.visual);
xres=%d\n"
fb_var.xres);
yres=%d\n"
fb_var.yres);
bpp=%d\n"
fb_var.bits_per_pixel);
linelen=%d\n"
fb_fix.line_length);
Smem_start=%d\n"
fb_fix.smem_start);
//write(fd,peng_small_bits,sizeof(peng_small_bits));
write(fd,ucjxsBitmap,sizeof(ucjxsBitmap));
out:
\nclosingdevice\n"
close(fd);
return0;
}
五、实验步骤
1.首先配置HitoolforARMuClinux,使其以MDB方式调试。
2.运行Hitool。
选择Project菜单下的New,新建一工程。
如图:
这里我们创建名为lcd的工程。
出现对话框如下:
其中Projecttype选择project的类型。
这里我们选择ARMExecutable。
Outputname是生成程序的名称。
OutputDirectory选择程序输出的文件夹。
在Targer栏中。
RemotePath是指程序Download到目标半上的路径。
Programargurments指程序运行时所带的参数。
设置好点击确定。
3.在workspace中我们可以看到一个名为lcd的Project已经建立。
下面需要将源程序加入到sourcefiles中。
鼠标右健点击sourcefiles文件夹,选择AddsourceFiles。
弹出对话框如下:
本程序只有一个源文件。
选择lcd.c。
确定.至此程序添加完成
4.然后进行编译。
如图所示:
点击Build按钮。
Hitool会将程序自动编译完成。
上图就是编译成功所出现信息。
若源文件编写错误,Hitool将会给出提示,错误所在行号,以及可能产生错误的原因。
接下来我们就可以将程序下载到评估版上进行调试。
点击InitDebugger,Hitool将会把您所编译完的.elf文件Download到评估板。
5.这时候,您就可以调试或运行刚才下载的程序。
点击
面板上的运行图标。
这时评估版上的Lcd将会显示出单色的图片。
六、实验总结
本实验演示了如何在uClinux中使用LCD驱动程序,显示图形和文字,并对LCD的显示原理进行了描述。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- uClinux LCD 显示