久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3216|回復: 1
打印 上一主題 下一主題
收起左側

DHT11溫濕度控制系統源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:310447 發表于 2018-4-17 21:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
溫濕度控制系統源代碼

單片機源程序如下:
  1. //****************************************************************//
  2. //單片機 : STC89C52RC
  3. //硬件連接: P1.7口為通訊口連接DHT11,DHT11的電源和地連接單片機的電源和地。            
  4. //****************************************************************//
  5. #include <reg52.h>
  6. #include "1602.h"
  7. #include "dht.h"
  8. #include "2402.h"
  9. //定義兩個個LED燈
  10. sbit Led_jiangwen=P1^5;              //加熱燈
  11. sbit Led_shengwen=P1^4;            //加濕燈
  12. sbit fmq=P1^3;  //蜂鳴器
  13. sbit Key_TH1 = P3^2;
  14. sbit Key_TH2 = P3^3;
  15. sbit Key_HH1 = P3^4;
  16. sbit Key_HH2 = P3^5; //定義標識
  17. volatile bit FlagStartRH = 0;  //開始溫濕度轉換標志
  18. volatile bit FlagKeyPress = 0; //有鍵按下
  19. volatile bit fmqt = 0;
  20. volatile bit fmqh = 0;
  21. //定義溫濕度傳感器用外部變量
  22. extern U8 U8FLAG,k;
  23. extern U8 U8count,U8temp;
  24. extern U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
  25. extern U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
  26. extern U8 U8comdata;
  27. extern U8 count, count_r;
  28. U16 temp;
  29. S16 temperature, humidity;
  30. S16 idata TH, HH;  //溫度下限和濕度下限
  31. char * pSave;
  32. U8 keyvalue, keyTH1, keyTH2, keyHH1, keyHH2;
  33. //定義變量
  34. U16 RHCounter;
  35. //數據初始化
  36. void Data_Init()
  37. {
  38.   RHCounter = 0;
  39.   Led_qushi = 1;
  40.   Led_jiangwen = 1;
  41.   Led_shengwen = 1;
  42.    TH= 40;
  43.    HH= 85;
  44.   keyvalue = 0;
  45.   keyTH1 = 1;
  46.   keyTH2 = 1;
  47.   keyHH1 = 1;
  48.   keyHH2 = 1;
  49. }
  50. //定時器0初始化
  51. void Timer0_Init()
  52. {
  53. ET0 =1;        //允許定時器0中斷
  54. TMOD =1;       //定時器工作方式選擇
  55. TL0 =0x06;     
  56. TH0 =0xf8;     //定時器賦予初值
  57. TR0 =1;        //啟動定時器
  58. }
  59. //定時器0中斷
  60. void Timer0_ISR (void) interrupt 1 using 0
  61. {
  62. TL0 =0x06;
  63. TH0 =0xf8;     //定時器賦予初值
  64. //每2秒鐘啟動一次溫濕度轉換
  65.    RHCounter ++;
  66.     if(RHCounter >= 1000)
  67.     {
  68.       FlagStartRH = 1;
  69.     RHCounter = 0;
  70.     }
  71. }
  72. //存入設定值、
  73. void Save_Setting()
  74. {
  75.   pSave =  (char *)&TH;      //地址低位對應低8位,高位對應高8位
  76.   wrteeprom(0, *pSave);        //存溫度上限值TH低8位
  77.   DELAY(500);
  78.   pSave ++;
  79.   wrteeprom(1, *pSave);        //存溫度下限值TH高8位
  80.   DELAY(500);
  81.   pSave ++;
  82.   wrteeprom(3, *pSave);        //存濕度下限值RH高8位
  83.   DELAY(500);
  84. }
  85. //載入設定值、
  86. void Load_Setting()
  87. {
  88.   pSave =  (char *)&TH;
  89.   *pSave++ = rdeeprom(0);
  90.   *pSave = rdeeprom(1);
  91.   pSave = (char *)&HH;
  92.   *pSave++ = rdeeprom(2);
  93.   *pSave = rdeeprom(3);
  94.    if((TH>99)||(TH<0)) TH = 40;
  95.    if((HH>99)||(HH<0)) HH = 85;
  96. }
  97. void KeyProcess(uint num)
  98. {
  99.   switch (num)
  100.    {
  101.      case 1:
  102.       if (TH<99) TH++;
  103.       L1602_char(1, 15, TH/10+48);
  104.       L1602_char(1, 16, TH%10+48);
  105.       break;
  106.    case 2:
  107.       if (TH>1) TH--;
  108.       L1602_char(1, 15, TH/10+48);
  109.       L1602_char(1, 16, TH%10+48);
  110.       break;
  111.    case 3:
  112.       if (HH<99) HH++;
  113.       L1602_char(2, 15, HH/10+48);
  114.       L1602_char(2, 16, HH%10+48);
  115.       break;
  116.    case 4:
  117.       if (HH>1) HH--;
  118.       L1602_char(2, 15, HH/10+48);
  119.       L1602_char(2, 16, HH%10+48);
  120.       break;
  121.    default:
  122.       break;
  123.    }
  124.   Save_Setting();
  125. }
  126. /********************************************************************
  127. * 名稱 : Main()
  128. * 功能 : 主函數
  129. ***********************************************************************/
  130. void main()
  131. {
  132.    U16 i, j, testnum;
  133.     EA= 0;
  134. Timer0_Init();  //定時器0初始化
  135.    Data_Init();
  136. EA =1;
  137. L1602_init();
  138. L1602_string(1,1,"Welcome to T&H   ");
  139. L1602_string(2,1,"Control System!  ");
  140. //延時
  141. for(i=0;i<1000;i++)
  142.     for (j=0;j<1000;j++)
  143.     {;}
  144.     //清屏
  145. L1602_string(1,1,"                ");
  146. L1602_string(2,1,"                ");
  147.    L1602_string(1,1,"Tem:   C  TH:");
  148. L1602_string(2,1,"Hum:    % HH:");
  149.    
  150.     //載入溫度下限和濕度下限設定值
  151. Load_Setting();
  152. L1602_char(1,15, TH/10+48);
  153. L1602_char(1,16, TH%10+48);
  154. L1602_char(2,15, HH/10+48);
  155. L1602_char(2,16, HH%10+48);
  156. while(1)
  157. {
  158.       //溫濕度轉換標志檢查
  159.        if (FlagStartRH == 1)
  160.        {
  161.            TR0 = 0;
  162.             testnum = RH();
  163.                     FlagStartRH = 0;
  164.               TR0 = 1;
  165.             //讀出溫濕度,只取整數部分
  166.               humidity = U8RH_data_H;
  167.               temperature = U8T_data_H;
  168.                     //顯示溫濕度
  169.               L1602_int(1,5,temperature);
  170.            L1602_int(2,5,humidity);     
  171.       }
  172.       //溫濕度控制
  173.       if(temperature > TH)
  174.       {
  175.       Led_jiangwen= 0;
  176.       fmqt=1;
  177.       }
  178.       else
  179.       {
  180.       Led_jiangwen= 1;
  181.       fmqt=0;
  182.       }                           //加熱
  183.       if(humidity > HH)
  184.       {
  185.       Led_qushi= 0;
  186.       fmqh=1;
  187.       }
  188.       else
  189.       {
  190.       Led_qushi= 1;
  191.       fmqh=0;
  192.       }                                        //加濕
  193.       if((fmqt==1)||(fmqh==1))
  194.       fmq=0;
  195.       else
  196.       fmq=1;
  197.         
  198.       //鍵盤查詢,在彈起時響應
  199.       if((Key_TH1)&&(keyTH1==0)) {FlagKeyPress = 1; keyvalue = 1;}
  200.        else if ((Key_TH2)&&(keyTH2==0)) {FlagKeyPress = 1; keyvalue =2;}
  201.        else if ((Key_HH1)&&(keyHH1==0)) {FlagKeyPress = 1; keyvalue =3;}
  202.        else if ((Key_HH2)&&(keyHH2==0)) {FlagKeyPress = 1; keyvalue =4;}
  203.       if(FlagKeyPress == 1)
  204.       {
  205.           KeyProcess(keyvalue);
  206.           FlagKeyPress = 0;           
  207.       }
  208.        if (!Key_TH1) keyTH1 = 0;
  209.       elsekeyTH1 = 1;
  210.        if (!Key_TH2) keyTH2 = 0;
  211.       elsekeyTH2 = 1;
  212.        if (!Key_HH1) keyHH1 = 0;
  213.       elsekeyHH1 = 1;
  214.        if (!Key_HH2) keyHH2 = 0;
  215.       elsekeyHH2 = 1;
  216.       
  217. }   
  218. }
