KCS057QV1AJ驱动程序开发
驱动程序包括初始化S3C44B0X端口D和端口C的函数,初始化LCD控制器的函数,打开和关闭LCD显示模块的函数,在LCD显示模块上显示条纹的函数,所有的函数都有详细的注释。
初始化端口D和端口C函数如下:
void Port_Init(void)
{
rPCONC=0x5f55ffff;/GPC15为输出端口,GPC4-GPC7分配给LCD数据线VD7-VD4;
rPUPC=0x0;/端口C所有的引脚上拉允许;
rPDATC=0x3fff; /端口C所有的引脚初始化为高
电平;
rPCOND=0xaaaa;/端口D所有的引脚分配给LCD控制器;
rPUPD=0x0;/端口D所有的引脚上拉允许;
rPDATD=0xff;/端口D所有的引脚初始化为
高电平。
}
初始化LCD控制器函数如下:
void LCD_Init()
{
int i;
U32 LCDBASEU,LCDBASEL,LCDBANK;
LCDDisplayOpen(FALSE);/关闭LCD;
rLCDCON1=(0);/关闭视频输出;
rLCDCON2=(239)|(119<<10)|(15<<21);
/设置确定行扫描的返回时间为15个MCLK,设置屏为彩色320 240点;
LCDBANK=0xc000000>>22;/设置显示缓冲区首地址在系统存储器中的位置;
LCDBASEU=0x0;/设置缓冲区的开始地址;
LCDBASEL=LCDBASEU+(160) 240;
rLCDSADDR1=(0x3<<27)|(LCDBANK<<21)|LCDBASEU;
/设置显示模块为彩色模式等;
rLCDSADDR2=(0<<29)|(0<<21)|LCDBASEL;
rLCDSADDR3=(320/2)|(0<<9);/不使用虚屏;
rREDLUT=0xfca86420;/设置红色查表寄存器,
与特定的显示要求有关;
rGREENLUT=0xfca86420;/设置绿色查表寄存器,与特定的显示要求有关;
rBLUELUT=0xfffffa50;/设置兰查表寄存器,与特定的显示要求有关;
rLCDCON1=LCDCON1_ENVID|0<<1|0<<2|0<<3|(2<<5)
|1<<7|(0x3<<8)|(0x3<<10)|(CLKVAL<<12);
/使能视频输出,8位单扫描方式,设置WDLY,WLH,CLKVAL;
for(i=0;i<80*240;i++)/显示缓冲区清零。
*(p LCD Buffer16+i)=0x0;
}
从图2知,GPC15用来打开关闭LCD。打开和关闭LCD显示模块的函数如下:
void LCDDisplayOpen(U8 isOpen)
{
if(isOpen){
rPDATC|=0x8000;/打开LCD
}
else{
rPDATC&=0x7fff;/关闭LCD
}
}
在LCDBANK寄存器中已经定义了显示缓冲区在系统存储器的段首地址为0xc000000,要显示字符、图片只需将字符、图片取模得到的数据送到该缓冲区就可以了。但是要注意,彩色LCD是8位数据表示一个象素。对缓冲区首地址进行如下定义:
&n bsp; U32 pLCDBuffer16=(U32*)0xc000000;
下面举一个在整个屏上显示明暗相间的条纹的程序,显示明暗条纹函数如下:
void LCDstripe ()
{
int i,lcddata;
for(i=0;i<(320*240)/4;i++)
{
lcddata0=0x0ffff0000;
*(pLCDBuffer16+i)=lcddata;/向帧缓冲区送数据,每次4个象素的数据。
}
www.55dianzi.com
本文关键字:控制器 DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术