找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5467|回复: 10
打印 上一主题 下一主题
收起左侧

Sht11温室大棚温湿度检测单片机源程序及仿真

  [复制链接]
跳转到指定楼层
楼主
温室大棚温湿度监测
包keil程序和proteus仿真


单片机源程序如下:

  1. /*************************************************************************************/




  2. //主函数( main.c):
  3. #include<tou.h>
  4. #include<serial.h>
  5. typedef union //定义共用同类型
  6. {
  7. unsigned int i;
  8. float f;
  9. } value;
  10. idata unsigned int t=10;
  11. idata unsigned int h=30;
  12. //延时函数
  13. void delay(int z) //z 为毫秒数
  14. {
  15. int x,y;
  16. for(x=z;x>0;x--)
  17. for(y=125;y>0;y--);
  18. }

  19. void key(void)
  20. {
  21. uchar key1;
  22. temp0=1;
  23. temp1=1;
  24. humi0=1;
  25. humi1=1;

  26. if(temp0==0)  t=t+1;
  27. if(temp1==0)  t=t-1;
  28. if(humi0==0)  h=h+1;
  29. if(humi1==0)  h=h-1;
  30. temp0=1;
  31. temp1=1;
  32. humi0=1;
  33. humi1=1;
  34. key1=P3;
  35. key1=key1&0x3c;
  36. while(key1!=0x3c)
  37. {key1=P3;
  38. key1=key1&0x3c;}
  39. }
  40.   
  41. void main()
  42. {
  43. unsigned int temp,humi;
  44. value humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度 //
  45. //float dew_point; //用于记录露点值
  46. unsigned char error; //用于检验是否出现错误
  47. unsigned char checksum; //CRC

  48. idata char dis_buf[]="温度:30.5C 湿度:30.3%RH\r\n" ;
  49. uchar wendu[6]; //用于记录温度
  50. uchar shidu[6]; //用于记录湿度
  51. LCD_Initial();  //初始化液晶
  52. GotoXY(0,0);  //选择温度显示位置
  53. Print("TEMP: %C"); //5 格空格
  54. GotoXY(0,1);  //选择湿度显示位置
  55. Print("HUMI: %RH"); //5 格空格
  56. s_connectionreset(); //启动连接复位
  57. EA=1;
  58. serial_init(9600)  ;

  59. while(1)
  60. {
  61. set=1;
  62. error=0; //初始化 error=0,即没有错误
  63. error+=s_measure((unsigned char*)&temp_val.i,&checksum,TEMP); // 温度测量
  64. error+=s_measure((unsigned char*)&humi_val.i,&checksum,HUMI); // 湿度测量
  65. if(error!=0) s_connectionreset(); ////如果发生错误,系统复位
  66. else
  67. {
  68. humi_val.f=(float)humi_val.i; //转换为浮点数
  69. temp_val.f=(float)temp_val.i; //转换为浮点数
  70. calc_sth10(&humi_val.f,&temp_val.f); //修正相对湿度及温度 //
  71. //dew_point=calc_dewpoint(humi_val.f,temp_val.f); // 计算 e dew_point
  72. temp=temp_val.f*10;
  73. humi=humi_val.f*10; GotoXY(5,0);  //设置温度显示位置
  74. if(set==1)
  75. {
  76. wendu[0]=temp/1000+'0'; //温度百位
  77. wendu[1]=temp%1000/100+'0'; //温度十位
  78. wendu[2]=temp%100/10+'0';  //温度个位
  79. wendu[3]=0x2E; //小数点
  80. wendu[4]=temp%10+'0'; //温度小数点后第一位
  81. Print(wendu); //输出温度
  82. GotoXY(5,1);  //设置湿度显示位置
  83. shidu[0]=humi/1000+'0'; //湿度百位
  84. shidu[1]=humi%1000/100+'0'; //湿度十位
  85. shidu[2]=humi%100/10+'0'; //湿度个位
  86. shidu[3]=0x2E; //小数点
  87. shidu[4]=humi%10+'0'; //湿度小数点后第一位
  88. Print(shidu); //输出湿度
  89. dis_buf[6]=wendu[1] ;
  90. dis_buf[7]=wendu[2] ;
  91. dis_buf[8]=wendu[3] ;
  92. dis_buf[9]=wendu[4] ;
  93. dis_buf[18]=shidu[1] ;
  94. dis_buf[19]=shidu[2] ;
  95. dis_buf[20]=shidu[3] ;
  96. dis_buf[21]=shidu[4] ;
  97. if(serial_send_ok==1)
  98.    serial_write_str(dis_buf) ;
  99. }
  100. if(set==0)
  101. {
  102. key();
  103. wendu[0]=t*10/1000+'0'; //温度百位
  104. wendu[1]=t*10%1000/100+'0'; //温度十位
  105. wendu[2]=t*10%100/10+'0';  //温度个位
  106. wendu[3]=0x2E; //小数点
  107. wendu[4]=t*10%10+'0'; //温度小数点后第一位
  108. Print(wendu); //输出温度
  109. GotoXY(5,1);  //设置湿度显示位置
  110. shidu[0]=h*10/1000+'0'; //湿度百位
  111. shidu[1]=h*10%1000/100+'0'; //湿度十位
  112. shidu[2]=h*10%100/10+'0'; //湿度个位
  113. shidu[3]=0x2E; //小数点
  114. shidu[4]=h*10%10+'0'; //湿度小数点后第一位
  115. Print(shidu); //输出湿度
  116. }
  117. }

  118. if(temp>t*10)
  119. {
  120. jwBaojin=1;
  121. }
  122. else
  123. {
  124. jwBaojin=0;
  125. }
  126. //delay(800); //等待足够长的时间,以现行下一次转换
  127. if(temp<t*10-10)
  128. {
  129. swBaojin=1;
  130. }
  131. else
  132. {
  133. swBaojin=0;
  134. }
  135. //delay(800); //等待足够长的时间,以现行下一次转换
  136. if(humi<h*10)
  137. ……………………

  138. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
Sht11湿度测量仿真.rar (392.33 KB, 下载次数: 183)
程序.docx (19.5 KB, 下载次数: 103)


评分

参与人数 1黑币 +3 收起 理由
HanCock + 3 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:284755 发表于 2018-5-21 16:51 | 只看该作者
贴主在吗?我已经复原右边C:\Users\Administrator\Desktop\51单片机_Sht11湿度测量仿真---左边电机led连接P1.0会一直工作。连P1.1不工作,设置温度补偿值减到0则又会一直工作C:\Users\Administrator\Desktop\51单片机_Sht11湿度测量仿真。---是蜂鸣器接到P1.2吗?
回复

使用道具 举报

板凳
ID:284755 发表于 2018-5-21 17:29 | 只看该作者
贴主在吗?我已经复原右边
---左边电机led连接P1.0会一直工作。连P1.1不工作,设置温度补偿值减到0则又会一直工作
---是蜂鸣器接到P1.2吗?

]LPHV8YQTLKVHRP{Q4HDB2G.png (18.97 KB, 下载次数: 42)

]LPHV8YQTLKVHRP{Q4HDB2G.png

IO7@[VEQB8C64AWS]2UJ1EP.png (30.29 KB, 下载次数: 86)

IO7@[VEQB8C64AWS]2UJ1EP.png
回复

使用道具 举报

地板
ID:284755 发表于 2018-5-22 09:39 | 只看该作者
报警机制如程序:
--必须有4个蜂鸣器,具有不同含义。

9WY~PL$J`63B4_~GE0O2`WB.png (5.87 KB, 下载次数: 73)

9WY~PL$J`63B4_~GE0O2`WB.png

XZ}`QD`V~L73`PD(@R13D6O.png (36.66 KB, 下载次数: 40)

XZ}`QD`V~L73`PD(@R13D6O.png
回复

使用道具 举报

5#
ID:337710 发表于 2018-6-6 20:09 | 只看该作者
PCB 图有?
回复

使用道具 举报

6#
ID:218113 发表于 2018-7-14 10:36 | 只看该作者
非常好,感谢分享
回复

使用道具 举报

7#
ID:399383 发表于 2018-9-18 10:24 | 只看该作者
感谢分享
回复

使用道具 举报

8#
ID:431304 发表于 2018-11-23 08:50 | 只看该作者
刚好需要这个,感谢分享
回复

使用道具 举报

9#
ID:426376 发表于 2018-11-23 12:27 | 只看该作者
参考,参考,厉害
回复

使用道具 举报

10#
ID:368810 发表于 2020-5-9 13:13 | 只看该作者
在大棚里是不是需要放置多个传感器
回复

使用道具 举报

11#
ID:368810 发表于 2020-5-9 13:39 | 只看该作者
HanCock 发表于 2018-5-22 09:39
报警机制如程序:
--必须有4个蜂鸣器,具有不同含义。

大佬源程序能发一下吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表