文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用Proteus8仿真51单片机控制器,使用LCD1604液晶、按键、蜂鸣器、L298N电机、PCF8591 ADC模块、DHT11温湿度传感器、雨滴传感器、风速、光线传感器等。
主要功能:
系统运行后,LCD1604显示传感器检测的温湿度、光线强度和风速,工作模式,以及相应阈值,系统工作状态等;系统默认为自动模式,
可通过K4键切换为手动模式,此时可通过K1键来控制晾衣架的开和关;若系统处于自动模式时,可通过K3键进入阈值设置模式,K1和K2键调节各阈值参数,K4确定保存。如果检测光线强度低于阈值,光线暗,晚上或阴雨天,此时晾衣架关闭;如果检测光线强度高于阈值,光线强,白天,此时如果下雨或大风,关闭晾衣架,否则如果温度高于阈值且湿度低于阈值,代表晴天,打开晾衣架;如果湿度高于阈值,则关闭晾衣架;手动模式下,可通过串口远程控制,发送十六进制0X11指令实现开关控制;
二、软件设计
/*
作者:嗨小易(QQ:3443792007)*///系统数据显示
void sys_data_show(void)
{while(1){ //温度显示lcd1604_show_nums(3,0,sys_ctrl.temp,2,0);//湿度显示lcd1604_show_nums(3,1,sys_ctrl.humi,2,0);//自动/手动状态显示if(sys_ctrl.auto_flag==1)lcd1604_show_string(14,0,"SD");else lcd1604_show_string(14,0,"Au");//下雨状态显示if(sys_ctrl.rain==1)lcd1604_show_string(14,1,"Y");else lcd1604_show_string(14,1,"N");//光线显示lcd1604_show_nums(3,2,sys_ctrl.light,2,0);//风速显示lcd1604_show_nums(3,3,sys_ctrl.wind,2,0);//开关状态显示if(sys_ctrl.run==1)lcd1604_show_string(13,3," ON");else lcd1604_show_string(13,3,"OFF");//温度阈值显示lcd1604_show_nums(7,0,sys_ctrl.temph,2,0);//湿度阈值显示lcd1604_show_nums(7,1,sys_ctrl.humil,2,0); //光线阈值显示lcd1604_show_nums(7,2,sys_ctrl.lightl,2,0);//风速阈值显示lcd1604_show_nums(6,3,sys_ctrl.windh,2,0x80); //阈值闪烁switch(sys_ctrl.mode){case 1://温度lcd1604_show_string(7,0," ");delay_ms(50);lcd1604_show_nums(7,0,sys_ctrl.temph,2,0);break;case 2://湿度lcd1604_show_string(7,1," ");delay_ms(50);lcd1604_show_nums(7,1,sys_ctrl.humil,2,0);break;case 3://光线lcd1604_show_string(7,2," ");delay_ms(50);lcd1604_show_nums(7,2,sys_ctrl.lightl,2,0);break;case 4://风速lcd1604_show_string(6,3," ");delay_ms(50);lcd1604_show_nums(6,3,sys_ctrl.windh,2,0x80);break;}break; }
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//确定/自动手动if(key==KEY4_PRESS){if(sys_ctrl.mode!=0)//确定{sys_ctrl.mode=0;}else//自动/手动 {sys_ctrl.auto_flag=!sys_ctrl.auto_flag;}}//自动模式if(sys_ctrl.auto_flag==0){//阈值设置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>4)sys_ctrl.mode=1;}//加else if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://温度sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;break;case 2://湿度sys_ctrl.humil++;if(sys_ctrl.humil>99)sys_ctrl.humil=0;break;case 3://光线sys_ctrl.lightl++;if(sys_ctrl.lightl>99)sys_ctrl.lightl=0;break;case 4://风速sys_ctrl.windh++;if(sys_ctrl.windh>10)sys_ctrl.windh=1;break;}}//减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://温度sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;break;case 2://湿度sys_ctrl.humil--;if(sys_ctrl.humil<0)sys_ctrl.humil=99;break;case 3://光线sys_ctrl.lightl--;if(sys_ctrl.lightl<0)sys_ctrl.lightl=99;break;case 4://风速sys_ctrl.windh--;if(sys_ctrl.windh<0)sys_ctrl.windh=10;break;}}}//手动模式else{//开/关if(key==KEY1_PRESS){sys_ctrl.run=!sys_ctrl.run;if(sys_ctrl.run==1)//开{motor_fr_run();delay_ms(500);motor_stop();}else//关{motor_rev_run();delay_ms(500);motor_stop();}}}
}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。