14.1英寸WXGA LED(背光) (液晶显示)屏。
当出现“背光”时,意味着一定是LCD显示屏。
LED、OLED、PDP等都是主动发光显示——即每个像素独立发光,所以不会有“背光”字眼。
只有液晶显示器,由于仅仅是一种光阀作用,属于被动发光显示模式,所以需要“背光”作为光源。
而液晶显示屏中分为使用冷阴极管(CCFL)背光和发光二极管(LED)背光两种。
LED背光不需要高压驱动(CCFL需要上千伏的高压驱动),但因一些技术问题,多用于小尺寸LCD,一直未能有效应用于大屏幕显示器。在近几年解决了一些技术问题后逐渐成为液晶显示器中背光新技术的代表。
故一般CCFL背光不会特意说明,而标有“LED”字眼则为突出是LED背光的新技术
首先,你必须准备一些相关的软硬件。而我假设你已经拥有了一台运行着GNU/Linux系统——以便能够使用gcc和glibc,并且有着标准并行接口(也就是串口)的电脑。
此外,你还需要一块HD44780兼容型LCD显示屏,用来连接到电脑的并口,为了调节对比度,还应该在它们之间联接一个电位计。要想驱动这个系统,仅仅依靠并口的电流是不够的,你需要从系统中获得额外的能量,最好就是使用系统中标准的+5V接口(即用于驱动硬盘,光驱等等的电源接口)。
当你连接好了LCD显示屏,你就需要知道如何让它工作。其他的文章总喜欢把这一部分略掉,但我希望通过揭示其内部的工作原理来帮助你编程。
最后一件事是如何让这个显示单元显示一些有用的东西。作为参考,我将使用一个叫做LCDInfo的小程序,它支持HD44780大多数的特性却又不会显得过分复杂。这个程序仍处于开发之中,我只是在空闲时侍弄它。如果你没有编写C程序的经验,或许你需要粗略的学习一下。我将假设你正好和我一样是个C语言的新手。
如何连接
让我们先看看LCD各个的引脚及其定义。
Pin 1为VSS,直接连接GND。
Pin 2为VDD,接+5V作为电源供应。
Pin 3为VLC,连接到电位计,用来调节显示的的对比度。
Pin 4为RS,显示屏依靠这个引脚来分辨接受到的是指令还是数据。
Pin 5是R/W,控制着LCD是 发送或是接收。
Pin 6是Enable,当出现一个从低到高再到低的脉冲,LDC将读取Pin4,5以及7-14。其中Pin 7-14是数据总线被称为DB0-DB7,是LCD接受到的主要数据比特并控制着信息在显示屏上写入的位置和内容。
Pin 15和16为显示屏提供背光。其中Pin 15串接一个3.8欧的电阻到+5V,而Pin 16则简单的连接GND。
有关如设备和打印口的具体连接,可参考右边的电路原理图。我已经尽力使它清晰了,点击可以看到大图。
这个原理图只适用于需要对显示对比度进行调节的场合。而且我只是简单的把pin 3和1连接到了GND,就获得了不错的效果。如果你的室内有奇怪的光源,也许你需要考虑增加电位计。
当你从PC电源上获取电源时,请务必小心。如果接错了电线,你可能会将+12V的电源接到LCD系统上,烧坏整个系统。一般而言红色的电缆才是你需要的,而黄色的那根是+12V,黑的是GND。
如果把上述的工作都做好了,当你打开PC时,第一行(和第三行,如果存在的话)将是黒的。
LCD如何工作
在你作出指示之前,LCD系统是不会有任何动作的。直到它接收到一个先跃升再下降的enable脉冲(这需要我们将Enable引脚置高,等待一会儿之后再将该引脚置回低电平)。这时显示系统将开始读取并判断是否有指令或数据需要处理,然后判断是否将接受或者发送信息,最后判断针对这些数据比特是执行发送还是接受操作。
文章中我们不会从LCD端接受信息,所以R/W引脚始终都应被置低,表示写入。
除了打印字符时,RS pin都将置低,其它东西可以认为都是指令。
这使得有关显示的编程非常简单。
掌握了这些东西之后,我们就盘算着打开显示,并让它准备好接受信息。这些都将在初始化序列中得到执行,在此过程中将作出诸如使用“功能设定”来打开显示等操作。
你需要做的第一件事是从PC上连接出合适的电源线接到系统上,如果你还没做好,那就赶快。
接下来是“功能设定”,这取决于你所拥有的显示系统。
为了便于理解 ,我会详细解释功能设定中的相关操作。
DB2是字符字体位,在此设为low,表示5x7点阵。
DB3是显示线宽位,应该是高,表示双线。那么要用4线,又该怎么办呢?别担心,第一线和第三线在显存中是相同的,所以你仍需置高。
DB4是数据长度位,它决定了你使用4个还是8个数据位。如果你使用我的电路原理图,你应该将此位置高。
接下来是将DB5置高,以便告诉显示系统这才是真的“功能设定”指令,同时确定RS和R/W都被置低,并给一个先跃升再下降的enable脉冲。至于具体时间间隔还需要查阅说明书,我想显示之前的间隔应该只是毫秒级的,比我们需要的还要好些。
关于代码?What about the code?
在这儿我需要针对部分LCDInfo程序进行一下解释,以便你了解HD44780的接口是如何工作的。你可以在文章的末尾下载这个LCDInfo程序,也可以直接点击这里查看代码文件iolcd.c和lcdinfo.c。
我们现在所需要的就是前面提到过的C程序,那很容易的,请相信我。我会一步一步的解释那些代码,即使你是一个C的初学者也一定能明白。
首先,我们要预定义一些头文件和宏定义(具体信息请查看源文件)。接下来就是有趣的部分了