基于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,一经查实,立即删除!

相关文章

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

目录 一、研究问题 二、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;还能通过智能分析…

【查缺补漏】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;

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

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

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

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

还在为Android开发找不到图片测试资源发愁吗? DummyImage来助你加速开发

使用 DummyImage 模拟电影应用数据 在开发和测试过程中&#xff0c;模拟数据是不可或缺的工具。它可以帮助我们在没有真实数据的情况下测试应用程序的功能和性能。本文将介绍如何使用 [DummyImage]https://dummyimage.com生成占位符图像来模拟电影应用的数据&#xff0c;并深入…

专家观点∣企企通采购供应链数字化总监于海生:如何利用数字化技术重构采购流程,推动企业降本增效?

摘要 数字化转型现已成为企业提升竞争力、实现降本增效的必由之路。企业应主动参与到数字经济的建设中&#xff0c;以数据资源为关键要素&#xff0c;以现代信息网络为主要载体&#xff0c;以信息通信技术的有效使用作为效率提升和经济结构优化的重要推动力的一系列经济活动&a…

80W大功率钓鱼灯调光调色方案 | 非同步降压 LED 驱动芯片FP7195,将PWM信号转为模拟信号进行调光,深度可达0.1%

夜钓作为一种受欢迎的休闲娱乐方式&#xff0c;随着LED照明技术的不断发展&#xff0c;钓鱼爱好者们对于钓鱼灯的光照效果和调光调色功能提出了更高的要求。传统的调光方案往往无法满足钓鱼爱好者对于光线亮度和色温的精准控制需求。 对此&#xff0c;我司推出一个80W大功率夜钓…

部署RAC到单实例ADG(11G)

服务器信息 主库RAC环境信息 主库RAC基本环境 节点1 节点2 OS centos 7.9 centos 7.9 数据库版本 11.2.0.4 11.2.0.4 规格 1C4G 1C4G 主机名 racdb01 racdb02 public ip 192.168.40.135 192.168.40.145 vip 192.168.40.13 192.168.40.14 private ip 192…

【开关电源】Buck 降压电路

文章目录 前言基本组成工作原理电路特点工作模式设计与实现 前言 Buck降压电路&#xff0c;也称为降-降&#xff08;step-down&#xff09;转换器&#xff0c;是一种直流-直流&#xff08;DC-DC&#xff09;电源转换器&#xff0c;用于将输入电压转换为较低的输出电压。这种电…

小林图解系统-二.硬件结构 2.7为什么0.1+0.2不等于0.3?

为什么负数要用补码表示&#xff1f; 十进制转二进制&#xff1a;除2取余法 [整数类型]的数字在计算机的存储方式&#xff1a;int类型&#xff0c;32位&#xff0c;最高位[符号标志位]&#xff0c;正数符号位0&#xff0c;负数的符号位1&#xff0c;剩余的31位则表示2进制数据…

计算机网络 —— 应用层(电子邮件)

计算机网络 —— 应用层&#xff08;电子邮件&#xff09; 电子邮件发送电子邮件的过程SMTP特性工作流程 电子邮件格式MIME关键组件工作方式 POP/IMAPPOP&#xff08;邮局协议&#xff09;IMAP&#xff08;因特网邮件访问协议&#xff09; 基于万维网的电子邮箱特点优势常见的基…

gorm 一对多

type Author struct {AID int gorm:"primary_key;AUTO_INCREMENT"Name stringAge stringSex string//关联关系Article []Article gorm:"ForeignKey:Auid;AssociationForeignKey:AID" } type Article struct {ArId int gorm:"primary_key;AUTO_I…