基于单片机的智能温湿度采集器 联系客服

发布时间 : 星期一 文章基于单片机的智能温湿度采集器更新完毕开始阅读2821a9f0afaad1f34693daef5ef7ba0d4b736d40

淮阴师范学院毕业设计

附录2 主程序

#include //52单片机头文件 #include %uchar i,key_flag;

char set_temp_H=20;//设定温度的变量 char set_temp_L=03;//设定温度的变量 char set_humi_H=60;//设置湿度的变量 char set_humi_L=40;//设置湿度的变量 sbit temp_led_H = P1^1; //温度上限指示灯 sbit temp_led_L = P1^2; //温度下限指示灯 sbit humi_led_H = P1^3; //湿度上限指示灯 sbit humi_led_L = P1^4; //湿度下限指示灯 sbit temp_JDQ_OUT = P2^0; sbit humi_JDQ_OUT = P2^1; sbit k1=P3^2;//定义按键K1 sbit k2=P3^3;//定义按键K2 sbit k3=P3^4;//定义按键K3 sbit k4=P3^5;//定义按键K4

/////////////////////////延时函数///////////////////////////// void delay(uchar x) { uchar a,b; for(a=0;a<20;a++) { for(b=x;b>0;b--); } }

/////////////////////////显示温度和湿度////////////////////////// void disp_t_h(void) {

write_cmd(0x8c);

21

淮阴师范学院毕业设计

write_dat(U8Temp_zheng/10+0X30);//显示温度十位,加0x30是转换成ASCII码 write_cmd(0x8d);

write_dat(U8Temp_zheng+0X30);//显示温度个位 ,加0x30是转换成ASCII码 write_cmd(0xcc);

write_dat(U8Humi_zheng/10+0X30);//显示湿度十位 ,加0x30是转换成ASCII码 write_cmd(0xcd);

write_dat(U8Humi_zheng+0X30);//显示湿度个位 ,加0x30是转换成ASCII码 }

///////////////////////开机显示//////////////////////////////////// void disp_start(void) {

for(i=0;i<16;i++) { write_cmd(0x80+i);

write_dat(tab_t[i]);//温度 }

for(i=0;i<16;i++) { write_cmd(0xc0+i); }

///////////////////////扫描按键//////////////////////////////// void key_scan(void) {

write_dat(tab_h[i]);//湿度 }

if(k1==0)//按下K1进入设置温湿度门槛的设置界面 { //第一、设置温度上限////////////////////////////////

if(key_flag==0)//按键标志0 { write_cmd(0x01);//清屏

write_cmd(0x80);//显示位置第一行第一列 for(i=0;i<13;i++)

write_dat(tab_set_temp_H[i]);//显示SET TEMPERATURE字 while(k4==1)//按下K4 {

22

淮阴师范学院毕业设计

if(k2==0)//按下K2 { while(k2==0);

set_temp_H++;//设置温度数值加 if(set_temp_H==100)//到100,清0 set_temp_H=0; }

if(k3==0)//按下K2

{ while(k3==0);//松手检测

set_temp_H--;//设置温度数值减 if(set_temp_H < 0)//到0,加为100 set_temp_H=99; }

write_cmd(0xc6);

write_dat(set_temp_H/10 + 0x30);//显示设置温度十位 write_cmd(0xc7);

write_dat(set_temp_H + 0x30); //显示设置温度个位 }

delay(200);

}

//第二、设置温度下限////////////////////////////////

if(key_flag==1)//按键标志1 {

write_cmd(0x01);//清屏

write_cmd(0x80);//显示位置第一行第一列 for(i=0;i<13;i++)

write_dat(tab_set_temp_L[i]);//显示SET TEMPERATURE字符 while(k4==1)//按下K4 { if(k2==0)//按下K2

{ while(k2==0);

set_temp_L++;//设置温度数值加 if(set_temp_L==100)//到100,清0 set_temp_L=0; }

23

淮阴师范学院毕业设计

if(k3==0)//按下K2

{ while(k3==0);//松手检测

set_temp_L--;//设置温度数值减 if(set_temp_L<0)//到0,加为100 set_temp_L=99; }

write_cmd(0xc6); }

write_dat(set_temp_L/10 + 0x30);//显示设置温度十位 write_cmd(0xc7);

write_dat(set_temp_L + 0x30); //显示设置温度个位 }

////第三、设置湿度上限/////////////////////////////////////////////////// if(key_flag==2)//按键标志2

{

write_cmd(0x01);//清屏

write_cmd(0x80);//显示位置第一行第一列 for(i=0;i<13;i++)

write_dat(tab_set_humi_H[i]);//显示SET HUMIDITY字符 while(k4==1) {

if(k2==0) { while(k2==0);

set_humi_H++;//设置湿度数值加 if(set_humi_H==100) set_humi_H=0; }

if(k3==0)

{ while(k3==0);

set_humi_H--;//设置湿度数值减 if(set_humi_H<0) set_humi_H=99; }

write_cmd(0xc6);

write_dat(set_humi_H/10 + 0x30);//显示设置湿度十位,加0x30是转换成ASCII码

24