基于51单片机的热水器设计

2023-11-17

概述: 本实例是基于51单片机的智能热水器控制系统,主要硬件由51单片机最小系统,LCD1602显示屏屏电路,水位传感器电路,ADC转换电路,DS18B20数字温度传感器,蜂鸣器报警电路,按键电路,加水继电器电路,加热继电器电路电路构成。
功能:
1.显示屏显示内容:第一行:当前的水位高度(单位:cm);第二行:当前水箱的温度。
2.三个按键:按键1:设置键;按键2:加一键;按键3:减一键。当设置键按下后,进入阈值调整界面,可分别调整水位上限值、下限值;水箱温度上值、下限值。
3.当系统测量水箱水位,如果水位过低,加水继电器启动加水功能。高于上限值,继电器关闭加水功能。
4.当系统测量水箱温度,如果水温过低,加热继电器启动加热功能。高于上限值,继电器关闭加热功能。
5.当系统检测到水箱温度过高或水位过高时,开启蜂鸣器报警。
原理图:
在这里插入图片描述

(1)单片机最小系统:由51单片机,晶振电路,复位电路组成,其中晶振电路的功能是给单片机运行程序提供时钟节拍,复位电路是为单片机上电时提供一个高电平的复位信号。

(2)采用3路按键电路:当按键按下后,相应的引脚为低电平;按键释放后,引脚为高电平;独立按键为复位按键。

(3)水位信号采集电路:水位电路采用模拟式传感器,水位传感器接上电源后,根据水位的高低输出相应的电压,AD转换芯片AD0832将电压转换为8位的数字值,并通过计算得出当前的水位。

(4)加热、加水控制电路:采用继电器电路进行控制。单片机引脚通过三极管S9012,以此驱动继电器的开关。引脚输出高电平,继电器关闭;引脚输出低电平,继电器开启。

(5)蜂鸣器报警电路:蜂鸣器也用三极管S9012进行驱动。开启与关闭和继电器控制一样。

(6)温度传感器电路:温度感应采用数字型传感器DS18B20,单片机根据温度传感器的控制时序,读取温度传感器内部寄存器,并转化为当前温度。
Protues仿真:
在这里插入图片描述
程序设计:

//主函数
void main()
{
	disp2[9]=0xdf;
	init_1602();	
	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
		if(!k1)//设置
		{
			if(mode<4)
				mode++;
			else
				mode=0;
			while(!k1);
		}
		if(mode==1)//设置水位下限 
		{
			if(!k2)
			{
				if(lim3<lim4)
					lim3++;
				while(!k2);
			}
			if(!k3)
			{
				if(lim3>0)
					lim3--;
				while(!k3);
			}
		}
		if(mode==2)//设置水位上限 
		{
			if(!k2)
			{
				if(lim4<100)
					lim4++;
				while(!k2);
			}
			if(!k3)
			{
				if(lim4>lim3)
					lim4--;
				while(!k3);
			}
		}
		if(mode==3)//设置温度下限 
		{
			if(!k2)
			{
				if(lim1<lim2)
					lim1++;
				while(!k2);
			}
			if(!k3)
			{
				if(lim1>0)
					lim1--;
				while(!k3);
			}
		}
		if(mode==4)//设置温度上限 
		{
			if(!k2)
			{
				if(lim2<100)
					lim2++;
				while(!k2);
			}
			if(!k3)
			{
				if(lim2>lim1)
					lim2--;
				while(!k3);
			}
		}
		//输出控制
		if((high>lim4)||(ds18b20_temp>lim2))
			beep=0;
		else
			beep=1;
		if(high<lim3)
			out2=0;
		if(high>(lim3+lim4)/2)
			out2=1;
		if(ds18b20_temp<lim1)
			out1=0;
		if(ds18b20_temp>(lim1+lim2)/2)
			out1=1;
	}
}

关注公众号-电子应用学习馆,首页回复“热水器”获取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于51单片机的热水器设计 的相关文章

