基于51单片机恒温箱设计

基于51单片机恒温箱设计

(程序+原理图+设计报告)

功能介绍

具体功能:

本设计由STC89C52单片机电路+数字温度传感器DS18B20电路+按键电路+蜂鸣器报警电路+继电器控制电路+LCD1602液晶显示电路+电源电路组成。

1.LCD1602液晶实时显示当前温度值和设置的温度上下限报警值,温度上下限可以通过按键设置,超出之后会通过继电器自动调节回设置温度(继电器需要外接加热器和散热器);

2.如果温度超过上限,温度过高打开制冷继电器,如果温度低于下限,温度过低打开制热继电器;

2.如果1分钟内,没有温度调节到上下限范围内,则蜂鸣器报警;

​演示视频:

基于51单片机恒温箱设计 

添加图片注释,不超过 140 字(可选)

程序

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<stdio.h>
#include "delay.h"
#include "math.h"
#include "adxl345.h"
#include "1602.h"
/***公众号:木子单片机****/
sbit led=P1^4;	 //引脚定义unsigned char ReadAdxl345;		 //定时读取adxl345
char dis0[16];		   //串口数据显示
xdata char dis1[16];		   //串口数据显示
xdata char dis2[16];		   //串口数据显示
unsigned long time_20ms=0;	   //定时器计数
unsigned char ReportFlag=0;	   //数据上报标志unsigned int BuShu=0; 	//累计步数
float JuLi=0;			//累计距离
float KaLuLi=0;			//累计卡路里
unsigned char statFlag = 0;//状态
void Init_Timer0(void);		   //函数声明
void SendStr(unsigned char *s,unsigned char length);
void UART_Init(void);
void SendByte(unsigned char dat);
void BuShuCheck(void);void main (void)
{     Init_Timer0();        //定时器0初始化UART_Init();LCD_Init();           //初始化液晶DelayMs(20);          //延时有助于稳定LCD_Clear(); Init_ADXL345();	  //清屏if(Single_Read_ADXL345(0X00)==0xe5)	//读出的数据为0XE5,表示正确{DelayMs(5);}else{DelayMs(3);}led=1;while (1)         //主循环{if(ReadAdxl345==1)   //定时读取adxl345数据{BuShuCheck();			//检测步数sprintf(dis1,"B:%04d J:%4.1fm ",BuShu/2,JuLi);	//打印LCD_Write_String(0,0,dis1);//显示sprintf(dis2,"%7.2fcal ",KaLuLi);	   	//打印LCD_Write_String(0,1,dis2);//显示			if(statFlag == 0)//站着状态{LCD_Write_String(11,1,"Stand");}else if(statFlag == 1)躺着状态{LCD_Write_String(11,1,"Lie  ");}else if(statFlag == 2)//跑着状态{LCD_Write_String(11,1,"Run  ");}else if(statFlag == 3)//走着状态{LCD_Write_String(11,1,"Walk ");}}if(ReportFlag==1)	//2s{ReportFlag=0;sprintf(dis0,"*B:%04d",BuShu/2);	//上报步数SendStr(dis0,7);sprintf(dis0,"J:%04.1fm",JuLi);			//上报距离SendStr(dis0,7);sprintf(dis0,"K:%07.2fcal",KaLuLi);	   	//上报卡路里SendStr(dis0,12);if(statFlag == 0)//站着状态{SendStr("Stand#",6);}else if(statFlag == 1)躺着状态{SendStr("Lie  #",6);}else if(statFlag == 2)//跑着状态{SendStr("Run  #",6);}else if(statFlag == 3)//走着状态{SendStr("Walk #",6);}SendStr("\r\n",2);}}
}void BuShuCheck(void)
{static unsigned char ErrorNum=0;	   //变量定义static unsigned char NormalNum=0;static unsigned char CheckNum=0;	   //变量定义static unsigned char shuNum=0;static unsigned char ceNum=0;static unsigned int remBuShu=0;ReadAdxl345=0;ReadData_x();CheckNum++;//检测次数if((temp_X<650)||(abs(temp_Y)>400))       //查看正常次数{led=0;			//呼吸灯ErrorNum++;	//记录次数shuNum++;//竖直状态++}else{NormalNum++; ceNum++;led=1;} //呼吸灯//侧着状态++	if((NormalNum!=0)&&(ErrorNum!=0))	//			从角度判断走了一步{ErrorNum=0;NormalNum=0;BuShu++;JuLi=(float)(BuShu/2)*0.45;	  //计算距离KaLuLi=JuLi*70*0.832;		 //卡路里计算 走路 距离*体重*系数}if(CheckNum>=20){if((ceNum!=0)&&(shuNum==0)){statFlag = 0;//站着状态}else if((ceNum==0)&&(shuNum!=0)){statFlag = 1;//躺着状态}else if((ceNum!=0)&&(shuNum!=0)){if((BuShu - remBuShu)>=6)//跑着 一个周期大于3步{statFlag = 2;}//跑着状态else{statFlag = 3;}//走着状态remBuShu = BuShu;//记录上次步数			} CheckNum=0;ceNum=0;		//清空计数shuNum=0;			}
}
void Init_Timer0(void)
{TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     TH0=(65536-20000)/256;		  //重新赋值 20msTL0=(65536-20000)%256;EA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}void Timer0_isr(void) interrupt 1 
{TH0=(65536-20000)/256;		  //重新赋值 20msTL0=(65536-20000)%256;time_20ms++;if(time_20ms%5==0){ReadAdxl345=1;}if(time_20ms%50==0){ReportFlag=1;}
}void UART_Init(void)
{SCON  = 0x50;		        // SCON: 模式 1, 8-bit UART, 使能接收  TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHzTL1 = TH1;  TR1   = 1;                  // TR1:  timer 1 打开                         EA    = 1;                  //打开总中断ES    = 1;                  //打开串口中断
}void SendByte(unsigned char dat)//串口发送单字节数据
{unsigned char time_out;time_out=0x00;SBUF = dat;			  //将数据放入SBUF中while((!TI)&&(time_out<100))  //检测是否发送出去{time_out++;DelayUs2x(10);}	//未发送出去 进行短暂延时TI = 0;						//清除ti标志
}void SendStr(unsigned char *s,unsigned char length)	   //发送定长度字符串
{unsigned char NUM;NUM=0x00;while(NUM<length)	//发送长度对比{SendByte(*s);  //放松单字节数据s++;		  //指针++NUM++;		  //下一个++}
}

硬件设计

使用元器件:

单片机:STC89C52;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

无极性电容:30P;DC座(小);

极性电容:10uF;LED灯;

5.08接线端子3芯;5V继电器;

LCD1602液晶;电源开关;

蓝白电位器;直插三极管;

电阻:1K、10K;按键;

IC座:40pin;蜂鸣器;

DS18B20温度芯片;

晶振:11.0592M;

2.54单排针:16pin;

2.54单排座:16pin;

导线:若干;

添加图片注释,不超过 140 字(可选)

流程图:

添加图片注释,不超过 140 字(可选)

设计资料

01原理图

本系统原理图采用Altium Designer19设计,具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用软件keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计报告

一万五千字设计报告,具体如下!

添加图片注释,不超过 140 字(可选)

04设计资料

        资料获取请关注同名公众号,全部资料包括程序(含注释)、AD原理图、任务书、设计报告、流程图、结构框图、实物图、元件清单等。具体内容如下,全网最全! !

 

可以关注下方公众号!

点赞分享一起学习成长。

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

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

相关文章

Spring源码中是如何使用设计模式六大原则的

设计模式的六大原则&#xff0c;通常指的是SOLID原则&#xff0c;它们是面向对象设计中用于提高代码可维护性、灵活性和可扩展性的五个指导原则&#xff0c;学习六大原则&#xff0c;可以让你的代码变得高级而优雅&#xff0c;今天的内容 V 哥结合 Spring源码中如何运用六大原则…

偏微分方程算法之抛物型方程差分格式编程示例四(Richardson外推)

目录 一、研究问题 二、C++代码 三、结果分析 一、研究问题 已知其精确解为。分别取以下三种步长: ①

流程引擎框架

SpiffWorkflow python 流程引擎框架哪个好 Camunda 核心表介绍 https://zhuanlan.zhihu.com/p/645786758 camunda流程引擎基本使用&#xff08;笔记&#xff09; https://blog.csdn.net/weixin_46949627/article/details/129255647 python连接FastDfs服务封装类 https://blog.c…

树形dp,CF 1926 G - Vlad and Trouble at MIT

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - G - Codeforces 二、解题报告 1、思路分析 考虑每个结点最终状态只可能为和P连通或者和S连通 我们我们自然而然的将问题划分为这样的状态 f[x][0]代表结点x和P连通需要割掉最少的边 f[x][1]代…

Windows Server配置NFS,做ESXI共享存储

1:登录wINDOWS系统&#xff0c;点击添加角色和功能。 2:根据向导提示&#xff0c;一路下一步。在服务器角色中选择文件和存储服务器在文件和iSCSI服务中勾选NFS服务器。 3&#xff1a;按照提示一路下一步&#xff0c;安装NFS。 4&#xff1a;安装完成后关闭安装界面。 5&#x…

代码随想录算法训练营第六十五天 | 岛屿数量 深搜、岛屿数量 广搜、岛屿的最大面积

岛屿数量 深搜 题目链接&#xff1a;99. 岛屿数量 文字讲解&#xff1a;99. 岛屿数量 | 代码随想录 解题思路 本题已经说明&#xff0c;只有水平方向和竖直方向才能组成岛屿 本题思路&#xff0c;是遇到一个没有遍历过的节点陆地&#xff0c;计数器就加一&#xff0c;然后把…

为电脑小白推荐的5款实用工具软件

​ 电脑上的各类软件有很多&#xff0c;除了那些常见的大众化软件&#xff0c;还有很多不为人知的小众软件&#xff0c;专注于实用功能&#xff0c;简洁干净、功能强悍。 1.磁盘空间分析——TreeSize Free ​ TreeSize Free是一款免费的磁盘空间分析工具&#xff0c;能够扫描…

Sip协议(四) -注册流程

Sip协议(四) -注册流程 本文主要介绍下sip协议中, agent的注册流程. 一: 流程图 简单的流程图如下: agent发起注册fs 返回401 ,并携带WWW-Authenticateagent第二次发起注册,增加Authorizationfs返回授权成功, 或者失败. 二: sip流程 发起注册REGISTER 首先agent发起注册请求…

重磅!鹅厂大牛带你30分钟玩转AI智能结对编程!

在大模型时代&#xff0c;人工智能技术的突破性进展正重塑着软件开发的面貌。AI的融入不仅优化了代码编写过程&#xff0c;更开启了智能编程的新纪元&#xff0c;为开发者带来了前所未有的工作效率和创新可能。AI结对编程不仅能够极大提升研发效率&#xff0c;还能通过智能分析…

Java基础入门day65

day65 web项目 页面设计 仿照小米官网&#xff0c;将首页保存到本地为一个html页面&#xff0c;再将html页面保存为jsp页面&#xff0c;在项目中的web.xml文件中配置了欢迎页 <welcome-file-list><welcome-file>TypesServlet</welcome-file> </welcome-…

linux源码编译

1/进入源码目录 cd linux.4.9.1 2. 从当前机器的启动目录拷贝配置信息到源代码目录。这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。 cp -v /boot/config-$(uname -r) .config 3.配置界面 make menuconfig 4/先编译所有模块&#xff0c;确保正确 make -j…

【查缺补漏】python

python查缺补漏 底板除 还有一种除法是//&#xff0c;称为地板除&#xff0c;两个整数的除法仍然是整数&#xff1a; >>> 10 // 3 3你没有看错&#xff0c;整数的地板除//永远是整数&#xff0c;即使除不尽。要做精确的除法&#xff0c;使用/就可以。 因为//除法只…

rsa加签验签C#和js、java、微信小程序互通

js实现rsa加签验签 https://github.com/kjur/jsrsasign 11.1.0版本 解压选择需要的版本&#xff0c;这里选择all版本了 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>JS RSA加签验签</title&g…

有趣网站分享 - 生成 O‘Reilly 类型封面

文章目录 网站介绍效果 网站介绍 –> O’RLY 封面工厂 https://orly.nanmu.me 你可以… 设置文本内容 选择图片 选择颜色 效果 2024-06-20&#xff08;四&#xff09;

机器人----控制方式

位置控制 点位控制 点到点--PTP 只关心起点和目标点&#xff0c;不关心走过的轨迹。 连续轨迹控制 CP(continus path) eg&#xff1a;焊接&#xff0c;切割。 力控制 使用多大的力进行控制。 eg:用多大的力写字。

2.java pom.xml 添加配置说明

目录 1项目坐标&#xff1a; 2项目依赖&#xff1a; 3项目构建配置&#xff1a; 4项目属性&#xff1a; 5.项目信息&#xff1a; 6.项目分发管理&#xff1a; 7.项目插件配置&#xff1a; 8.项目依赖管理&#xff1a; pom.xml 是 Maven 项目的核心配置文件&#xff0c…

LSTM学习资料

这里写自定义目录标题 1.一个大二学生对LSTM的理解 https://www.bilibili.com/video/BV1jp421d7f8/?spm_id_from333.999.0.0&vd_sourcecc2da879c044059d9838f660bcaf4664 2.【LSTM从入门到精通】2小时带你掌握LSTM算法&#xff01; https://www.bilibili.com/video/BV1yb4…

Vim入门教程

Vim是一个高度可配置的文本编辑器&#xff0c;用于创建和修改各种类型的文本文件。以下是一些基本的Vim使用示例&#xff0c;展示如何在Vim中进行编辑和操作。 1. 打开和保存文件 打开一个名为example.txt的文件&#xff1a; vim example.txt 打开多个文件&#xff0c;使用大…

前端网页开发学习(HTML+CSS+JS)有这一篇就够!

目录 HTML教程 ▐ 概述 ▐ 基础语法 ▐ 文本标签 ▐ 列表标签 ▐ 表格标签 ▐ 表单标签 CSS教程 ▐ 概述 ▐ 基础语法 ▐ 选择器 ▐ 修饰文本 ▐ 修饰背景 ▐ 透明度 ▐ 伪类 ▐ 盒子模型 ▐ 浮动 ▐ 定位 JavaScript教程 ▐ 概述 ▐ 基础语法 ▐ 函数 …

契约锁电子签章平台 add 远程命令执行漏洞复现(XVE-2023-23720)

0x01 产品简介 契约锁电子签章平台是上海亘岩网络科技有限公司推出的一套数字签章解决方案。契约锁为中大型组织提供“数字身份、电子签章、印章管控以及数据存证服务”于一体的数字可信基础解决方案,可无缝集成各类系统,让其具有电子化签署的能力,实现组织全程数字化办公。通…