Arduino程序设计(八)LCD显示实验

news2024/10/7 17:30:51

LCD显示实验

  • 前言
  • 一、基于LM35的LCD显示实验
    • 1. LM35简介
    • 2. LCD1602简介
    • 3. LM35采集环境温度LCD显示
  • 二、基于DS18B20的LCD显示实验
    • 1. DS18B20简介
    • 2. DS18B20采集环境温度LCD显示
  • 三、基于DHT11采集环境温湿度LCD显示
    • 1. DHT11简介
    • 2. DHT11采集环境温湿度LCD显示


前言

  • 本文主要介绍温度/温湿度传感器的LCD显示实验,分别是:
  • 1、LM35采集环境温度LCD显示;
  • 2、DS18B20采集环境温度LCD显示;
  • 3、DHT11采集环境温湿度LCD显示。

一、基于LM35的LCD显示实验

1. LM35简介

  • (1)LM35介绍
LM35特性特性说明
基本功能LM35作为常用的温度传感器,可以检测周围的温度
工作原理利用感温材料,通过内部电路将温度值转化为对应的电压信号
工作电压4~30V,常用5V供电
温度测量测量范围0~100℃ ,误差 ±0.5℃
输出信号线性模拟信号输出,LM35输出电压和摄氏温度程线性关系
线性变化系数+10mV/℃(即每升高一度,输出电压增加10mV)
应用使用简单,常用于温度检测装置或者温度报警器
  • (2)LM35引脚及封装
    在这里插入图片描述
  • 常用封装:TO-92,型号选用LM35DZ。
  • 举例:LM35与Arduino UNO开发板接线, 引脚1接5V,引脚2接模拟信号输出A0,引脚3接GND
  • (3)LM35温度值计算
  • ① 计算公式:
  • x 1024 \frac{x}{1024} 1024x= T ℃ ∗ 10 m V / ℃ 5000 m V \frac{T℃*10mV/℃}{5000mV} 5000mVT10mV/℃
  • 其中, x x x为返回值,即引脚2采集的数据, T T T为当前温度值,浮点型数据。
  • ② 进一步,得到当前温度的计算公式:
  • T T T= 500 x 1024 \frac{500x}{1024} 1024500x= 0.4883 x 0.4883x 0.4883x

2. LCD1602简介

  • (1) LCD1602介绍
    在这里插入图片描述
    注意:LCD1602显示ASCII码包括英文字母、数字和标点符号(不能显示中文)。
  • (2)技术参数与接口说明在这里插入图片描述
  • (3)LCD1602与Arduino UNO开发板连接方式
Arduino UNO引脚LCD1602引脚引脚功能
Pin 6RS数据/命令选择
Pin 7E使能引脚
Pin 9D4数据传输
Pin 10D5数据传输
Pin 11D6数据传输
Pin 12D7数据传输
GNDVSS电源负极
5VVDD电源正极
串联1KΩ电阻接GNDV0调节对比度
GNDRW读/写选择
5VA背光源正极
GNDK背光源负极

3. LM35采集环境温度LCD显示

  • (1)本实验采用Arduino UNO R3开发板及自主搭建电路的方式,实现预设功能。
  • (2) LM35采集环境温度LCD显示的电路图,如下图所示:
    在这里插入图片描述
  • (3)实验准备:安装下载安装 “LiquidCrystal” 库文件,库函数的功能说明如下表所示。
常见的 LiquidCrystal 的库函数功能说明
LiquidCrystal name(RS,EN,D4,D5,D6,D7)作用:初始化构造器,创建一个LCD1602对象;RS:数据/ 命令选择所连接的引脚;EN:使能引脚;D4~D7:数据引脚
name.begin(c,l)作用:初始化LCD1602;c:屏幕的列数,一般是16;l:屏幕的行数,一般是2
name.print(s)作用:输出;s:输出的值
name.clear()作用:清屏
name.setCursor(c,l)作用:设置光标;c:第几列;l:第几行
name.display()作用:开始显示
name.noDisplay()作用:关闭显示
name.write(s)作用:输出一位;s:输出的字符
name.creatChar(s,d)作用:创建新符号;s:字符编号;d:符号数据
  • (4)实现功能:
  • ① LCD开机画面,第一行显示“ Welcome to use ! ”,延时1S后清屏;
  • ② 显示LM35采集温度,LCD第一行显示 “ LM35 temp = ”,第二行显示 “ xx.x℃ ”。

