温湿度DHT11+LCD1602-Arduino中文社区 - Powered by Discuz! Archiver

Mr.Ryan 发表于 2019-7-20 15:10

温湿度DHT11+LCD1602

(本人常年潜水,最近做一个小东西,有兴趣的小伙伴可以做一做)
利用 DHT11 + LCD1602 做的一个温湿度传感器。
dht库下载百度网盘分享地址:
链接:https://pan.baidu.com/s/1vb8bAFagZ93LPUOjM_sv-Q
提取码:pfag
下面这段程序是集合了很多个温湿度程序提出来,算是比较简单的吧!
(代码奉上:loveliness::loveliness::loveliness::

#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);//定义显示屏接脚位
#include <dht11.h>
#include <Wire.h>
dht11 DHT;
#define DHT11_PIN 8
void setup()                                                                                    
{
lcd.begin(16,2); //设置LCD显示的数目。16 X 2:16列2行。
Serial.begin(9600);// 设置串口波特率9600
Serial.println("Type,\tHumidity(%),\tTemperature(C)");//串口输出”Type, status, Humidity(%), Temperature(C)”
}
void loop()
{
float chk;//chk用于存储DHT11传感器的数据
Serial.print("DHT11 \t");
chk = DHT.read(DHT11_PIN);//读取DHT11传感器的数剧                                                
//串口显示温湿度值
   Serial.print(DHT.humidity,1);
   Serial.print("\t");
   Serial.println(DHT.temperature,1);
//lcd.setCursor(0,1);//将闪烁的光标设置到column 0, line 1 (注释:从0开始数起,line 0是显示第一行,line 1是第二行。)
//lcd.print(millis()/1000); //开机后屏幕现实以秒计时的时间
lcd.setCursor(0,0);
lcd.print("Humidity:");//在lcd第一行显示"Humidity(%)"
lcd.print((float)DHT.humidity,1);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Temperature:");//在lcd第二行显示"Temperature(C)"
lcd.print((float)DHT.temperature,1);
lcd.print("C");
delay(1000);
}

Creeper666 发表于 2019-7-20 15:57

建议使用spi的LCD1602,这样可以省下板子上的很多端口

ryc 发表于 2019-7-20 15:57

本帖最后由 ryc 于 2019-7-20 16:00 编辑

#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);//定义显示屏接脚位
#include <dht11.h>
#include <Wire.h>
dht11 DHT;
#define DHT11_PIN 8
void setup()                                                                                    
{ uint8_t c={0x1C,0x14,0x18,0x06,0x09,0x08,0x09,0x06,};
lcd.begin(16,2); //设置LCD显示的数目。16 X 2:16列2行。
Serial.begin(9600);// 设置串口波特率9600
Serial.println("Type,\tHumidity(%),\tTemperature(C)");//串口输出”Type, status, Humidity(%), Temperature(C)”
}
void loop()
{
   lcd.createChar(0,c);
   float chk;//chk用于存储DHT11传感器的数据
   Serial.print("DHT11 \t");
   chk = DHT.read(DHT11_PIN);//读取DHT11传感器的数剧                                                
    //串口显示温湿度值
    Serial.print(DHT.humidity,1);
    Serial.print("\t");
    Serial.println(DHT.temperature,1);
   //lcd.setCursor(0,1);//将闪烁的光标设置到column 0, line 1 (注释:从0开始数起,line 0是显示第一行,line 1是第二行。)
   //lcd.print(millis()/1000); //开机后屏幕现实以秒计时的时间
   lcd.setCursor(0,0);
   lcd.print("Humidity:");//在lcd第一行显示"Humidity(%)"
   lcd.print((float)DHT.humidity,1);
   lcd.print("%");
   lcd.setCursor(0,1);
   lcd.print("Temperature:");//在lcd第二行显示"Temperature(C)"
   lcd.print((float)DHT.temperature,1);
   lcd.write(byte(0));
   delay(1000);
}

ryc 发表于 2019-7-20 15:58

稍微改一下,那个c太扎眼:)

ryc 发表于 2019-7-20 16:18

Creeper666 发表于 2019-7-20 15:57
建议使用spi的LCD1602,这样可以省下板子上的很多端口

我觉得这种项目不用spi
原因:
1、他不需要增加后续模块,多出来的端口没有用
2、spi虽然只有四根io线,但是速度要低很多

Mr.Ryan 发表于 2019-7-20 17:07

Creeper666 发表于 2019-7-20 15:57
建议使用spi的LCD1602,这样可以省下板子上的很多端口

我去试试看看:victory:

Creeper666 发表于 2019-7-20 17:24

ryc 发表于 2019-7-20 16:18
我觉得这种项目不用spi
原因:
1、他不需要增加后续模块,多出来的端口没有用


spi只有四根线,两根电源两根数据,接线更方便;况且这个项目只显示温湿度,对数据刷新要求又不是很高,spi速度足够了

ryc 发表于 2019-7-20 17:34

Creeper666 发表于 2019-7-20 17:24
spi只有四根线,两根电源两根数据,接线更方便;况且这个项目只显示温湿度,对数据刷新要求又不是很高,s ...

这位兄台,请你看看,spi总共是六根线,iic是四根线
对于刷新速度,我发现需求不是很大,再快了,连lcd都刷新不过来,好像没有必要用普通接线。
(iic还是可以用滴)
谢谢您

新手之帆 发表于 2019-7-20 20:15

Creeper666 发表于 2019-7-20 15:57
建议使用spi的LCD1602,这样可以省下板子上的很多端口

zhi pei同学,被怼了吧,好好学习不听

新手之帆 发表于 2019-7-20 20:16

ryc 发表于 2019-7-20 17:34
这位兄台,请你看看,spi总共是六根线,iic是四根线
对于刷新速度,我发现需求不是很大,再快了,连lcd都 ...

都可以的,没关系,不用这么计较。当然程序有点问题
页: [1] 2
查看完整版本: 温湿度DHT11+LCD1602