硬件电路的设计

系统的功能分析及体系结构设计
3.1.1系统功能分析
本设计由STC89C52单片机电路+数字温度传感器DS18B20电路+按键电路+蜂鸣器报警电路+继电器控制电路+LCD1602液晶显示电路+电源电路组成。
1、LCD1602液晶实时显示当前温度值和设置的温度上下限报警值,温度上下限可以通过按键设置,超出之后会通过继电器自动调节回设置温度(继电器需要外接加热器和散热器)。
2、如果温度超过上限,温度过高打开制冷继电器,如果温度低于下限,温度过低打开制热继电器。
2、如果1分钟内,没有温度调节到上下限范围内,则蜂鸣器报警。
3.1.2系统总体结构
本系统具体框图如下图所示:

原理图:

DS18B20温度传感器模块电路设计
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
一、DS18B20技术参数
(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)测温范围 -55℃~+125℃,固有测温误差(注意,不是分辨率,这里之前是错误的)1℃。
(3)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
(4)工作电源: 3.0~5.5V/DC (可以数据线寄生电源)
(5)在使用中不需要任何外围元件
(6) 测量结果以9~12位数字量方式串行传送
DS18B20温度传感器可编程的分辨率为9~12位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、消费电子产品温度计、或任何热敏感系统。试验证明DS18B20温度传感器满足本设计要求。
DS18B20温度传感器封装一般有2种,使用上都是一样的。可以根据使用环境随意选择。第一种是直接是裸露的芯片,主要用于空气温度检测。第2种是不锈钢钢管封装好的,防水,一般用于水温灯液体温度检测。实物图如下:


DS18B20温度传感器原理图如下。10K电阻为上拉电阻,保证DS18B20传感器数据读取更稳定。

系统软件设计

