基于51单片机的汉字LCD智能显示模块设计
扫描二维码
随时随地手机看文章
引言
在电子产品设计中,人机交互显示界面是必不可少的工作,目前一般使用的液晶显示器均为七段笔划式,只能显示数字和少量字符,功能往往受到局限,对于较复杂的字符或图形则无能为力。而lcd智能型显示模块则是一种低功耗、低损耗、低价值的显示器件,它不但可以显示各式各样的字符、汉字和图形,同时具有可编程能力,且与单片机接口方便,基于以上优点,lcd智能显示模块获得了广泛的应用。
系统组成
本系统主要由三部分组成,分别为单片机,lcd模块和flash字库,图1所示是该系统的硬件原理框图,由于显示所需要占用的资源过多(本设计采用的是16×16点阵,每个汉字存储需要32个字节),而单片机内部ram资源及其有限,所以系统设计时有必要扩展—flash存储器,i2c接口主要负责通讯,该接口具有通讯速度较快,器件之间电气部分设计较好等特点,可以使接口部分达到设计标准。
汉字的显示原理
汉字一般是以点阵式存储的,如16×16,24×24点阵,汉字的字模其实是汉字字形的图形化,所谓16点阵字模,就是把汉字写在一个16×16的网格内,汉字的笔划通过某网格时该网格就对应1,否则该网络对应0,这样,每一网络均对应1或0,把对应1的网格连起来看,就是这个汉字,汉字就是这样通过字节表示其点阵存储在字符字库中的,为了方便查找所需汉字的点阵,每个汉字都与一个双字节的内码一一对应,通过汉字的内码可以计算出它的点阵起始字节。现以16点阵为例来进行说明,首先,可由内码计算出他在汉字库中的区位码,其计算公式为:
bq=bn1-160
bw=bn2-160
式中,bq表示区码,bw为表示位码,而bn1和bn2则分别表示内码的第一字节和内码的第二字节。
当这些区位码被计算出来之后,就可以用区位码得到它在汉字库中字模第一个字节的位置,即:
(bq×94+bw)×32
这样,接下来就可以向连续读出由32个字节组成的该字的点阵数据。
主要器件介绍
◇ 显示模块lm12864
lm12864是内置了hd61202u控制器的128×64点阵式液晶显示器,lm12864的显示区域被分为左右两个区,均为64×64大小,左右区的选择由csa和csb的组合来决定,当csa、csb的组合为01时,选择左区,当二者的组合为10时,选择右区,二者组合为00或11时均无效,lm12864内置的hd61202u为一可编程器件,通过对hd61202u控制器的编程可以实现液晶显示器的各种功能,所有显示功能均可由指令控制实现,本系统共有7条指令。
◇ flash存储器
串行flash存储器以其体积小、密度高、功耗低、操作易而备受青睐,本文简单介绍了megawin公司生产的flash存储器mm36sb020e,mm36sb020e为2m×8bit串行flash,大小为256kbyte,接线方式可采用2线和3线制,器件的忙判断可以由内部的状态寄存器来判断,也可以通过外部引脚busy来判断,可以说,该flash不仅操作十分简单,并且可以适用于多个设计方案。
通常可以把汉字库放在flash里,典型的汉字库可选用ucdos下的字库,(如16点阵字库hzk16),但需要256kb空间,读取也很不方便,鉴于实际应用中需要的汉字非常少,因此可以自己制作小的汉字库,在这个小字库里只包含系统需要的汉字, 需要显示某个汉字时,先算出它的区位码,再求出点阵起始位置,接着从flash中顺序调出该字的点阵数据并存在缓冲区里,最后依次送往lcd显示,以描出该字。
软件设计
◇ 字库制作和维护软件设计
汉字库可存储在2线串行存储器mm36sb020e中,该存储器分为2048页,每页为128字节的存储单元,且带有128个字节的缓冲区,它有严格的时序和规定的命令格式,操作时可以通过其特有缓冲区(128字节)对其内部进行读或写,器件的智能显示接口模块通过i2c通讯接口从外部获取汉字点阵库的源数据,并根据汉字的区位码确定其点阵信息在汉字库中的存放位置,接着把存储器的点阵信息整页读出到缓冲区进行修改,最后再写入存储器,操作结束时,应清除新指令标志以免重复响应,字库制作与维护的流程如图2所示。
◇ 显示软件设计
lm12864中的显示区共有64行,分为8页,每页8行,这样就必须向两页中的对应列送数据,实际上,在写每个汉字时,一般先取字模的上16个字节并将其写在一页中,再将字模的下16个字节写在下一页中即可。共显示流程如图3所示。
结束语
本文所介绍的这种lcd智能显示模块不但能够显示数据,也能够显示中文文字和图形,其显示效果远远超过数码管;随着其价格的不断下降,该模块无疑将被越来越多的智能系统所采用。