LCD显示器与PIC单片机的接口设计
扫描二维码
随时随地手机看文章
1引言
智能仪器仪表设计中,通常都要对测控信息进行显示。受仪器功耗、体积及其它条件的影响,一般CRT显示器往往不太适用。而半导体数码管,虽能显示数码及少数字母,却无法灵活显示各种文字、图形、表格等,有着较大的局限性。而LCD显示器由于具有功能强、功耗低、显示清晰、构造轻巧等优点,被广泛运用于各类智能仪器仪表的显示。PIC单片机是美国MICROCHIP公司推出的高性能单片机,对比传统MCS51系列单片机,它具有内置功能模块多、抗干扰性好、速度快、功耗低等优点,被广泛应用于工业控制领域[1]。本文将以SED1520与PIC16F874为例介绍LCD显示器与PIC单片机接口的实用方法。
2 SED1520的结构、指令及其与PIC单片机的接口电路
SED1520的结构框图如图1所示,它主要由定时计数器、行列地址寄存与译码电路、显示RAM、MPU接口电路、LCD接口电路组成。它与外部的接口主要分三个部分:一部分是电源、复位信号和时钟;一部分是LCD接口、另一部分是与MPU(微处理器)的接口。与LCD的接口一般已由提供液晶模块的制造商负责,对于液晶模块的使用者,只须掌握与MPU接口的部分。另外,SED1520还需要提供2KHZ的时钟信号[2]。
SED1520的指令列表如表1,它的显示存储器共有4页(对应页地址0~3),每个页面上都有80个字节(对应列地址为0~79),每个字节中的8位数据都对应着显示屏上同一列的8点行。列地址指针就是管理这80个字节单元的。列地址指针是一个7位加1计数器。由它和页地址寄存器组合唯一指定了显示存储器的某一个单元。SED1520中的RAM共有32行,分为4页,每页8行,这样如果按8*8点阵显示字符,每页可以写一行10个字符,总共写4行,而汉字一般是16*16点阵,则每行可显示5个汉字,共可显示两行。如果将多个SED1520拼起来,就可组成不同显示容量的液晶模块,
SED1520与PIC16F874的接口电路如图2所示。各引脚说明如下:
A0:指令/数据选择 。高电平表示传送的是数据,低电平表示传送的是指令。
片选信号,低电平有效,高电平则MPU不访问SED1520。
读允许,低电平表示MPU从SED1520读数据或指令,高电平无效。
写允许,低电平表示MPU向SED1520写数据或指令,高电平无效。
CL:时钟输入端。由PIC16F874的 RC1提供,让其工作于PWM2输出方式。
D0~D7:数据输入输出引脚。
复位信号输入端,低电平有效。
VDD:逻辑电源正。
VSS:逻辑电源地。
SED1520的指令的解释和执行不依赖外部时钟,而是由内部时钟同步的,所以它的指令执行的速度很快,一般不需要检测SED1520是否忙。由于PIC16F874的I/O口是输出或输入要对相应寄存器进行设置[3],如图2,PIC16F874的RD口在向SED1520写数据时要被设置成输出口,而读数据时又要被设置成输入口,为了精减程序和提高速度,我们可以不用读SED1520的状态,直接向其写数据。这样SED1520的RD脚直接接高电平,PIC16F874的RC3脚也可省下留作它用。
3具体编程实例
在具体的实际应用中,我们经常要显示汉字,一般汉字的字模如图4,字节内部的8个位是横排的,而对于SED1520,字节的8个位要竖排,即每个字符要跨8行显示,需要按图5显示汉字
那么要将字模的各字节按位进行如下计算:将标准字模的字节组1的8个字节的bit7组合起来就成为SED1520汉字字模的字节1,bit6组合起来就成为SED1520汉字字模的字节2,依此类推,就可计算出SED1520汉字字模的32个字节,显示时,先确定字节1的位置(页地址与列地址),然后连续显示字节1~字节16,再页地址加1,列地址为字节1的列地址,设置好后送字节17~字节32即完一成个汉字显示。我们将以12232为例介绍液晶模块的使用方法,12232内置2个SED1520,通过片选来访问不同的SED1520,它可显示4行(对应0~3页地址),每行可显示122个字符,前61个字符对应左边SED1520,后61个字符对应右边SED1520,列地址0~60对应这61个字符的位置,列地址61~79没有使用。对SED1520初始化的程序流程图如图3。清屏是将所有的显示RAM内的数据置0,初始化后,要具体在某个位置显示字符需要设置对应的页地址(行)和列地址,然后向SED1520写数据即可。以下为显示部分初始化程序流程图。
4 结束语
SED1520是一款性能价格比很高的LCD驱动芯片,将它与单片微机接口可用于各类仪表,具有硬件省、功耗低、软件程序简洁等特点。该接口设计已成功应用于电动汽车电量管理的显示,证明该设计稳定可靠。
本文作者创新点:单片机在对LCD控制器写数据前一般都要先读它是否忙,以免写数据失败,而PIC单片机的I/O口在读与写的功能转换中要不停地更改该口的设置,这样程序就很繁琐,还有可能导致系统不稳定。作者在通过实际设计与应用后,对LCD控制器省去了读状态检测,根据SED1520的数据手册中介绍的读写时序,进行适当延时,这样精减了程序还省下了在单片机系统设计中比较宝贵的I/O口,而且系统一直稳定。