代码实现:

//LCD实验
//LM35采集温度,LCD显示温度值

#include <LiquidCrystal.h>

#define LM35 A0
#define RS 6
#define EN 7
#define D4 9
#define D5 10
#define D6 11
#define D7 12

LiquidCrystal lcd(RS,EN,D4,D5,D6,D7);      //构造一个LiquidCrystal的类成员

int val = 0;        //存放AD变量值
float temp = 0;     //存放温度值的10倍

void setup()
{
  lcd.begin(16,2);    //初始化LCD1602
  lcd.print("Welcome to use!");   //液晶显示Welcome to use!
  delay(1000);        //延时1000ms
  lcd.clear();        //液晶清屏
}

void loop()
{
  val = analogRead(LM35);   //读取AD值
  temp = val * 4.8876;      //转换为温度值的10倍,有利于液晶显示
  lcd.setCursor(0,0);       //设置液晶开始显示的指针位置
  lcd.print("LM35 temp ="); //液晶显示“LM35 temp =”
  lcd.setCursor(0,1);       //设置液晶开始显示的指针位置
  lcd.print((int)temp/10);  //液晶显示温度整数值
  lcd.print(".");           //液晶显示小数点
  lcd.print((int)temp%10);  //液晶显示温度小数值
  
  lcd.print((char)223);     //液晶显示“°”
  lcd.print("C");           //液晶显示“C”
  delay(1000);              //延时1000ms
}
  • (5)实现现象:
    在这里插入图片描述

二、基于DS18B20的LCD显示实验

1. DS18B20简介

  • (1)DS18B20介绍
供电电压3.0~5V ,常用3.3V或5V供电
单总线接口DS18B20与MCU连接时,仅需要一根数据线,即可实现MCU与DS18B20的双向通讯
多点组网多个DS18B20可以并联在唯一的数据线上,实现组网多点测温
硬件简单DS18B20在使用时不需要任何外围器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
测温范围-55℃ ~ +125℃;在 -10 ~ +85℃时,精度为 ±0.5℃
分辨率9 ~ 12位,对应的可分辨温度分别为 0.5℃,0.25℃,0.125℃ 和 0.0625℃
负压特性电源极接反时,芯片不会因发热而烧毁,但不能正常工作
  • (2)DS18B20外形及电路设计

  • DS18B20外形:
    在这里插入图片描述

  • 举例:DS18B20与Arduino UNO开发板接线, 引脚1接GND,引脚2接数字信号输出D4,引脚3接5V

  • 常见电路如下:
    在这里插入图片描述

2. DS18B20采集环境温度LCD显示

  • (1)本实验采用Arduino UNO R3开发板及自主搭建电路的方式,实现预设功能。

  • (2) DS18B20采集环境温度LCD显示的电路图,如下图所示:
    在这里插入图片描述

  • (3)实现功能:

  • ① LCD开机画面,第一行显示“ You can use it.”,延时1s后清屏;

  • ② 显示DS18B20采集温度,LCD第一行显示 “ DS18B20 temp = ”,第二行显示 “ xx.x℃ ”。

代码实现:

//LCD实验
//DS18B20采集环境温度,LCD显示

#include <LiquidCrystal.h>                       //加载单LCD库函数
#include <OneWire.h>                             //加载单总线库函数
#include <DallasTemperature.h>                   //加载DS18B20温度采集库函数

#define RS 6
#define EN 7
#define D4 9
#define D5 10
#define D6 11
#define D7 12
#define ONE_WIRE_BUS 4                           //定义DS18B20数据口连接ESP8266的4号IO上

float Temp = 0;

OneWire oneWire(ONE_WIRE_BUS);                   //初始化连接在单总线上的单总线设备
DallasTemperature sensors(&oneWire);

LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);       //构造一个LiquidCrystal的类成员

