DHT11 底层代码记录 --STC15系列
【摘要】
DHT11.C
#include "stc15f2k60s2.h" // 单片机STC15F2K60S2头文件,可以不再加入reg51.h
#include <intrins.h>...
DHT11.C
#include "stc15f2k60s2.h" // 单片机STC15F2K60S2头文件,可以不再加入reg51.h
#include <intrins.h> // 加入此头文件后,可使用_nop_库函数
#include "uart.h" // 串口1初始化、字符与字符串发送程序
#include <stdio.h>
#include "delay.h" // 延时程序头文件
sbit Sensor_SDA = P3^7 ;
unsigned char FLAG=0,temp=0;
//unsigned char *displaytemp,*displayhum;
unsigned char str[5]={0x00,0x00,0x00,0x00,0x00};
void Clear_Data (void);
unsigned char COM(void)//读取高低电平
{
unsigned char i,U8comdata ;
for(i=0;i<8;i++)
{
FLAG=2;
while((!Sensor_SDA )&&FLAG++);
DelayUS(30);
temp=0;
if(Sensor_SDA )temp=1;
FLAG=2;
while((Sensor_SDA )&&FLAG++);
//超时则跳出for循环
if(FLAG==1)break;
//判断数据位是0还是1
// 如果高电平高过预定0高电平值则数据位为 1
U8comdata<<=1;
U8comdata|=temp; //0
}//rof
return U8comdata ;
}
void RH(void)//温湿度读取
{
unsigned char checkdata_temp;
//主机拉低18ms
Sensor_SDA =0;
DelayMS(18);
Sensor_SDA =1;
//总线由上拉电阻拉高 主机延时20us
DelayUS(40);
//主机设为输入 判断从机响应信号
Sensor_SDA =1;
//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
if(!Sensor_SDA ) //T !
{
FLAG=2;
//判断从机是否发出 80us 的低电平响应信号是否结束
while((!Sensor_SDA )&&FLAG++);
FLAG=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while((Sensor_SDA )&&FLAG++);
//数据接收状态
str[0]= COM();
str[1]= COM();
str[2]= COM();
str[3]= COM();
str[4]= COM();
Sensor_SDA =1;
//数据校验
checkdata_temp= str[4];
temp=(str[0]+str[1]+str[2]+str[3]);
if(temp==checkdata_temp)
{
}
}
}
void RH_Report()//温湿度输出
{
unsigned char a[3],b[3];
unsigned int tmp,hum;
char message[20];
RH(); //调用温湿度读取子程序
hum = str[0];
tmp = str[2];
a[1] = '0'+hum%10;
a[0] = '0'+hum/10%10;
// displayhum=a;
b[1] = '0'+tmp%10;
b[0] = '0'+tmp/10%10;
// displaytemp=b;
sprintf(message,"Temp:%2s,Hum:%2s OK\r\n",b,a);
SendString(message);
}
void Clear_Data (void)
{
int i;
for(i=0;i<5;i++)
{
str[i] = 0x00;
}
}
DHT11.H
#ifndef __DHT11_H_
#define __DHT11_H_
//void TH_Report(void);
void RH_Report(void) ;
void Clear_Data (void);
#endif
文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。
原文链接:recclay.blog.csdn.net/article/details/78301797
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)