引言 |
通常,字符型(包括字母与数字)LCD模块是由嵌入式的微控制器来驱动的。有时,使用PC机来驱动这种字符型的LCD也能取得令人满意的效果。这使得模块的检测、演示或激励可以以最小的工程工作量很快地进行。本文就描述了这样一种字符型LCD的驱动方法,这种方法不仅使用的是PC机的打印口,而且使用最少的外部硬件。 |
PC机的打印口 |
PC机的打印端口至少有三个版本可用: |
SPP— 标准并行端口 |
EPP—增强型并行端口 |
ECP—扩展容量端口 |
为了使本设计尽可能的通用,我们将采用基于最少容量和较早版本的PC机打印口---SPP。 |
图 1 显示了PC机并行端口(以下简称并口)的插脚和控制每一个相应插脚的寄存器。此连接器图显示的是安装于PC机上的并口连接器座(即母连接器)。 |
为了与当今PC机所用并口的几种模式保持兼容,本例只使用了并口的输出功能。LCD模块提供了一个可被读取的忙标志以控制数据和命令写入的时间。因此,所有数据和命令传输的时间可以很容易知道。用这个办法来计算赋予LCD模块的数据和命令的传输时间可以通过软件来实现。 |
计算机并口可提供12个带缓冲的TTL电平输出脚,这些输出脚具有锁存功能,可以通过计算机处理器的“OUT”指令来控制它们的写入。当然,并口也有一些输入引脚,只是本例没有使用。 |
硬件描述 |
本例提供的硬件电路比较简单。图2电路原理图示意了显示数据线和控制线与计算机打印口引脚的连接关系。读/写线被固定为低电平以保持显示器始终处于被写入的状态。使能端(E)和寄存器选择端(RS)与并口的两条控制线相连。大多数的计算机并口在这些连线中具有有源或无源的上拉功能。为了通用,本例在这两条连线上分别使用了10K的上拉电阻。显示器对比度的调节借助于一个10K的电位器。LCD所用直流电源由外部提供。如果使用背光,也必须另外提供电源。 |
LCD只需要很少的能量即可点亮,典型情况下所耗电流不到5mA。并口的输出端可提供10mA的电流,因此,使用并口提供直流电源点亮LCD不成问题。需要注意的是,当使用背光时,要另外提供背光电源,不能使用打印机端口,因为背光电流一般高达50mA到300mA。 |
如图3所示,打印机端口的一条控制线被用来提供LCD模块的直流电源VDD。这样做有个好处,就是可以通过软件随意通断LCD。当这条控制线为高电平“1”时,点亮显示器;为低电平 “0”时,熄灭它。 |
使用什么性质的电缆将决定连接于并口与LCD之间的线缆的最大长度。例如,当时用带状线缆时,其长度最好不要超过3英尺。使用屏蔽的双绞线时,其连接长度可达50英尺。其实,当实际使用时,根据使用长度要求,将连接计算机和打印机的电缆适当截断,然后将其连接于计算机和LCD之间即可。这样,不论从效率还是经济性方面考虑,都不失为一个有效方法。 |
软件描述 |
当前,绝大多数的PC机都支持3种形式的打印机并口,其地址分别在278/378/3BC。以上地址均为16进制。通常只有一种打印机端口安装在计算机上,而且在绝大多数系统中其地址在378H,被指定为LPT1。当使用输出指令向计算机的基地址——278H/378H/3BCH写数据时,打印机端口将锁存数据到LCD的数据输入端口。如表 1所示。 |
当使用输出指令使打印机端口基地址加2,则端口地址成为:27AH/37AH/3BEH,这时输出数据指令将锁存与LCD的控制脚相连数据总线的低4位。通常,这些信号中只有两个用来控制字符型LCD模块的状态。唯一的例外情况就是使用40x4字符型LCD模块时。这种模块含有两个控制器和一个使能控制线。并口的C1脚可作为这种40x4模块的二级使能端。与LCD模块有关的控制位如表 2所示。 |
程序示例 |
下面的程序代码使用Microsoft C语言编写,程序的功能是要在16x2字符型LCD模块上显示一条信息。这段程序代码可以作为使用其他字符型LCD模块显示信息时的编程参考,因为它包含了编写此类程序所必需基本元素。任何字符型LCD模块当它只有一个控制器时可以显示的最大字符数为80个字符。本程序可以作为工作于x1,x2,x4行的LCD 模块的借鉴,当然本例使用x4行LCD模块中的两行显示字符。 |
一个较为复杂的显示字符的方法是,当字符的每一行被写入时,发布一条SET DD RAM ADDRESS命令。参考你所使用的LCD模块的数据手册,你可以找到设置DD RAM地址和字符行长度的指令。 |
本程序首先初始化LCD模块的显示,接着发送两行数据。显示的信息如下所示: |
>>HANTRONIX<< |
ABCabc123,!@$? |