One Wire协议应用篇(c语言板)

news2025/1/31 3:09:43

一.项目简介

        利用DS18B20实时检测温度并显示在LCD1602显示屏上,同时可以通过K1,K2,K3,K4设置最高温度和最低温度利用AT24C02可以实现掉电不丢失,最后当检测温度大于或小于最高温时,会在LCD1602显示屏上显示OV:H或OV:L。

二.准备材料

        AT89C52、LCD1602显示屏、4只按键、AT24C02、DS18B20。

 

三.操作资料汇总

        AT24C02芯片:2K位串行CMOS E2PROM, 内部含有256个8位字节,AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息。
存储介质:EEPROM;通讯接口:I2C总线。

  

        DS18B20数字温度传感器:输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。[1]  DS18B20数字温度传感器接线方便,封装成后可应用于多种场合。通讯接口:单总线协议进行通信(One-Wire)

四.One-Wire协议解析与C代码

(1)初始化时序

 

代码

unsigned char onewire_init(void)
{
    unsigned char i;
    unsigned char ackbit;
    onewire_dq = 1;
    onewire_dq = 0;
    i = 247;
    while (--i);  //delay 500us
    onewire_dq = 1;
    i = 32;
    while (--i);   //delay 70us
    ackbit = onewire_dq;
    i = 247;
    while (--i);  //delay 500us
    return ackbit;
}

(2)读时序

代码 

unsigned char onewire_receivebit(void)
{
    unsigned char i;
    unsigned char Bit;
    onewire_dq = 0;
    i = 2;
    while (--i); //delay 9us
    onewire_dq = 1;
    i = 2;
    while (--i); //delay 9us
    Bit = onewire_dq;
    i = 22;while (--i); //delay 50us
    return Bit;
}

(3) 写时序

 代码

unsigned char onewire_sendbit(unsigned char Bit)
{
    unsigned char i;
    onewire_dq = 0;
    i = 4;
    while (--i); //delay 14us
    onewire_dq = Bit;
    i = 22;
    while (--i); //delay 50us
    onewire_dq = 1;
}

 (4)主函数代码

 

#include <REGX52.H>
#include "LCD1602.h"
#include "onewire.h"
#include "DS18B20.h"
#include "key.h"
#include "AT24C02.h"
float t,tshow;
char tlow,thigh;
unsigned char keynum;
void Delay5ms() //@11.0592MHz
{
    unsigned char i, j;
    i = 54;
    j = 199;
    do
        {
            while (--j);
        }   
    while (--i);
}
void main()
{
    LCD_Init();
    LCD_ShowString(1,1,"T:");
    LCD_ShowString(2,1,"TH:");
    LCD_ShowString(2,9,"TL:");
    thigh = AT24C02_ReadByte(0);
    tlow = AT24C02_ReadByte(1);
    while(1)
    {
        LCD_ShowSignedNum(2,4,thigh,3);
        LCD_ShowSignedNum(2,12,tlow,3);
        keynum = key();
        ds18b20_convert();
        t = ds18b20_readt();
        if(t<0)
        {
            LCD_ShowChar(1,3,'-');
            tshow= -t;
        }
        else{
                LCD_ShowChar(1,3,'+');
                tshow = t;
            }
        LCD_ShowNum(1,4,tshow,3);
        LCD_ShowChar(1,7,'.');
        LCD_ShowNum(1,8,(unsigned long)(tshow*100)%100,2);
        if(keynum)
        {
            if(keynum==1)
            {
                thigh++;
                if(thigh>125)
                {
                    thigh=125;
                }
        }
        if(keynum==2)
        {
            thigh--;
            if(thigh<=tlow)
            {
                thigh++;
            }
        }
        if(keynum==3)
        {
            tlow++;
            if(tlow>=thigh)
            {
                tlow--;
            }
        }
        if(keynum==4)
        {
            tlow-- ;
            if(tlow<-55)
            {
                tlow = -55;
            }
        }
        if(tshow>thigh)
        {
            LCD_ShowString(1,13,"OV:H");
        }
        else if(tshow<tlow){
            LCD_ShowString(1,13,"OV:L");
        }
        else{
        LCD_ShowString(1,13,"    ");
        }
        AT24C02_WriteByte(0,thigh);
        Delay5ms();
        AT24C02_WriteByte(1,tlow);
        Delay5ms();
       }
    }
}