void setup(void)
{
  sensors.begin();     //初始化DS18B20
  
  lcd.begin(16, 2);   //初始化LCD1602
  lcd.print("You can use it.");   //液晶显示You can use it.
  delay(1000);        //延时1000ms
  lcd.clear();        //液晶清屏
}

void loop(void)
{
  sensors.requestTemperatures();                 //发送命令获取温度
  Temp = sensors.getTempCByIndex(0);             //Temp存储当前温度值

  lcd.setCursor(0, 0);      //设置液晶开始显示的指针位置
  lcd.print("DS18B20 temp ="); //液晶显示“DS18B20 temp =”
  lcd.setCursor(0, 1);      //设置液晶开始显示的指针位置
  lcd.print((int)(Temp * 10) / 10); //液晶显示温度整数值
  lcd.print(".");           //液晶显示小数点
  lcd.print((int)(Temp * 10) % 10); //液晶显示温度小数值

  lcd.print((char)223);     //液晶显示“°”
  lcd.print("C");           //液晶显示“C”
  delay(1000);              //延时1000ms
}

  • (4)实现现象:
    在这里插入图片描述

三、基于DHT11采集环境温湿度LCD显示

1. DHT11简介

  • (1)DHT11介绍
DHT11特性特性说明
基本功能DHT11是常用的温湿度传感器,可以检测附近环境温度和湿度
工作原理利用NTC感温元件和电容感湿元件,通过内部电路将温湿度值转化为校准后的数字信号进行输出
工作电压3.3~5V ,常用5V供电
测量范围温度测量范围0-50℃,误差±2℃;湿度测量范围20%-95%,误差±5%
输出信号数字信号
应用使用简单,常用于温湿度检测装置或者温湿度
优点报警器响应快速、抗干扰、相应库和示例丰富
  • (2)DHT11外形及引脚说明
  • ① DHT11模块和DHT11温湿度传感器外形,如下图所示:
    在这里插入图片描述
  • ② DHT11温湿度传感器引脚说明:
    在这里插入图片描述

2. DHT11采集环境温湿度LCD显示

  • (1)本实验采用Arduino UNO R3开发板及自主搭建电路的方式,实现预设功能。

  • (2) DHT11采集环境温湿度LCD显示的电路图,如下图所示:
    在这里插入图片描述

  • (3)实验准备:安装下载安装 “DHT sensor library” 库文件,库函数的功能说明如下。
    在这里插入图片描述
    在这里插入图片描述

  • (4)实现功能:

  • ① LCD开机画面,第一行显示“ DHT11 working.”,延时1s后清屏;

  • ② 显示DHT11采集温湿度,LCD第一行显示 “ Temp = xx.x℃ ”,第二行显示 “ Humi = xx% ”。

代码实现:

//LCD实验
//DHT11采集温湿度值,LCD显示

#include<DHT.h>
#include <LiquidCrystal.h>

#define RS 6
#define EN 7
#define D4 9
#define D5 10
#define D6 11
#define D7 12
#define DHTPIN 3

DHT dht(DHTPIN, DHT11);                    //初始化DHT传感器
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); //构造一个LiquidCrystal的类成员

void setup()
{
  lcd.begin(16, 2);              //初始化LCD1602
  lcd.print("DHT11 working.");   //液晶显示DHT11 working.
  delay(1000);                   //延时1s
  lcd.clear();                   //液晶清屏
  dht.begin();                   //初始化DHT11
}

void loop()
{
  float h = dht.readHumidity();   // 读取湿度
  float t = dht.readTemperature();// 读取温度为摄氏温度

  lcd.setCursor(0, 0);            //设置液晶开始显示的指针位置
  lcd.print("Temp = ");           //液晶显示“Temp =”
  lcd.print((int)(t * 10) / 10);  //液晶显示温度整数值
  lcd.print(".");                 //液晶显示小数点
  lcd.print((int)(t * 10) % 10);  //液晶显示温度小数值
  lcd.print((char)223);           //液晶显示“°”
  lcd.print("C");                 //液晶显示“C”

  lcd.setCursor(0, 1);            //设置液晶开始显示的指针位置
  lcd.print("Humi = ");           //液晶显示“Humi =”
  lcd.print((int)h);              //液晶显示温度整数值
  lcd.print("%");                 //液晶显示“%”
  
  delay(2000);                    //DHT11间隔2s采集一次数据
}

  • (5)实现现象:
    在这里插入图片描述

