【Proteus仿真】【51单片机】电蒸锅温度控制系统

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶、按键开关、蜂鸣器、DS18B20温度传感器,液位传感器、继电器控制加热保温装置等。
主要功能:
系统运行后,当开启主开关,界面显示当前检测温度,水位状态信息,时间等;可通过K1-K3键选择档位,档位不同,时间不同;选择好档位后,按下K4键确认;系统开始加热工作,时间倒计时,当计时结束,则进入保温状态,如果当前水位处于警戒线时,蜂鸣器声光报警,LCD显示报警信息,如果水干,则关闭保温加热,蜂鸣器报警结束;当断开总开关,系统关闭。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据显示
void sys_data_show(void)
{static u8 oneflag=0;while(1){//开关打开if(sys_ctrl.run==1){oneflag=0;//温度显示lcd1602_show_nums(3,0,sys_ctrl.temp,3,0);//档位和时间显示switch(sys_ctrl.lev){case 0: lcd1602_show_string(9,0,"L");break;case 1: lcd1602_show_string(9,0,"M");break;case 2: lcd1602_show_string(9,0,"H");break;}lcd1602_show_nums(11,0,sys_ctrl.min,2,0x80);lcd1602_show_nums(14,0,sys_ctrl.sec,2,0x80);//水位状态显示switch(sys_ctrl.mode){case 0: lcd1602_show_string(5,1,"Normal ");break;case 1: lcd1602_show_string(5,1,"Warning");break;case 2: lcd1602_show_string(5,1,"Drying ");break;	}	}//关闭else{if(oneflag==0){oneflag=1;sys_parm_init();//系统参数初始化lcd1602_clear();sys_open_show();//系统开机界面显示}	}	break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//总开关if(KG_PIN==0)sys_ctrl.run=1;else sys_ctrl.run=0;	//当总开关开启if(sys_ctrl.run==1){//低档if(key==KEY1_PRESS){sys_ctrl.lev=0;sys_ctrl.min=0;sys_ctrl.sec=5;//低档时间	}//中档else if(key==KEY2_PRESS){sys_ctrl.lev=1;sys_ctrl.min=0;sys_ctrl.sec=10;//中档时间	}//高档else if(key==KEY3_PRESS){sys_ctrl.lev=2;sys_ctrl.min=0;sys_ctrl.sec=20;//高档时间}//确定else if(key==KEY4_PRESS){sys_ctrl.ok=1;TR1=1;//打开定时器	}}
}//系统功能控制
void sys_fun_ctrl(void)
{//开关开启if(sys_ctrl.run==1){//确定按下if(sys_ctrl.ok==1){//如果水位正常if(sys_ctrl.mode==0){JR_PIN=0;//打开加热BW_PIN=1;//关闭保温	}//如果水位到达警戒线,声光报警else if(sys_ctrl.mode==1){beep_alarm(10,200);//报警}//如果水干,断电保护,报警几次else{TR1=0;//关闭定时器sys_ctrl.ok=0;JR_PIN=1;//关闭加热BW_PIN=1;//关闭保温beep_alarm(20,2000);//报警		} }else {//如果水位到达警戒线,声光报警if(sys_ctrl.mode==1){beep_alarm(10,200);//报警}//如果水干,断电保护,报警几次else if(sys_ctrl.mode==2){JR_PIN=1;//关闭加热BW_PIN=1;//关闭保温beep_alarm(20,2000);//报警		} }}//总开关断开else{JR_PIN=1;//关闭加热BW_PIN=1;//关闭保温}
}//应用控制系统
void appdemo_show(void)
{u8 i=10;sys_parm_init();//系统参数初始化lcd1602_init();ds18b20_init();//间隔一段时间,等待数据稳定while(i--){//温度获取sys_ctrl.temp=ds18b20_read_temperture();delay_ms(100);	}while(KG_PIN);//等待开关开启sys_ctrl.run=1;time1_init();//定时器初始化sys_open_show();//系统开机界面显示while(1){	sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制}
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/108547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英国人工智能公司【TitanML】完成280万美元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于英国伦敦的人工智能公司【TitanML】近期宣布已完成280万美元种子轮融资,该公司的产品允许机器学习团队部署大型语言模型(llm)。 本轮融资由Octopus Ventures领投,还…

Python文件共享+cpolar内网穿透:轻松实现公网访问

文章目录 1.前言2.本地文件服务器搭建2.1.Python的安装和设置2.2.cpolar的安装和注册 3.本地文件服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用&#…

【LeetCode】5. 最长回文子串

1 问题 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示…

【Codeforces】Codeforces Round 903 (Div. 3)【待补】

Dashboard - Codeforces Round 903 (Div. 3) - Codeforces Problem - C - Codeforces Problem - D - Codeforces

进程的虚拟地址空间

一、 对于C/C程序员,我们看到的程序中的地址,都不是物理地址,而是操作系统映射的虚拟地址/线性地址,每一个进程都映射了同样结构的虚拟地址空间,让进程以为自己在独享内存资源,下图是以Linux下32位操作系统…

spark stream入门案例:netcat准实时处理wordCount(scala 编程)

目录 案例需求 代码 结果 解析 案例需求: 使用netcat工具向9999端口不断的发送数据,通过SparkStreaming读取端口数据并统计不同单词出现的次数 -- 1. Spark从socket中获取数据:一行一行的获取 -- 2. Driver程序执行时&#xff0c…

Lock使用及效率分析(C#)

针对无Lock、Lock、ReadWriterLock、ReadWriterLockSlim四种方式,测试在连续写的情况下,读取的效率(原子操作Interlocked由于使用针对int,double等修改的地方特别多,而且使用范围受限,所以本文章没有测试) …

【C++ 成员函数与非成员函数:选择正确的工具】

在C编程中,成员函数和非成员函数都是关键的概念。它们提供了不同的方法来组织和处理代码,具有各自的优势和用途。本文将深入研究成员函数和非成员函数,以帮助您了解何时使用它们以及如何做出正确的选择。 成员函数:类的内在力量 …

服务器带宽和流量的关系

服务器带宽和流量的关系 我们经常听说带宽,流量等这样一些专用名词,平常生活中手机使用会用到,在IT行业搭建网站使用服务器也会用到,虽然这两个流量带宽意义上不全相同,但是毕竟是我们比较关注的内容。今天给大家说说…

C/C++笔试易错与高频题型图解知识点(二)—— C++部分(持续更新中)

目录 1.构造函数初始化列表 1.1 构造函数初始化列表与函数体内初始化区别 1.2 必须在初始化列表初始化的成员 2 引用&引用与指针的区别 2.1 引用初始化以后不能被改变,指针可以改变所指的对象 2.2 引用和指针的区别 3 构造函数与析构函数系列题 3.1构造函数与析…

2023大联盟6比赛总结

比赛链接 反思 A 为什么打表就我看不出规律!!! 定式思维太严重了T_T B 纯智障分块题,不知道为什么 B 100 B100 B100 比理论最优 B 300 B300 B300 更优(快了 3 倍),看来分块还是要学习一…

【LeetCode热题100】--287.寻找重复数

287.寻找重复数 方法:使用快慢指针 使用环形链表II的方法解题(142.环形链表II),使用 142 题的思想来解决此题的关键是要理解如何将输入的数组看作为链表。 首先明确前提,整数的数组 nums 中的数字范围是 [1,n]。考虑一…

VScode无法跳转函数定义

VScode需要在当前工作环境下解析函数之间的依赖关系,如果工作环境是根目录/,扫描的文件范围会比/home/username/code大很多,导致VScode无法解析出函数依赖,也就无法跳转。 解决办法:将路径目录从高目录调整到较低的目…

【Qt控件之QDialogButtonBox】概述及使用

概述 QDialogButtonBox类是一个小部件,它以适合当前小部件样式的布局呈现按钮。 对话框和消息框通常以符合该台界面指南的布局呈现按钮。不同的平台会有不同的对话框布局。QDialogButtonBox允许发人员向其添加按钮,并将自使用用户的桌面环境所适合的布局…

数据结构--堆

一. 堆 1. 堆的概念 堆(heap):一种有特殊用途的数据结构——用来在一组变化频繁(发生增删查改的频率较高)的数据集中查找最值。 堆在物理层面上,表现为一组连续的数组区间:long[] array &…

MySQl_2

目录 函数 一.字符串函数 二.数值函数 三.日期函数 四.流程控制函数 约束 多表查询 多表关系 一.内连接 二.外连接 三.自连接 四.联合查询 五.子查询 标量子查询 列子查询 行子查询 表子查询 函数 一.字符串函数 二.数值函数 SELECT LPAD(FLOOR(RAND()*1000000),…

二叉树与递归的相爱相杀

数据结构之二叉树 一、基于二叉树的基础操作1.二叉树的构建2.二叉树的遍历①前序遍历(深度遍历)②中序遍历③后序遍历④层序遍历判断一棵二叉树是否是完全二叉树(基于层序遍历的思想) 3.二叉树的数量问题①求二叉树结点个数②求二…

PixMIM论文笔记

论文名称:PixMIM: Rethinking Pixel Reconstruction in Masked Image Modeling 发表时间:2023 年 3 月 4 日 作者及组织:上海人工智能实验室、西蒙菲莎大学、香港中文大学 GitHub:https://github.com/open-mmlab/mmselfsup/tree/d…

transformer_01

一、传统RNN存在的问题 1.序列前序太长,每个xi要记住前面的特征,而且一直在学,没有忘记,可能特征不能学的太好 2.串行,层越多越慢,难以堆叠很多层; 3.只能看到过去,不能看到未来 搞…

什么是NetApp的DQP和如何安装DQP?

首先看看什么是DQP,DQPDisk Qualification Package,文字翻译就是磁盘验证包。按照NetApp的最佳实践,要定期升级DQP包,保证对最新磁盘和磁盘扩展柜的兼容。 本文主要介绍7-mode下如何升级DQP,至于cluster mode另外文章…