摘 要:在一些应用场合,汉字显示使微型应用系统的界面非常简单、直观,若使用价格低廉的LCD1602实现更能提高系统的性价比。为此文章对LCD1602的汉字显示原理做了说明,除常规的方法外,创新性地提出了拼接法和动态刷新法来满足不同系统的要求。首先通过Proteus+Keil μVision4的联机仿真调试进行了软硬件原理验证,然后在AT89S52的单片机开发板上运行,达到了预期的效果,具有一定的应用参考价值。
关键词:LCD1602模块;汉字显示;AT89S52
中图分类号:TN873.93;TP391.1 文献标识码:A 文章编号:2096-4706(2020)17-0035-03
Abstract:The display interface was very simple and intuitive by Chinese characters in some applications. The cost performance was better achieved by the use of low prices of LCD1602. In this paper,the principle of Chinese characters display technology of LCD1602 was described. Besides the conventional methods,the new methods of putting character together and dynamic refreshing methods were innovative proposed to meet the requirements of different systems. First the verification of principle of hardware and software was carried out by the online simulation through Proteus + Keil μVision4 integrated development environment. Then it runs on the AT89S52 MCU development board and achieves the expected effect,which has certain application reference value.
Keywords:LCD1602 module;Chinese characters display;AT89S52
0 引 言
近几年笔者在指导物理与电气工程学院大学生创新创业项目的训练实践中,制作的单片机应用系统经常要用到一些较单一的界面,以实现用户的设置交互或者测量数值及汉字的直观显示。在此功能的实现中,如果专门采用一些价格昂贵的显示模块就会增加成本,为提高设计的电子系统的性价比,可以采用价格便宜的LCD1602显示模块来替代。由于LCD1602字符代码及点阵字符图形代码数量不多,所以本文通过多种方法的使用尽可能多地构建汉字显示以满足用户界面的需要。下面对LCD1602的汉字显示进行分析、仿真和实验研究。
1 LCD1602的组成结构及工作原理
液晶显示器具有超低辐射、功耗低、散发热量少、纤薄轻巧等特点,其在现代数字产品中得到了广泛应用。LCD1602是一种价格便宜的液晶显示屏,常用在智能性仪表、通信和微型自动化设备中,通常用来显示ASCII码字符,所以被称为“字符型显示器件”[1]。LCD1602中的16代表每行可显示16个字符,02代表总共可显示2行字符。LCD1602分为两种:带背光和不带背光的,控制器大都采用HD44780,带背光的需要加背光电源,外形上更厚些,可根据应用的需要选择是否带背光;芯片工作电压为4.5 V ~5.5 V,工作電流为2.0 mA(5.0 V),最佳工作电压5.0 V,字符尺寸是2.95×4.35(W×H)mm。
LCD1602对外的连线使用标准的14脚(无背光)或16脚(带背光)形式,标为VSS的第1脚是电源地;标为VDD的第2脚接5.0 V电源正极;标为VEE的第3脚为对比度调整端,可调节显示器的对比度,对比度过高时会产生重影,可以通过接一个10 kΩ的电位器调整到合适对比度;标为RS的第4脚是寄存器选择,选择数据寄存器时要置高电平、选择指令寄存器时应接低电平;标为R/ 的第5脚是读/写选择端,读操作要输入高电平,执行写操作这个脚要输入低电平;标为E端的第6脚是使能端,当E端为高电平时可以从液晶模块读取信息,当E端提供下跳沿信号时,可以对液晶模块进行写操作;标为D0~D7的第7~14脚是8位双向数据线。16脚(带背光)形式剩下的第15、16脚分别是背光源正极和负极。RT1602C的内部结构可以分成三部分:LCD控制器、LCD驱动器、LCD显示装备。控制器使用的是HD44780,HD44780是包含了控制器和驱动器的集成电路,可选择5×7或5×10点阵字符,能对每行80个字符进行控制,即控制5×80=400点,包含了40路列驱动器和16路行驱动器,因此HD44780可以驱动16×40点阵的LCD(两行8个字符或单行16个字符)。LCD1602芯片内的存储器有显示缓冲区(DDRAM)、字符发生存储器(CGROM)和用户自定义的字符发生器(CGRAM)三种。HD44780的DDRAM的大小为80个字节,地址分两行,有两个范围00H~27H、40H~67H,实际显示位置分布和排列情况随着LCD的型号而变[2]。
DDRAM与显示屏的显示内容有确定的对应关系,DDRAM中80H到8FH的内容对应显示屏上第一行的显示内容,DDRAM中C0H到CFH的内容对应显示屏第二行的显示内容,共显示32个字符,使用时将显示的字符写入目标要求的行列位置即可。CGROM的作用是把各类字符的代码存储以备调用,出厂时已固化为点阵型显示数据。1602液晶模块内部已经存储了数字、大小写的英文字母、常用的符号和日文假名等,与常见的ASCII码的编码是一致的[3]。
CGRAM是用户自定义点阵型显示数据的存储器,存储用户自己定义的字符代码,其格式有5×11点阵格式和5×8点阵格式2种。CGRAM存储器总共有64个字节,若采用5×8点阵格式,一共可容纳8个自定义字符,地址编码为0x00~0x07,使用时将要显示的自定义字符按照地址编码调用即可。要在LCD的目标位置显示某个符号,应将其ASCII码存入DDRAM相对应的地方,在操作内部寄存器时控制引脚RS和R/ 的电平满足表1的要求。
2 LCD1602模块汉字的显示方法
2.1 简单汉字的显示方法
由于LCD1602内部没有标准汉字库,所以要显示汉字首先就要建立字模数据。可以利用字模软件和手动相结合的办法提取5×8点阵的字模数据,以1对应亮、0对应暗,例如下面一些字的取模结果:
其次把取得的字模数据通过LCD1602的相应指令存储到液晶存储器内部。最后实现汉字显示,用Proteus+Keil μVision4联合仿真或下载到开发板调试[4-6]。
2.2 汉字的拼接显示方法
由于CGRAM的容量数不多,在完成显示的前提下,尽量优先选择字库中已有的字形,节省取模汉字占用的空间,汉字拼接有以下三种方法。
2.2.1 字库+字库拼接法
寻找字库中现有的一些字拼成需要的字,比如亻+卜=仆,工+力=功,木+才=材,还有其它字等。
2.2.2 一部分取模+一部分字库拼接法
对于汉字中的一部分进行取模,另一部分直接取字库中的字形(偏旁或者部首)。
2.2.3 一部分取模+一部分取模拼接法
对于汉字的各部分字形字库中都没有时,可以采用对每一部分分别取模,然后按顺序拼接成整个汉字的方法。
2.3 多个汉字的多次刷新显示方法
如果需要显示的汉字取模数较多,CGRAM空间不够用,可以采用分屏、多次不断刷新CGRAM区的办法来动态显示多个汉字。
3 基于Proteus的仿真及实际运行效果
3.1 实验仿真平台的搭建
在进行仿真前首先搭建实验平台,操作系统:Microsoft Windows XP Professional SP3;集成开发环境IDE-Version:Keil μVision V4.00a,作用是調试软件程序并生成可执行的代码;硬件仿真环境Proteus 7.5 SP3:实现单片机和LCD1602的电路连接及程序执行、效果观察。在Proteus中LCD1602对应的模块为LM016L。
3.2 仿真结果
先在Keil中编辑编译,再联合调试装载到Proteus中运行,仿真结果如图1、图2所示。
3.3 实际运行效果
在仿真程序适当位置加入判忙函数,经调试无误后将生成的十六进制代码下载到AT89S52单片机开发板中,驱动液晶效果与仿真相同,效果如图3、图4所示。
4 结 论
本文给出了利用字符型液晶LCD1602显示汉字的方法,可根据需要手工提取汉字字模,并将字模数据保存在LCD1602的CGRAM存储器,按照要求显示在液晶屏合适位置;新提出的拼接法和多次刷新法增加了显示汉字的途径,但是也应看到受字符型显示点数的限制,并不是所有的汉字都能够显示,有的显示也并不美观。所有方法均有示例程序在Proteus+Keil μVision4环境中的AT89C51和LM016L仿真运行,程序修改后下载到AT89S52单片机开发板中驱动液晶,结果和仿真一致。这几种显示汉字的技术可以为用户提供友好界面,在一些应用场合能够满足用户的要求,降低了产品成本,降低了对使用者的使用要求,可以更广泛地应用在智能仪表、通信、控制等领域,具有一定的实用价值。
参考文献:
[1] 于志赣,刘国平,张旭斌.液显LCD1602模块的应用 [J].机电技术,2009,32(3):21-23.
[2] 谢维成,杨加国.单片机原理与应用及C51程序设计:第3版 [M].北京:清华大学出版社,2014:239-244.
[3] 安红霞.基于AT89S52单片机的1602型液晶屏显示技术研究 [J].牡丹江师范学院学报(自然科学版),2014(3):23-24.
[4] 周润景,张丽娜.基于PROTEUS的电路及单片机系统设计与仿真 [M].北京:北京航空航天大学出版社,2006:1-6.
[5] 邓鹏.Proteus虚拟仿真在单片机实验教学中的应用研究 [J].现代电子技术,2012,35(16):27-29.
[6] 谭筠梅,李玉龙,王履程.基于Proteus的单片机虚拟仿真实验案例设计 [J].实验技术与管理,2018(5):122-125.
作者简介:赵华峰(1970—),男,汉族,陕西渭南人,讲师,硕士,研究方向:计算机应用技术。