欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 基于51單片機(jī)的智能溫濕度大棚程序Proteus仿真設(shè)計 [打印本頁]

作者: 51hei圓圓    時間: 2025-11-12 17:28
標(biāo)題: 基于51單片機(jī)的智能溫濕度大棚程序Proteus仿真設(shè)計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機(jī)源程序如下:
  1. #include "main.h"

  2. #include "LCD1602.h"
  3. #include "keyScan.h"  
  4. #include "bsp_timer.h"
  5. #include "bsp_uart.h"

  6. #include "dht11.h"

  7. // 變量定義
  8. sbit reduce_temp = P2^3;    //控制降溫機(jī)  
  9. sbit add_temp    = P2^2;    //控制升溫機(jī)
  10. sbit reduce_hum  = P2^1;    //控制減濕器
  11. sbit add_hum     = P2^0;    //控制加濕器

  12. sbit LED = P1^7;            //心跳燈

  13. uint8_t  g_key_value = 0;                // 按鍵按下的值
  14. uint8_t  hum_high  = 30,  hum_low     = 25;//設(shè)置的濕度最大值和最小值
  15. uint8_t  temp_high = 35,  temp_low    = 25;//設(shè)置的溫度最大值和最小值
  16. uint8_t  humidity  = 0 ,  temperature =  0;//實(shí)際的濕度值和溫度值
  17. uint8_t  ui_page   = 0 ;                //顯示頁面
  18. uint8_t  set_pos   = 0 ;                //設(shè)置序號 0:設(shè)置hum_high 1:設(shè)置hum_low 2:設(shè)置temp_high 3:設(shè)置temp_low

  19. uint8_t  read_dht11_flag = 0;           //讀取DHT11的標(biāo)志位。
  20. uint8_t  ui_refresh_flag = 0;           //界面刷新的標(biāo)志位。

  21. void main()
  22. {
  23.         uint8_t  ret;
  24.         uint8_t  blink_count = 0;
  25.         uint8_t  lcdShowBuff[16] = {0};
  26.         
  27.         EA = 0;                 //關(guān)閉所有中斷
  28.         LcdInit();            // LCD顯示初始化
  29.         key_init();
  30.         LED = 0;
  31.         bsp_timer_set_ms_IT(Timer0,5);
  32.         Uart1_Init();
  33.         EA = 1;                 //打開所有中斷
  34.         
  35.         while(1)
  36.         {
  37.                 if(read_dht11_flag == 1)
  38.                 {
  39.                         EA = 0;
  40.                         ret = DHT11_Get_Data(&humidity, &temperature) ;
  41.                         EA = 1;
  42.                         printf("hum :%2d  temp:%2d\r\n",(int)humidity,(int)temperature); //發(fā)送一次溫濕度
  43.                         read_dht11_flag = 0;
  44.                 }
  45.                
  46.                 if( ui_refresh_flag == 1)
  47.                 {
  48.                         if(ui_page == 0)
  49.                         {
  50.                                 sprintf((char*)lcdShowBuff,"  real  data    ");
  51.                                 LcdShowStr(0, 0, lcdShowBuff);
  52.                                 sprintf((char*)lcdShowBuff,"hum :%2d  temp:%2d",(int)humidity,(int)temperature);
  53.                                 LcdShowStr(0, 1, lcdShowBuff);
  54.                         }else if(ui_page == 1)
  55.                         {
  56.                                 blink_count ++;
  57.                                 
  58.                                 sprintf((char*)lcdShowBuff,"HumH:%2d  HumL:%2d",(int)hum_high, (int)hum_low);
  59.                                 LcdShowStr(0, 0, lcdShowBuff);
  60.                                 sprintf((char*)lcdShowBuff,"TmpH:%2d  TmpL:%2d",(int)temp_high,(int)temp_low);
  61.                                 LcdShowStr(0, 1, lcdShowBuff);
  62.                                 
  63.                                 // 計數(shù)值為偶數(shù)的時候閃爍
  64.                                 if(blink_count % 2 == 0)
  65.                                 {
  66.                                         switch(set_pos)
  67.                                         {
  68.                                                 case 0:LcdShowStr(5,0,"  ");break;
  69.                                                 case 1:LcdShowStr(14,0,"  ");break;
  70.                                                 case 2:LcdShowStr(5,1,"  ");break;
  71.                                                 case 3:LcdShowStr(14,1,"  ");break;
  72.                                         }
  73.                                 }
  74.                         }
  75.                         ui_refresh_flag = 0;
  76.                 }
  77.         }
  78. }

  79. /**
  80.   * @brief   根據(jù)按鍵值決定當(dāng)前的功能處理
  81.   * @param   
  82.   * @retval  void
  83. **/
  84. void KeyControlFunction(uint8_t key_value)
  85. {
  86.         if(key_value == KEY1_VALUE)
  87.         {
  88.                 if(ui_page == 1)
  89.                 {
  90.                         if(set_pos == 0) hum_high++;
  91.                         else if(set_pos == 1) hum_low++;
  92.                         else if(set_pos == 2) temp_high++;
  93.                         else if(set_pos == 3) temp_low++;
  94.                 }
  95.         }
  96.         else if(key_value == KEY2_VALUE)
  97.         {
  98.                 if(ui_page == 1)
  99.                 {
  100.                         if(set_pos == 0) hum_high--;
  101.                         else if(set_pos == 1) hum_low--;
  102.                         else if(set_pos == 2) temp_high--;
  103.                         else if(set_pos == 3) temp_low--;
  104.                 }
  105.         }
  106.         else if(key_value == KEY3_VALUE)
  107.         {
  108.                 if(ui_page == 0)
  109.                         ui_page = 1;
  110.                 else if(ui_page == 1)
  111.                         ui_page = 0;
  112.         }
  113.         else if(key_value == KEY4_VALUE)
  114.         {
  115.                 if(ui_page == 1)
  116.                 {
  117.                         set_pos ++;
  118.                         if(set_pos > 3)
  119.                                 set_pos = 0;
  120.                 }
  121.         }
  122. }

  123. /**
  124.   * @brief   檢查當(dāng)前溫濕度的狀態(tài)
  125.   *          如果溫度大于設(shè)定值,控制減溫器繼電器打開,如果溫度小于設(shè)定值,控制升溫器繼電器打開。
  126.   *          如果濕度大于設(shè)定值,控制減濕器繼電器打開,如果濕度小于設(shè)定值,控制加濕器繼電器打開。
  127.   * @param   
  128.   * @retval  void
  129. **/
  130. void ControlRelay()
  131. {
  132.         if(temperature > temp_high)
  133.         {
  134.                 reduce_temp = 1;add_temp = 0;
  135.         }else if(temperature < temp_low)
  136.         {
  137.                 reduce_temp = 0;add_temp = 1;
  138.         }else  
  139.         {
  140.                 reduce_temp = 0;add_temp = 0;
  141.         }
  142.         
  143.         if(humidity > hum_high)
  144.         {
  145.                 reduce_hum = 1;add_hum = 0;
  146.         }else if(humidity < hum_low)
  147.         {
  148.                 reduce_hum = 0;add_hum = 1;
  149.         }else  
  150.         {
  151.                 reduce_hum = 0;add_hum = 0;
  152.         }
  153. }
復(fù)制代碼


仿真程序下載: 基于51單片機(jī)的智能溫濕度大棚設(shè)計.7z (98.87 KB, 下載次數(shù): 0)





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1