五.运行结果

        由测试图中的LCD1602显示屏可以得出:当前室温是24.18℃,最高温限制为21℃,最低温限制为-2℃。 

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

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

相关文章

扩展检测和响应:零信任安全的核心要素

面对不断增长的攻击面&#xff0c;扩展和增强威胁检测和响应能力是XDR在安全功效方面的主要结果。这一成果不仅有助于全面保护&#xff0c;而且有助于更好地实施零信任安全。 默认情况下&#xff0c;这种方法不信任任何用户或任何设备&#xff0c;只允许访问需要的资源。为了更…

智能优化算法应用:基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工大猩猩部队算法4.实验参…

分布式搜索elasticsearch概念

什么是elasticsearch&#xff1f; elasticsearch是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 目录 elasticsearch的场景 elasticsearch的发展 Lucene篇 Elasticsearch篇 elasticsearch的安装 elasticsearch的场景 elasticsear…

python画图【00】Anaconda和Pycharm和jupyter的使用

①Anaconda ②Pycharm 一、Anaconda安装步骤 1、双击安装包&#xff0c;点击next。 2、点我同意I agree 3、 4、选择需要安装的位置&#xff0c;位置可根据自己情况安装到具体位置&#xff0c;但要记住安装到了哪里。然后点击next 5、可选择加入到环境变量&#xff0c;…

C# 判断两个时间段是否重叠

