【51单片机系列】DS18B20温度传感器扩展实验之设计一个智能温控系统

本文是关于DS18B20温度传感器的一个扩展实验。

文章目录

  • 一、相关元件介绍
  • 二、实验分析
  • 三、proteus原理图设计
  • 四、软件设计

本扩展实验实现的功能:利用DS18B20设计一个智能温度控制系统,具有温度上下限值设定。当温度高于上限值时,电机开启,同时蜂鸣器报警;当温度低于下限值时继电器工作加热,同时蜂鸣器报警,当温度处于上下限间正常工作。

首先系统运行后,可以通过按键设置温度上下限,当按下开始运行按键后温控系统开始工作。默认温度上下限为23~25°C。温控系统开始运行后会在数码管中显示当前温度。

使用到的硬件资源有:

  • 独立按键;
  • 蜂鸣器+ULN2003;
  • 直流电机;
  • 继电器;
  • 共阴极数码管+74HC128+74HC245;
  • DS18B20温度传感器;

一、相关元件介绍

当按键按下时,按键两端管脚电平一致,按键处理时需要延时消抖+二次确认。

要驱动蜂鸣器发声,分为有源蜂鸣器和无源蜂鸣器。对于有源蜂鸣器控制其中一端管脚为高电平或低电平即可发声;对于无源蜂鸣器,需要一定频率的脉冲才可发声。驱动蜂鸣器需要比较大的电流,使用ULN2003芯片实现放大电流的功能。本实验使用有源蜂鸣器。

要驱动直流电机转动,在其一端管脚输入高电平,另一端管脚输入低电平,使直流电机有电流通过即可转动,高低电平在不同位置,仅控制转动的方向。要驱动直流电机也需要比较大的电流,使用ULN2003芯片实现放大电流的功能。

使用一个PNP三极管驱动继电器,添加一个二极管用于保护继电器。

使用74HC138芯片控制数码管的位选,74HC245控制数码管的段选。

DS1302温度传感器是单总线通信,不需要外围元件。具有可编程的分辨率,内含64位的ROM(64位的序列号,识别当前使用的芯片)、一个包含9字节的高速暂存器RAM和一个非易失性可电擦除EEPROM。

不考虑64位ROM序列号,DS1302读取温度过程:初始化→发送CCH命令跳过ROM→发送温度转换命令44H→延时→初始化→发送CCH命令跳过ROM→发送读RAM命令BEH→连续读出数据。

设置温度上下限过程:初始化→发送CCH命令跳过ROM→发送48H命令将RAM2、3字节的内容复制到EEPROM中→延时→初始化→发送CCH命令跳过ROM→发送4EH命令将温度限值写入RAM→发送连个字节的数据。

二、实验分析

本实验实现的是一个温度控制系统,当温度超过设定范围时触发一定操作。温度超过上限时,电机开启同时蜂鸣器报警;温度低于下限时,继电器工作同时蜂鸣器报警;温度处于上下限之间时,系统正常工作。系统通过按键调节上限、下限和工作开始或停止。

本系统的需求包括:

  • 按键控制系统的开始和停止;
  • 按键调节上限和下限;
  • 温度超过范围报警,温度在范围内正常工作;
  • 调节温度上下限时对应的上下限温度会显示在数码管中;
  • 系统工作时的温度实时显示在数码管中;

三、proteus原理图设计

proteus仿真原理图如下。P3.0~P3.3口控制独立按键K1 ~ K4,P3.0 ~ 03.3口为低电平时表示按键按下。K1向上调温度上限,K2向下调温度下限,按K3确定温度的上下限,按K4 温度控制系统开始工作。P3.7口作为温度传感器DS18B20的输入/输出。

通过ULN2003芯片起到放大电流的作用,用来控制蜂鸣器、继电器和直流电机。P1.0控制直流电机,P1.0为高电平时直流电机工作,为低电平时直流电机不工作。P1.5控制蜂鸣器,P1.5为低电平是蜂鸣器不发声,为高电平时蜂鸣器发声。P1.1口控制继电器,P1.1为低电平时继电器工作,为高电平时继电器不工作。

独立按键-温度传感器-蜂鸣器-直流电机-继电器模块

P0口通过74HC245控制数码管的段选,P2.2~P2.4通过74HC138控制数码管的位选。P0口为高电平时,对应数码管的段亮。

共阴极数码管模块

四、软件设计

按键函数处理如下:

