51单片机完全学习——LCD1602液晶显示屏

一、数据手册解读

通过看数据手册我们需要知道,这个屏幕每个引脚的定义以及如何进行发送和接收。通过下面这张图我们就可以知道,这些引脚和我们的编程是有关的,需要注意的是,这里我们在接线的时候,一定要把DB0-DB7接到同一个端口,意思就是要接P0就都接P0。这样方便我们直接去处理。我们这里使用的是并行数据传输,也就是说并不像我们之前学习的I2C和SPI接口,需要一位一位的接收和发送。这里的8位数据是同时进行传输的。因此时序上也会有一些区别。

根据上面这张图片,我们需要知道我们要那些底层的函数,我们只想在LCD1602上进行显示,因此我们这次不需要读的一些函数,只需要一个写指令和一个写数据函数。因此具体的函数实现如下

void lcd1602_write_cmd(uchar cmd)
{
	LCD1602_DABUS = cmd;
	LCD1602_EN = 1;
	LCD1602_WR = 0;
	LCD1602_RS = 0;
	LCD1602_EN = 0;
	delay40us();
}

void lcd1602_write_date(uchar date)
{
	LCD1602_DABUS = date;
	LCD1602_EN = 1;
	LCD1602_WR = 0;
	LCD1602_RS = 1;
	LCD1602_EN = 0;
	delay40us();
}

相信大家看到了每个函数结束会有一个延时函数,这是因为不论是写指令还是写数据,LCD1602内部的芯片都需要一定的时间来进行处理,这里我们的延时就是让CPU等一等内部的芯片。

二、LCD1602常用指令集

我们需要注意的是,最后一个指令,判断忙碌信号,我的LCD1602忙信号老是过不去,因此我在前面使用了延时,而不是用这种检测方式。对于上面的指令你可以将它想象成为,你要使用一个东西之前,你需要先对他进行一些设置,也就是进行初始化。

三、LCD1602初始化及显示函数

void lcd1602_init(void)
{
	lcd1602_write_cmd(0x01);      //发送清屏指令
	delay2ms();                   //等待指令执行
	lcd1602_write_cmd(0x06);      //模式设置 写入数据后光标右移,写入数据后显示屏不移动
	lcd1602_write_cmd(0x0f);      //显示功能开 有光标 光标不闪烁
	lcd1602_write_cmd(0x14);      //设定显示屏或光标移动方向 设置为光标右移1格,且AC值加1
	lcd1602_write_cmd(0x38);      //数据总线位数为8位 显示2行 5*7点阵
}
//设置需要显示字符的坐标
//x取值0-15  y取值0-1
void lcd1602_setcoord(uchar x, uchar y)
{
	uchar addr = 0;
	if (y == 0)
	{
		addr = 0x80 + x;
	}
	else
	{
		addr = 0xc0 + x;
	}
	lcd1602_write_cmd(addr);
}
//在LCD1602上显示字符串,而且这个函数还可以实现,自动换行显示
void lcd1602_display_str(uchar x, uchar y, uchar *str)
{
	uchar i = 0;
	lcd1602_setcoord(x, y);
	while (str[i] != '\0')
	{
	  lcd1602_write_date(str[i]);
		if (((i + x) == 15) && y == 0)
		{
			lcd1602_setcoord(0, 1);
		}
		else if (((i + x) == 15) && y == 1)
		{
			lcd1602_setcoord(0, 0);
		}
		i++;
	}
}

这张图片就是DDRAM内存里面的地址,如果我们想要显示一个字符,我们首先需要发送,一个地址,也就是说我们需要告诉LCD1602在那个地方进行显示,然后发送我们需要显示的数据。因此在每次显示前都需要设置地址。但是我们需要注意的是同一个地址只能显示一个字符,不然的话就会进行覆盖。上面代码里面的第二个函数就是用来设置地址的,这个函数会将我们想要显示的坐标位置,转换成内部内存的地址,我们只需要告诉函数x,y的坐标函数就会自己转换。上面代码里面的最后一个函数就是用来显示字符串的。只需要给他传入起始坐标,和字符串的头指针就可以完成显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/902853.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

变流升压一体机:能源领域的新兴力量与优秀品牌

在当今能源转型的大背景下,变流升压一体机作为一种创新型的电力设备,正逐渐成为新能源领域的关键角色。 变流升压一体机是一种综合性很强的光伏箱式变电站设备,它将储能变流器、升压变压器、高压环网柜、低压配电箱等多种设备集成在一个集装箱…

LeetCode.冗余连接(并查集以及广度优先搜索)

684.冗余连接| 传送门:. - 力扣(LeetCode) 树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中…

上线 24 小时,爆了!

产研团队(兼客服)已爆单🔥🚀💥!(bushi) 在此由衷感谢各位小伙伴的信任🤩! 还没有试用的小伙伴赶紧去围观👇️👇️👇️ …

高效数据集成案例:从聚水潭·奇门到MySQL

聚水潭奇门数据集成到MySQL的技术案例分享 在企业信息化建设中,数据集成是实现业务流程自动化和数据统一管理的关键环节。本文将分享一个具体的系统对接集成案例:如何将聚水潭奇门平台上的销售出库单数据高效、可靠地集成到MySQL数据库中,以…

AUTOSAR-Com模块

