51单片机学习笔记———14.LCD1602工业显示屏

编程入门 行业动态 更新时间:2024-10-11 21:24:33

51<a href=https://www.elefans.com/category/jswz/34/1769836.html style=单片机学习笔记———14.LCD1602工业显示屏"/>

51单片机学习笔记———14.LCD1602工业显示屏

LCD1602工业显示屏

LCD工业显示屏解读:

共有16个引脚,其中D0~D7为收发数据引脚,为双向并行数据接口。

  • 16代表每一行能够显示16个空格
  • 2代表总共两行

因为每一个字节能够显示0和1,有两种可能,所以要将32位全部显示完全的话,至少需要2^5,也就是5位,所以我们可以设置8位,也就是一个字节来发送数据,这样比较方便

其中第四脚比较特殊,用来决定是用来确定位置还是发送我们想要显示的数据

RS=0确定位置
RS=1确认数据

显示数据的步骤:

  1. 初始化LCD1602

  2. 发送指令(RS=0) ----确定位置

  3. 发送数据(RS=1)-----确认数据

    `RS`为低电平时为发送指令指令:决定数据将要在`LCD`的哪一个位置显示`RS`为高电平时发送数据发送的数据要转换成二进制,然后再转换成16进制
    

因为只需要五位来发送数据,所以多出来的三位我们可以选择性的设置为0或者为1,现在我们将最高位设置为1
假如我们要发送指令1000 0001,可以看到,最高位为1,然后我们要选择发送到LCD的哪个位置,因为地址通常都是十六进制,所以根据LCD1602内部显示地址,我们可以选择任意我们想要发送的位置,具体图如下:

所以我们可以编写一个发送数据的代码,选择发送的位置:

LcdWrite_Cmd(cmd);//写指令,RS=0

此时的RS=0
同理,接下来我们要发送我们想要显示的东西,只需让RS=1,于是:

 LcdWrite_Data(data);//写数据,RS=1

不过在此之前,我们要先将LCD1602初始化一下,可以根据官方手册来编写相应的代码:

  • 官方初始化手册:

LCD1602初始化代码:

void LcdInint(cmd)
{Delay15ms();LcdWrite_Cmd(0x38);Delay5ms();LcdWrite_Cmd(0x08);LcdWrite_Cmd(0x01);LcdWrite_Cmd(0x06);LcdWrite_Cmd(0x0c);
}

总体思路:

int main()
{LcdInint();//初始化LCD1602LcdWrite_Cmd(cmd);//写指令,RS=0LcdWrite_Data(data);//写数据,RS=1
}

根据时序图和时序参数写发送数据跟指令部分的代码

需要注意的是,发送数据跟发送指令差的只是RS的状态,所以我们只需写一个函数,在其中修改RS的状态即可完成两个功能。

我们可以看到上面有四路时序,而看第二路R/W的状态在刚开始的时候可高可低,然后中间的时候一直是低电平状态,最后也是可高可低,所以我们不妨将R/W的状态一直设置为低电平状态,也就是R/W=0

单片机跟LCD1602一共有16条线接口,其中DB0~DB7为双向并行数据接口,

根据时序图写代码如下:

A: EN = 0;//A点,EN  = 0Delay1ms();//A-B延时一段时间,可随意
B: P2 = 0x11;//B点单片机准备发送数据,可随意指定Delay1ms();//B~C延时一段时间
C:变化完成Delay1ms();
D:EN = 1;//D点EN = 1Delay1ms();//D~E点延时一段时间
E:EN变化完成Delay1ms();
F:EN = 0;//F点EN = 0Delay1ms();//F~G延时一段时间
G:EN变化完成Delay1ms();
H:DB端口可高可低

更多推荐

51单片机学习笔记———14.LCD1602工业显示屏

本文发布于:2023-07-27 22:09:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1226452.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单片机   显示屏   学习笔记   工业

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!