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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機的DHT11去濕燈及溫度上限和濕度上限設定值的源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:331034 發表于 2018-5-16 09:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機的I2C例程

單片機源程序如下:
  1. #include <reg52.h>
  2. #include "1602.h"
  3. #include "dht.h"
  4. //#include "2402.h"

  5. //定義三個LED燈
  6. //sbit Led_qushi=P1^6;                //去濕燈
  7. //sbit Led_jiangwen=P1^5;                //降溫燈
  8. //sbit Led_shengwen=P1^4;                //升溫燈
  9. //sbit Key_TH1 = P3^2;
  10. //sbit Key_TH2 = P3^3;
  11. //sbit Key_HH1 = P3^4;
  12. //sbit Key_HH2 = P3^5
  13. sbit BUZZER = P1^5;                                                //蜂鳴器端口

  14. //定義標識
  15. volatile bit FlagStartRH = 0;  //開始溫濕度轉換標志
  16. //volatile bit FlagKeyPress = 0; //有鍵按下


  17. //定義溫濕度傳感器用外部變量
  18. extern U8  U8FLAG,k;
  19. extern U8  U8count,U8temp;
  20. extern U8  U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
  21. extern U8  U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
  22. extern U8  U8comdata;
  23. extern U8  count, count_r;

  24. U16 temp;
  25. S16 temperature, humidity;
  26. S16 idata TH, HH;  //溫度上限和濕度上限
  27. char * pSave;
  28. //U8 keyvalue, keyTH1, keyTH2, keyHH1, keyHH2;

  29. //定義變量
  30. U16 RHCounter;


  31. //數據初始化
  32. void Data_Init()
  33. {
  34.    RHCounter = 0;
  35. //   Led_qushi = 1;
  36. //   Led_jiangwen = 1;
  37. //   Led_shengwen = 1;
  38.         BUZZER = 1;
  39.    TH = 40;
  40.    HH = 85;
  41. //   keyvalue = 0;
  42. //   keyTH1 = 1;
  43. //   keyTH2 = 1;
  44. //   keyHH1 = 1;
  45. //   keyHH2 = 1;
  46. }

  47. //定時器0初始化
  48. void Timer0_Init()
  49. {
  50.         ET0 = 1;        //允許定時器0中斷
  51.         TMOD = 1;       //定時器工作方式選擇
  52.         TL0 = 0x06;     
  53.         TH0 = 0xf8;     //定時器賦予初值
  54.         TR0 = 1;        //啟動定時器
  55. }

  56. //定時器0中斷
  57. void Timer0_ISR (void) interrupt 1 using 0
  58. {
  59.         TL0 = 0x06;
  60.         TH0 = 0xf8;     //定時器賦予初值

  61.         //每2秒鐘啟動一次溫濕度轉換
  62.     RHCounter ++;
  63.     if (RHCounter >= 1000)
  64.     {
  65.        FlagStartRH = 1;
  66.            RHCounter = 0;
  67.     }
  68. }

  69. //存入設定值、
  70. //void Save_Setting()
  71. //{
  72. //   pSave =  (char *)&TH;          //地址低位對應低8位,高位對應高8位
  73. //   wrteeprom(0, *pSave);          //存溫度上限值TH低8位
  74. //   DELAY(500);
  75. //   pSave ++;
  76. //   wrteeprom(1, *pSave);          //存溫度上限值TH高8位
  77. //   DELAY(500);
  78. //   pSave =  (char *)&HH;
  79. //   wrteeprom(2, *pSave);          //存濕度上限值RH低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. BUZZER = 0;
  157.                         
  158.         while(1)
  159.         {
  160.        //溫濕度轉換標志檢查
  161.                  if (FlagStartRH == 1)
  162.                  {
  163.                      TR0 = 0;
  164.              testnum = RH();
  165.                           FlagStartRH = 0;
  166.                          TR0 = 1;
  167.              //讀出溫濕度,只取整數部分
  168.                          humidity = U8RH_data_H;
  169.                          temperature = U8T_data_H;
  170.                           //顯示溫濕度
  171.                          L1602_int(1,5,temperature);
  172.                      L1602_int(2,5,humidity);
  173.                 }
  174.                 //溫濕度控制
  175. //                if (temperature > TH) Led_jiangwen = 0;
  176. //                else Led_jiangwen = 1;                                //降溫
  177. //                if (humidity > HH) Led_qushi = 0;
  178. //                else Led_qushi = 1;                                                //去濕
  179. //                 
  180.                 //鍵盤查詢,在彈起時響應
  181. //                if ((Key_TH1)&&(keyTH1==0)) {FlagKeyPress = 1; keyvalue = 1;}
  182. //        else if ((Key_TH2)&&(keyTH2==0)) {FlagKeyPress = 1; keyvalue = 2;}
  183. //        else if ((Key_HH1)&&(keyHH1==0)) {FlagKeyPress = 1; keyvalue = 3;}
  184. //        else if ((Key_HH2)&&(keyHH2==0)) {FlagKeyPress = 1; keyvalue = 4;}
  185. //                if (FlagKeyPress == 1)
  186. //                {
  187. //           KeyProcess(keyvalue);
  188. //           FlagKeyPress = 0;           
  189. //                }
  190. //        if (!Key_TH1) keyTH1 = 0;
  191. //                else keyTH1 = 1;
  192. //        if (!Key_TH2) keyTH2 = 0;
  193. //                else keyTH2 = 1;
  194. //        if (!Key_HH1) keyHH1 = 0;
  195. //                else keyHH1 = 1;
  196. //        if (!Key_HH2) keyHH2 = 0;
  197. //                else keyHH2 = 1;
  198.                  
  199.         }        
  200. }
復制代碼

所有資料51hei提供下載:
I2C.rar (132.06 KB, 下載次數: 22)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品在线免费观看 | 午夜免费看视频 | 一级大片网站 | 国产精品自产拍 | 久久久久国产精品午夜一区 | 国产在线一区二区三区 | 一区二区三区国产 | 日日草天天干 | 日日噜| 人人干天天干 | 伊人精品在线 | 日韩欧美专区 | 新超碰97 | 一区二区三区四区在线视频 | 黄色一级毛片 | 五月天婷婷综合 | 红色av社区| 天天看天天摸天天操 | 日本三级做a全过程在线观看 | 日日干日日射 | 99国产精品久久久 | 日日摸夜夜爽人人添av | 欧美日韩成人在线 | 精品乱人伦一区二区三区 | 久久久国产一区二区三区 | 亚洲视频免费在线播放 | 日韩精品一区二区三区中文字幕 | 久久免费福利 | 日本免费黄色一级片 | 亚洲一区二区三区四区在线观看 | 久久国内精品 | 精品产国自在拍 | 91精品国产自产在线老师啪 | 日韩成人影院在线观看 | 国产伦精品一区二区三区高清 | 一区二区三区国产 | 欧美一区二区激情三区 | 亚洲欧美成人影院 | 欧美激情亚洲激情 | 久久男人 | 中国大陆高清aⅴ毛片 |