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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

Proteus模擬仿真蔬菜大棚系統設計 可以幫忙看看哪里有問題嗎?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1079640 發表于 2023-5-25 18:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
Proteus模擬仿真蔬菜大棚系統設計
一、功能
1. 設計一個蔬菜大棚系統電路,此電路能夠檢測大棚內溫度和濕度兩種數據。
2. 為了蔬菜的更好生長,要求對大棚內溫度和濕度進行控制,溫度高了,采用電機散熱,溫度低了采用繼電器控制加熱絲加熱;濕度低了,采用繼電器控制電磁閥放水。
3. 當大棚內溫度和濕度參數超出上下界限時,會進行聲光報警。
4. 數碼管實時顯示大棚內當前溫度和濕度值。
5. 該系統有四個按鍵分別控制溫濕度切換,加,減和確定。
二、要求
1.采用Proteus軟件模擬仿真實現系統設計
2.能檢測溫度和濕度兩種數據,并實時數碼管顯示。
3.有相對應的溫度和濕度控制操作。

可以幫忙看看哪里有問題嗎?
  1. #include <REG51.H>//頭文件
  2. #include <stdio.h>
  3. #include <intrins.h>

  4. #define uchar unsigned char//定義uchar為無符號字符型
  5. #define uint unsigned int//定義uint為無符號整型

  6. #define DHT11_PIN P2_3//溫濕度檢測模塊數據引腳
  7. #define BEEP_PIN P2_4//蜂鳴器引腳
  8. #define LED_PIN P3_0//LED燈引腳
  9. #define FAN_PIN P3_2//風扇控制引腳
  10. #define PUMP_PIN P3_3//水泵控制引腳
  11. #define HEAT_PIN P3_4//加熱指示引腳
  12. #define LCD_DATA P0//液晶顯示屏DATA引腳
  13. #define LCD_RS P2_5//液晶顯示屏RS引腳
  14. #define LCD_RW P2_6//液晶顯示屏RW引腳
  15. #define LCD_E P2_7//液晶顯示屏E引腳
  16. #define KEY_PLUS P1_4//加鍵引腳
  17. #define KEY_MINUS P1_5//減鍵引腳
  18. #define KEY_OK P1_6//確定鍵引腳
  19. #define KEY_SWITCH P1_7//溫濕度切換鍵引腳

  20. sbit DHT11_PIN = P2^3;
  21. sbit BEEP_PIN = P2^4;
  22. sbit LED_PIN = P3^0;
  23. sbit FAN_PIN = P3^2;
  24. sbit PUMP_PIN = P3^3;
  25. sbit HEAT_PIN = P3^4;
  26. sbit LCD_RS = P2^5;
  27. sbit LCD_RW = P2^6;
  28. sbit LCD_E = P2^7;
  29. sbit KEY_PLUS = P1^4;
  30. sbit KEY_MINUS = P1^5;
  31. sbit KEY_OK = P1^6;
  32. sbit KEY_SWITCH = P1^7;

  33. unsigned char table[] ="Temperature: 00C Humidity: 00%";//液晶顯示屏顯示格式
  34. unsigned char temperature, humidity;
  35. //延時ms函數
  36. void delay_ms(uint ms) {
  37.    uint i, j;
  38.    for (i = ms; i > 0; i--)
  39.        for (j = 114; j > 0; j--);
  40. }
  41. //延時us函數
  42. void delay_us(uint us) {
  43.    while (us--);
  44. }

  45. void LCD_write_cmd(uchar cmd) {
  46.    LCD_RS = 0;
  47.    LCD_RW = 0;
  48.    LCD_DATA = cmd;
  49.    LCD_E = 1;
  50.    _nop_();
  51.    _nop_();
  52.    LCD_E = 0;
  53. }

  54. void LCD_write_data(uchar dat) {
  55.    LCD_RS = 1;
  56.    LCD_RW = 0;
  57.    LCD_DATA = dat;
  58.    LCD_E = 1;
  59.    _nop_();
  60.    _nop_();
  61.    LCD_E = 0;
  62. }

  63. void LCD_init() {
  64.    LCD_write_cmd(0x38);
  65.     delay_ms(5);
  66.    LCD_write_cmd(0x38);
  67.    delay_ms(1);
  68.    LCD_write_cmd(0x38);
  69.    delay_ms(1);
  70.    LCD_write_cmd(0x38);
  71.    delay_ms(1);
  72.    LCD_write_cmd(0x08);
  73.    delay_ms(1);
  74.    LCD_write_cmd(0x01);
  75.    delay_ms(1);
  76.    LCD_write_cmd(0x06);
  77.     delay_ms(1);
  78.    LCD_write_cmd(0x0c);
  79.    delay_ms(1);
  80. }

  81. void DHT11_start() {
  82.    DHT11_PIN = 0;
  83.    delay_ms(18);
  84.    DHT11_PIN = 1;
  85.    delay_us(30);
  86. }

  87. uchar DHT11_response() {
  88.    uchar i;
  89.    for (i = 0; i < 9; i++) {
  90.        if (!DHT11_PIN) {
  91.            while (!DHT11_PIN);
  92.            return 0;
  93.        }
  94.     }
  95.     if(DHT11_PIN) {
  96.        while (DHT11_PIN);
  97.        return 1;
  98.     }
  99.    return 0;
  100. }

  101. uchar DHT11_read_byte() {
  102.    uchar i, dat = 0;
  103.    for (i = 0; i < 8; i++) {
  104.        while (!DHT11_PIN);
  105.        delay_us(30);
  106.        if (DHT11_PIN)
  107.            dat |= (1 << (7 - i));
  108.        while (DHT11_PIN);
  109.     }
  110.    return dat;
  111. }

  112. void DHT11_read_data() {
  113.    uchar check_sum;
  114.    DHT11_start();
  115.    if (DHT11_response()) {
  116.        humidity = DHT11_read_byte();
  117.        humidity = DHT11_read_byte();
  118.        temperature = DHT11_read_byte();
  119.        temperature = DHT11_read_byte();
  120.        check_sum = DHT11_read_byte();
  121.        if (check_sum == (humidity + temperature))
  122.            LED_PIN = 0;
  123.        else
  124.            LED_PIN = 1;
  125.     }
  126.    else {
  127.        LED_PIN = 1;
  128.     }
  129. }

  130. void display_data() {
  131.    uchar i;
  132.    uchar temp = temperature;
  133.    uchar humi = humidity;
  134.    table[13] = temp / 10 + '0';
  135.    table[14] = temp % 10 + '0';
  136.    table[28] = humi / 10 + '0';
  137.    table[29] = humi % 10 + '0';
  138.    for (i = 0; i < 32; i++)
  139.        LCD_write_data(table[i ]);
  140. }

  141. void fan_control(uchar flag) {
  142.    if (flag) {
  143.        FAN_PIN = 1;
  144.        HEAT_PIN = 0;
  145.     }
  146.    else {
  147.        FAN_PIN = 0;
  148.     }
  149. }

  150. void pump_control(uchar flag) {
  151.    if (flag) {
  152.        PUMP_PIN = 1;
  153.     }
  154.     else{
  155.        PUMP_PIN = 0;
  156.     }
  157. }

  158. void heat_control(uchar flag) {
  159.    if (flag) {
  160.        HEAT_PIN = 1;
  161.        FAN_PIN = 0;
  162.     }
  163.    else {
  164.        HEAT_PIN = 0;
  165.     }
  166. }

  167. void main() {
  168.    uchar key_value = 0;
  169.    uchar mode = 0;
  170.    LCD_init();
  171.     while(1) {
  172.        DHT11_read_data();
  173.        display_data();
  174.        if (temperature > 28) {
  175.            fan_control(1);
  176.            heat_control(0);
  177.            BEEP_PIN = 1;
  178.        }
  179.        else if (temperature < 20) {
  180.            fan_control(0);
  181.             heat_control(1);
  182.            BEEP_PIN = 1;
  183.        }
  184.        else {
  185.            fan_control(0);
  186.            heat_control(0);
  187.            BEEP_PIN = 0;
  188.        }
  189.        if (humidity < 50) {
  190.            pump_control(1);
  191.        }
  192.        else {
  193.             pump_control(0);
  194.        }
  195.        if (KEY_PLUS == 0) {
  196.            delay_ms(10);
  197.            if (KEY_PLUS == 0) {
  198.                 key_value = 1;
  199.                 while (!KEY_PLUS);
  200.            }
  201.        }
  202.        else if (KEY_MINUS == 0) {
  203.            delay_ms(10);
  204.            if (KEY_MINUS == 0) {
  205.                 key_value = 2;
  206.                 while (!KEY_MINUS);
  207.            }
  208.        }
  209.        else if (KEY_OK == 0) {
  210.            delay_ms(10);
  211.            if (KEY_OK == 0) {
  212.                 key_value = 3;
  213.                 while (!KEY_OK);
  214.            }
  215.        }
  216.        else if (KEY_SWITCH == 0) {
  217.            delay_ms(10);
  218.            if (KEY_SWITCH == 0) {
  219.                 key_value = 4;
  220.                 while (!KEY_SWITCH);
  221.            }
  222.        }
  223.        if (key_value == 1) {
  224.            if (mode == 0) {
  225.                 mode = 1;
  226.            }
  227.            else {
  228.                 mode = 0;
  229.            }
  230.            key_value = 0;
  231.         }
  232.        else if (key_value == 2) {
  233.            if (mode == 1) {
  234.                 if (temperature < 50) {
  235.                     temperature++;
  236.                 }
  237.            }
  238.            else if (mode == 2) {
  239.                 if (humidity < 100) {
  240.                    humidity++;
  241.                 }
  242.            }
  243.            key_value = 0;
  244.        }
  245.        else if (key_value == 3) {
  246.            if (mode == 1) {
  247.                 if (temperature > 0) {
  248.                     temperature--;
  249.                 }
  250.            }
  251.            else if (mode == 2) {
  252.                 if (humidity > 0) {
  253.                     humidity--;
  254.                 }
  255.            }
  256.            key_value = 0;
  257.        }
  258.        else if (key_value == 4) {
  259.            if (mode == 0) {
  260.                 mode = 1;
  261.            }
  262.            else if (mode == 1) {
  263.                mode = 2;
  264.            }
  265.            else if (mode == 2) {
  266.                 mode = 0;
  267.            }
  268.            key_value = 0;
  269.        }
  270.     }
  271. }