参考资料1: CSDN如何编辑数学公式
参考资料2: Arduino全套零基础入门视频进阶教程(适合0基础,含arduino项目保姆级教程)
参考资料3: 【雕爷学编程】Arduino动手做(55)–DHT11温湿度传感器模块3

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

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

相关文章

高忆管理:a股b股h股n股的区别?

A股、B股、H股、N股&#xff0c;这些股票标识的差异&#xff0c;是初学者往往比较无措的。本文将从多个角度剖析这些股票的区别&#xff0c;协助读者更好地了解和运用出资。 1.不同的出资主体 首要&#xff0c;要了解这些标识的意义。A股、B股、H股、N股是不同的出资主体。A股…

蠕虫病毒流量分析案例

背景 某供排水集团的网络管理员对其网络的健康状况持认可态度&#xff0c;表示网络运行正常&#xff0c;没有发现异常行为。然而&#xff0c;由于网络环境变得越来越复杂&#xff0c;仅凭借传统的网络经验已经不能全面了解网络情况。因此&#xff0c;我们为供排水集团安装了Ne…

cadence后仿真/寄生参数提取/解决pin口提取不全的问题

post-simulation设置顺序与规则 1.Rules 设置 2.inputs设置 3.outputs设置 4.PEX 设置 会出现错误1&#xff0c;后有解决方案 第一步 :Netlist 第二步&#xff1a;LVS 5.RUN PEX 先RUN&#xff0c;后按照图中1 2 3步骤操作 点击OK之后&#xff0c;显示Calibre信息&#xff…

配置 Windows 系统环境变量

直接按键盘上面的 WINS 打开 Windows 搜索 搜索“编辑系统环境变量” 也可以右键此电脑->属性->高级系统设置打开相同的界面 点击环境变量 一般添加就是添加在框出的 Path 里面&#xff0c;双击可以看到现有的环境变量并进行编辑 例如我在博客中写把 Java 的 jdk 解压好…

功能测试—边界值分析法

一、边界值分析法的概念 边界值分析法就是对输入的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充&#xff0c;这种情况下&#xff0c;其测试用例来自等价类的边界 1 为什么引入边界值分析法&#xff1f; 测试实践表明&#xff0c;大量的故…

【Springcloud】elk分布式日志

【Springcloud】elk分布式日志 【一】基本介绍【二】Elasticsearch【1】简介【2】下载【3】安装【4】启动 【三】Logstash【1】简介【2】下载【3】安装【4】启动 【四】Kibana【1】简介【2】下载【3】安装【4】启动 【五】切换中文【六】日志收集 【一】基本介绍 &#xff08;…

Codeforces Round 895 (Div. 3)题解

前言&#xff1a; 暂时更新到D&#xff0c;后面的找时间再看 A. Two Vessels 题目A&#xff1a;通过最少操作使得a,b水相等&#xff0c;分abs(a-b)是不是2*c的倍数讨论&#xff0c;2c是因为&#xff0c;a-c bc 总差值为2*c; #include<bits/stdc.h> using namespace s…

CMake高级用法实例分析(学习paddle官方的CMakeLists)

cmake基础学习教程 https://juejin.cn/post/6844903557183832078 官方完整CMakeLists cmake_minimum_required(VERSION 3.0) project(PaddleObjectDetector CXX C)option(WITH_MKL "Compile demo with MKL/OpenBlas support,defaultuseMKL." ON) o…

[论文笔记] Gunrock: A High-Performance Graph Processing Library on the GPU

Gunrock: A High-Performance Graph Processing Library on the GPU Gunrock: GPU 上的高性能图处理库 [Paper] [Code] PPoPP’16 摘要 Gunrock, 针对 GPU 的高层次批量同步图处理系统. 采用了一种新方法抽象 GPU 图分析: 实现了以数据为中心(data-centric)的抽象, 以在结点…

网络编程day070904

