找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1377|回復(fù): 2
收起左側(cè)

如何改進(jìn)單片機程序可以增設(shè)一個溫濕度的最低臨界值?

[復(fù)制鏈接]
ID:1007033 發(fā)表于 2022-2-28 15:03 | 顯示全部樓層 |閱讀模式
各位黑友,現(xiàn)在程序是第一行讀取的DHT11溫濕度如果高于第二行設(shè)置的標(biāo)準(zhǔn),左邊的燈就會相應(yīng)溫濕度分別亮。
我應(yīng)該修改哪里的代碼,可以在程序內(nèi)部設(shè)置一個最低溫濕度的限制,默認(rèn)讀取的DHT11溫濕度低于這個值就會相應(yīng)分別亮燈。

仿真圖

仿真圖
回復(fù)

使用道具 舉報

ID:1007033 發(fā)表于 2022-2-28 15:04 | 顯示全部樓層
這是main的c文件
#include "reg51.h"
#include "lcd1602.h"
#include "dht11.h"
#include "delay.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "keyscanner.h"
sbit led1=P0^1;
sbit led2=P0^2;
unsigned char DHT[5];
int RH,T,key_num;
int set_T=25,set_RH=75;
extern char  str_key[10];
char str_RH[10],str_T[10],str_key_num[10];
char str_RH_set[10],str_T_set[10];
void GET_VAR(int num);
void SET_VAR(int num);//num:0為濕度,num:1為溫度
void display_all();
void main()
{
        LCD_init();
        DHT_Start();
        delay_ms(1);
        while(1)
        {
                display_all();
                key_num=key_scan();
                if(key_num==12)
                {
                        LCD_write_command(0x01);
                        set_T=set_T+1;
                        //SET_VAR(2);
                       
                }
                else if(key_num==16)
                {
                        LCD_write_command(0x01);
                        set_T=set_T-1;
                }
                if(key_num==4)
                {
                        LCD_write_command(0x01);
                        set_RH=set_RH+1;
                        //SET_VAR(2);
                       
                }
                else if(key_num==8)
                {
                        LCD_write_command(0x01);
                        set_RH=set_RH-1;
                }
                if(set_T<T)
                {
                        led1=0;
                }
                else
                {
                        led1=1;
                }
                if(set_RH<RH)
                {
                        led2=0;
                }
                else
                {
                        led2=1;
                }
        }
}
void GET_VAR(int num)//num:0為濕度,num:2為溫度
{
        DHT_Start();
        DHT_ByteRead(DHT);
        if(num==0)
        {
                RH=DHT[0];//rh:濕度
                sprintf(str_RH,"RH:%d%%",RH);
                LCD_dsp_string(1,1,str_RH);//濕度
        }
        else if(num==2)
        {
                DHT_Start();
                DHT_ByteRead(DHT);
                T=DHT[2];//T
                sprintf(str_T," T:%dC",T);
                LCD_dsp_string(7,1,str_T);//溫度
        }
}
void SET_VAR(int num)//num:0為濕度,num:1為溫度
{
        if(num==0)
        {
                sprintf(str_RH_set,"RH:%d%%",set_RH);
                LCD_dsp_string(1,2,str_RH_set);//濕度
        }
        else if(num==2)
        {
                sprintf(str_T_set," T:%dC",set_T);
                LCD_dsp_string(7,2,str_T_set);//溫度
        }
}
void display_all()
{
        GET_VAR(0);
        GET_VAR(2);
        SET_VAR(0);
        SET_VAR(2);
}
回復(fù)

使用道具 舉報

ID:551638 發(fā)表于 2022-3-1 10:38 | 顯示全部樓層
if(閾值>溫濕度)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表