manhuami2007的个人空间 https://bbs.21ic.com/?741514 [收藏] [复制] [RSS]

日志

五分钟读懂点阵液晶屏如何驱动---‘光豆儿’

已有 517 次阅读2016-12-31 10:55 |系统分类:嵌入式系统| LCD, 液晶屏, 驱动, 点阵

我们购买的LCD一般包含两部分:

  1. LCD的面板
  2. LCD的驱动芯片

我们的处理器并不是直接驱动LCD面板,而是驱动LCD的驱动芯片,再由驱动芯片驱动LCD面板上的各个像素点。

所以我们要想使LCD显示某些内容需要考虑两点:

  1. 处理器通过什么通讯总线和协议与控制芯片通信
  2. 将显示数据以哪种数据格式传输给控制芯片
与控制芯片通讯的总线形式

有的LCD使用并行总线通讯,有的是使用串行总线进行通讯。

并行总线通讯要考虑:

  1. 总线上的数据什么时候被锁存
  2. 如何区分指令数据和显示数据
  3. 是否存在多个控制芯片的片选信号

串行总线通讯要考虑:

  1. SPI还是I2C总线等
  2. 通讯的速率等参数

总之我们要知道处理器以怎样的通讯方式能够使LCD的控制芯片接收到数据。

显示数据的传输格式

每个LCD的控制芯片内部都有一个RAM,RAM中每个数据位对应的LCD上相应的像素点。例如128*32的LCD控制芯片对应的内部RAM是128*32位的RAM。RAM中某个位是0则LCD上对应的像素点不显示,1则显示。

上图是122*32点阵LCD的控制芯片的RAM的地址映射(上图的LCD使用两个控制芯片,所以其列地址由两个0-60组成)。RAM就像对应的LCD一样也是使用类似于行列的形式指示某个像素的位置,不过在RAM中行对应的是页地址,列对应的是列地址。通常在RAM中一个列中紧邻的8个位凑成1个字节来表示,例如128*32位的RAM以数组表示就是LCD_RAM_DATA[4][128]。而且称列上紧邻的8位对应的一行为1页,如上图所示的页地址。也就是说上面的数组中LCD_RAM_DATA[0][*],为页地址是0的数据,LCD_RAM_DATA[2][*],为页地址是2的数据。列地址就好理解了,就是对应的列的值。如数组中LCD_RAM_DATA[1][10]对应的就是页地址为1,列地址为10的8个像素点。

不同的LCD使用的控制芯片不一样,个数也不一样。这要看LCD对应的手册,来知道LCD的控制芯片是怎么连接的。有的屏幕使用的是一个控制芯片驱动LCD,也有的芯片使用多个控制芯片来驱动LCD。如下图分别列出使用1个控制芯片和使用2个控制芯片的LCD框图。

使用一个控制芯片的LCD,其RAM内容对应的就是整个LCD。

使用多个控制芯片的则是将屏幕分成了若干个部分,每个控制芯片对应的一块区域。如两个驱动IC的就是将屏幕分成了左右两半部分。因此修改此类LCD,就需要根据像素点的位置修改对应控制芯片的RAM了。与含有多个控制芯片的LCD进行通讯时还要考虑到通过不同控制芯片的片选信号,来控制对应的控制芯片获取数据。根本上,使用多个控制芯片的和使用一个控制芯片的原理是一样的,只是将一个RAM分到了多个控制芯片的RAM中了。

总结

最后呈现到LCD上的画面就是RAM中的数据。要使LCD显示不同的内容,最终还是修改各个控制芯片的RAM。因此最主要的操作都是围绕着对RAM的操作的。例如设置RAM的写入或读取的页地址和列地址,以及写入或读出指定地址的RAM的数据。


欢迎大家添加我的微信公众号“光豆儿”


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)