COM 文章目录 COMCOM 基础介绍COM主要功能AUTOSAR COM 模块 发送模型Signal 信号/信号组发送信号属性—Triggered属性Pending属性信号的初始化信号的对齐方式(大小端)信号的收发发送接收 字节序转换和符号扩展信号的过滤机制过滤处理信号传输模式信号流和…

【十进制转十六进制数】

【十进制转十六进制数】 C语言版本C 版本Java版本Python版本 💐The Begin💐点点关注,收藏不迷路💐 从键盘接收一个整数,编程实现将其转换成十六进制数。 输入 一个整数 输出 十六进制数 样例输入 100样例输出 6…

day01-ElasticStack+Kibana

ElasticStack-数据库 #官网https://www.elastic.co/cn/ #下载7.17版环境准备 主机名IP系统版本VMware版本elk110.0.0.91Ubuntu 22.04.417.5.1elk210.0.0.92Ubuntu 22.04.417.5.1elk310.0.0.93Ubuntu 22.04.417.5.1 单机部署ES 1.下载ES软件包,放到/usr/local下 […

HTML3D旋转相册

文章目录 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐

react18中react-thunk实现公共数据仓库的异步操作

redux及react-redux都只能实现数据的同步修改更新,有点类似于vue中的mutation,只能做同步操作,异步的话不用actions来实现。由于在项目始终不可避免要实现的异步数据的更新,这明显不够用了。是时候引入我们的异步中间件redux-thun…

计算机组成原理笔记9(指令系统,立即寻址,直接寻址,间接寻址.....)

指令操作码 操作码的位数决定了不同功能指令的多少,位数越多,所能表示的操作功能就越丰富。指令的操作码通常有两种编码格式: 定长操作码 定长操作码对于简化硬件设计,减少指令译码时间非常有利,例如IBM370指令系统&a…

Matlab 火焰识别技术

课题介绍 森林承担着为人类提供氧气以及回收二氧化碳等废弃气体的作用,森林保护显得尤其重要。但是每年由于火灾引起的事故不计其数,造成重大的损失。如果有一款监测软件,从硬件处获得的图像中监测是否有火焰,从而报警&#xff0…

uv: 一个统一的Python包管理工具

uv是由Astral公司开发的一个极其快速的Python包管理器,完全用Rust编写。它最初在2月份发布,作为pip工作流的替代品。现在,uv已经扩展成为一个端到端的解决方案,可以管理Python项目、命令行工具、单文件脚本,甚至Python本身。可以说,uv就像是Python界的Cargo:一个快速、可靠、易…

XQT_UI 组件|03 |加载组件 XQtLoading

XQtLoading 使用文档 简介 XQtLoading 是一个自定义的加载动画组件,旨在为用户提供可配置的旋转花瓣动画效果。它可以在应用程序中用于指示加载状态,提升用户体验。 特征 可配置性:用户可以根据需求调整旋转周期、缩放周期、最大/最小缩放…

置换环模板题E - Permute K times 2

输入样本 1 6 3 5 6 3 1 2 4样本输出 1 6 1 3 2 4 5每次操作后, P P P 都会发生如下变化: 第一次操作后, P P P 为 ( 2 , 4 , 3 , 5 , 6 , 1 ) (2,4,3,5,6,1) (2,4,3,5,6,1) 。第二次操作后, P P P 为 ( 4 , 5 , 3 , 6 , …

溪源飨提高免疫力治未病:硒+辅酶Q10强力组合

上周我和女友在亲友的见证下举行了庄重的订婚仪式。我和女友是经朋友介绍才认识的,认识时间并不算长。第一次见面,彼此就被对方深深地吸引了,真可谓一见钟情。我喜欢她那恬静的美,难以忘怀她那散发着迷人气息的双眸;她…

CMakeLists.txt 编写规则

目录 1. 注释 1.1 注释行 1.2 注释块 2. CMakeLists.txt的编写 2.1 同意目录下的源文件 2.2 SET指令 2.3 file和aux_source_directory 2.4 包含头文件 2.5 生成动态库和静态库 2.6 链接库文件 2.7 message指令 2.8 移除操作 2.9 find_library和find_package 3. 常…

【瑞吉外卖】-day01

目录 前言 第一天项目启动 获取资料 创建项目 ​编辑 连接本地数据库 连接数据库 修改用户名和密码 ​编辑创建表 创建启动类来进行测试 导入前端页面 创建项目所需目录 检查登录功能 登录界面 登录成功 登录失败 代码 退出功能 易错点 前言 尝试一下企业级项…

部署DNS主从服务器

一。DNS主从服务器作用: DNS作为重要的互联网基础设施服务,保证DNS域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速日不间断的域名查询服务 DNS 域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件&…

基于Multisim的单双声道音频功率放大电路设计与仿真

1.额定输出功率≥5W(fi1KHz,Ui100mV) 2.频率响应范围150Hz~13KHz 3.高、低音频端提升或衰减3dB 链接:https://pan.baidu.com/s/1exsBJoXdkb-gPr1IkxNvDg 提取码:jh5j

技术分享 | 大语言模型增强灰盒模糊测试技术探索

大语言模型凭借其庞大的参数规模,能够通过无监督学习从海量文本中获取知识,从而不仅能够深刻理解文本语义,还能准确识别文本的格式和结构。凭借对不同数据结构的深度理解,大语言模型已在众多领域得到广泛应用。其中,尤…