51单片机与DHT11温湿度传感器(最简单程序)
时间:10-02
整理:3721RD
点击:
#include<reg52.h>//用KEIL编写的程序
#include "temp.h"
sbit a=P3^0;
sbit b=P3^1;
sbit c=P3^2;
unsigned char k,l;
extern unsigned char num[4];
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char dot0,shi,ge,dot1,shi1,ge1;
void delay2();
void main()
{
while(1)
{
k=qudong();
shi=num[2]/10%10;
ge=num[2]%10;
dot0=num[3]/100;
shi1=num[0]/10%10;
ge1=num[0]%10;
dot1=num[1]/100;
delay2();
}
}
void delay2()
{
unsigned char m,n;
for(m=3;m>0;m--)
for(n=110;n>0;n--)
for(k=0;k<6;k++)
{ l=200;
switch(k)
{
case 0:a=0;b=0;c=0;P0=table[shi];while(l--);break;
case 1:a=1;b=0;c=0;P0=table[ge];while(l--);break;
case 2:a=0;b=1;c=0;P0=table[dot0];while(l--);break;
case 3:a=1;b=1;c=0;P0=table[shi1];while(l--);break;
case 4:a=0;b=0;c=1;P0=table[ge1];while(l--);break;
case 5:a=1;b=0;c=1;P0=table[dot1];while(l--);break;
}
}
}
#ifndef _TEMP_H_//"temp.h"头文件
#define _TEMP_H
#include<reg52.h>
sbit send=P1^1;
unsigned char qudong();
#endif
#include"temp.h"//模块化编程
#include<reg52.h>
unsigned char t;
unsigned char num[5];
unsigned char i,j;
void delay(unsigned char x)
{
unsigned char y;
for(;x>0;x--)
for(y=110;y>0;y--);
}
void delay1()
{
unsigned char i;
i=10;
for(;i>0;i--);
}
void star()
{
TH0=0;
TL0=0;
TMOD=0x01;
ET0=1;
EA=1;
TR0=0;
}
unsigned char qudong()
{
star();
send=1;
delay(20);
send=0;
delay(20);
send=1;
while(send==1);
delay1();
while(send==0);
delay1();
while(send==1);
for(j=0;j<5;j++)
for(i=0;i<8;i++){
while(send==0);TR0=1;
while(send==1);TR0=0;
if(TL0>20&&TL0<30)num[j]=(num[j]<<1)|0;
else num[j]=(num[j]<<1)|1;
TL0=0;
}
send=1;
delay(20);
return 0;
}
#include "temp.h"
sbit a=P3^0;
sbit b=P3^1;
sbit c=P3^2;
unsigned char k,l;
extern unsigned char num[4];
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char dot0,shi,ge,dot1,shi1,ge1;
void delay2();
void main()
{
while(1)
{
k=qudong();
shi=num[2]/10%10;
ge=num[2]%10;
dot0=num[3]/100;
shi1=num[0]/10%10;
ge1=num[0]%10;
dot1=num[1]/100;
delay2();
}
}
void delay2()
{
unsigned char m,n;
for(m=3;m>0;m--)
for(n=110;n>0;n--)
for(k=0;k<6;k++)
{ l=200;
switch(k)
{
case 0:a=0;b=0;c=0;P0=table[shi];while(l--);break;
case 1:a=1;b=0;c=0;P0=table[ge];while(l--);break;
case 2:a=0;b=1;c=0;P0=table[dot0];while(l--);break;
case 3:a=1;b=1;c=0;P0=table[shi1];while(l--);break;
case 4:a=0;b=0;c=1;P0=table[ge1];while(l--);break;
case 5:a=1;b=0;c=1;P0=table[dot1];while(l--);break;
}
}
}
#ifndef _TEMP_H_//"temp.h"头文件
#define _TEMP_H
#include<reg52.h>
sbit send=P1^1;
unsigned char qudong();
#endif
#include"temp.h"//模块化编程
#include<reg52.h>
unsigned char t;
unsigned char num[5];
unsigned char i,j;
void delay(unsigned char x)
{
unsigned char y;
for(;x>0;x--)
for(y=110;y>0;y--);
}
void delay1()
{
unsigned char i;
i=10;
for(;i>0;i--);
}
void star()
{
TH0=0;
TL0=0;
TMOD=0x01;
ET0=1;
EA=1;
TR0=0;
}
unsigned char qudong()
{
star();
send=1;
delay(20);
send=0;
delay(20);
send=1;
while(send==1);
delay1();
while(send==0);
delay1();
while(send==1);
for(j=0;j<5;j++)
for(i=0;i<8;i++){
while(send==0);TR0=1;
while(send==1);TR0=0;
if(TL0>20&&TL0<30)num[j]=(num[j]<<1)|0;
else num[j]=(num[j]<<1)|1;
TL0=0;
}
send=1;
delay(20);
return 0;
}
可以具体解释一下吗,我不是很懂