嵌入式系统经常使用HD44780型LCD显示器,因为它被视为最受欢迎的字母数字显示控制器。该器件接口包括至少14个引脚:8个数据引脚,3个控制引脚(EN、WR、RS),2个电源引脚(Vdd、Vss),1个对比度引脚(Vre)。配置在8位模式下,其至少需要10条I/O线路(D0至D7、EN、RS);配置在4位模式下,其至少需要6条I/O线路(D4至D7、EN、RS)。后面这种情况看似比较适用于8引脚PIC微控制器,但是,8引脚的PIC微控制器有一个仅为输入的引脚。
一些EDN设计实例(参考文献1~3)中已经描述了许多扩展I/O引脚的解决方案。在一个引脚受限的外部嵌入式系统中,若需多增设一个LCD显示器而又不更换具有更多I/O线路的微控制器,(就成本和更好、更快地完成开发流程而言)最好采用具有专用8引脚PIC微控制器的LCD模块,并将其视为一种智能显示器。
当任何引脚受限的外部嵌入式系统需要连接至一个HD44780兼容显示器时,图中的设计方案可以派上用场。该设计方案通过单线串行链路进行通信,采用的是一个简化的异步协议(8N1(8个数据位、无校验位、1个停止位)/2400bps)。此外,该设计方案还使用了一个价格非常低廉的8位微控制器PIC12F508(Baseline PIC12F系列的其他产品也同样适用),程序代码少于256个字。
串行链路被用作指令/数据线(针对GP3引脚)和电源线(针对Vdd引脚,通过D1和C1)。滤波器R2-C2将GP5引脚分为两条I/O线路。若GP5输出一个大于时间常数R2×C2=56μs的脉冲,则输入RS会接收到一个高电平,然后数据会在GP5脉冲的下降沿被写入HD44780显示器中。
值得注意的是,对比度调节(LCD引脚3)使用的是LM334而非一般的10K电位器,LM334用于确保200μA的恒定电流接地(若为电池供电,则当电源电压降低时,无需调整对比度)。此外,该电路可节省超过25%的电量(参考文献4)。
F508LCD.ASM(如下)是完整注释的汇编程序源代码(包括LCD2x16c.INC),其主程序包括:显示2s的“启动画面”,然后进入无限循环以等待LCD指令,每个指令后都伴随有最高16字节的LCD数据并以ASCII“0”终止。为实现引脚受限的外部PIC微控制器的测试目的,F202TX.ASM给出了简单的汇编程序源代码(PIC10F202),其中包括发送另一个“启动画面”,用作消息测试。
参考文献:
1. Squeeze extra outputs from a pin-limited microcontroller (EDN | August 4, 2005).
2. Microcontroller provides low-cost analog to digital conversion, drives seven-segment displays (EDN | May 10, 2007).
3. RC lowpass filter expands microcomputer’s output port (EDN | June 21, 2007).
4. Contrast control for LCDs (Elektor Electronics | July-August 2006, Vol.32, N°356).