单片机温度湿度控制程序(dht11)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、温度湿度控制主程序(单片机)
#include
#include "dht11.h"
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^3;
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^6;
sbit k4=P3^7;
sbit rs=P3^5;
sbit lcden=P3^4;
uchar table0[]="T:00.00 TM:00.0 ";//初始化液晶温度实测值以及门限值缓存uchar table1[]="H:00.00 HM:00.0 ";//初始化液晶湿度实测值以及门限值缓存uchar table3[]="This is T/H test";//系统开机显示内容初始化缓存
uchar table4[]="Result is coming";//系统开机显示内容初始化缓存
static uchar flag;
extern int temp_value,humi_value;
void Delay_1ms(uint ms);
uint TM,HM;
void delay(uint x)//
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
void delay1(uint x)//延时程序
{
uint a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void write_com(uchar com)//液晶写指令操作
{
P0=com;
rs=0;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void write_date(uchar date)//液晶写数据操作
{
P0=date;
rs=1;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void init()//液晶初始化
{
write_com(0x38);
delay(1);
write_com(0x0c);
delay(1);
write_com(0x06);
delay(1);
write_com(0x01);
delay(1);
}
void LCD_Display(uchar buff1[],uchar buff2[])//液晶显示程序{
uchar aa;
init();//液晶初始化
write_com(0x80+16);//写入第一行数据指令
delay(1);
for(aa=0;aa<16;aa++)//写入第一行待显示数据
{
write_date(buff1[aa]);
}
write_com(0xc0+16); //写入第二行数据指令
for(aa=0;aa<16;aa++)//写入第一行待显示数据
{
write_date(buff2[aa]);
}
for(aa=0;aa<16;aa++)
{
write_com(0x18);
delay(1);
}
}
void Tem_Ch(uchar AA,uchar nn)//T门限数值替换{
switch(AA)
{
case 0:
table0[nn]='0';
break;
case 1:
table0[nn]='1';
break;
case 2:
table0[nn]='2';
break;
case 3:
table0[nn]='3';
break;
case 4:
table0[nn]='4';
break;
case 5:
table0[nn]='5';
break;
case 6:
table0[nn]='6';
break;
case 7:
table0[nn]='7';
break;
case 8:
table0[nn]='8';
break;
case 9:
table0[nn]='9';
break;
}
}
void Hum_Ch(uchar BB,uchar mm)//H门限数值替换{
switch(BB)
{
case 0:
table1[mm]='0';
break;
case 1:
table1[mm]='1';
break;
case 2:
table1[mm]='2';
break;
case 3:
table1[mm]='3';
break;
case 4:
table1[mm]='4';
break;
case 5:
table1[mm]='5';
break;
case 6:
table1[mm]='6';
break;
case 7:
table1[mm]='7';
break;
case 8:
table1[mm]='8';
break;
case 9:
table1[mm]='9';
break;
}
}
///////////
void YZ_Resh()//门限值更新
{
uchar A1,A2,A3;
A1=TM/10;//取十位
A2=TM%10;//取个位
A3=0;
Tem_Ch(A1,11);//写入对应的液晶显示缓存
Tem_Ch(A2,12);//写入对应的液晶显示缓存Tem_Ch(A3,14);//写入对应的液晶显示缓存A1=HM/10;
A2=HM%10;
A3=0;
Hum_Ch(A1,11);
Hum_Ch(A2,12);