单片机学习笔记---LCD1602调试工具

LCD1602调试工具

这一节开始之前先说明一下,模块化编程相关的知识(就是将代码分成多个文件来写,比如函数的定义放在.c文件中,函数的声明写在.h文件中)属于是C语言的内容,学过C语言的伙伴应该都知道。由于这是单片机专栏,所以就不在这单独写一篇博客了,可能之后会补充在我的其他专栏。

进入正题,本节主要讲LCD1602调试工具。

长话短说就是使用LCD1602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示

这里提供的LCD1602代码属于模块化的代码,使用者只需要知道所提供函数的作用和使用方法就可以很容易的使用LCD1602

LCD1602液晶屏就是这个东西

把它插到开发板上的排孔里

插进去之后就会显示东西。

旁边这个东西是定位器,左右拧可以调节它的对比度,如果发现它太暗了,就可以调亮一点,如果全是黑点的话,就把它调暗一点。

注意,我们插上这个LCD之后,数码管就没用了,数码管会显示乱码。

接下来看一下它的原理图:

它连的口就是单片机的P0的8个口,还占用了P2的3个口,分别是P26,P25,P27,一共是11个口。

其实这个P0口也是数码管的段选端所连接的口。

由于P26,P25,P27被这个液晶屏占用了,由于引脚冲突,所以D6,D7,D8号LED就不能再用了,它会乱闪。

正是因为这个液晶屏插上之后,只跟数码管和D6,D7,D8号LED冲突,对其他东西没有冲突,所以使用它来进行调试就很方便了。

接下来新创建一个工程,写好框架后

把这两个LCD1602驱动代码复制到刚刚创建好的工程文件中

这两个程序文件的获取方式我放在评论区了,自取。

然后再在这个右键添加已存在的文件

然后按住Ctrl把这两个文件都添加上

点击Close之后,看见左栏就出现了这两个文件

双击打开就可以看到里面已经是写好的程序,如果是自己写的话就得花一点时间了。

.h文件的函数一一对应这张表里的函数

我们来试试这些函数的功能

注意,在使用之前先调用LCD_Init()初始化

先试试第一个显示字符LCD_ShowChar函数

我们试着来调用一下看看效果

编译后我们看到5个警告

这个5个警告是因为我们定义了别的函数,但是没有调用,这些警告我们可以不去管它。

Keil报警告,如何消除警告?如果嫌警告碍眼,可以进行以下操作,在Disable warning numbers框框中写上报警告的函数,比如第16行报警告,就写上16

再次编译

就没有错误和警告了!

无错误无警告后可以下载下来看看效果

它的确是在LCD的第一个位置上显示“A”这个字符

数码管和左边的两个LED乱闪,这都是正常显现,不用管

然后我们继续试试显示字符串函数的功能

调用它

下载看看

第一行的第三个位置开始显示一个字符串“Hello”

如果字符串过长,超出了屏幕范围,就不会显示后面的了。

再试试显示数字的代码

LCD_ShowNum()的定义如下:

调用它看看效果

显示了123

再试试显示有符号的数字

调用它

显示-66

继续试试显示16进制数

调用

显示A8

试一下显示二进制数

调用

显示10101010

液晶屏的作用就是可以方便我们直观地测试结果

比如你说1+1等于2,怎么证明呢?

我们就可以验证一下,让它的结果显示在LCD液晶屏上

结果显示002

那就证明了1+1=2

所以它的作用就是验证程序的正确性

如果还想更进阶地使用别的函数,比如Delay函数,我们可以把之前经常写的Delay函数的定义写好放进刚刚创建好的工程文件中。(Delay函数的.c和.h文件如果你没有,就在评论区自取)

添加进来

双击打开可以看到Delay函数的定义和声明

写程序来验证一下:

我们想要的效果是result每过一秒就加1,那么我们写的程序正不正确呢?所以就需要打印在液晶屏上看看结果正不正确。

可以看到它真的是每过一秒就加1,证明我们的程序是正确的!

以上这就是本节的内容!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中static的用法说明

1.修饰变量 变量分为局部变量和全局变量,但他们都是存在内存的静态区。 静态全局变量:作用域仅限于变量被定义的文件中,其他文件即使用extern声明也没法使用它。准确地说作用域是从定义之处开始,到文件结尾处结束,在…

Vue2.0+Element实现日历组件

(壹)博主介绍 🌠个人博客: 尔滨三皮⌛程序寄语:木秀于林,风必摧之;行高于人,众必非之。 (贰)文章内容 1、安装依赖 npm install moment2.29.4 --savenpm install lunar0.0.3 --savenpm install lunar-java…

配置华为交换机生成树VBST案例

知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系 厦门微思网络​​​​​​https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom 思科认证CCNA\CCNP\CCIE 红帽认证Linux\RHCE\RHC…

代理IP使用指南:风险与注意事项

在当今的数字化时代,使用在线代理IP已经成为一种常见的网络行为。然而,在使用这些代理IP时,我们需要注意一些风险和问题,以确保我们的网络安全和隐本私文。将探讨使用代理IP时需要注意的几个关键问题。 1、代理IP的安全性 使用代理…

设计模式:工厂方法模式

工厂模式属于创建型模式,也被称为多态工厂模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离,有子类决定要实例化的产品是哪一个,把产品的实例化推迟到子类。 使用场景 重复代码 : 创建对象…

OpenAI ChatGPT-4开发笔记2024-07:Embedding之Text Similarity文本相似度

