- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
word完美格式
精心整理 学习帮手
#includereg52.h
#include12864.h
#includeintrins.h
sbit DHT = P0^0; //管脚定义,DHT11总线输入输出;
uchar data_byte;
uchar Tem_Z,Tem_X,Hum_Z,Hum_X,Check;
void LCD_Display(); //声明LCD_Display液晶显示函数;
void Rec_DHT(); //声明Rec_DHT,DHT11接收数据函数;
void receive();
//主函数
void main()
{
lcd_init();
while(1)
{
Rec_DHT();
LCD_Display();
delayms(1000);
}
}
//延时函数,//延时ms
void delays()//@12.000MHz
{
uchar i, j, k;
i = 1;
j = 234;
k = 113;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//延时ius
void delay10us()
{
uchar i;
for(i=0;i6;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
/********主机发出开始信号*******/
void DHT11_Start()
{
DHT=1;
delay10us();
DHT=0;
delays(); //保持电平时间大于18ms,延时20ms
DHT=1;
delay10us(); //延迟等待20-40us,延时20us
delay10us();
delay10us();
delay10us();
DHT=1; //拉高等待DHT11响应
}
//DHT11接收一个字节数据
uchar receive_data()
{
uchar i,temp,count;
data_byte=0;
for(i=0;i8;i++)
{
count=2;
while((!DHT)count++); //等待50us低电平结束
delay10us(); //等待40us高电平,后判断电平高低,高:DHT为1,低:DHT为0
delay10us();
delay10us();
delay10us();
temp=0;
if(DHT==1) temp=1; //DHT为高:1,位为1
count=2;
while((DHT)count++); //等待DHT高电平结束
if(count==1) break; //DHT为低:0,位为0
data_byte=1; //字节左移
data_byte|=temp;
}
return data_byte; //返回读取值
}
//DHT11接收数据
void Rec_DHT()
{
uchar flag;
uchar T_H,T_L,H_H,H_L,check,num_check; //定义采集参数中间变量
DHT11_Start(); //主机发出开始信号
if(!DHT) //等待从机响应信号输出低电平
{
flag = 2;
while((!DHT) flag++); //判断从机是否发出 80us 的低电平响应信号是否结束
flag = 2;
while(DHT flag++); //判断从机是否发出 80us 的高电平,若发出则开始采集数据
H_H=receive_data(); //采集湿度整数部分
文档评论(0)