单片机温度湿度控制程序(dht11)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档