Chinaunix首页 | 论坛 | 博客
  • 博客访问: 224795
  • 博文数量: 52
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 390
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-06 09:31
文章分类

全部博文(52)

文章存档

2015年(1)

2014年(44)

2013年(7)

我的朋友

分类: 嵌入式

2014-05-30 11:03:21

LCD/LCM的基本概念
    液晶显示器(Liquid Crystal Display: LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。它包括了TFT,OLED,UFB,TFD,STN等类型的液晶显示屏.
 
    LCM(LCD Module)即LCD显示模组、液晶模块,是指将液晶显示器件,连接件,控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。 购买相应的LCD Module时,会提供相关驱动IC资料,很多会有驱动代码。不过价格会比单买 LCD显示屏贵很多。
 
LCD显示模式
 
    LCD的接口有多种,分类很细。主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式。MCU模式(也写成MPU模式的)。只有TFT模块才有RGB接口。
 
    MCU模式
        因为主要针对单片机的领域在使用,因此得名.后在中低端手机大量使用,其主要特点是价格便宜的。MCU-LCD接口的标准术语是Intel提出的8080总线标准,因此在很多文档中用I80 来指MCU-LCD屏。主要又可以分为8080模式和6800模式,这两者之间主要是时序的区别。数据位传输有8位,9位,16位,18位,24位。
 
MCU接口标准名称是I80,管脚的控制脚有5个:
 
CS 片选信号
RS (置1为写数据,置0为写命令)
/WR (为0表示写数据) 数据命令区分信号
/RD (为0表示读数据)
RESET 复位LCD( 用固定命令系列 0 1 0来复位)
数据总线  DATA (8~24位) 
 
    RGB模式
        大屏采用较多的模式,数据位传输也有6位,16位和18位,24位之分。连线一般有:VSYNC,HSYNC,DOTCLK,CS,RESET,有的也需要RS,剩下就是数据线。它的优缺点正好和MCU模式相反。
 
    MCU-LCD屏它与RGB-LCD屏主要区别在于显存的位置。RGB-LCD的显存是由系统内存充当的,因此其大小只受限于系统内存的大小,这样RGB-LCD可以做出较大尺寸,象现在4.3"只能算入门级,而MID中7",10"的屏都开始大量使用。而MCU-LCD的设计之初只要考虑单片机的内存较小,因此都是把显存内置在LCD模块内部.然后软件通过专门显示命令来更新显存,因此MCU屏往往不能做得很大。同时显示更新速度也比RGB-LCD慢。显示数据传输模式也有差别。RGB屏只需显存组织好数据。启动显示后,LCD-DMA会自动把显存中的数据通过RGB接口送到LCM。而MCU屏则需要发送画点的命令来修改MCU内部的RAM(即不能直接写MCU屏的RAM)。所以RGB显示速度明显比MCU快,而且播放视频方面,MCU-LCD也比较慢。
 
    对于RGB接口的LCM,主机输出的直接是每个象素的RGB数据,不需要进行变换(GAMMA校正等除外),对于这种接口,需要在主机部分有个LCD控制器,以产生RGB数据和点、行、帧同步信号。
 
    MCU接口和RGB接口主要的区别是:
 
        MCU接口方式:显示数据写入DDRAM,常用于静止图片显示。控制简单方便,无需时钟和同步信号。要耗费GRAM,所以难以做到大屏(QVGA以上)。
        RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。


 
    VSYNC模式
        该模式其实就是就是在MCU模式上加了一个VSYNC信号,应用于运动画面更新,这样就与上述两个接口有很大的区别。该模式支持直接进行动画显示的功能,它提供了一个对MCU接口最小的改动,实现动画显示的解决方案。
 
其他还有 SPI模式  MDDI模式   DSI模式 采用较少 这里不一一介绍。
 
    显示屏的驱动IC采用Ili93xx 系列的居多,资料较多。我使用的是正点原子的开发板,显示屏驱动IC是xxxB505 ,不过驱动代码和ili9320类似,为i80接口。不过我一直有一个疑问,这块IC的具体位置在哪? 显示屏由屏幕和排线构成,LCM上只有一块芯片 XPT2046是触摸屏的驱动IC?这样的问题Google也不会知道。。 拆开了一个废旧的显示屏,熟悉了一下显示屏的结构,询问了不少淘宝卖家后,总算弄明白了。这块芯片的封装和常见的芯片不同,以2cm*2mm左右的一块硅片封装在屏幕下和排线相连接。如图:
 
ili3920.jpg
 
    这里对正点原子的相关代码进行了整理,使用库函数操作,并且整合和横竖屏的代码,实现横竖屏显示。
 
相关驱动代码如下:
 
    LCD/ili93xx.c 
001 #include "ili93xx.h"
002 #include "font.h"
003  
004 #define USE_HORIZONTAL  0 //定义是否使用横屏
005  
006 //画笔颜色,背景颜色
007 u16 POINT_COLOR = 0x0000,BACK_COLOR = 0xFFFF; 
008 u16 DeviceCode; 
009  
010 void LCD_Delay_Us(u32 us)
011 {
012     u32 time=100*us/7;   
013
阅读(1940) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~