想在土巴兔做装修网站找谁,wordpress 评论 邮件,有多少做汽车的网站,做3d模型网站赚钱么文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介
本项目使用Proteus8仿真Arduino单片机控制器#xff0c;使用LCD1602液晶显示模块、DS18B20温度、按键、声光报警、L293D电机驱动等。
主要功能#xff1a; 系统运行后#xff0c;LCD1602显示传感器检… 文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介
本项目使用Proteus8仿真Arduino单片机控制器使用LCD1602液晶显示模块、DS18B20温度、按键、声光报警、L293D电机驱动等。
主要功能 系统运行后LCD1602显示传感器检测的温度值 当红外传感器检测到有人信号时 默认以自动模式运行若按下K4键切换为手动模式此时可以 通过K1和K2控制风扇加减速风扇档位共5档0-5。当再次按下K4键切换为自动 模式自动模式下实时检测温度值当温度高于上限且在2C范围内以3档运行。 当温度高于上限且在4C范围内以4档运行。当温度高于上限且在6C范围内以5挡 运行。当温度高于上限且超过6C范围以5档运行且蜂鸣器报警。 若温度在上下限范围内风扇以2档运行。 若温度低于下限风扇停止。 可通过K3键进入阈值设置K1和K2调节。 当红外传感器未检测到有人信号时风扇停止。 二、软件设计
/*
作者嗨小易技术QQ群570487280
*///系统数据显示
void sys_data_show(void)
{u8 buf[5];while(1){//温度显示buf[0]sys_ctrl.temp/1000x30;buf[1]sys_ctrl.temp%100/100x30;buf[2].;buf[3]sys_ctrl.temp%100%100x30;buf[4]\0;lcd1602_show_string(3,0,buf);//温度阈值显示lcd1602_show_nums(6,1,sys_ctrl.templ,2,0);lcd1602_show_nums(9,1,sys_ctrl.temph,2,0);//阈值闪烁指示switch(sys_ctrl.mode){case 1://温度下限lcd1602_show_string(6,1, );delay_ms(50);lcd1602_show_nums(6,1,sys_ctrl.templ,2,0);break;case 2://温度上限lcd1602_show_string(9,1, );delay_ms(50);lcd1602_show_nums(9,1,sys_ctrl.temph,2,0);break;}//档位显示lcd1602_show_nums(10,0,sys_ctrl.gear,1,0);//手动状态显示if(sys_ctrl.auto_flag)lcd1602_show_string(14,0,SD);else lcd1602_show_string(14,0,Au);//有无人检测信号显示if(sys_ctrl.man1)lcd1602_show_string(13,1,Yes);else lcd1602_show_string(13,1, No);break; }
}//系统数据设置
void sys_data_set(void)
{u8 key0;keykey_scan(0);//自动手动模式设置if(keyKEY4_PRESS){sys_ctrl.auto_flag!sys_ctrl.auto_flag;}//阈值模式设置else if(keyKEY3_PRESS){sys_ctrl.mode;if(sys_ctrl.mode2)sys_ctrl.mode0;}//阈值设置模式下K1和K2加减if(sys_ctrl.mode!0){//加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;} }//减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;} } }//手动模式下档位调节if(sys_ctrl.auto_flag1){//加速if(keyKEY1_PRESS){sys_ctrl.gear;if(sys_ctrl.gear5)sys_ctrl.gear5;}//减速else if(keyKEY2_PRESS){sys_ctrl.gear--;if(sys_ctrl.gear0)sys_ctrl.gear0;} }
}//系统功能控制
void sys_fun_ctrl(void)
{//如果红外检测到有人if(sys_ctrl.man1){//手动模式下速度控制if(sys_ctrl.auto_flag1){pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比 }//自动模式下速度控制else{//如果温度高于上限温度越高风扇越快if(sys_ctrl.tempsys_ctrl.temph*10){if(sys_ctrl.tempsys_ctrl.temph*10 sys_ctrl.tempsys_ctrl.temph*1020)sys_ctrl.gear3;else if(sys_ctrl.tempsys_ctrl.temph*1020 sys_ctrl.tempsys_ctrl.temph*1040)sys_ctrl.gear4;else if(sys_ctrl.tempsys_ctrl.temph*1040)sys_ctrl.gear5; }//如果温度低于下限风扇停止else if(sys_ctrl.tempsys_ctrl.templ*10)sys_ctrl.gear0;//温度在阈值范围内风扇以固定速度运行else sys_ctrl.gear2;pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比} }//如果红外未检测到有人else{sys_ctrl.gear0;pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比 }
} 三、实验现象
演示视频https://space.bilibili.com/444388619 联系作者
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发PCB设计视频分享技术交流。