08-LCD1602显示字符

LCD1602显示字符

1. 硬件参数

1.1 技术参数

image-20210827141438600

1.2 引脚功能

image-20210827141607643

1.3 写入时序

image-20210827141910378

image-20210827141931750

1.4 地址范围、显示内容

image-20210827142156296

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

硬件控制命令

image-20210827142724903

image-20210827143043320

image-20210827143122953

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

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

image-20210827143458777

image-20210827143605647

2. 软件编程

2.1 框架式编程结构搭建

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

image-20210821090428809

  1. 保存

image-20210821090528884

  1. 添加

image-20210821090548932

  1. 打标签

image-20210821090656535

  1. all.h包含LCD1602_Ser.h

image-20210821161400521

  1. LCD1602_Ser.c包含all.h

image-20210821090725204

2.2 初始化

GPIO输出模式

由原理图

image-20210821091009639

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

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

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

image-20210821091237663

LCD1602初始化函数

image-20210821091732212

配置成准双向口模式

image-20210821091838579

image-20210821092230085

image-20210821092250564

写入时序

由时序图

image-20210821092548408

RS脚

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

image-20210821092932950

image-20210821093026438

R/W脚无操作

image-20210821093143204

E脚

翻译时序图

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

image-20210821094014425

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

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

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

image-20210821093401435

发送数据

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

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

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

image-20210821094525812

发送完数据

image-20210821094627702

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

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

初始化硬件操作指令

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

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

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

image-20210821100208263

image-20210821100257461

至此,初始化完成

2.4 单字符显示测试

显示区域

image-20210821100932597

显示内容

想要显示‘A’,查ASCII表

image-20210821102121832

image-20210821102950406

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

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

2.3 内容显示

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

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

image-20210821103353909

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

image-20210821103921543

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

image-20210821104652916

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

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

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

显示测试

只需要向数组赋值

image-20210821110924760

若用变量显示‘7

image-20210821111237016

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

image-20210821111433302

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

image-20210821111914564

变化显示

image-20210821112019397

显示自定义图案

image-20210827203640461

image-20210821112335350

image-20210821112413239

image-20210821142003161

image-20210821142104150

一个是发送‘0’的ASCII值

一个是ASCII值是0

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

image-20210827203615755

光标显示设置

在LCD显示函数内

创建变量

image-20210821144517576

switch选择

image-20210821144609015

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

image-20210821144653623

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值