丹徒网站建设哪家好,广州网站建设案件,企业网站多少钱一个,各电商网站的特点文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介
本项目使用Proteus8仿真STM32单片机控制器#xff0c;使用声光报警模块、LCD1602显示模块、DHT11温湿度模块、继电器模块、加热加湿除湿风扇等。
主要功能#xff1a; 系统运行后#xff0c;LCD1602显示…
文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介
本项目使用Proteus8仿真STM32单片机控制器使用声光报警模块、LCD1602显示模块、DHT11温湿度模块、继电器模块、加热加湿除湿风扇等。
主要功能 系统运行后LCD1602显示传感器检测的温湿度值 默认以自动模式运行若按下K4键切换为手动模式此时可以 通过K1和K2控制加湿/除湿和加热/散热开关。当再次按下K4键切换为自动模式自动模式下实时检测温度及湿度值 如果温度高于上限声光报警打开散热 如果温度低于下限声光报警打开加热 温度正常声光报警取消关闭加热/散热 如果湿度高于上限声光报警打开除湿 如果湿度低于下限声光报警打开加湿 如果湿度正常声光报警关闭关闭加湿除湿 可通过K3键进入阈值设置K1和K2调节设置好后可按下K4键返回主界面。 设定好的阈值可存入存储器中掉电不丢失。 二、软件设计
/*
作者嗨小易QQ3443792007
*///系统数据获取
void sys_data_get(void)
{static u8 i0;while(1){//读取DHT11温湿度值i;if(i%100)DHT11_Read_Data(sys_ctrl.temp,sys_ctrl.humi); break;}
}//系统数据显示
void sys_data_show(void)
{while(1){ //温度显示lcd1602_show_nums(3,0,sys_ctrl.temp,2,0);//湿度显示lcd1602_show_nums(3,1,sys_ctrl.humi,2,0);//温度阈值显示lcd1602_show_nums(7,0,sys_ctrl.templ,2,0);lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);//湿度阈值显示lcd1602_show_nums(7,1,sys_ctrl.humil,2,0);lcd1602_show_nums(10,1,sys_ctrl.humih,2,0); //阈值设置位置闪烁switch(sys_ctrl.mode){case 1://温度下限lcd1602_show_string(7,0, );delay_ms(100);lcd1602_show_nums(7,0,sys_ctrl.templ,2,0);break;case 2://温度上限lcd1602_show_string(10,0, );delay_ms(100);lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);break;case 3://湿度下限lcd1602_show_string(7,1, );delay_ms(100);lcd1602_show_nums(7,1,sys_ctrl.humil,2,0);break;case 4://湿度上限lcd1602_show_string(10,1, );delay_ms(100);lcd1602_show_nums(10,1,sys_ctrl.humih,2,0);break;}//手动状态显示if(sys_ctrl.auto_flag)lcd1602_show_string(14,1,SD);else lcd1602_show_string(14,1,Au);break; }
}//系统数据设置
void sys_data_set(void)
{u8 key0;static u8 jcs_flag0;//加湿除湿标记static u8 jsr_flag0;//加散热标记keyKEY_Scan(0);//模式设置if(keyKEY3_PRESS){//自动模式下模式设置if(sys_ctrl.auto_flag0){sys_ctrl.mode;if(sys_ctrl.mode5)sys_ctrl.mode1;}//手动模式下停止开关else{JS_PIN1;CS_PIN1;JR_PIN1;SR_PIN1; }}//在设置模式下加else if(keyKEY1_PRESS){switch(sys_ctrl.mode){case 1://温度下限 sys_ctrl.templ;if(sys_ctrl.templ99)sys_ctrl.templ0;break;case 2://温度上限 sys_ctrl.temph;if(sys_ctrl.temph99)sys_ctrl.temph0;break;case 3://湿度下限 sys_ctrl.humil;if(sys_ctrl.humil99)sys_ctrl.humil0;break;case 4://湿度上限 sys_ctrl.humih;if(sys_ctrl.humih99)sys_ctrl.humih0;break;}//手动模式加湿/除湿控制if(sys_ctrl.auto_flag1){jcs_flag!jcs_flag;//加湿if(jcs_flag1){JS_PIN0;CS_PIN1; }//除湿else{JS_PIN1;CS_PIN0; }} }//在设置模式下减else if(keyKEY2_PRESS){switch(sys_ctrl.mode){case 1://温度下限 sys_ctrl.templ--;if(sys_ctrl.templ0)sys_ctrl.templ99;break;case 2://温度上限 sys_ctrl.temph--;if(sys_ctrl.temph0)sys_ctrl.temph99;break;case 3://湿度下限 sys_ctrl.humil--;if(sys_ctrl.humil0)sys_ctrl.humil99;break;case 4://湿度上限 sys_ctrl.humih--;if(sys_ctrl.humih0)sys_ctrl.humih99;break;}//手动模式加热/散热控制if(sys_ctrl.auto_flag1){jsr_flag!jsr_flag;//加热if(jsr_flag1){JR_PIN0;SR_PIN1;}//散热else{JR_PIN1;SR_PIN0;} } }else if(keyKEY4_PRESS){if(sys_ctrl.mode!0)//确定{sys_ctrl.mode0;//将设定好的阈值写入到存储器中AT24CXX_WriteOneByte(0,sys_ctrl.templ);AT24CXX_WriteOneByte(1,sys_ctrl.temph);AT24CXX_WriteOneByte(2,sys_ctrl.humil);AT24CXX_WriteOneByte(3,sys_ctrl.humih); } else//自动/手动切换{sys_ctrl.auto_flag!sys_ctrl.auto_flag;//自动模式下关闭加湿/除湿/加热/散热if(sys_ctrl.auto_flag0){JS_PIN1;CS_PIN1;JR_PIN1;SR_PIN1; } } }
}//应用控制系统
void appdemo_show(void)
{u8 i5;KEY_Init();BEEP_Init();DHT11_Init();ctrl_pin_init();AT24CXX_Init();lcd1602_init();//LCD1602初始化sys_parm_init();//系统参数初始化//读取温度数据等待稳定while(i--){DHT11_Read_Data(sys_ctrl.temp,sys_ctrl.humi);delay_ms(100); }sys_open_show();//系统初始界面显示while(1){sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制 }
} 三、实验现象 联系作者
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发PCB设计视频分享技术交流。