找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

DHT11温湿度传感器的应用程序

[复制链接]
admin 发表于 2012-8-24 12:44:43 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

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

×
#ifndef _DHT11_H_
#define _DHT11_H_

#include"AT89X52.H"
#include"DelaY.H"


sbit DHT11_BUS = P1^3;
unsigned char xdata DHT11_Code[5];

/**********************************************/
/* 开始 DHT11 温湿度计 */
/* 输入:无 */
/* 输出:应答标志 0:应答失败 1:应答成功 */
/**********************************************/

bit DHT11_StarT(void)
{
bit DHT_StarT;
DHT_StarT = 0;
DHT11_BUS = 1;
DHT11_BUS = 0;
Delay80Ms(); //拉低18MS以上,这里大一点的为好
DHT11_BUS = 1;
Delay20Us();
Delay20Us();

while(!DHT11_BUS) {DHT_StarT = 1;} //系统拉低80US
while(DHT11_BUS) {;} //系统要拉高80US

return (DHT_StarT);
}
/**********************************************/
/* 读取 DHT11 温湿度计 */
/* 读取结果存在DHT11_Code内 */
/* 输入:无 输出:无 */
/**********************************************/
void DHT11_ReadValue(void)
{
unsigned char Value = 0x00;
unsigned char i = 0;
unsigned char j = 0;
for (i = 0;i < 5;i++)
{ for (j = 0;j <8;j++)
{ while(!DHT11_BUS); //等待低电平到来
Delay35Us(); //这个延时时间可以调整
//范围:28Us---(28+50)Us
if (DHT11_BUS)
{ Value |= (0x80 >> j); // <=> Value |= (7 - j);
while(DHT11_BUS); //接收完数据等待下一位数据的L电平到来!
}
}
DHT11_Code = Value;
Value = 0x00;
}
}

/**********************************************/
/* 效验 DHT11 温湿度计 */
/* 输入:无 输出:无 */
/**********************************************/
bit DHT11_CheckSum(void)
{
if (DHT11_StarT())
{
DHT11_ReadValue(); //读取数据
if (DHT11_Code[4] = DHT11_Code[0]+DHT11_Code[1]+DHT11_Code[2]+DHT11_Code[3])
{ return 1; }
else{ return 0; }
}
else { return 0; }
}


#endif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 17:13 , Processed in 0.049398 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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