復制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:134271 發表于 2018-9-2 20:15 | 只看該作者
缺文件。缺文件。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频网 | 成人影院网站ww555久久精品 | 青青99 | 国产精品久久久久久久久久久久久 | 久久亚洲一区 | 一区二区三区在线免费观看 | 欧美一区二区在线观看 | 国产精品视频播放 | 日韩欧美在线播放 | 91国内精品久久 | 狠狠婷婷综合久久久久久妖精 | 天堂网中文字幕在线观看 | 狠狠干av| 午夜成人在线视频 | 一级做a爰片性色毛片视频停止 | 久久久久久国产精品免费免费狐狸 | 成人精品毛片国产亚洲av十九禁 | 国产人成精品一区二区三 | 麻豆久久久久久久 | 青青草国产在线观看 | 国产精品久久久久久久久久尿 | 久久免费国产视频 | 99re国产视频 | 青青久在线视频 | 91久久精品一区二区三区 | 欧美 视频| 精品国产乱码久久久久久蜜柚 | 欧美一级久久 | 午夜伊人| 网络毛片 | 国产四区 | 成人av一区二区三区 | 九九精品在线 | 免费日韩av | 国产不卡一区在线观看 | 天堂久久网 | 欧洲在线视频 | 国产精品久久久久久久午夜片 | 久久久久一区二区三区 | 成人亚洲精品久久久久软件 | 欧美天堂 |