目录 将dict.txt导入到数据库中单词一列&#xff0c;意思一列 代码 结果 思维导图 将dict.txt导入到数据库中单词一列&#xff0c;意思一列 代码 #include<myhead.h> #include<sqlite3.h>int do_create(sqlite3 *db); int do_insert(sqlite3 *db, char * Engl…

ILS解析漏洞复现

搭建好ILS后&#xff0c;访问127.0.0.1:8000 写一个phpinfo的脚本 可以看到。现在是不能访问的 赋予 IIS 解析 phpinfo 能力 打开服务器管理器&#xff0c;打开 IIS 管理器 点击处理程序映射 再次访问&#xff0c;发现程序可以访问 将index.php改为index.png 此时php脚本自然是…

Selenium 三种等待方式详解 (强制等待、隐式等待、显示等待)

前言 ①在进行WEB自动化工作时&#xff0c;一般要等待某一页面元素加载完成后&#xff0c;才能对该元素执行操作&#xff0c;否则自动化脚本会抛出找不到元素的错误&#xff0c;这样就要求我们在UI自动化测试的有些场景上加上等待时间。 ②等待方式的设置是保证自动化脚本稳定…

静态代理IP是什么?一文看懂静态代理IP

对于跨境玩家来说&#xff0c;IP代理已经是我们的老朋友了&#xff0c;那么什么是静态IP&#xff1f;有什么用&#xff1f;如何使用&#xff1f;看完这一篇你就懂了。 一、什么是静态代理IP 静态代理IP是指一个固定不变的&#xff0c;不会在网络重新连接时重新建立或者更改的代…

基于VS平台编译带Cuda的OpenCV(内含版本以及整套方案含泪总结)

感谢 先感谢以下帖子&#xff0c;确实很有参考意义&#xff0c;但很多坑还是没总结到&#xff08;我抓狂了&#xff09; 从安装到编译保姆级帖子&#xff1a;https://blog.csdn.net/fengxinzioo/article/details/109402921 大神版核心步骤帖子(主要参考)&#xff1a;https://bl…

促进合作交流|旅游专业老师在加拿大访学期间取得初步成果

N老师拟申报CSC&#xff0c;指定国家且要求接收学校不收取板凳费&#xff0c;最终我们分别获得了澳大利亚科廷大学和加拿大圭尔夫大学的邀请函&#xff08;均未收取板凳费&#xff09;。N老师用前者申报了CSC并获批&#xff0c;因签证原因又用后者申请了改派&#xff0c;并在加…

Java之Collection集合的详细解析

1.Collection集合 1.1数组和集合的区别【理解】 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 1.2集合类体系结构【理解】 …

APUS与腾讯达成战略合作,携手深化产业赋能

9月7—8日&#xff0c;2023腾讯全球数字生态大会在深圳盛大举行&#xff0c;AI大模型企业APUS出席大会&#xff0c;APUS副总裁邓小波与腾讯现场签约战略合作&#xff0c;双方将集中各自优势&#xff0c;在ICT基础设施、大模型生态建设等领域开展广泛、深入合作。此外&#xff0…

mockjs+json-server模拟百万条数据

文章目录 前言场景前置操作安装axios或者Ajax&#xff08;作者用的是axios&#xff09;mock.js文件编辑编辑json-server文件夹添加百万条虚拟数据后言 前言 hello world 欢迎来到前端的世界 &#x1f61c;当前文章系列专栏&#xff1a;前端 &#x1f431;‍&#x1f453;博主在…

G. The Morning Star

Problem - G - Codeforces 思路&#xff1a;想了挺长时间的&#xff0c;一直没想到一个简便的方法在瞎搞。我们发现对于某个点来说&#xff0c;其他的点如果能够跟他匹配&#xff0c;那么一定在这8个方向上&#xff0c;而同时这8个方向其实对应这4条直线&#xff0c;假设点为(x…

Jetpack 中 room 基本使用

Room 概述 Room 持久性库在 SQLite 上提供了一个抽象层&#xff0c;以便在充分利用 SQLite 的强大功能的同时&#xff0c;能够流畅地访问数据库&#xff0c;具体来说&#xff0c;Room具有一下优势&#xff1a; 1、针对SQL 查询的编译时验证。 2、可最大限度减少重复和容易出…