新闻中心

EEPW首页>嵌入式系统>设计应用> S3C44B0X微处理器内置LCD控制器

S3C44B0X微处理器内置LCD控制器

作者: 时间:2010-09-13 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/151558.htm

  KCS057QV1AJ驱动程序开发

  驱动程序包括初始化端口D和端口C的函数,初始化的函数,打开和关闭显示模块的函数,在显示模块上显示条纹的函数,所有的函数都有详细的注释。

  初始化端口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)|(11910)|(1521);

  /设置确定行扫描的返回时间为15个MCLK,设置屏为彩色320 240点;

  LCDBANK=0xc000000>>22;/设置显示缓冲区首地址在系统存储器中的位置;

  LCDBASEU=0x0;/设置缓冲区的开始地址;

  LCDBASEL=LCDBASEU+(160) 240;

  rLCDSADDR1=(0x327)|(LCDBANK21)|LCDBASEU;

  /设置显示模块为彩色模式等;

  rLCDSADDR2=(029)|(021)|LCDBASEL;

  rLCDSADDR3=(320/2)|(09);/不使用虚屏;

  rREDLUT=0xfca86420;/设置红色查表寄存器, 与特定的显示要求有关;

  rGREENLUT=0xfca86420;/设置绿色查表寄存器,与特定的显示要求有关;

  rBLUELUT=0xfffffa50;/设置兰查表寄存器,与特定的显示要求有关;

  rLCDCON1=LCDCON1_ENVID|01|02|03|(25) |17|(0x38)|(0x310)|(CLKVAL12);

  /使能视频输出,8位单扫描方式,设置WDLY,WLH,CLKVAL;

  for(i=0;i80*240;i++)/显示缓冲区清零。

  *(pLCDBuffer16+i)=0x0;

  }

  从图2知,GPC15用来打开关闭LCD。打开和关闭LCD显示模块的函数如下:

  void LCDDisplayOpen(U8 isOpen)

  {

  if(isOpen)

  {

  rPDATC|=0x8000;/打开LCD

  }

  else{

  rPDATC=0x7fff;/关闭LCD

  }

  }

  在LCDBANK寄存器中已经定义了显示缓冲区在系统存储器的段首地址为0xc000000,要显示字符、图片只需将字符、图片取模得到的数据送到该缓冲区就可以了。但是要注意,彩色LCD是8位数据表示一个象素。对缓冲区首地址进行如下定义:

  U32 pLCDBuffer16=(U32*)0xc000000;

  下面举一个在整个屏上显示明暗相间的条纹的程序,显示明暗条纹函数如下:

  void LCDstripe ()

  {

  int i,lcddata;

  for(i=0;i(320*240)/4;i++)

  {

  lcddata0=0x0ffff0000;

  *(pLCDBuffer16+i)=lcddata;/向帧缓冲区送数据,每次4个象素的数据。

  }


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