唐山建设工程信息网站企业管理软件erp
- 作者: 五速梦信息网
- 时间: 2026年03月21日 08:23
当前位置: 首页 > news >正文
唐山建设工程信息网站,企业管理软件erp,网站推广活动,建筑模板规格一览表加热系统加入达温即停和保温功能 引言 我们前一节, 是通过控制io口, 直接控制加热的开关, 但是这太简单粗暴了, 如果只是那样, 和普通的家居电器,是没区别的, 我们想要更智能一点, 就是像咱们自己家的热水壶那样, 水烧滚了(水温达到100摄氏度), 就自动停止了. 加热功能 我们拓展一下, 我们可以为用户提供一个水温阈值, 让用户设置, 然后当我们开启加热的时候, 饮水机就会一直检测水温, 如果温度达到用户设置温度, 就会停止加热。那么这个就是我们所说的加热功能。只开启一次加热功能, 下次开启加热,需用户手动确认。 保温功能呢 和加热功能类似, 但是保温功能, 因为毕竟保温是需要把水保温到能喝的程度, 比如 有一个笑话就是, 你喜欢和岩浆还是烫水? 回答:我喜欢和42度热水。 所以保温温度 最好是 室温的26-50度以内。 所谓保温 一方面是 保温壶另一方面就是使用水温检测器 检测水温 然后如果水温没达到 就开启加热。可以重复开启加热. 本博客,修改完的代码工程: 跳转下载 https://wwyz.lanzoul.com/iGafK27o7b1i 功能实现步骤 上述我们也描述了, 加热和保温的功能。 加热功能: 具体实现流程, 就是 检测水温, 判断水温与用户设置的加热阈值是否符合, 小于阈值, 则继续加热. 达到温度, 则停止加热, 然后关闭自动加热(达到温度后, 就不在开启加热) 保温功能: 检测用户设置的水温阈值, 是否符合, 小于阈值, 则开启加热,达到温度则停止加热, 如果等一段时间, 再次低于阈值, 则重复开启加热。为了安全性保温温阈值 保持在 26 - 50 度之间(我们需要设置合法性判断)。 达温度即停模式实操 我们检测水温, 就可以知道当前加热到的温度, 从而可以及时的进行, 关闭加热, 同时我们用户需要设置一个加热的水温阈值 int water_temp; //水温 int heat_temp_th; //加热阈值我们通过传入水温阈值和水温, 通过对比判断, 如果水温没达到阈值, 就开启加热, 如果水温达到阈值, 就关闭加热(注意,我们底层写的有判断开关加热的状态, 所以不会重复开关器件) Stop_On_Temp(water_temp, heat_temp_th);/************************************************** 函数名: Stop_On_Temp 功 能: 达温即停 参 数: (1)int now_water_temp:(2)int set_heat_temp_th: 返回值: int set_mode: 要设置的模式, 达到阈值, 则返回设置关闭模式没达到阈值, 仍然设置加热模式 ***********************************************/ int Stop_On_Temp(int now_water_temp, int set_heat_temp_th) {int set_mode;if(now_water_temp set_heat_temp_th){HEAT_water_Set(heat_water_ON);//开启加热set_mode HEATING_ON; //继续加热}else{HEAT_water_Set(heat_water_OFF);//关闭加热set_mode MAINTAIN_TEMP; //停止加热}return set_mode; }通过传回的结果切换模式 我们这里返回判断结果, 是因为我们达温即停, 第一次加热到所需温度后, 我们就返回温度达到的信号, 然后就要切换模式了。 就是为了避免 当水冷却后 再次检测判断而进入加热状态。所以我们要传回达温即停的信号。 保温功能模式实操 通过达温即停功能, 我们就可以明白, 保温功能, 实现的方法和达温即停差不多, 只是保温功能, 不用切换模式, 保温功能, 在用户没有主动关闭或切换保温模式, 就会一直检测, 所以不用回传判断结果. 我们传入水温和保温阈值 KeepWarm(water_temp, KeepWarm_th); 保温函数: /*********************************************** 函数名: KeepWarm 功 能: 保温函数 参 数: (1)int now_water_temp:传入的当前水温(2)int set_KeepWarm_th:传入的当前设置的保温阈值 返回值: 无 ***********************************************/ void KeepWarm(int now_water_temp, int set_KeepWarm_th) {if(now_water_temp set_KeepWarm_th){HEAT_water_Set(heat_water_ON);//继续加热}else{HEAT_water_Set(heat_water_OFF);//停止加热} } 模式切换 所以我们分为三种情况: 加热系统关闭模式、达温即停模式和保温模式。 #define STOP_HEATING 0 //停止加热 #define HEATING_ON 1 //加热 #define MAINTAIN_TEMP 2 //保温我们使用heat_mode定义当前模式 int heat_mode; //加热模式使用switch来根据每次判断调控的heat_mode , 来挑选, 应该处于哪种模式。 switch(heat_mode) {//关闭加热case STOP_HEATING:HEAT_water_Set(heat_water_OFF);break;//加热case HEATING_ON:water_temp 26; //读取水温//如果没达到温度, 模式还是 1, 如果达到温度, 则改变模式为 0heat_mode Stop_On_Temp(water_temp, heat_temp_th); //达温度计停break;//保温case MAINTAIN_TEMP:water_temp 42; //读取水温 KeepWarm(water_temp, KeepWarm_th); break;default: HEAT_water_Set(heat_water_OFF);break; }代码复制黏贴实操 (1)我们在加热和开水解耦工程的基础上进行开发 饮水机功能构建指导思想以及最小试验 点击下载工程代码 (2)我们只需要加入一个控制加热的文件, 我们把达温即停和保温功能, 加入到其中, 然后其包含加热底层文件, 就可以控制加热了. (3)复制黏贴代码 heat_stop.c #include heat_stop.h/*********************************************** 函数名: Stop_On_Temp 功 能: 达温即停 参 数: (1)int now_water_temp:(2)int set_heat_temp_th: 返回值: int set_mode: 要设置的模式, 达到阈值, 则返回设置关闭模式没达到阈值, 仍然设置加热模式 ***********************************************/ int Stop_On_Temp(int now_water_temp, int set_heat_temp_th) {int set_mode;if(now_water_temp set_heat_temp_th){HEAT_water_Set(heat_water_ON);set_mode HEATING_ON; //继续加热}else{HEAT_water_Set(heat_water_OFF);set_mode MAINTAIN_TEMP; //停止加热}return set_mode; }/*********************************************** 函数名: KeepWarm 功 能: 保温函数 参 数: (1)int now_water_temp:传入的当前水温(2)int set_KeepWarm_th:传入的当前设置的保温阈值 返回值: 无 **************************************************/ void KeepWarm(int now_water_temp, int set_KeepWarm_th) {if(now_water_temp set_KeepWarm_th){HEAT_water_Set(heat_water_ON);//继续加热}else{HEAT_water_Set(heat_water_OFF);//停止加热} } heat_stop.h #ifndef _HEAT_STOPH #define _HEAT_STOPH//单片机头文件 #include stm32f10x.h #include heat.h#define STOP_HEATING 0 //停止加热 #define HEATING_ON 1 //加热 #define MAINTAIN_TEMP 2 //保温int Stop_On_Temp(int now_water_temp, int set_heat_temp_th); void KeepWarm(int now_water_temp, int set_KeepWarm_th);#endif main.c #include stm32f10x.h // Device header #include heat.h #include out_water.h #include heat_stop.hint water_temp; //水温int heat_temp_th; //加热阈值 int KeepWarm_th; //保温阈值 int heat_mode; //加热模式int main(void) {//加热初始化HEAT_water_Init();//开水初始化OUT_water_Init();water_temp 26; //水温heat_temp_th 100; //加热阈值KeepWarm_th 42; //保温阈值heat_mode 2; //加热模式 while(1){switch(heat_mode){//关闭加热case STOP_HEATING:HEAT_water_Set(heat_water_OFF);break;//加热case HEATING_ON:water_temp 26; //读取水温//如果没达到温度, 模式还是 1, 如果达到温度, 则改变模式为 0heat_mode Stop_On_Temp(water_temp, heat_temp_th); //达温度计停break;//保温case MAINTAIN_TEMP:water_temp 42; //读取水温 KeepWarm(water_temp, KeepWarm_th); break;default: HEAT_water_Set(heat_water_OFF);break;}} } 测试现象: 手动调试加热模式 通过手动修改水温阈值和水温, 来观察加热模式开关 温度达到, 就会自动切换为关闭加热模式 手动调试保温模式 通过修改水温与保温阈值, 来观察保温模式的加热开关 水温达到, 关闭加热, 水温不到,加热保温 测试视频 加热和保温功能调试现象_单机游戏热门视频 (bilibili.com)
- 上一篇: 唐山百度提升优化晋中seo
- 下一篇: 唐山建网站网站制作建立
相关文章
-
唐山百度提升优化晋中seo
唐山百度提升优化晋中seo
- 技术栈
- 2026年03月21日
-
唐山seo设计网站下列不属于网站开发技术的是
唐山seo设计网站下列不属于网站开发技术的是
- 技术栈
- 2026年03月21日
-
唐山seo排名外包医疗网站优化公司
唐山seo排名外包医疗网站优化公司
- 技术栈
- 2026年03月21日
-
唐山建网站网站制作建立
唐山建网站网站制作建立
- 技术栈
- 2026年03月21日
-
唐山快速建站的公司网站建设申请理由
唐山快速建站的公司网站建设申请理由
- 技术栈
- 2026年03月21日
-
唐山滦县网站建设wordpress如何做淘宝客
唐山滦县网站建设wordpress如何做淘宝客
- 技术栈
- 2026年03月21日

