DHT11资料Word文档下载推荐.docx

上传人:b****1 文档编号:4032573 上传时间:2023-05-02 格式:DOCX 页数:13 大小:68.89KB
下载 相关 举报
DHT11资料Word文档下载推荐.docx_第1页
第1页 / 共13页
DHT11资料Word文档下载推荐.docx_第2页
第2页 / 共13页
DHT11资料Word文档下载推荐.docx_第3页
第3页 / 共13页
DHT11资料Word文档下载推荐.docx_第4页
第4页 / 共13页
DHT11资料Word文档下载推荐.docx_第5页
第5页 / 共13页
DHT11资料Word文档下载推荐.docx_第6页
第6页 / 共13页
DHT11资料Word文档下载推荐.docx_第7页
第7页 / 共13页
DHT11资料Word文档下载推荐.docx_第8页
第8页 / 共13页
DHT11资料Word文档下载推荐.docx_第9页
第9页 / 共13页
DHT11资料Word文档下载推荐.docx_第10页
第10页 / 共13页
DHT11资料Word文档下载推荐.docx_第11页
第11页 / 共13页
DHT11资料Word文档下载推荐.docx_第12页
第12页 / 共13页
DHT11资料Word文档下载推荐.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DHT11资料Word文档下载推荐.docx

《DHT11资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DHT11资料Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。

DHT11资料Word文档下载推荐.docx

建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻

4、电源引脚

DHT11的供电电压为3-。

传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。

电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。

5、串行接口(单线双向)

DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:

一次完整的数据传输为40bit,高位先出。

数据格式:

8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和

数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。

6、封装信息

7、DHT11引脚说明

8、DHT11温湿度1602液晶显示程序示例

主程序:

#include<

>

#include<

typedefunsignedcharU8;

typedefunsignedint 

U16;

U8U8FLAG;

U8U8count,U8temp;

U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;

U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;

U8U8comdata;

sbitP2_0=P2^0;

sbitP2_1=P2^1;

sbitP2_2=P2^2;

sbitP2_3=P2^3;

unsignedcharstr1[]="

ShiDu:

"

;

unsignedcharstr2[]="

WenDu:

voidDelay(U16j)

U8i;

for(;

j>

0;

j--)

{

for(i=0;

i<

27;

i++);

}

voidDelay_10us(void)

{

i--;

}

voidCOM(void)

8;

i++) 

 

U8FLAG=2;

//----------------------

P2_1=0;

//T

P2_1=1;

//----------------------

while((!

P2_0)&

&

U8FLAG++);

Delay_10us();

//Delay_10us();

U8temp=0;

if(P2_0)U8temp=1;

while((P2_0)&

//超时则跳出for循环 

if(U8FLAG==1)break;

//判断数据位是0还是1

//如果高电平高过预定0高电平值则数据位为1 

U8comdata<

<

=1;

U8comdata|=U8temp;

//0

}//rof

}

//--------------------------------

//-----湿度读取子程序------------

//----以下变量均为全局变量--------

//----温度高8位==U8T_data_H------

//----温度低8位==U8T_data_L------

//----湿度高8位==U8RH_data_H-----

//----湿度低8位==U8RH_data_L-----

//----校验8位==U8checkdata-----

//----调用相关子程序如下----------

//----Delay();

Delay_10us();

COM();

voidRH(void)

{

//主机拉低18ms

P2_0=0;

Delay(180);

P2_0=1;

//总线由上拉电阻拉高主机延时20us

//主机设为输入判断从机响应信号

//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行 

if(!

P2_0) 

//T!

//判断从机是否发出80us的低电平响应信号是否结束

//判断从机是否发出80us的高电平,如发出则进入数据接收状态

//数据接收状态 

COM();

U8RH_data_H_temp=U8comdata;

U8RH_data_L_temp=U8comdata;

U8T_data_H_temp=U8comdata;

U8T_data_L_temp=U8comdata;

U8checkdata_temp=U8comdata;

//数据校验

U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);

if(U8temp==U8checkdata_temp)

