欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
基于51單片機(jī)的智能溫濕度大棚程序Proteus仿真設(shè)計
[打印本頁]
作者:
51hei圓圓
時間:
2025-11-12 17:28
標(biāo)題:
基于51單片機(jī)的智能溫濕度大棚程序Proteus仿真設(shè)計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif
(90.99 KB, 下載次數(shù): 0)
下載附件
2025-11-12 17:22 上傳
單片機(jī)源程序如下:
#include "main.h"
#include "LCD1602.h"
#include "keyScan.h"
#include "bsp_timer.h"
#include "bsp_uart.h"
#include "dht11.h"
// 變量定義
sbit reduce_temp = P2^3; //控制降溫機(jī)
sbit add_temp = P2^2; //控制升溫機(jī)
sbit reduce_hum = P2^1; //控制減濕器
sbit add_hum = P2^0; //控制加濕器
sbit LED = P1^7; //心跳燈
uint8_t g_key_value = 0; // 按鍵按下的值
uint8_t hum_high = 30, hum_low = 25;//設(shè)置的濕度最大值和最小值
uint8_t temp_high = 35, temp_low = 25;//設(shè)置的溫度最大值和最小值
uint8_t humidity = 0 , temperature = 0;//實(shí)際的濕度值和溫度值
uint8_t ui_page = 0 ; //顯示頁面
uint8_t set_pos = 0 ; //設(shè)置序號 0:設(shè)置hum_high 1:設(shè)置hum_low 2:設(shè)置temp_high 3:設(shè)置temp_low
uint8_t read_dht11_flag = 0; //讀取DHT11的標(biāo)志位。
uint8_t ui_refresh_flag = 0; //界面刷新的標(biāo)志位。
void main()
{
uint8_t ret;
uint8_t blink_count = 0;
uint8_t lcdShowBuff[16] = {0};
EA = 0; //關(guān)閉所有中斷
LcdInit(); // LCD顯示初始化
key_init();
LED = 0;
bsp_timer_set_ms_IT(Timer0,5);
Uart1_Init();
EA = 1; //打開所有中斷
while(1)
{
if(read_dht11_flag == 1)
{
EA = 0;
ret = DHT11_Get_Data(&humidity, &temperature) ;
EA = 1;
printf("hum :%2d temp:%2d\r\n",(int)humidity,(int)temperature); //發(fā)送一次溫濕度
read_dht11_flag = 0;
}
if( ui_refresh_flag == 1)
{
if(ui_page == 0)
{
sprintf((char*)lcdShowBuff," real data ");
LcdShowStr(0, 0, lcdShowBuff);
sprintf((char*)lcdShowBuff,"hum :%2d temp:%2d",(int)humidity,(int)temperature);
LcdShowStr(0, 1, lcdShowBuff);
}else if(ui_page == 1)
{
blink_count ++;
sprintf((char*)lcdShowBuff,"HumH:%2d HumL:%2d",(int)hum_high, (int)hum_low);
LcdShowStr(0, 0, lcdShowBuff);
sprintf((char*)lcdShowBuff,"TmpH:%2d TmpL:%2d",(int)temp_high,(int)temp_low);
LcdShowStr(0, 1, lcdShowBuff);
// 計數(shù)值為偶數(shù)的時候閃爍
if(blink_count % 2 == 0)
{
switch(set_pos)
{
case 0:LcdShowStr(5,0," ");break;
case 1:LcdShowStr(14,0," ");break;
case 2:LcdShowStr(5,1," ");break;
case 3:LcdShowStr(14,1," ");break;
}
}
}
ui_refresh_flag = 0;
}
}
}
/**
* @brief 根據(jù)按鍵值決定當(dāng)前的功能處理
* @param
* @retval void
**/
void KeyControlFunction(uint8_t key_value)
{
if(key_value == KEY1_VALUE)
{
if(ui_page == 1)
{
if(set_pos == 0) hum_high++;
else if(set_pos == 1) hum_low++;
else if(set_pos == 2) temp_high++;
else if(set_pos == 3) temp_low++;
}
}
else if(key_value == KEY2_VALUE)
{
if(ui_page == 1)
{
if(set_pos == 0) hum_high--;
else if(set_pos == 1) hum_low--;
else if(set_pos == 2) temp_high--;
else if(set_pos == 3) temp_low--;
}
}
else if(key_value == KEY3_VALUE)
{
if(ui_page == 0)
ui_page = 1;
else if(ui_page == 1)
ui_page = 0;
}
else if(key_value == KEY4_VALUE)
{
if(ui_page == 1)
{
set_pos ++;
if(set_pos > 3)
set_pos = 0;
}
}
}
/**
* @brief 檢查當(dāng)前溫濕度的狀態(tài)
* 如果溫度大于設(shè)定值,控制減溫器繼電器打開,如果溫度小于設(shè)定值,控制升溫器繼電器打開。
* 如果濕度大于設(shè)定值,控制減濕器繼電器打開,如果濕度小于設(shè)定值,控制加濕器繼電器打開。
* @param
* @retval void
**/
void ControlRelay()
{
if(temperature > temp_high)
{
reduce_temp = 1;add_temp = 0;
}else if(temperature < temp_low)
{
reduce_temp = 0;add_temp = 1;
}else
{
reduce_temp = 0;add_temp = 0;
}
if(humidity > hum_high)
{
reduce_hum = 1;add_hum = 0;
}else if(humidity < hum_low)
{
reduce_hum = 0;add_hum = 1;
}else
{
reduce_hum = 0;add_hum = 0;
}
}
復(fù)制代碼
仿真程序下載:
基于51單片機(jī)的智能溫濕度大棚設(shè)計.7z
(98.87 KB, 下載次數(shù): 0)
2025-11-12 17:23 上傳
點(diǎn)擊文件名下載附件
智能恒溫大棚
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1