当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]S3C44B0X微处理器内置LCD控制器

  引言

  S3C44B0X微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案。它使用ARM7TDMI核,工作在66MHz,集成了LCD控制器等外围器件。它的LCD控制器具有通用性,能与大多数LCD显示模块接口。接口设计、驱动程序开发都很简单,广泛应用于智能仪表、PDA等的显示部分。

  内置LCD控制器介绍

  概述

  S3C44B0X内置的LCD控制器的作用是将显示缓存(在系统存储器中)的LCD数据传输到外部LCD驱动器,并产生必须的LCD控制信号。

  它支持灰度LCD和彩色LCD。在灰度LCD上,使用基于时间抖 动算法(time-basedditheringalgorithm)和FRC(FrameRateControl)方法,可以支持单色、4级灰度和16级灰度模式的灰度LCD。在彩色LCD上,可以支持256种色彩。不同尺寸的LCD具有不同数量的垂直和水平象素、数据接口、数据宽度、接口时间和刷新率。LCD控制器可以进行编程控制相应的寄存器值,以适应不同的LCD显示板。

  LCD控制器逻辑框图

  图1为LCD控制器的逻辑框图。从框图可以看出LCD控制器是用来实现传输显示数据及产生必要的控制信号,如VFRAME、VLINE、VCLK和VM。除了控制信号,还有显示数据的数据端口VD[7:0]。

  


 

  LCD控制器包括REGBANK、LCDDMA、VIDPRCS和TIMEGEN。 REGBANK有18个可编程寄存器,用于配置LCD控制器。LCDDMA为专用DMA,可以自动地将显示数据从帧内存传送到LCD驱动器中。通过专用DMA,可以实现在不需要CPU介入的情况下显示数据。VIDPRCS从LCDDMA接收数据,将相应格式的数据通过TIMEGEN(包含可编程逻辑),以支持常见的LCD驱动器所需要的不同接口时间和速率的要求。TIMEGEN部分产生VFRAME,VLINE,VCLK和VM等信号。

  LCD控制器提供下列外部接口信号:

  VFRAME:LCD控制器和驱动器之间的帧同步信号。通知LCD屏新的一帧显示,LCD控制器在一个完整帧显示后发出VFRAME信号。

  VLINE:LCD控制器和驱动器间同步脉冲信号。LCD驱动器通过它将水平移位寄存器的内容显示到LCD屏上。LCD控制器在一整行数据全部传输到LCD驱动器后发出VLINE信号。

  VCLK:LCD控制器和驱动器之间的象素时钟信号。

  VM:LCD驱动器所使用的交流信号。驱动器用VM打开或关闭象素的行和列电压极性。

  VD[3:0]:LCD象素数据输出端口。

  VD[7:4]:LCD象素数据输出端口。

  LCD控制器的寄存器。

  LCD控制器通过18个可编程寄存器来配置LCD显示模块的尺寸、显示模式、接口数据宽度等。

  LCD控制寄存器一(LCDCON1)

  LCDCON1所在地址:0x01F00000;

  属性:R/W;

  复位值:0x00000000。

  LCDCON1中各个位的意义见表1:

  

[!--empirenews.page--]

 

  LCD控制寄存器二(LCDCON2)

  LCDCON2的地址:0x01F00004;

  属性:R/W;

  复位值:0x00000000。

  LCDCON2中各个位的意义见表2:

  

 

  LCD控制寄存器三(LCDCON3)

  LCDCON3的地址:0x01F00040;

  属性:R/W;

  复位值:0x00。

  LCDCON3中各个位的意义见表3:

  

 

  帧缓冲区开始地址一(LCDSADDR1)

  LCDSADDR1的地址:0x01F00008;

  属性:R/W;

  复位值:0x000000。

  LCDSADDR1中各个位的意义见表4:

  

 

  帧缓冲区开始地址二(LCDSADDR2)

  的地址:0x01F0000C;

  属性:R/W;

  复位值:0x000000。

  LCDSADDR2中各个位的意义见表5:[!--empirenews.page--]

  

 

  注:用户通过改变LCDBASEU和LCDBASEL的值来滚动屏幕,但在帧结束时,不能改变LCDBASEU和LCDBASEL的值,因为预取下一帧的数据优先于改变帧,如果这时改变帧,预取的数据将无效而且显示不正确。为了检查LINECNT,应当屏蔽中断,否则如果在读LINECNT后,任意中断刚好执行,因为ISR的执行,LINECNT的值可能无效。

  缓冲区开始地址三(LCDSADDR3)

  LCDSADDR3的地址:0x01F00010;

  属性:R/W;

  复位值:0x000000。

  LCDSADDR3中各个位的意义见表6:

  

 

  注:PAGEWIDTH和OFFSIZE必须在ENVID=0时变化。

  内置LCD控制器的应用

  LCD控制器能与大多数LCD显示模块接口,例如DMF50081,KCS057QV1AJ等。

  KCS057QV1AJ是由KYOCERA公司生产,具有320 240个象素点、带CFL背光的STN(超扭曲向列)256色LCD显示模块。它不带LCD控制器,很容易与S3C44B0X内置的LCD控制器接口。本节将详述它与LCD控制器的硬件接口连线以及它的驱动程序。

  LCD控制器与KCS057QV1AJ接口设计

  KCS057QV1AJ提供的外部接口信号线如下:

  FRM:驱动器扫描的同步信号线;

  LOAD:数据锁存信号线;

  CP:数据移位时钟信号线;

  DISP:显示控制信号线;

  D[7:0]:8根显示数据输入线。

  在KCS057QV1AJ与LCD控制器之间接线时,KCS057QV1AJ的FRM、LOAD、CP、D[7:0]分别和LCD控制器的VFRAME、VLINE、VCLK、VD[7:0]相连。DISP引脚与S3C44B0X的GPIO的GPC15相连,通过GPC15来控制LCD显示模块的打开和关闭。具体接线如图2。

  

