B蓝桥杯嵌入式之DS18B20、DHT11

蓝桥杯嵌入式开发板的扩展板提供DS18B20温度传感器和DHT11温湿度传感器。虽然两者有共同的功能,但是DS18B20的功能非常强大,不容忽视的。不能只学习DHT11,而忽略DS18B20,下面分别以DS18B20和DHT11来讲解它们的使用方法。

DS18B20讲解

DS18B20电路连接

DS18B20的使用

DS18B20的使用需要包含ds18b20.c和ds18b20.h文件(比赛时会给)。因为DS18B20的通信方式是利用一根数据线,即一个I/O既做输入又做输出,要不断的改变I/O的工作模式(输入和输出)。所以ds18b20.c的初始化函数没有用到(不知决赛给的文件是否和我现在用的一样,决赛后的经验分享中给出答案)。而是直接在main.c文件中读取温度数值,并用LCD和数码管显示。代码为

z = (ds18b20_read()& 0x07FF);
x = z/16.;
y = z/16;

snprintf((char*)str, sizeof(str), " Temperatrue:%2.2f", x);
LCD_DisplayStringLine(Line6,str);

SEG_DisplayValue(y/10, y%10,12);    
Delay_Ms(200);

函数SEG_DisplayValue的第三个参数12是在数码管上显示字符C。

DHT11讲解

DHT11的电路连接

DHT11的使用

DHT11的使用方法与DS18B20的使用方法一样,需要包含dht11.c和dht11.h文件(同DS18B20的情况一样)。DHT11也是直接读取温湿度在LCD显示温度和湿度,在数码管显示温度。代码为

z = dht11_read();

snprintf((char *)str, sizeof(str), " Moisture:%2d%%", z>>24);
LCD_DisplayStringLine(Line6,str);
snprintf((char *)str, sizeof(str), " Temperature:%3d", (z>>8)&0xff);
LCD_DisplayStringLine(Line7,str);

SEG_DisplayValue(((z>>8)&0xff)/10, ((z>>8)&0xff)%10, 12);
    
Delay_Ms(2000);

原文发布于微信公众号 - IT界的小白帽(l1084504793)

原文发表时间:2019-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券