U8RH_data_H=U8RH_data_H_temp;

U8RH_data_L=U8RH_data_L_temp;

U8T_data_H=U8T_data_H_temp;

U8T_data_L=U8T_data_L_temp;

U8checkdata=U8checkdata_temp;

}//fi

voidmain()

U8shidu_shi,shidu_ge,wendu_shi,wendu_ge;

LCD_init();

delay_nms

(2);

LCD_write_string(0,LINE1,str1);

LCD_write_string(0,LINE2,str2);

while

(1)

{

RH();

shidu_shi=0x30+U8RH_data_H/10;

shidu_ge=0x30+U8RH_data_H%10;

//shidu_xs=0x30+U8RH_data_L/10;

wendu_shi=0x30+U8T_data_H/10;

wendu_ge=0x30+U8T_data_H%10;

//wendu_xs=0x30+U8T_data_L/10;

LCD_write_char(6,0,shidu_shi);

LCD_write_char(7,0,shidu_ge);

//LCD_write_char(9,0,shidu_xs);

LCD_write_char(6,1,wendu_shi);

LCD_write_char(7,1,wendu_ge);

//LCD_write_char(9,1,wendu_xs);

LCD显示头文件

ifndeflcd_H

#definelcd_H

/************************************/

//commonpart

#define 

HIGH 

1

LOW 

0

TRUE 

FALSE 

ZERO 

0

MSB 

0x80

LSB 

0x01

//lcdpart

#defineLINE1 

#defineLINE2 

#defineLINE1_HEAD 

#defineLINE2_HEAD 

0xC0

#defineDATA_MODE 

0x38

#defineOPEN_SCREEN 

0x0C

#defineDISPLAY_ADDRESS 

#defineCLEARSCREEN 

LCD_en_com(0x01)

/*************************************/

//changethispartatdifferentboard

#defineLCDIO 

P1

sbitLCD1602_RS=P2^4;

sbitLCD1602_RW=P2^5;

sbitLCD1602_EN=P2^6;

/********************************************************************/

voidLCD_Read_BF(void)

unsignedcharread=0;

LCD1602_RS=LOW;

//RS0

LCD1602_RW=HIGH;

//RW1

LCD1602_EN=HIGH;

//EN1ReadBF

LCDIO=0xFF;

do{

read=LCDIO;

}while(read&

MSB);

voidLCD_en_com(unsignedcharcommand) 

//写指令

LCD_Read_BF();

//RS0

LCD1602_RW=LOW;

//RW0

//EN--\|/__Writecommand

LCDIO=command;

LCD1602_EN=LOW;

voidLCD_en_dat(unsignedchardat) 

//写数据

LCD1602_RS=HIGH;

//RS1

//EN--\|/__Writedata

LCDIO=dat;

voidLCD_set_xy(unsignedcharx,unsignedchary)

unsignedcharaddress;

if(y==LINE1)

address=LINE1_HEAD+x;

else 

address=LINE2_HEAD+x;

LCD_en_com(address);

voidLCD_write_char(unsignedx,unsignedchary,unsignedchardat)

LCD_set_xy(x,y);

LCD_en_dat(dat);

voidLCD_write_string(unsignedcharx,unsignedchary,unsignedchar*s)

while(*s)

LCDIO=*s;

LCD_en_dat(*s);

s++;

voidLCD_init(void)

LCD_en_com(DATA_MODE);

//set8bitdatatransmissionmode

LCD_en_com(OPEN_SCREEN);

//opendisplay(enablelcddisplay)

LCD_en_com(DISPLAY_ADDRESS);

//setlcdfirstdisplayaddress

CLEARSCREEN;

//clearscreen

#endif

延时子程序头文件

#ifndefDELAY_H

#defineDELAY_H

voiddelay_nms(unsignedintn) 

unsignedinti=0,j=0;

for(i=n;

i>

i--)

for(j=0;

j<

1140;

j++);

本程序本人亲自测试,绝对好用!

LCD1602第一行显示当前的湿度,第二行显示温度!

请各位放心下载!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2