程序流程图

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<stdio.h>
#include "18b20.h"
#include "1602.h"
#include "delay.h"#define SETDOWN 0x01
#define SETUP 0x02sbit key1=P2^0;  //引脚定义
sbit key2=P2^1;
sbit key3=P2^2;sbit relay_jiare=P1^0;
sbit relay_zhileng=P1^1;
sbit buzzer=P1^4;unsigned int setL= 20;         //上限
unsigned int setH= 50;        //下限
unsigned char DisFlag=0;       //更新显示标志
unsigned char SetFlag=0;       //设置参数标志unsigned long time2ms=0;   //定时计数
unsigned int buzLater=0;  //蜂鸣器计时报int temp1;                       //读取温度初始值
float temperature;              //实际温度值
unsigned char ReadTempFlag=0;//定义读时间标志char dis0[16];//定义显示区域临时存储数组
char dis1[16];//定义显示区域临时存储数组unsigned char Num=0;    //计数void CheckKey(void);
void Init_Timer0(void);//定时器初始化void main (void)
{                  relay_jiare=0;relay_zhileng=0;buzzer=0;Init_Timer0();LCD_Init();           //初始化液晶DelayMs(200);          //延时有助于稳定LCD_Clear();          //清屏relay_jiare=1;relay_zhileng=1;buzzer=1;while (1)         //主循环{CheckKey();           //检测按键if(ReadTempFlag==1)       //读取温度标志{ReadTempFlag=0;temp1=ReadTemperature();  //读取温度temperature=(float)temp1*0.0625;   //温度值转换}if(DisFlag==1)  {DisFlag=0;if((temperature>0)&&(temperature<150)){sprintf(dis0,"Temp:%4.1f C",temperature);//打印温度值LCD_Write_String(0,0,dis0);//显示第二行LCD_Write_Char(9,0,0xdf);//写入温度右上角点if(temperature<setL)  //温度过低{relay_jiare=0; //开启升温 关闭降温relay_zhileng=1;}else if((temperature)>setH)         //温度超高{relay_jiare=1;  //关闭升温 开启降温relay_zhileng=0;}else           //正常温度{relay_jiare=1;  //关闭升温 关闭降温relay_zhileng=1;buzLater=0;}if(buzLater>=60)//正常清零 否则过高过低都会累加 超过1min{buzzer=0;}   //打开蜂鸣器             else{buzzer=1;}    //关闭蜂鸣器}sprintf(dis1," %02d-- %02d       ",setL,setH);LCD_Write_String(0,1,dis1); //初始化显示 if(SetFlag == 0)//按键设置标志{LCD_Write_Char(0,1,' ');LCD_Write_Char(5,1,' ');//更新显示标志}else if(SetFlag == 1)//按键设置标志{LCD_Write_Char(0,1,'S');LCD_Write_Char(5,1,' ');//更新显示标志}           else if(SetFlag == 2)//按键设置标志{LCD_Write_Char(0,1,' ');LCD_Write_Char(5,1,'S');//更新显示标志}   }}
}void CheckKey(void)
{ static unsigned  char rekey =0;if((key1==0)||(key2==0)||(key3==0))      //检测到按键按下{DelayMs(10);   //小抖动if(rekey==0){if(key1==0)    //检测是否按下{rekey=1;SetFlag++;//设置标志if(SetFlag >= 3) SetFlag = 0;}  else if(key2==0)//设置值键{rekey=1;if(SetFlag==1)      //处于设置1{if(setL > 0 ){setL=setL-1;}}else if(SetFlag==2)//处于设置2{if(setH > 0){setH=setH-1;}}                        }else if(key3==0)//设置值键{rekey=1;if(SetFlag==1)      //处于设置1{if(setL < 99 ){setL=setL+1;}}else if(SetFlag==2)//处于设置2{if(setH < 99 ){setH=setH+1;}}              }}}else{rekey=0;    //防止重复检测到按键}
}/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{TMOD |= 0x01;   //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响          //TH0=0x00;         //给定初值//TL0=0x00;EA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}
/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{TH0=(65536-20000)/256;          //重新赋值 20msTL0=(65536-20000)%256;time2ms++;if(time2ms%10==0) //更新显示{DisFlag=1;if(time2ms%50==0)       //读取温度{ReadTempFlag=1; //读标志位置1    if(buzLater<200)buzLater++;}}
}

.

链接:https://pan.baidu.com/s/1XFejOp1NAFQDVMRlZGxdZQ
提取码:04hq

.

基于51单片机的恒温箱水温温度控制系统报警器方案原理图设计相关推荐

  1. 13、基于51单片机防火防盗烟雾温度人体红外感应检测设计(程序+原理图+PCB图+Proteus仿真+参考论文+开题报告+元器件清单等)

    摘要     随着社会和经济的发展,防火工作越来越重要,但是目前国内的许多研发都侧重于大型场所的火灾报警.因此,我们就有必要研制一种结构简单.经济实用的家庭烟雾温度人体感应检测报警器以适应市场的需求. ...

  2. 基于51单片机的汽车灯光报警控制系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.模拟汽车灯光控制系统,支持双闪,转向灯光控制 2.上锁后,非法进入,灯光双闪,喇叭报警,报警电路采用的LED和蜂鸣器组成的声光报警系统 3.本系统 ...

  3. 基于51单片机的衣柜鞋柜湿度控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前湿度值 2.当湿度超过设定湿度阈值范围时,启动加热和风机控制继电器,否则关闭 3.按键可设定湿度阈值 4.采用D ...

  4. 基于51单片机的水位液位温度监测鱼缸系统仿真原理图程序

    硬件设计 上一篇咱们讲了基于数码管显示的液位检测,本章讲一下基于LCD1602显示的液位检测,同时伴有温度测量.该系统可应用于鱼缸.水塔.水箱的检测.本系统液位检测方案是基于液位传感器,通过传感器嵌入 ...

  5. 基于51单片机的水箱水位监测控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.通过传感器监测水位,当水位低于水位下限时,接通加水水泵,直到水位达到水位上限,停止加水 2.水位低于水位下限时,声光报警 3.可按键手动加水, ...

  6. T027基于51单片机的智能窗帘窗户控制系统proteus仿真原理图PCB

    功能: 0.本系统采用单片机STC89C52作为系统的主控芯片 1.系统采用LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.系统具有四个功能按键,支持手动按键/定时/遥控三种模式控制窗帘 ...

  7. 基于51单片机的酒精浓度检测量仪proteus仿真程序原理图设计数码管液晶LCD1602显示

    硬件设计 (末尾附文件) 仿真文件中的酒精传感器均是用滑动变阻器来模拟 基于数码管显示: 基于LCD1602显示: 程序设计 //程序头函数 #include <reg52.h> //显示 ...

  8. 基于51单片机无线恒温箱恒温控制系统(原理图+源代码+PCB+参考论文)

    本设计: 基于51单片机无线恒温箱恒温控制系统(全套资料+原理图+源代码+PCB+参考论文) 原理图:Altium Designer 程序编译器:keil 4 编程语言:C语言 编号C0020 下载链 ...

  9. 基于51单片机的智能窗帘项目,源码+原理图+pro仿真。

    基于51单片机的智能窗帘项目,源码+原理图+pro仿真. 介绍 :此作品有四种模式,通过四个独立按键调控,模式1:三个光感范围,使得电机驱动窗帘自动开,半开,关;模式2:15-25度的温度阈值,低于或 ...

最新文章

  1. 阿里最强热修复:Sophix 超高速集成与踩坑
  2. Zookeeper之ZAB协议
  3. 惠普10亿美元锻造Helion云品牌
  4. [Android]使用Dagger 2进行依赖注入 - Producers(翻译)
  5. Flowable 数据库表结构 ACT_RE_PROCDEF
  6. 基于exosip的uas-uac的一个简单例子(转载)
  7. C++ 函数需要有返回值,但非全分支return(RVO)
  8. 阿里云 Code Pipeline 体验
  9. 两个组件对不齐(css样式问题)
  10. c语言入门视频教程(C语言入门视频教程 百度网盘)
  11. bugzilla mysql_Centos 7 搭建Bugzilla5.0.4
  12. golang 开源项目
  13. html选择器优先级如何计算,CSS选择器权重计算与优先级
  14. 【processing】Daniel Shiffman编程挑战题解、思维介绍及代码(1)穿越星际效果编译
  15. 火狐查看密码_在Firefox中查看和删除存储的密码
  16. 国内离线安装 Chrome 扩展程序的方法总结
  17. 天眼查app协议逆向分析
  18. 2021年软考时间阶段
  19. 没有项目管理经验,怎么报考PMP?
  20. 阿里云服务器ECS开放8080端口

热门文章

  1. 三星笔记本-星曜系列上手体验:简约时尚、轻薄便携
  2. 如何将无线键盘连接到Mac?
  3. 价值20k的sql题(java中级)
  4. AP微积分全方位解析
  5. 2022-2028年中国保险经纪产业竞争现状及投资前景展望报告
  6. java实况足球2014_最新实况足球中文榜单下载_九游
  7. electron 剪贴板 截图_electron屏幕截图功能
  8. opencv 核 腐蚀_OpenCV学习笔记(五)形态学操作:腐蚀、膨胀
  9. 领健医美saas管理系统软件之【医美经营宝典】医美机构微信:如何精准化拓客引流?初入医美咨询行业重点有哪些?
  10. 360文件粉碎机-独立分离版