APP下载

字符型LCD1602显示分析与实现

2022-11-10苏杰仁

科技资讯 2022年22期
关键词:低电平字符时序

苏杰仁

(广州番禺职业技术学院 广东广州 511483)

字符型LCD1602 是单片机课程常用的显示屏之一,网络上有很多相关的驱动代码,用户可以直接下载修改使用,但这样用户只是知道在LCD1602 显示出字符,无法理解LCD1602 的工作原理及显示过程。该文介绍字符型LCD1602的写命令的时序分析及其代码编写,让读者更深入地理解LCD1602的显示步骤及原理。

1 LCD1602显示屏介绍

字符型LCD1602 是一种专门用于显示字母、数字、符号等点阵式LCD,它采用标准的16 脚(带背光)接口,各引脚接口说明如表1所示。

表1 LCD1602引脚接口说明

2 LCD1602字符显示分析

LCD1602显示字符过程分三步:第一步,LCD1602初始化;第二步,写入显示的地址;第三步,写入显示的内容。

向LCD1602 写入内容,需要对它进行写操作,写操作时须满足要求的建立时间、保持时间和E 脉宽。时序图如图1所示。

图1 LCD1602写命令时序图

对于时序[1],采用折点分析法完成写操作的代码编写。在写时序图的各个转折点处绘制分割线,并做标记A、B、C、D、E、K、M、N、O、P,分析如下。

RS:在AB、BN、NQ 阶段,RS 可高可低,取写命令RS为低电平,即RS=0。

R/W:在AB、NQ 阶段,R/W 可高可低,在BN 阶段R/W为低,取R/W为低电平,即R/W=0。

对于E与DB0~DB7则结合分析。

A点:使能拉低,即E=0;

B点:数据准备,P2=0x00|0x80;

C点:数据准备完毕,完成转换,此时数据无效;延时CD;

D点:使能拉高,即E=1;延时DE;

E点:数据起效,E=1;延时EK;

K 点:使能拉低,即E=0;延时KM,有效数据传输完毕;

M点:准备下一个周期的数据传输。

其中每段延时时间间隔,在LCD1602 的datasheet中均有着严格的说明,如表2所示。

表2 LCD1602写模式延时间隔表

如表2 中tPW时间间隔不能小于450 ns,取单片机晶振为12 MHz,即得一个机器周期为1 μs[2],故延时_nop_();即可,其他时间间隔采用类似的方法处理。

根据以上思路分析得写命令C语言代码如下。

若写数据,取RS=1;若读数据,则取RW=1。

2.1 LCD1602初始化

单片机[3]对LCD1602 的读写、屏幕和光标的操作都是通过控制命令编程来实现的,共有11 条,如表3所示。

表3 LCD1602控制命令表

注意,指令9 中的BF 为忙标志位,高电平时表示忙,此时LCD1602不能接收命令或者数据,低电平时表示不忙,此时LCD1602 可以接收命令或者数据。每次写指令、读/写数据操作均需要对LCD1602进行忙信号检测。

而LCD1602 的初始化在模块设计时已经规定好,只需要单片机向LCD 模块发送相关的指令即可完成,过程如下。

延时5ms;//延时5ms

写指令38H;//显示模式设置

延时5ms;//延时5ms

写指令08H;//显示关闭

延时5ms;//延时5ms

写指令01H;//显示清屏

延时5ms;//延时5ms

写指令06H;//显示光标移动设置

延时5ms;//延时5ms

写指令0CH;//显示开及光标设置

延时5ms;//延时5ms

2.2 写入显示的地址

要显示字符,首先需要向LCD1602 写入显示字符地址,也就是告诉LCD1602在哪个位置显示字符,图2是LCD1602的内部显示地址。

图2 LCD1602内部显示地址

例如:第一行第一个字符的地址是00H,根据表2控制命令8,写入显示地址时要求最高位D7 恒定为高电平1,所以实际写入的地址应该是00000000B(00H|10000000B(80H)=10000000B(80H)),代码语句为LCD_Wcmd(0x00|0x80)。如需写入其他显示地址,则用该显示地址替换语句中的0x00即可。

2.3 写入显示的内容

LCD1602 液晶模块内部的字符发生存储器(CGROM)存储了160 个不同的点阵字符图形,如图3所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的地址代码,这些地址代码大部分跟字符的ASSIC 码一致,比如大写的英文字母“H”在字符发生存储器的地址代码是0100 1000B(48H)(“H”的ASSIC 码亦为48H),显示时模块把地址48H中的点阵字符图形显示出来,我们就能看到字母“H”。

图3 字符代码与图形对应图

3 使用单片机驱动LCD 1602显示“Hello Xiao-Pan!”字符串

3.1 硬件电路设计

把LCD1602的RS、RW、EN、DB0~DB7引脚分别接到单片机的P05、P06、P07、P20~P27 引脚,具体仿真[4]电路连接原理图如图4所示。

图4 1602LCD硬件原理图

图5 1602LCD字符显示仿真图

3.2 程序设计

按照2分析要求,完成1602LCD初始化、写入显示地址、写入显示的内容代码[5]编写,即可显示字符。具体主程序如下。

4 实验结果

以上思路分析,使得字符型LCD1602 显示字符的操作变得简单易懂。代码编译后在Proteus 软件上仿真[6]显示结果见图5。

如需显示汉字,一个汉字占用两个字节,即16×16=256 个像素,而LCD1602 的每个字符像素大小为5×8=40,因此只能显示一些如“一”“丁”等简单的汉字[7],并且需要在LCD1602字符转换软件上描写字,把字转换成代码之后方可在显示屏上显示,这便是汉字显示以及图形显示LCD的基础。

猜你喜欢

低电平字符时序
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
清明
基于GEE平台与Sentinel-NDVI时序数据江汉平原种植模式提取
Python实现图片转字符画
你不能把整个春天都搬到冬天来
正则表达式快速入门
图片轻松变身ASCⅡ艺术画
一种实用的电脑接口判断方法
数字电子技术的应用
浅谈物理电路与数字电路