语义相似性semantic similarity 背景结果 背景 OpenAI has made waves online with its innovative embedding and transcription models, leading to breakthroughs in NLP and speech recognition. These models enhance accuracy, efficiency, and flexibility while speed…

算法每日一题: 边权重均等查询 | 公共子祖先

大家好,我是星恒,今天给大家带来的是一道图里面有关公共子祖先的题目,理解起来简单,大家 题目:leetcode 2846 现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n …

聊聊大模型 RAG 探索之路的血泪史,一周出Demo,半年用不好

大家好,今天我们来继续看看 RAG 落地的一些有趣的事儿,从技术社群早上的讨论开始,喜欢技术交流的可以文末加入我们 一、从一周出Demo、半年用不好说起 最近读了读2024-傅盛开年AI大课,其中有讲到RAG环节,三张片子比较…

多路IO复用服务器——select模型和poll模型

文章目录 一、多路IO复用服务器是什么?二、使用原理三、种类四、select模型五、select模型优缺点六、poll模型总结 一、多路IO复用服务器是什么? 服务器要与客户端完成tcp连接,并保持连接维护可用sock。 每个都需要准备一个进程管一个sock&a…

解决Xshell连接远程linux服务器,关闭Xshell程序对应的运行程序也相应关闭的问题

1.先安装screen yum install screen 2.具体步骤 screen -S test #创建一个新的窗口,这个窗口关闭时程序不会关闭 java -jar test.jar #运行jar包 3.杀掉java进程后,重新启动java项目前要执行一下screen -S test,即以后启动一个项目前&#…

计算机网络(第六版)复习提纲15

第四章 网络层 处于五层体系结构的第三层 SS4.2 网际协议IP 与网际协议IPv4配套的三个协议: 地址解析协议ARP 网际控制报文协议ICMP 网际组管理协议IGMP 一、虚拟互联网络 1.四层次的互联设备 2.虚拟互连网络 网际协议IP使得性能各异的网络在网络层上看来好像是一…

2023.1.23 关于 Redis 哨兵模式详解

目录 引言 人工恢复主节点故障 ​编辑 主从 哨兵模式 Docker 模拟部署哨兵模式 关于端口映射 展现哨兵机制 哨兵重新选取主节点的流程 哨兵模式注意事项 引言 人工恢复主节点故障 1、正常情况 2、主节点宕机 3、程序员主动恢复 先看看该主节点还能不能抢救如果不好定…

统一异常处理

统一异常处理 统一异常处理创建一个类定义方法ControllerAdvice和ExceptionHandler注意事项 统一异常处理 创建一个类 首先,我们来创建一个类,名字随意,这里我们取名ERHandler 定义方法 在ERHandler中,我们可以定义几个类,参数用来接收各种异常,这里的异常可以是任意的,返回…

【每日一题】YACS P817:两数归零

题目描述 这是上海计算机学会竞赛P817&#xff1a;两数归零标签&#xff1a; m a p map map、二分查找给定 n n n 个整数 a 1 , a 2 , a 3 , . . . , a n a_1,a_2,a_3,...,a_n a1​,a2​,a3​,...,an​&#xff0c;请统计有多少二元组 i , j i,j i,j 满足 i < j i<j…

面试官:你可以说一说你对Jmeter元素的理解吗?下

面试官&#xff1a;你可以说一说你对Jmeter元素的理解吗&#xff1f;下 监听器配置元素CSV数据集配置HTTPCookie管理器HTTP请求默认值登录配置元素 监听器 Listeners&#xff1a;显示测试执行的结果。它们可以以不同的格式显示结果&#xff0c;例如树、表、图形或日志文件 图…

嵌入式学习-驱动

嵌入式的一些基本概念 CPU与MCU的区别 CPU&#xff08;中央处理器&#xff0c;central processing unit) 指集成了运算器、控制器、寄存器、高速缓存等功能模块的芯片&#xff0c;负责执行计算机程序指令的处理器。MCU&#xff08;单片微型计算机或单片机&#xff0c;microco…

LLM大语言模型(五):用streamlit开发LLM应用

目录 背景准备工作切记streamlit开发LLM demo开一个新页面初始化session先渲染历史消息接收用户输入模拟调用LLM 参考 背景 Streamlit是一个开源Python库&#xff0c;可以轻松创建和共享用于机器学习和数据科学的漂亮的自定义web应用程序&#xff0c;用户可以在几分钟内构建一…

DNS欺骗

DNS(域名系统)作为当前全球最大 、最复杂的分布式层次数据库系统&#xff0c;具有着开放、庞大、复杂的特性。它为全球用户提供域名解析服务&#xff0c;是互联网的重要基础设施。但由于其在设计之初未考虑安全性、人为破坏等因素 &#xff0c;DNS系统在互联网高度发达的今天面…

项目中好用的安装包

react TScript 移动端 安装脚手架&#xff0c;文件名为 xm_csdn &#xff0c;配合使用 TS npx create-react-app xm_csdn --template typescript安装 sass yarn add sass安装路由及路由类型声明文件 // 路由 yarn add react-router-dom5.3.0 // 声明文件 yarn add types/…

Ubuntu下APT下载工具(Ubuntu 下最常用的下载和安装软件方法)

前言 本篇文章记录我学习Ubuntu 下用的最多的下载工具&#xff1a; APT 下载工具&#xff0c; APT 下载工具可以实现软件自动下载、配置、安装二进制或者源码的功能。 APT 下载工具和我们前面一篇文章讲解的“install”命令结合在一起构成了 Ubuntu 下最常用的下载和安装软件方…