随机推荐

  • YOLOv5 backbone(一)

    Backbone概览及参数 Parameters nc 80 number of classes depth multiple 0 33 model depth multiple width multiple 0 50 layer chan
  • 利用外部中断和时间中断计数0-999显示在数码管上(考题)

    include
  • Ubuntu(20.04):设置DNS

    编辑文件 etc systemd resolved conf 设置DNS 8 8 8 8 114 114 114 114 保存退出后 以sudo身份运行 systemctl restart systemd resolved systemct
  • 开源之父--Linus

    Git 很多人都知道 Linus在1991年创建了开源的Linux 从此 Linux系统不断发展 已经成为最大的服务器系统软件了 Linus虽然创建了Linux 但Linux的壮大是靠全世界热心的志愿者参与的 这么多人在世界各地为Linux
  • Python3 初学 DAY2

    num1 minute py minute 7 24 60 print minute num2 print py 注 显示颜色格式 033 显示方式 字体色 背景色m 033 0m 显示颜色参数 显示方式 效果 字体色 背景色 颜色描述 0
  • spark报Got an error when resolving hostNames. Falling back to /default-rack for all

    一 报错代码如下 21 06 01 20 13 36 INFO yarn SparkRackResolver Got an error when resolving hostNames Falling back to default rac
  • 【Spring】Spring官方文档笔记

    Spring 官方文档 和任何一本spring书籍相比 它都更新更全 文章目录 Spring 1 控制反转 Inversion of Control IoC 1 1 依赖注入 dependency injection DI 1 Spring
  • java虚拟机+分隔符

    java 入门 java 虚拟机 1 java虚拟机的平台可移植性 只要将java虚拟机安装于不同平台 我们编译的 class 文件就可以运行 2 jdk java开发 3 jre java运行时环境 jdk jre 下载安装后必须在环境变
  • C语言:利用队列逆置栈

    关注作者 Aqu 蓝空 定义一些功能的函数 void InitStack SqStack S 栈的初始化 void Push SqStack S int data 入栈 int Pop SqStack S 出栈 void StackTrav
  • 根据身份证号获取出生日期,年龄,性别

    java语言 根据身份证号获取出生日期 年龄 性别 测试程序 public class TestUtils public static void main String args String idcard xxxxxxxxxxxxxxxx
  • oracle 获取日期的毫秒_Oracle 毫秒时间戳

    其实很早以前就经常碰到这个问题 就是得到自1970年1月1日以来的秒数 这个问题很容易解决 SQL gt SELECT SYSDATE TO DATE 1970 1 1 8 YYYY MM DD HH24 86400 FROM DUAL S
  • Linux学习笔记-----缓冲区概念及git使用

    一 编译文件 编译器是如何知道我的生成软件需要被重新编译了 根据文件的修改时间来的 因为用户不可能同时修改多个问题 所以文件修改总是有先后顺序的 又因为 源文件和可执行程序时间总是交叉 二 缓冲区概念及理解 1 概念 就是一块内存 刷新策略
  • clickhouse导入数据 DBeaver大坑

    测试数据有一亿条需要导入数据库 使用DBeaver自带导入数据功能 结果放置一晚才导入一千万条 估计导入设置有问题 于是寻找合适方式 记录如下 首先将待导入的csv数据表45G 传输到clickhouse所在的服务器 在数据库中提前建好表
  • 魔方机器人之硬件篇

    待续 点击打开链接 思睿硬件设计博客
  • 面向组织分析的内容

    声明 本文是学习GB T 42859 2023 航天产品质量问题三个面向分析方法实施要求 而整理的学习笔记 分享出来希望更多人受益 如果存在侵权请及时联系我们 1 范围 本文件规定了航天产品质量问题三个面向分析方法实施的一般要求 程序和分析
  • 进制转换(C++)

    文章目录 一 任意2 36进制数转换为10进制数 1 1 c 代码实现 二 十进制转换为其他进制 2 1 方法一 2 2 c 代码实现 2 3 方法二 2 4 Demo 一 任意2 36进制数转换为10进制数 以二进制转换为十进制为例 基本
  • Vue2 vue-cropper裁剪图片-使用方法及注意事项

    记录vue croppe的使用及过程中遇到的问题 参考文章 Vue2中使用vue croper插件实现图片上传裁剪 超详细 效果图 安装 npm install vue cropper 或 yarn add vue cropper 封装vu
  • Linux之gdb的使用

    当我们能够在windows下 使用vs 2019等编译器去进行调试的时候 我们可以将在Linux下使用gdb调试这两者之间进行对比 调试这个操作 在方法上有区别吗 Linux和windows 其实 在调试思路上是一样的 在调试的操作方式上一
  • 超详细的移动Web知识树状图(flex、移动适配、响应式)

    前言 学习任何新知识 最重要的永远都是搭建属于自己的知识框架 随后学习的细碎知识点往框架里面填入 最后形成一棵属于自己的知识大树 本系列的博客专注更新总结好的思维导图 希望可以帮助大家快速理清知识结构 注意 本系列文章是拿来建立知识体系 没
  • 基于51单片机的热水器设计

    概述 本实例是基于51单片机的智能热水器控制系统 主要硬件由51单片机最小系统 LCD1602显示屏屏电路 水位传感器电路 ADC转换电路 DS18B20数字温度传感器 蜂鸣器报警电路 按键电路 加水继电器电路 加热继电器电路电路构成 功能