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口,而且系统一直稳定。