第一范文网 - 专业文章范例文档资料分享平台

基于单片机的智能温湿度采集器

来源:用户分享 时间:2025/5/24 19:49:28 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

淮阴师范学院毕业设计

附录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

搜索更多关于: 基于单片机的智能温湿度采集器 的文档
基于单片机的智能温湿度采集器.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1kdd59e2zu86wqu5roq73pebe0ioab00lkw_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top