08-LCD1602显示字符

LCD1602显示字符

文章目录

  • LCD1602显示字符
    • 1. 硬件参数
      • 1.1 技术参数
      • 1.2 引脚功能
      • 1.3 写入时序
      • 1.4 地址范围、显示内容
      • 1.5 ASCII码表、CGROM出厂光刻图像
    • 2. 软件编程
      • 2.1 框架式编程结构搭建
      • 2.2 初始化
        • GPIO输出模式
        • 写入时序
        • 初始化硬件操作指令
        • 2.4 单字符显示测试
      • 2.3 内容显示
        • 显示测试
        • 显示自定义图案
        • 光标显示设置

1. 硬件参数

1.1 技术参数

image-20210827141438600

1.2 引脚功能

08-LCD1602显示字符_第1张图片

1.3 写入时序

08-LCD1602显示字符_第2张图片

image-20210827141931750

1.4 地址范围、显示内容

08-LCD1602显示字符_第3张图片

DDRAM即是我们在LCD 1602液晶屏幕上看到的内容

硬件控制命令

08-LCD1602显示字符_第4张图片

08-LCD1602显示字符_第5张图片

08-LCD1602显示字符_第6张图片

每个预留ASCII码占8个地址,每个地址对应1个字节,可以保存一个自定义图像

1.5 ASCII码表、CGROM出厂光刻图像

2. 软件编程

2.1 框架式编程结构搭建

  1. 新建中层服务函数LCD1602_Ser.c,LCD1602_Ser.h

image-20210821090428809

  1. 保存

08-LCD1602显示字符_第7张图片

  1. 添加

08-LCD1602显示字符_第8张图片

  1. 打标签

08-LCD1602显示字符_第9张图片

  1. all.h包含LCD1602_Ser.h

08-LCD1602显示字符_第10张图片

  1. LCD1602_Ser.c包含all.h

08-LCD1602显示字符_第11张图片

2.2 初始化

GPIO输出模式

由原理图

08-LCD1602显示字符_第12张图片

LCD1602涉及0#595芯片和GPIO4.5,GPIO4.6

其中0#595芯片相关前面项目已经定义好

定义管脚GPIO4.5,GPIO4.6,并配置成准双向口模式

08-LCD1602显示字符_第13张图片

LCD1602初始化函数

08-LCD1602显示字符_第14张图片

配置成准双向口模式

08-LCD1602显示字符_第15张图片

08-LCD1602显示字符_第16张图片

image-20210821092250564

写入时序

由时序图

08-LCD1602显示字符_第17张图片

RS脚

分成2个函数:写地址和写数据

08-LCD1602显示字符_第18张图片

08-LCD1602显示字符_第19张图片

R/W脚无操作

image-20210821093143204

E脚

翻译时序图

先拉低电平,延时,再拉高电平

08-LCD1602显示字符_第20张图片

需要延时,写一个专用延时函数

同时需要注意的是,被调用的函数要写在前面

LCD 工作速度较慢,延时值需要自己视情况调整

08-LCD1602显示字符_第21张图片

发送数据

595发数据的框架(两个数组+发送函数)已经建好

0#595工作时,关闭1#595

错开时间往数码管发数据和往LCD 1602发数据

08-LCD1602显示字符_第22张图片

发送完数据

08-LCD1602显示字符_第23张图片

数据发送到595芯片后,发送使能下降沿信号,将595芯片内的电平拷贝到LCD 1602内使其显示

写地址和写数据两个函数均如上编写

初始化硬件操作指令

将LCD1602初始化函数外部声明并在主函数调用

初始化函数除了配置IO口模式外,还要执行一系列硬件操作指令

  1. 功能设置
  2. 清除显示
  3. 光标复位
  4. 光标和显示模式
  5. 光标显示控制
  6. 光标移动

08-LCD1602显示字符_第24张图片

08-LCD1602显示字符_第25张图片

至此,初始化完成

2.4 单字符显示测试

显示区域

08-LCD1602显示字符_第26张图片

显示内容

想要显示‘A’,查ASCII表

08-LCD1602显示字符_第27张图片

08-LCD1602显示字符_第28张图片

显示字符有两种方法,ASCII码值和字符ASCII,支持连续显示

字符串显示需要连续发送,在串口部分再涉及。

2.3 内容显示

创建数组用于储存和显示,并声明

LCD 1602的一行肉眼可见16个字节

image-20210821103353909

创建显示函数发送数组内的内容,并声明

08-LCD1602显示字符_第29张图片

创建1602数据分配函数,并声明,主函数调用

08-LCD1602显示字符_第30张图片

1602显示反应速度较慢,相比直接将显示函数放进主循环while(1),少循环999次

此时仅调用显示函数,并未向数组内赋值

视数码管工作情况修改延时值,若轻微闪烁,说明延时值过大,需降低

显示测试

只需要向数组赋值

08-LCD1602显示字符_第31张图片

若用变量显示‘7

08-LCD1602显示字符_第32张图片

‘7’的ASCII=0x37,即0x30+7

08-LCD1602显示字符_第33张图片

1602用两个字符位置显示‘10’

08-LCD1602显示字符_第34张图片

变化显示

08-LCD1602显示字符_第35张图片

显示自定义图案

image-20210827203640461

08-LCD1602显示字符_第36张图片

08-LCD1602显示字符_第37张图片

08-LCD1602显示字符_第38张图片

08-LCD1602显示字符_第39张图片

一个是发送‘0’的ASCII值

一个是ASCII值是0

可以充分利用CGRAM的空余空间,比如显示某些汉字

08-LCD1602显示字符_第40张图片

光标显示设置

在LCD显示函数内

创建变量

image-20210821144517576

switch选择

08-LCD1602显示字符_第41张图片

在.h声明,主函数调用光标显示变量

08-LCD1602显示字符_第42张图片

你可能感兴趣的:(单片机)