标题:
最近弄了DHT11,做好了,分享下
[打印本页]
作者:
goer.lu
时间:
2015-6-4 19:25
标题:
最近弄了DHT11,做好了,分享下
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
typedef unsigned char U8;
typedef unsigned int U16;
sbit DataPort= P2^0 ;
U8 U8FLAG;
U8 U8temp;
U16 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U16 U8comdata;
U8 count;
void Delay(int j)
{
U8 i;
for(;j>0;j--)
{
for(i=0;i<27;i++);
}
}
void Delay_10us(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void dht11_init(void)
{
U8 i;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!DataPort)&&U8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0;
if(DataPort)
U8temp=1;
U8FLAG=2;
while((DataPort)&&U8FLAG++);
if(U8FLAG==1)break;
U8comdata<<=1;
U8comdata|=U8temp;
}
}
void RH(void)
{
//Ö÷»úà-μí18ms
DataPort=0;
Delay(180);
DataPort=1;
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
DataPort=1;
if(!DataPort) //T !
{
U8FLAG=2;
while((!DataPort)&&U8FLAG++);
U8FLAG=2;
while((DataPort)&&U8FLAG++);
dht11_init();
U8RH_data_H=U8comdata;
dht11_init();
U8RH_data_L=U8comdata;
dht11_init();
U8T_data_H=U8comdata;
dht11_init();
U8T_data_L=U8comdata;
dht11_init();
U8checkdata=U8comdata;
DataPort=1;
}
}
void uart_init()
{
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
SCON = 0x50;
ES = 1;
EA = 1;
TI = 0;
RI = 0;
}
void main()
{
uart_init();
Delay(1);
while(1)
{
RH();
U8RH_data_L=U8RH_data_L>>8;
TI=1;
ES=0;
printf("目前温度是:");
printf("%d",U8T_data_H);
printf("摄氏度");
printf(" \r\n");
printf(“目前的湿度是");
printf("%d",U8RH_data_L);
printf("%%");
printf("\r\n");
Delay(20000);
}
}
好东西就要分享
作者:
admin
时间:
2015-6-4 20:40
分享万岁,这个应该是串口显示的吧!!
作者:
lehigh
时间:
2016-4-16 11:05
看了,不错,真好
作者:
WFX777888
时间:
2016-11-19 18:11
谢谢分享资料
作者:
5511hh
时间:
2017-4-12 18:06
谢谢分享,串口输出一切正常
作者:
一方大佬
时间:
2017-4-16 14:01
这个怎么和别的不一样啊?这里边U8、U6的是什么啊
作者:
cp66
时间:
2017-8-24 13:46
没有显示啊
作者:
持勤补拙
时间:
2017-9-2 22:15
一方大佬 发表于 2017-4-16 14:01
这个怎么和别的不一样啊?这里边U8、U6的是什么啊
是位数长度
作者:
持勤补拙
时间:
2017-9-2 22:16
串口显示
作者:
molo
时间:
2018-11-22 12:25
谢谢分享!
作者:
gzhoney
时间:
2018-12-4 20:37
刚好需要,感谢感谢
作者:
51lcx
时间:
2018-12-5 14:44
E4 1B D0 2E DE AE E3 98 CB 99 BA EA 66 23 90 A3 A8 E0 1B D0 99 65 23 E2 6C EB 9C A3 2A 8D E1 这个是在hex模式下显示的。??蕻銟訍宏f#悾ㄠ袡e#鈒霚R*嶀??蕻鐪藱宏f#悾ㄠ袡e#阬霕V6咇??蕻銟脨衡n#悾犱袡e#鈒霚R:嶑这个是在文本模式下显示的。在串口助手上面调试结果是这样子的。求帮助
作者:
qiangge66
时间:
2018-12-10 15:05
谢谢分享
作者:
molo
时间:
2018-12-18 16:25
void Delay(int j)
{
U8 i;
for(;j>0;j--)
{
for(i=0;i<27;i++);
}
}
这个延时是多少呢?
作者:
molo
时间:
2018-12-18 17:14
查看了一下,应该是100us.对吧?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1