public static bool IsOverlap(DateTime startTime1, DateTime endTime1, DateTime startTime2, DateTime endTime2){// 判断两个时间段是否有重叠return !(endTime1 < startTime2 || startTime1 > endTime2);//根据德摩根定律&#xff0c;等效为&#xff1a;endTime1 &g…

如何通过蓝牙串口启动智能物联网?

1、低功耗蓝牙(BLE)介绍 BLE 技术是一种低成本、短距离、可互操作的鲁棒性无线技术&#xff0c;工作在免许可的 2,4 GHZ 工业、科学、医学(Industrial Scientific Medical&#xff0c;ISM)频段。BLE在设计之初便被定位为一种超低功耗(Ultra Low Power&#xff0c;ULP)无线技术&…

Apache Flink 进阶教程(六):Flink 作业执行深度解析

目录 前言 Flink 四层转化流程 Program 到 StreamGraph 的转化 StreamGraph 到 JobGraph 的转化 为什么要为每个 operator 生成 hash 值&#xff1f; 每个 operator 是怎样生成 hash 值的&#xff1f; JobGraph 到 ExexcutionGraph 以及物理执行计划 Flink Job 执行流程…

CSS自适应分辨率 amfe-flexible 和 postcss-pxtorem:Webpack5 升级后相关插件和配置更新说明

前言 项目对应的 webpack5 版本如下&#xff1a; npm i webpack5.89.0 -D npm i webpack-cli5.1.4 -D升级插件 说明一下&#xff0c;我更喜欢固定版本号&#xff0c;这样随机bug会少很多&#xff0c;更可控~ npm i postcss-loader6.1.1 -D npm i postcss-pxtorem6.0.0 -D配…

Redis单机、主从、哨兵、集群配置

单机配置启动 Redis安装 下载地址&#xff1a;Download | Redis 安装步骤&#xff1a; 1: 安装gcc编译器&#xff1a;yum install gcc 2: 将下载好的redis‐5.0.3.tar.gz文件放置在/usr/local文件夹下&#xff0c;并解压redis‐5.0.3.tar.gz文件 wget http://download.re…

编译原理----算符优先级的分析(自底向上)

自底向上分析的分类如下所示&#xff1a; 算符优先分析 算符优先分析只规定算符之间的优先关系&#xff0c;也就是只考虑终结符之间的优先关系。 &#xff08;一&#xff09;若有文法G&#xff0c;如果G没有形如A->..BC..的产生式&#xff0c;其中B和C为非终结符&#xff…

BigQuery 分区表简介和使用

大纲 什么是分区表 我们先看定义&#xff1a; 分区表是一种数据库表设计和管理技术&#xff0c;它将表中的数据划分为逻辑上的多个分区&#xff0c;每个分区包含一组特定的数据。每个分区都根据定义的分区键&#xff08;通常是一个列或字段&#xff09;的值进行分类&#xff…

vue3使用echarts漏斗,根据数据计算比例大小

需求&#xff1a;我们在开发过程中会遇到漏斗图的使用&#xff0c;如果用echarts里面自带的算法绘制渲染漏斗图时候&#xff0c;如果后端给的数据相差不大很接近时候&#xff0c;漏斗图渲染的结果不明显看不出来变化的。 优化之前的漏斗图&#xff1a; 优化之后的漏斗图&…

Flink 运行时[Runtime] 整体架构

一、基本组件栈 在Flink整个软件架构体系中&#xff0c;同样遵循着分层的架构设计理念&#xff0c;在降低系统耦合度的同时&#xff0c;也为上层用户构建Flink应用提供了丰富且友好的接口。从下图中可以看出整个Flink的架构体系基本上可以分为三层&#xff0c;由上往下依次是 …

BUUCTF-Linux Labs

Linux Labs 根据题目给出的内容&#xff0c;在kali中连接靶机&#xff0c;输入密码进入命令行模式 ls发现什么都没有&#xff0c;有可能进入到了一个空文件夹 cd .. 切换到上一层目录&#xff0c;ls查看此目录下的内容&#xff0c;发现flag.txt文件&#xff0c;查看文件是flag …

nodejs+vue+微信小程序+python+PHP医疗机构药品及耗材信息管理系统-计算机毕业设计推荐

为了帮助用户更好的了解和理解程序的开发流程与相关内容&#xff0c;本文将通过六个章节进行内容阐述。 第一章&#xff1a;描述了程序的开发背景&#xff0c;程序运用于现实生活的目的与意义&#xff0c;以及程序文档的结构安排信息&#xff1b; 第二章&#xff1a;描述了程序…

OpenCV与YOLO学习与研究指南

引言 OpenCV是一个开源的计算机视觉和机器学习软件库&#xff0c;而YOLO&#xff08;You Only Look Once&#xff09;是一个流行的实时对象检测系统。对于大学生和初学者而言&#xff0c;掌握这两项技术将大大提升他们在图像处理和机器视觉领域的能力。 基础知识储备 在深入…

【第七在线】数据分析与人工智能在商品计划中的应用

随着技术的不断进步&#xff0c;数据分析和人工智能&#xff08;AI&#xff09;已经成为了现代商品计划的关键组成部分。在服装行业&#xff0c;这两项技术正在帮助企业更好地理解市场需求、优化库存管理、提高生产效率和提供更好的客户体验。本文将深入探讨数据分析和人工智能…

无约束优化问题求解(3):共轭梯度法

目录 4. 共轭梯度法4.1 共轭方向4.2 共轭梯度法4.3 共轭梯度法的程序实现4.4 非二次函数的共轭梯度法 Reference 4. 共轭梯度法 4.1 共轭方向 最速下降法的线搜索采取精确线搜索时&#xff0c;由精确线搜索需要满足的条件&#xff1a;迭代点列 x k 1 x k α k d k x_{k1}…

CSS-SVG-环形进度条

线上代码地址 <div class"circular-progress-bar"><svg><circle class"circle-bg" /><circle class"circle-progress" style"stroke-dasharray: calc(2 * 3.1415 * var(--r) * (var(--percent) / 100)), 1000" …

【智慧办公】如何让智能会议室的电子标签实现远程、批量更新信息?Dusun物联网硬件网关让解决方案更具竞争力

近年来&#xff0c;为了减少办公耗能、节能环保、降本增效&#xff0c;越来越多的企业开始从传统的办公模式转向智慧办公。 以智能会议室为例&#xff0c;会议是企业业务中不可或缺的一部分&#xff0c;但在传统办公模式下&#xff0c;一来会议前行政人员需要提前准备会议材料…