復制代碼


溫濕度報警系統.zip

111.92 KB, 下載次數: 6

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

使用道具 舉報

沙發
ID:123289 發表于 2023-5-26 16:22 | 只看該作者
此帖僅作者可見

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av在线一区二区 | 99re视频在线观看 | 成人三级网址 | 男女性毛片 | 午夜视频在线免费观看 | 在线观看av中文字幕 | 黄色成人在线网站 | 日韩欧美国产一区二区三区 | 91精品久久久久久久久久 | 在线黄av | 国产免费a | 亚洲国产成人精品女人久久久 | 久久久久国产一区二区三区不卡 | 久久99视频免费观看 | 日本黄视频在线观看 | 久久久久国产一区二区三区四区 | 五月综合久久 | 成人国产精品久久久 | 久久小视频 | 亚洲精品久久久久久国产精华液 | 一级片av| 国产美女一区 | 国产一区电影 | 欧美精品综合在线 | 亚州av| 九九亚洲 | 国产欧美视频一区二区三区 | 欧美性受xxxx | 久久免费精品视频 | 久久国产精品99久久久大便 | 午夜视频在线观看一区二区 | 成人在线免费 | 一区二区av | 亚洲午夜视频 | 国产aa| 日韩欧美亚洲 | 视频一二三区 | 狠狠亚洲 | 亚洲国产精品一区二区第一页 | 欧美精品久久久久 | 日韩在线不卡视频 |