迪文科技论坛

 找回密码
 立即注册
搜索
查看: 586|回复: 1

【开源】COF案例分享:温湿度检测功能的实现

[复制链接]

574

主题

169

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12353
发表于 2022-4-22 11:53:05 | 显示全部楼层 |阅读模式
——文档转载自电子发烧友

在通常情况下,要进行温湿度的检测是要借助带有MCU开发板的,因迪文智能屏的独特设计,故可以舍去开发板这一环节,而直接驱动相应的温湿度传感器来进行检测。

1. 温湿度检测

这里所用的温湿度传感器为dht22,它是一款数字式传感器并以单总线的方式进行数据交换,该功能模块如图1所示。

  
1 温湿度传感器

2个电源引脚外,它的另一个引脚既用于输入,又用于输出来使用,该引脚与转接板的连接关系为:DAT--- P1.0

  
2 转接板使用引脚

值得指出的是,用于转接板只提供了一组电源引脚,故但使用多个外围器件时需要对电源引脚加以扩展,连接RTC模块与DHT22的方式如图3所示。

  
   图3 转接板

DHT22的使用上,需注意以下几个问题。
(1)RTC引脚的定义
sbit DAT =P1^0;
(2)DHT22的初始化
DHT22的初始化函数为:
uchar DHT22_Init(void)
{
DHT22_IO_OUT();
DHT22_Rst();
return DHT22_Check();
}

(3)DHT22的位读取
位读取的函数如下:
uchar DHT22_Read_Bit(void)
{
uchar retry=0;
while(DAT&&retry<100)
{
retry++;
delay_us(1);
}
retry=0;
while(!DAT&&retry<100)
{
retry++;
delay_us(1);
}
delay_us(40);
IF(DAT)
return 1;
else
return 0;
}

从还函数,可以看到DHT22对实现的应该要求,它并非是靠时钟信号来拾取数据的状态,而是依照时序的长短来区分数据的状态。
(4)DHT22的字节读取
字节读取的函数是依赖位读取函数来完成一个字节的8位信号读取,其函数为:
uchar DHT22_Read_Byte(void)
{
uchar i,dat;
dat=0;
for (i=0;i<8;i++)
{
dat<<=1;
dat|=DHT22_Read_Bit();
}
return dat;
}

(5)温湿度的读取
温湿度的值被封装在5个字节数据中,其中第12字节是存放温度值,第34字节是存放湿度值,第5字节则是校验码。
温湿度的读取函数为:
uchar DHT22_Read_Data(uint *temp,uint *humi)
{
uchar buf[5];
uchar i;
DHT22_Rst();
if(DHT22_Check()==0)
{
for(i=0;i<5;i++)
{
buf=DHT22_Read_Byte();
}
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
{
*humi=buf[0]*256+buf[1];
*temp=buf[2]*256+buf[3];
}
}
else
return 1;
return 0;
}

(6)测试主程序
测试主程序为:
void main(void)
{
uint temperature;
uint humidity;
InitCPU();
Starttimer(1,500);
delay_ms(500);
DHT22_Init();
while(1)
{
DHT22_Read_Data(&temperature,&humidity);
printf("t=%dC,h=%d%\r\n",temperature,humidity);
delay_ms(1000);
}
}

经程序的编译,即可生成HEX格式的目标文件,再由专用的格式转换工具处理即可生成BIN格式的下载文件,见图4所示。

   
4 生成BIN文件

在下载后,即可见到图5所示的检测效果,由于DHT22的检测精度比较高,故它的检测值中带有1位小数值。为便于后续的处理,这里是包含小数值一同输出的,故检测的温度值为21.8度,湿度为78.6

     
5 温湿度检测
























本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

5

回帖

63

积分

注册会员

Rank: 2

积分
63
发表于 2022-7-14 21:46:01 | 显示全部楼层
HELLO DEAR COULD YUO SEND PROJECT FILES
info@yurtelektronik.com.tr
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-1-14 21:30 , Processed in 0.079391 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表