边增远 曾碧 鞠仪静 李雷
摘要:本文介绍了一种通用的LCD显示电路,并以PIC16F873芯片设计出了结合硬件的较为通用的驱动程序。
LCD显示屏具有体积小、重量轻、耗电低、显示内容丰富、易于定制、使用寿命长等优点,被广泛用于仪器仪表、家电、控制产品等诸多领域。根据不同的LCD显示屏其驱动程序分为静态驱动和动态驱动。因为动态驱动比静态驱动占用的芯片硬件资源少、驱动电路简单等特点而成为LCD驱动的主流。本文正是采用动态驱动方式,以Microchip公司的PIC16F873芯片,设计出一种较为通用的LCD显示电路及其LCD显示的相应驱动程序,目的在于减少研发人员的工作量,避免不必要的重复性工作。
1.LCD显示的硬件电路
为了达到动态显示的目的,在电路中使用了三个移位计数器,其中两个用于LCD显示,一个用于控制LED双色灯显示,显示部分共占用PIC16F873芯片6个I/O口,分别为RC0、RC1、RC2、RC3、RC4、RC5。可以实现控制的显示笔划位数达48个,如图1所示。其中RC3、RC5配合产生移位输入信号, RC0、RC1、RC2、RC4配合控制背电极(COM0、COM1、COM2)。当背电极COM0、COM1、COM2与笔画电极(由移位计数器输出)之间的电势差达到5V时,对应的笔画就显示,否则不显示。为了延长液晶显示屏的寿命,通常间隔交换背电极与笔画电极的电位。例如,当要COM0显示的时候可以使得RC0、RC1为5V,RC2、RC4为0V,这样COM0电压为5V,COM1、COM2电压为2.5V,然后RC0、RC1为0V,RC2、RC4为5V,这样COM0电压为0V,COM1、COM2电压为2.5V。达到显示目的。
2.驱动波形
在电路中使用RC3为时钟输入端,RC5作为数据输入端进行主同步串行。当要输入COM0行上的数据是1000 1010 1100 0100时,其驱动波形如图2所示。在正向输出(COM0端为低电平)结束后,进行反向输出(COM0端为高电平)。图3为一个完整显示周期内COM0、COM1、COM2的波形变化。
3.LCD软件显示程序
本文以PIC16F873为芯片,采用PIC汇编语言,在MAPLAB-ICD开发器上实现。程序包括移位输入数据子程序、显示矩阵校正程序、LCD显示输出程序,具体流程如图4。其中显示校正程序是将自己定义的单元值与LCD显示矩阵的值对应;移位输入数据子程序是将校正好的数据移位输入到LCD的笔画电极;LCD显示输出程序则调用移位计数器把数据转换成正确的显示结果。在本刊的网站上给出了源程序,其中,移位输入数据子程序请参照源代码(a) ;显示矩阵校正程序请参照源代码(b) ;LCD显示输出程序请参照源代码(c)。
4.结语
如果LCD显示屏的显示矩阵很规则,在设计程序的时候就可以省去矩阵校正子程序部分。本文针对没有规律的显示矩阵排列设计了软件驱动程序,巧妙采用了移位计数器和PIC16F873上面的串行数据输出功能,达到了通用显示的目的,本文的方法已经在智能充电器的LCD显示部分得到了很好的应用,并且显示效果相当令人满意。所提供的源程序均为调试过的程序,可以直接使用。◆