摘要:本文介绍了LM12864及其控制器HD61202U的指令系统,具体说明了LM12864与51单片机的连接方法及软件设计,并给出了液晶显示的参考程序。
关键词:点阵式;液晶显示;单片机;接口
概述
液晶显示器作为一种低功耗显示器件,广泛应用于计算器、数字式仪表等低功耗系统中。但一般使用的液晶显示器均为七段笔划式,只能显示数字和少量字符,对于较复杂的字符或图形则无能为力。而点阵式液晶显示模块可以显示各种各样的字符(包括简单的汉字),而且点阵显示模块具有可编程能力,与单片机接口方便。由于以上优点,点阵式液晶显示模块获得了广泛的应用。
本文以LM12864为例介绍了液晶显示器与51单片机的两种连接方式,并给出了例程,对于其它型号的液晶显示器同样具有参考价值。
点阵式液晶显示器LM12864简介
LM12864是内置了HD61202U控制器的128 64点阵式液晶显示器,通过对HD61202U控制器的编程可以实现液晶显示器的各种应用。LM12864具有如下特点:
●可以显示数字、字母、特殊字符、图形、曲线和汉字;
●拥有64 64位(512字节)的显示存储器,其数据直接作为显示驱动信号;
●8位并行数据接口,适配M6800系列时序;
●64路列驱动输出;
●简单的操作指令:显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令;
●功耗低:在显示期间功耗最大为2mW。
LM12864有18个外接引脚,各引脚功能如表1所示:
表1(略)
LM12864的读写时序如图1所示:
图1 读时序图(略)
LM12864与51单片机的接口电路设计
直接访问方式
直接访问方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在计算机总线上,计算机以访问存储器或I/O设备的方式操作液晶显示模块工作。直接访问方式的接口实用电路如图2所示。
图2 写序时图(略)
在图中,计算机8031通过高位地址A11控制CSB;A10控制CSA选通液晶显示屏上各区的控制器HD61202U;8031用地址A9作为R/W信号控制数据总线的数据流向;用地址A8作为D/I信号控制寄存器的选择;E信号由8031的读信号RD和写信号WR合成产生,实现计算机对内置HD61202U图形液晶显示模块的电路连接。电位器用于显示对比度的调节。
这种接线方式的优点在于通过复用为数据总线的P0口来访问液晶显示器,不需占用CPU的其他引脚,节约了资源。但是,P0口带负载能力有限,实际应用中可能需要加上缓冲电路。
间接访问方式
间接控制方式是计算机通过自身的或系统中的并行接口与液晶显示模块连接,如8031的P1和P3口,8255或Z80-PIO等并行接口芯片以及像74LS373类的锁存器等。计算机通过对这些接口的操作,达到对液晶显示模块的控制。这种方式的特点是电路简单,控制时序由软件实现,可以实现高速计算机与液晶显示模块的接口。实用电路图如图3所示。
图3 间接访问方式(略)
图中所示电路中以8031的P1口作为数据口,P3.0为CSA,P3.l为CSB,P3.2为D/I,P3.3为R/W和P3.4为E等信号。与直接访问方式一样,电位器也用于显示对比度的调节。
显示程序设计(以间接访问方式为例)
LM12864的显示区域被分为左右两个区,均为64 64大小,左右区的选择由CSA和CSB的组合来决定。当CSA、CSB的组合为01时,选择左区;当二者的组合为10时,选择右区;二者组合为00或11时均无效。
显示汉字时首先根据汉字字形编出字模数据块,每个汉字如用16 16点阵,则需32个字节数据,汉字字模除手工编写外,也可以使用一些字模提取工具软件创建(如北京精电蓬远公司的提取汉字点阵软件)。
LM12864的显示数据存储器(DDRAM)与显示屏幕的物理位置是一一对应的。当对DDRAM中的某一个单元写入一个字符的编码时,该字符就在对应的位置显示出来。所以要显示字符就必须把字符的编码写入DDRAM中,也就是写入对应的字符产生存储器中。
LM12864内置的HD61202U为一可编程器件,所有显示功能均由指令控制实现。共有7条指令,表2给出了所有指令的编码。
由于LM12864中的显示区共有64行,分为8页,每页8行,这样就必须向两页中的对应列送数据。写每个汉字时,先取字模的上16个字节,写在一页中,再取字模的下16个字节,写在下一页中即可。现给出一个实用的显示汉字的程序段:
WRITE:
MOVDPTR,#CCTAB;取字库的首地址
MOVA,CODE;取待写字符的首地址
MOVB,#20H
MUL AB
ADDA,DPL
MOVDPL,A
MOVA,B
ADDCA,DPH
MOVDPH,A
MOVCOUNT,#00H
WRITE1:
MOVA,PAGER
ORLA,#0B8H
MOVCOM,A;设置起始页值
LCALL PRL0
MOVA,COLUMN
ORLA,#40H
MOVCOM,A;设置起始列值
LCALL PRL0
MOVR3,#10H;循环16次(一页写16个字节)
WRITE2:
MOVA,COUNT
MOVCA,@A+DPTR;取字模代码
MOVDAT,A
LCALLPRL1;将字模代码写入左区
INC COUNT
DJNZR3,WRITE2
INCPAGER;页码加1
MOVA,PAGER
MOVB,#02H
DIV AB
MOVA,B
CJNEA,#00H,WRITE1;页码为奇数时,说明汉字代码还未写完,程序再次跳到WRITE1
RET
变量说明:
CODE:待显示的汉字在字库中的次序
COLUMN:显示的位置(起始列的值)
PAGER:显示的位置(起始页的值)
|