当前位置:首页 > 显示光电 > LED驱动
[导读]   LED驱动原理方式解析:   (1)被动矩阵LCD技术   高信息密度显示技术中首先商品化的是被动矩阵显示技术,它得名于控制液晶单元的开和关的简单设计。被动矩阵液晶显示的驱动

  LED驱动原理方式解析:   (1)被动矩阵LCD技术

  高信息密度显示技术中首先商品化的是被动矩阵显示技术,它得名于控制液晶单元的开和关的简单设计。被动矩阵液晶显示的驱动方式是由垂直与水平方向的电极所构成的,且将单独的液晶单元夹在彼此垂直的电极中间。因此,任何一组电极的驱动就会在特定的单元中引起电流通过。

  被动矩阵显示画面的原理是用输入的信号依次去驱动每一排的电极,于是当某一排被选定的时候,列向上的电极将被触发用于打开位于排和列交叉上的那些像素。这种方法比较简单,而且对液晶屏幕成本的增加也不多。不过其存在的缺点是:如果有太大的电流通过某个单元,附近的单元都会受到影响,会引起虚影;如果电流太小,单元的开和关就会变得迟缓,会降低对比度和丢失移动画面的细节。

  早期的被动矩阵板依赖于扭转向列的设计。其上层和下层的偏光板的偏振光方向呈90°,因此中间的液晶以90°进行扭转。这样制造的液晶板对比度很低,响应时间也很慢。这种方式运用在低信息量显示时效果很好,但不适合计算机显示。

  超扭转向列(Super Twisted NemaTIc)方法是通过改变液晶材料的化学成分,使液晶分子发生不止一次的扭转,使光线扭转达到180°到270°,这样便可大大地改善画面的显示品质。20波纪80年代初期,STN技术一度非常流行,至今它还在便携式电子设备如PDA、移动电话中使用。虽然STN技术提高了显示的对比度,但它会引起光线的色彩偏差,尤其是在屏幕偏离主轴的位置上。这就是为什么早期的笔记本计算机屏幕总是偏蓝和偏黄的原因。

  双层超扭曲向列型显示技术(DSTN)具有两层扭转方向相对的LCD层,第二层使得第一层遗留的色偏问题得以解决。当然它的制造工艺比前两种方式要复杂得多。

  后来人们发现了比DSTN更简单易行的方法,就是在底层和顶层的外表面加上补偿膜,来改善STN技术中所产生的特定波段光线的散射和反射现象,这就是补偿膜超扭转向列(Film-compensated STN,FSTN)显示技术。FSTN的显示效果和DSTN相当,但其价格和工艺难度都大大降低了,所以现在大多数被动式LCD都采用了FSTN技术。

  为了改善采用FSTN技术的LCD显示效果,在20世纪90年代初期提出了双扫描概念。所谓双扫描,就是将面板水平对等地分为两部分,对顶端和底端相对应的部分同时进行扫描,这就大大提高了扫描的频率。双扫描解决了小电流、长时间使用的情况下常常产生的鬼影现象。和主动矩阵显示相比,它显著提高了对比度、画质,并缩短了响应时间,所以现在还广为低价位的笔记本计算机所采用。

  (2)主动矩阵LCD技术

  采用被动矩阵LCD技术的最大问题是难以快速地控制单独的液晶单元,并以足够大的电流保证来获得好的对比度、足够的灰阶和较快的响应时间,从而影响了动态影像的显示效果。主动矩阵LCD通过单独地控制每个单元,有效地解决了上面的问题。

  与被动矩阵LCD相似,主动矩阵(AcTIveMatrix)LCD的上、下表层也纵横有序地排列着用铟锡氧化物做成的透明电极。所不同的是在每个单元中都加入了很小的晶体管,由晶体管来控制每个单元回路的开和关。晶体管电极是利用薄膜技术做成的,薄膜晶体管LCD(TFT-LCD)也因此得名。

  晶体管可以迅速地控制每个单元,由于单元之间的电干扰很小,所以可以使用大电流,而不会有鬼影和拖尾现象,更大的电流会提供更好的对比度、更锐利的和更明亮的图像。

  单片机如何根据LCD时序图来写底层驱动:

  单片机如何根据LCD时序图来写底层驱动

  一般来说,LCD 模块的控制都是通过 MCU 对 LCD 模块的内部寄存器、显存进行操作来最终完成的;在此我们设计了三个基本的时序控制程序,分别是:

  (1)写寄存器函数(LCD_RegWrite)   (2)数据写函数(LCD_DataWrite)   (3) 数据读函数(LCD_DataRead)

  这三个函数需要严格的按照 LCD 所要求的时序来编写,下面可以看看 MzL02 模块时序图:

  图 3.2 MzL02 模块的 6800 时序示意

  注意:上图是该模块的控制 IC 资料中的原版时序图,其实有些示意不是太稳妥(少标出了RW 线信号的要求),或者说是不太严谨,不过这些不作讨论,请看分析即可;而 EP 的有效触发沿在图中很有可能示意有误,实测为上升沿。图中 CS1B(CS2)的信号即为片选 CS,RS 即为数据/寄存器的选择端口 A0 信号,E 为 EP;当作写入寄存器数据操作时,首先要将 A0 置低,以通知 LCD 模块即将进行的是对寄存器的操作;而 RW 线需要置低,以示即将要进行的是写入的操作;然后片选 CS 信号置低,装载数据至总线,然后在 EP 线上产生一个上升沿以触发 LCD 模块将总线上的数据最终载入;在前面的操作完成后一般都会将各个信号线的状态恢复。而数据(显存)写入、数据读出的操作时序也比较类似,这里就不多作介绍,直接参考例程即可。

  //=======================================================

  // 函数: void LCD_RegWrite(unsigned char Command)

  // 描述: 写一个字节的数据至 LCD 中的控制寄存器当中

  // 参数: Command 写入的数据,低八位有效(byte)

  // 返回: 无

  //======================================================

  void LCD_RegWrite(unsigned char Command)

  {

  LCD_A0 = 0; //A0 置低,示意进行寄存器操作

  LCD_RW = 0; //RW 置低,示意进行写入操作

  LCD_EP = 0; //EP 先置低,以便后面产生跳变沿

  LCD_CS = 0; //片选 CS 置低

  DAT_PORT = Command; //装载数据置总线

  LCD_EP = 1; //产生有效的跳变沿

  LCD_CS = 1; //片选置高

  }

  数据写入以及读出的函数源码如下:

  //==========================================================

  // 函数: void LCD_DataWrite(unsigned char Dat)

  // 描述: 写一个字节的显示数据至 LCD 中的显示缓冲 RAM 当中

  // 参数: Data 写入的数据

  // 返回: 无

  //==========================================================

  void LCD_DataWrite(unsigned char Dat)

  {

  LCD_A0 = 1; //A0 置高,示意进行显存数据操作

  LCD_RW = 0; //RW 置低,示意进行写入操作

  LCD_EP = 0; //EP 先置低,以便后面产生跳变沿

  LCD_CS = 0; //片选 CS 置低

  DAT_PORT = Dat; //装载数据置总线

  LCD_EP = 1; //产生有效的跳变沿

  LCD_CS = 1; //片选置高

  }

  //=========================================================

  // 函数: unsigned char LCD_DataRead(void)

  // 描述: 从 LCD 中的显示缓冲 RAM 当中读一个字节的显示数据

  // 参数: 无

  // 返回: 读出的数据,

  //==========================================================

  unsigned char LCD_DataRead(void)

  {

  unsigned char Read_Data;

  DAT_PORT = 0xff; //51 的端口想要输入前,要先给端口全置 1

  LCD_A0 = 1; //A0 置高,示意进行显存数据操作

  LCD_RW = 1; //RW 置高,示意进行读出操作

  LCD_EP = 0; //EP 先置低,以便后面产生跳变沿

  LCD_CS = 0; //片选 CS 置低

  LCD_EP = 1; //产生有效的跳变沿

  LCD_EP = 0;

  Read_Data = DAT_PORT; //读出数据

  LCD_CS = 1; //片选置高

  return Read_Data; //返回读到的数据

  }

  以上便是要介绍的最基本的时序操作程序,它们几乎是整个 LCD 驱动程序当中与底层硬件打交道的代码了,这样的话,当要改变驱动 LCD 的 MCU 端口时或者换用别的 MCU 来驱动 LCD 时,基本上只需要在这些代码里作一下修改即可。

  关于读LCD状态

  而在一般的 LCD 模块当中,还有一个功能同样重要,就是读 LCD 状态;可以通过此操作获取当前 LCD 模块的忙状态以及一些相关的状态信息,当 LCD 模块正处于忙状态时,则不宜对它进行数据的写入或读出操作(有很多较老式的 LCD 控制器规定在忙的状态下时不允许写入或读出数据)。

  所以在很多 LCD 的驱动程序当中,会在寄存器写入、数据写入/读出的操作前加入读取 LCD状态并判别忙状态的代码;这点可以参考网上流传的很多 LCD 驱动程序。不过,对于 MzL02这样的较新出的 LCD 控制器来说,已经对忙状态不是很在乎了,或者说影响已经很小甚至没有了;所以我们在前面的代码当中并没有加入这样的代码。至于有没有必要加读状态判忙的代码,要视具体的 LCD 控制器而定。

  关于时序的时间要求

  时序的一个非常重要的数据就是类似上图中标出的tAS88之类的时间长短要求,只是上图中并没有标出它们的具体最大最小值要求而已;但在编写这类的时序接口程序时它们还是非常重要的,当然还要看 MCU 的端口操作速度以及 MCU 的指令执行速度。打个比方,有的时序里就会有要求某些信号的电平保持最小宽度,而如果 MCU 的指令执行速度以及端口操作速度非常快的话,就需要酌情在连续操作端口的代码之间加入适量的延时(通用用空操作来代替,具体多少个多少时长视具体的 MCU 以及 LCD 控制器而定)以保证该信号的脉冲宽度满足要求。

  在本文的所列出的源代码当中,并没有如前所述的为时序的要求而插入空操作或延时处理,因为 MCU 的速度并不是非常快,况且现在的 LCD 控制器的总线速度都挺快的了,没有必要加入而已。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