[!--empirenews.page--]

 

  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++)/显示缓冲区清零。

  *(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个象素的数据。

  }

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

雀巢公司(Nestle)表示,已经同意从星巴克(Starbucks Corp)手中收购Seattle's Best Coffee品牌,以加强该公司在美国的咖啡业务。雀巢公司是雀巢咖啡(Nescafe)和Nespresso...

关键字: TTL ST SE AFE

南京2022年10月19日 /美通社/ -- 10月16日是第42个世界粮食日,今年世界粮食日的主题是"不让任何人掉队,更好生产、更好营养、更好环境、更好生活",向全社会倡导爱惜粮食,拒绝浪...

关键字: 西门子 SE OS 可持续发展

强生公司(Johnson & Johnson)公布最近结束的季度销售额和利润实现增长,即使美元走强和劳动力成本上升削弱了业绩。这家保健用品公司周二下调了全年销售指引,因美元相对于全球其他货币的上涨带来的持续影响。...

关键字: JOHNSON SE OS

阿布扎比和沙特正在权衡,是否在瑞信(Credit Suisse)股价低迷之际,对该行的投资银行和其他业务进行投资。阿联酋和沙特在分别探索通过各自的主权基金,例如阿布扎比穆巴达拉发展公司和沙特公共投资基金(PIF)进行潜在...

关键字: MICHAEL UI SE PI

摩根大通(JPMorgan Chase)首席执行官戴蒙(Jamie Dimon)预测,美国经济可能在明年陷入衰退。他警告称,经济低迷可能在信贷市场引发“恐慌”,令美国股市价值再蒸发20%。花旗集团(Citigroup)首...

关键字: CE SE MORGAN GROUP

据全球最大石油生产商沙特阿美(Saudi Aramco)称,全球石油市场依然紧张。对于一个仍然严重依赖化石燃料的世界来说,这不是一个好兆头。沙特阿美CEO Amin Nasser表示,如今闲置产能非常低。如果亚洲重新开放...

关键字: NAS RAM SE CE

SWM32S单片机内部集成了8MB的SDRAM以及LCD控制器,非常适合用于屏幕驱动。其中LCD控制器支持RGB565格式的接口,最大支持1024*768分辨率。今天来介绍一下这两个外设的用法。

关键字: SWM32S单片机 LCD控制器 RGB565

摩根大通(JPMorgan Chase)首席执行官戴蒙(Jamie Dimon)预测,美国经济可能在明年陷入衰退。他警告称,经济低迷可能在信贷市场引发“恐慌”,令美国股市价值再蒸发20%。投资者密切关注戴蒙的经济声明,亿...

关键字: CE 华尔街 SE MORGAN

(全球TMT2022年10月11日讯)Autowise.ai仙途智能宣布获得商汤国香资本等机构B3轮战略投资,这是公司今年7月以来第二轮融资,融资将主要用于自动驾驶车辆研发制造和市场扩张,尤其是海外业务落地。...

关键字: 人工智能 芯片 新思科技 SE

(全球TMT2022年10月10日讯)近期,时尚科技跨国公司CLO Virtual Fashion Inc.(简称"CLO")宣布完成收购一家为时装企业提供数字化技术咨询的公司GoVise Technologies。此...

关键字: VIRTUAL IO 数字化 SE

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