当前位置: 首页 > news >正文

【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();}
}

仿真结果:

温度控制系统仿真结果

相关文章:

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

本文是关于DS18B20温度传感器的一个扩展实验。 文章目录 一、相关元件介绍二、实验分析三、proteus原理图设计四、软件设计 本扩展实验实现的功能&#xff1a;利用DS18B20设计一个智能温度控制系统&#xff0c;具有温度上下限值设定。当温度高于上限值时&#xff0c;电机开启&a…...

2023年年度总结,一个小白的CSDN涨粉历程

前言 滚滚长江东逝水&#xff0c;一去不复返。 转眼间已到2024年节点&#xff0c;时间如滚滚长江水向东奔流不息&#xff0c;在长江消失之前&#xff0c;都不会停歇&#xff0c;也不会回头。人亦如此&#xff0c;不管是生活还是学习&#xff0c;都是不断往前走的过程&#xff…...

2023-12-17 LeetCode每日一题(使用最小花费爬楼梯)

2023-12-17每日一题 一、题目编号 746. 使用最小花费爬楼梯二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你…...

《Webpack5 升级》- Vue2.x 组件库 Webpack3 升 5

前言 基于 Vue2.x 的项目和组件库开发于 2019 年 &#xff0c;那时对 Webpack 版本没有概念&#xff0c;项目和组件库的版本混乱…有的使用 v3&#xff0c;有的使用 v4… 对于现今 2023 年&#xff08;或 2024 年&#xff09;的整个生态环境是不够用的&#xff0c;无法使用较新…...

【7K⭐】Pot:一款开源免费支持跨平台划词翻译和OCR的软件

【7K⭐】Pot&#xff1a;一款开源免费支持跨平台划词翻译和OCR的软件 如果你经常需要阅读英文文档或者图片&#xff0c;你可能会遇到以下问题&#xff1a; 浏览器自带的翻译功能翻译效果不佳&#xff0c;无法对照原文&#xff0c;而且不能翻译图片中的文字翻译插件虽然支持多…...

navicat premium历史版本下载及更新navicat premium15 永久(使用)有效期

1、navicat premium介绍 Navicat Premium 是一套可创建多个连接的数据库开发工具&#xff0c;让你从单一应用程序中同时连接 MySQL、Redis、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。它与 GaussDB 、OceanBase 数据库及 Amazon RDS、Amazon Aurora、Amaz…...

JAVA进化史: JDK8特性及说明

JDK 8&#xff08;Java Development Kit 8&#xff09;是Java平台的一个重大版本&#xff0c;于2014年3月发布。该版本引入了许多令人期待的新特性&#xff0c;其中一些改变了Java语言的面貌&#xff0c;提供了更丰富、灵活和现代的编程体验。以下是JDK 8的一些主要特性&#x…...

vue3基础知识一,安装及使用

一、安装vue3 需要安装node&#xff0c;然后在项目所在目录命令行执行以下代码。 npm create vuelatest 回车后需要配置以下内容。 二、安装所需的依赖包并运行 cd到项目目录&#xff0c;执行以下代码安装依赖包 npm i 运行项目 npm run dev 打开浏览器查看结果 ok&#…...

3D动态路障生成

3D动态路障生成 介绍设计实现1.路面创建2.空物体的创建3.Create.cs脚本创建 总结 介绍 上一篇文章介绍了Mathf.Lerp的底层实现原理&#xff0c;这里介绍一下跑酷类游戏的动态路障生成是如何实现的。 动态路障其实比较好生成&#xff0c;但是难点在哪里&#xff0c;如果都是平面…...

Node.js--》node环境配置及nvm和nvm-desktop安装教程

博主最近换了台新电脑&#xff0c;环境得从零开始配置&#xff0c;所以以下是博主从一台纯净机中配置环境&#xff0c;绝对的小白教程&#xff0c;大家第一次安装完全可以参考我的过程&#xff0c;闲话少说&#xff0c;直接开始&#xff01;&#xff01;&#xff01; 接下来介绍…...