void DataPros()
{int temp=curTmp*100;if(temp<0){display[0]=0x40;  // -} else{display[0]=0x00;}display[1]=smg[temp%10000/1000];display[2]=smg[temp%1000/100]|0x80;  // |0x80显示小数点display[3]=smg[temp%100/10];display[4]=smg[temp%10/1];display[5]=0x39;}// 按键处理函数
void KeyPros()
{u8 i;// K1上调温度上限if(0==K1){delay1ms(10);if(0 == K1){tmpH=tmpH+1;if(tmpH>125)tmpH=125;curTmp=tmpH;DataPros();}while(!K1);}// K2下调温度下限if(0==K2){delay1ms(10);if(0 == K2){tmpL=tmpL-1;if(tmpL<-55)tmpL=-55;curTmp=tmpL;DataPros();}while(!K2);}// 按K4,系统开始运行,读取当前温度,判断是否超过温度范围if(0==K4){delay1ms(10);if(0==K4){enRead=~enRead;if(0==enRead){for(i=0;i<8;i++){display[i]=0;}}}while(!K4);}
}

温度处理函数如下:

// 温度处理函数
void TempPros(int temp)
{float tp;if(temp<0){display[0]=0x40;  // -temp=temp-1;temp=~temp;tp=temp;temp=tp*0.0625*100+0.5;}else{display[0]=0x00;tp=temp;temp=tp*0.0625*100+0.5;}// 如果温度超过上限,蜂鸣器发声,电机转动if((tp*0.0625)>tmpH){BEEP=1;MOTOR=1;RELAY=1;}else if((tp*0.0625)<tmpL)  // 如果温度低于下限,蜂鸣器发声,继电器工作{BEEP=1;MOTOR=0;RELAY=0;}else{BEEP=0;MOTOR=0;RELAY=1;}display[1]=smg[temp%10000/1000];display[2]=smg[temp%1000/100]|0x80;  // |0x80显示小数点display[3]=smg[temp%100/10];display[4]=smg[temp%10/1];display[5]=0x39;
}

主函数:

void main()
{enRead=0;BEEP=0;MOTOR=0;RELAY=1;while(1){if(0!=enRead)TempPros(DS18B20ReadTemp());  // 系统运行时默认数码管不显示,当按了K4时显示实时温度KeyPros();DigDisplay();}
}

仿真结果:

温度控制系统仿真结果

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

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

相关文章

BDTC2023:CloudberryDB开源创新与实践

中国大数据技术大会&#xff08;BDTC&#xff09;由中国计算机学会&#xff08;CCF&#xff09;创立于2008年&#xff0c;已经成为国内外极具行业实践的专业大数据交流平台。12月22日-24日&#xff0c;第十七届中国大数据技术大会&#xff08;BDTC 2023&#xff09;在广州举行。…

【Bootstrap学习 day2】

Bootstrap5排版 使用标题标签<h1>-<h6> 可以使用类.h1-.h6来设置标题 <div class"container"><p class"h1">h1 Bootstrap 标题</p><p class"h2">h2 Bootstrap 标题</p><p class"h3"&g…

创建加密分区或者文件

文章目录 [GParted 中已清除的分区与未格式化的分区](https://superuser.com/questions/706624/cleared-vs-unformatted-partition-in-gparted)创建加密分区解密创建的加密分区以便挂载格式化设备未具体的格式&#xff08;这里为ext4格式&#xff09;创建挂载点目录挂载加密的文…

多值类别特征加入CTR预估模型的方法

欢迎关注公众号&#xff1a;数据运营入表资产化服务 获取更多算法源码材料 2023数据资源入表白皮书&#xff0c;推荐系统源码下载-CSDN博客 用友BIP数据资产入表解决方案白皮书&#xff0c;推荐系统源码下载-CSDN博客 我们都知道一般单值类别特征加入到CTR预估模型的方法是先…

安装Node修改Node镜像地址搭建Vue脚手架创建Vue项目

1、安装VSCode和Node 下载VSCode Visual Studio Code - Code Editing. Redefined 下载Node Node.js (nodejs.org) 检验是否安装成功&#xff0c;WinR,输入cmd命令&#xff0c;使用node -v可以查看到其版本号 2、修改镜像地址 安装好node之后&#xff0c;开始修改镜像地址 …

如何实现内部产品权限集成

当前我国各领域正在加速向数字化、移动化、智能化发展&#xff0c;大力投入信息化建设与数字化转型已成为企业的共识&#xff0c;而企业门户系统是企业信息化系统建设是一个重要支撑&#xff0c;以企业业务系统为基础&#xff0c;搭建门户系统作为统一入口和应用中心可以有效支…

ssrf之dict协议和file协议

1.dict协议 dict是什么协议呢&#xff1f; 定义&#xff1a;词典网络协议&#xff0c;在RFC 2009中进行描述。它的目标是超越Webster protocol&#xff0c;并允许客户端在使 用过程中访问更多字典。Dict服务器和客户机使用TCP端口2628。 官方介绍&#xff1a;http://dict.o…

计算机毕业设计 基于SpringBoot的高校危化试剂仓储管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

k8s部署metric-server单机、集群版

### 一、单机部署 #### 1.1、下载metric-server https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml #### 1.2、替换镜像并修改参数 ... spec: containers: - args: - --cert-dir/tmp - --secur…

iPhone 13 Pro 更换『移植电芯』和『超容电池』体验

文章目录 考虑换电池Ⅰ 方案一Ⅱ 方案二 总结危险 Note系列地址 简 述: 首发买的iPhone 13P &#xff08;2021.09&#xff09;&#xff0c;随性使用一年出头&#xff0c;容量就暴跌 85%&#xff0c;对比朋友一起买的同款&#xff0c;还是95%。这已经基本得一天两充 >_<&a…

Element Plus 的 el-table 组件合并不规律的行

在 Element Plus 的 el-table 组件中&#xff0c;可以使用 span-method 属性来动态合并不规律数量的行。您可以根据数据的特定条件来确定合并行的方式 <template><el-table :data"tableData" :span-method"handleSpanMethod" border><el-t…

【计算机视觉】角点检测(Harris、SIFT)

Harris 角点指的是窗口延任意方向移动&#xff0c;都有很大变化量的点。 用数学公式表示为&#xff1a; E(u,v)反映的移动后窗口的差异&#xff0c;w(x,y)为每个像素的点权值&#xff0c;I(xu,yv)是移动的像素值&#xff0c;I(x,y)是移动前的像素值。 将E(u,v)进行泰勒展开&am…

Sql中的like的用法

Sql中的like的用法 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起深入探讨SQL中一个强大而灵活的条件查询操作——LIKE关键字的用法。作…

基于Spring Cloud + Spring Boot的企业电子招标采购系统源码

随着企业的快速发展&#xff0c;招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求&#xff0c;建立一个公平、公开、公正的采购环境至关重要。在这个背景下&#xff0c;我们开发了一款电子招标采购软件&#xff0c;以最大限度地控制采购成本&#…

AUTOSAR从入门到精通-网络通信(UDPNm)(一)

目录 前言 几个相关概念 原理 什么是UdpNm 约束和假设 限制

智能硬件(8)之蜂鸣器模块

学好开源硬件&#xff0c;不仅仅需要会编程就可以了&#xff0c;电路基础是很重要的&#xff1b;软件和硬件都玩的溜&#xff0c;才是高手&#xff0c;那么小编为了方便大家的学习&#xff0c;特别画了一块智能传感器板子&#xff0c;来带领大家学习电路基础&#xff0c;玩转智…

C# WPF上位机开发(WebApi联调)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多时候&#xff0c;客户需要开发的不仅仅是一个上位机系统&#xff0c;它还有其他很多配套的系统或设备&#xff0c;比如物流小车、立库、数字孪…

算法与数据结构之算法基础(java)

目录 什么是数据结构&#xff1f; 什么是算法&#xff1f; 1、算法的特性 1.1 五个特征 1.2 设计原则 1.3 评价算法的两个总要指标&#xff1a;时间复杂度和空间复杂度 2、时间复杂度分析 2.1 时间复杂度表示方法&#xff1a;大O表示法 2.2 时间复杂度如何分析 2.3 复…

【电子通识】开关的种类

开关在我们日常生活与工作中使用较多。开关有无数种形式&#xff0c;种类繁多。从微小的按钮到巨大的控制器&#xff0c;功能多种多样。这种多样性受到机械或电气操作、手动或电子控制等因素的影响&#xff0c;并且与个人在设计美学和用户界面方面的偏好也有关。 电子开关采用 …

facebook广告的基础知识

Facebook广告是在Facebook、Instagram、Audience Network等与Facebook相关的SNS和服务上投放的广告。以下是关于Facebook广告的基础知识&#xff1a; 广告类型&#xff1a; 静态图片广告&#xff1a;主要通过Facebook的新闻提要投放的图片广告&#xff0c;可以张贴产品和服务…