实验绝对成功,无需修改!
#include<reg52.h>
//#include"18b20md.h"
#define uchar unsigned char
#define uint unsigned int
char read_data();
void delay(uchar z);
uchar shiZ,shiX,wenZ,wenX,check;
uchar tr_shiZ,tr_shiX,tr_wenZ,tr_wenX;
uchar flag;
uchar num[]="我爱单片机";
uchar num1[]="温度: . ℃";
uchar num2[]="湿度: . %";
uchar num3[]="我好讨厌曾炜";
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P2^5;
sbit psb=P1^2;
sbit dula=P2^6;
sbit wela=P2^7;
sbit DHT=P2^0;
void delayms(uint x)
{
uchar i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void delay(uchar z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay_10us()
{
uchar i;
i--;
i--;
i--;
i--;
i--;
i--;
}
void read_init()
{
DHT=0; //主机使DHT11低电平并延时至少18ms
delayms(21);
DHT=1; //主机置DHT11高电平20~40us,并等待从机相应
delay_10us();
delay_10us();
delay_10us();
delay_10us();
DHT=1;
if(!DHT) //从机发出响应信号
{
flag=2;
while((!DHT)&&flag++);//等待从机发高电平结束
flag=2;
while(DHT&&flag++); //开始采集数据
tr_shiZ=read_data();//采集湿度整数部分
tr_shiX=read_data();//采集湿度小数部分
tr_wenZ=read_data();//采集温度整数部分
tr_wenX=read_data();//采集温度小数部分
check=read_data(); //采集校验位
}
DHT=0;
delay(20);//采集完数据后
}
char read_data()
{
uchar i,num,temp;
num=0;
for(i=0;i<8;i++)
{
flag=2;
while((!DHT)&&flag++);//等待50毫秒低电平
delay_10us();//延时判断0还是1
delay_10us();
delay_10us();
delay_10us();
if(DHT==1)
{
temp=1;
flag=2;
while(DHT&&flag++);
}
else
temp=0;
num<<=1;
num|=temp;
}
return(num);
}
void com(uchar com)
{
rs=0;
rw=0;
P0=com;
delayms(5);
e=1;
delayms(5);
e=0;
}
void dat(uchar dat)
{
rs=1;
rw=0;
P0=dat;
delayms(5);
e=1;
delayms(5);
e=0;
}
void init()
{
dula=0;
wela=0;
psb=1;
com(0x30);
delayms(5);
com(0x0f);
delayms(5);
com(0x01);
delayms(5);
}
void disp()
{
uchar i;
com(0x80);
for(i=0;i<10;i++)
{
dat(num[i]);
delayms(5);
}
}
void disp1()
{
uchar i;
com(0x90);
for(i=0;i<12;i++)
{
dat(num1[i]);
delayms(5);
}
}
void disp2()
{
uchar i;
com(0x88);
for(i=0;i<16;i++)
{
dat(num2[i]);
delayms(4);
}
}
void disp3()
{
uchar i;
com(0x98);
for(i=0;i<16;i++)
{
dat(num3[i]);
delayms(5);
}
}
void writed(uchar *m,uchar n,uchar date) //在固定位置写数字
{
uchar shi,ge;
shi=date/10;
ge=date%10;
*(m+n)=48+shi;
*(m+n+1)=48+ge;
}
void main()
{
int temp; // a,b,c,d,
init();
disp();
disp1();
disp2();
disp3();
while(1)
{
/* temp=ReadTemperature();
d=temp&0x0f;
d=d*10/16;
temp>>=4;
a=temp;
b=a/10;
c=a%10;
num1[5]=b+48;
num1[6]=c+48;
num1[8]=d+48;
disp1(); */
read_init();
temp=tr_shiZ
DHT11温湿度传感器在12864LCD上显示_计算机硬件及网络_IT/计算机_专业资料。DHT11温湿度传感器在12864LCD上显示DHT11 温湿度传感器在 12864LCD 上显示本程序经过...
C51_温湿度传感器DHT11驱动_LCD1602显示程序_电子/电路_工程科技_专业资料。DHT11.c 文件 #include<reg52.h> #include<Time_Delay.h> //the main only ...
(comdata); } void DHT11_5() //读5个字节数据 两个字节为温度数据 两个字节为湿度数据 最后一个字节为校验 { uchar i,temp; //主机拉低18ms dat=0;...
DHT11温湿度传感器51单片机在LCD1602显示程序_电子/电路_工程科技_专业资料。51单片机控制温湿度传感器DHT11//51 单片机控制温湿度传感器 DHT11 ?然后在 LCD1602...
DHT11数字温湿度传感器(附1602显示程序)已验证ok_IT/计算机_专业资料。DHT11数字温湿度传感器 LCD1602显示 C语言编程1、DHT11 产品概述 DHT11 数字温湿度传感...
用新型的智能温湿度传感器DHT11主要实现对温度、 湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运 用单片机STC89C52进行数据的分析和处理,...
//51 单片机控制温湿度传感器 DHT11 LCD1602 YL-9 最小系统。 # include <reg51.h> # include <intrins.h> typedef unsigned char BYTE; typedef unsigned ...
数字温湿度传感器DHT11详解及例程利用串口显示(已经测试)_专业资料。数字温湿度传感器DHT11详解及例程利用串口显示(程序已经测试)数字温湿度传感器DHT11 1、概述 ...
{ DHT=0; //主机使DHT11低电平并延时至少18ms delay_1ms(21); DHT=1; /... 在12864上显示温湿度(DH... 2页 1下载券 DHT11温湿度传感器在128... 7...
AVR单片机DHT11温湿度传感器,结合12864,AV...
热门文档