java的参数传递机制概述,方法重载概述,以及相关案例

前言&#xff1a; 学了Java的传递机制&#xff0c;稍微记录一下。循循渐进&#xff0c;daydayup&#xff01; java的参数传递机制概述 1&#xff0c;java的参数传递机制是什么&#xff1f; java的参数传递机制是一种值传递机制。 2&#xff0c;值传递是什么&#xff1f; 值…...

2013年第二届数学建模国际赛小美赛B题寄居蟹进化出人类的就业模式解题全过程文档及程序

2013年第二届数学建模国际赛小美赛 B题 寄居蟹进化出人类的就业模式 原题再现&#xff1a; 寄居蟹是美国最受欢迎的宠物品种&#xff0c;依靠其他动物的壳来保护。剥去寄居蟹的壳&#xff0c;你会看到它柔软、粉红色的腹部卷曲在头状的蕨类叶子后面。大多数寄居蟹喜欢蜗牛壳&…...

2023总结

随着各大应用程序开始发送自己的年终总结&#xff0c;我的2023也只剩最后的几个小时了 &#xff0c;我的2023可以说是过的还算顺利&#xff0c;但是也算是一路坎坷&#xff0c;希望2024&#xff0c;我的本命年能够让我过的顺利点。 1&#xff0c;毕业进度 毕业进度总体来说还…...

Prometheus 监控进程

prometheus 进程的监控 1. process exporter功能 2. 监控目标对主机进程的监控&#xff0c;chronyd sshd 等服务进程已经已定义脚本运行程序的运行状态监控。 process-compose的安装 监控所有进程 mkdir /data/process_exporter -p cd /data/process_exporter创建配置文件 …...

用ChatGPT挑选钻石!著名珠宝商推出-珠宝GPT

根据Salesforce最新发布的第五版《互联网购物报告》显示&#xff0c;ChatGPT等生成式AI的出现、快速发展&#xff0c;对零售行业和购物者产生了较大影响。可有效简化业务流程实现降本增效&#xff0c;并改善购物体验。 著名珠宝商James Allen为了积极拥抱生成式AI全面提升销售…...

啊?这也算事务?!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…...

数据通信网络基础的网络参考模型华为ICT网络赛道

网络参考模型 目录 网络参考模型 2.1.应用与数据 2.2.网络参考模型与标准协议 2.2.1.OSI参考模型 2.2.2.TCP/IP参考模型 2.2.3.应用层 2.2.4.传输层 2.2.5.TCP和UDP 2.2.6.网络层 2.2.7.数据链路层 2.2.8.物理层 2.3.数据通信过程 2.1.应用与数据 应用的存在&#…...

弱电工程计算机网络系统基础知识

我们周围无时无刻不存在一张网&#xff0c;如电话网、电报网、电视网、计算机网络等&#xff1b;即使我们身体内部也存在许许多多的网络系统&#xff0c;如神经系统、消化系统等。最为典型的代表即计算机网络&#xff0c;它是计算机技术与通信技术两个领域的结合。 计算机网络的…...

大数据与人工智能|万物皆算法(第三节)

要点一&#xff1a;数据与智能的关系 1. 一切的核心都是数据&#xff0c;数据和智能之间是密切相关的。 数据是对客观现实的描述&#xff0c;而信息是数据转化而来的。 例如&#xff0c;24是数据&#xff0c;但说“今天的气温是24摄氏度”是信息&#xff0c;而说“班可以分成24…...

[语音识别]开源语音识别faster-whisper模型下载地址

官方源码&#xff1a; https://github.com/SYSTRAN/faster-whisper 模型下载地址&#xff1a; large-v3模型&#xff1a;https://huggingface.co/Systran/faster-whisper-large-v3/tree/main large-v2模型&#xff1a;https://huggingface.co/guillaumekln/faster-whisper-l…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...