DS18B20_单总线协议

2023-10-26

.H文件
#ifndef _ONEWIRE_H
#define _ONEWIRE_H

#include "STC15F2K60S2.H"
#include <intrins.h>

#define OW_SKIP_ROM 0xcc
#define DS18B20_CONVERT 0x44
#define DS18B20_READ 0xbe

//IC引脚定义
 sbit DQ = P1^4;

//函数声明
extern void Delay_OneWire(unsigned int t);
extern void Write_DS18B20(unsigned char dat);
extern bit Init_DS18B20(void);
extern unsigned char Read_DS18B20(void);
extern void Delay1ms();
extern unsigned char read_temp();

#endif
.C文件

#include "onewire.h"


//单总线延时函数
void Delay_OneWire(unsigned int t)
{
  while(t--);
}


void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}


//DS18B20芯片初始化
bit Init_DS18B20(void)
{
	bit initflag = 0;
	DQ = 1;
	Delay_OneWire(12);
	DQ = 0;
	Delay_OneWire(80); 
	DQ = 1;
	Delay_OneWire(10); 
	initflag = DQ;    
	Delay_OneWire(5);
  
	return initflag;
}

//通过单总线向DS18B20写一个字节
void Write_DS18B20(unsigned char dat)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		DQ = 0;
		DQ = dat&0x01;
		Delay_OneWire(5);
		DQ = 1;
		dat >>= 1;
	}
	Delay_OneWire(5);
}

//从DS18B20读取一个字节
unsigned char Read_DS18B20(void)
{
	unsigned char i;
	unsigned char dat;
  
	for(i=0;i<8;i++)
	{
		DQ = 0;
		dat >>= 1;
		DQ = 1;
		if(DQ)
		{
			dat |= 0x80;
		}	    
		Delay_OneWire(5);
	}
	return dat;
}

unsigned char read_temp()
{
	unsigned char temp, high, low;
	
	Init_DS18B20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0x44);
	Delay1ms();
	
	Init_DS18B20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0xbe);
	
	low=Read_DS18B20();
	high=Read_DS18B20();
	
	temp=(high<<4)|(low>>4);
	
	return temp;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DS18B20_单总线协议 的相关文章

  • 初识HarmonyOS学习笔记

    一 什么是HarmonyOS HarmonyOS是一款面向万物互联时代的 全新的分布式操作系统 华为开发的一款面向未来的全场景分布式智慧操作系统 将逐步覆盖1 8 N全场景总端设备 在传统的单设备系统能力的基础上 HarmonyOS提出了基
  • Python图像处理【3】Python图像处理库应用

    Python图像处理库应用 0 前言 1 将 RGB 图像转换为灰度图像算法 1 1 算法原理 3 2 算法实现 2 使用 PIL 库计算图像差异 2 1 算法原理 2 2 算法实现 3 使用 Scikit image 转换图像色彩空间 3
  • Java中用flush()方法的作用

    flush 方法将输入流和输出流中的缓冲进行刷新 使缓冲区中的元素即时做输入和输出 而不必等缓冲区满
  • 如何在 jupyter notebook 环境中安装 Python 包?

    在jupyter notebook中安装Python包 可以通过以下两种方式进行 使用 pip 命令 在jupyter notebook的代码框中输入以下命令 即可使用pip工具安装Python包 pip install 包名 其中 包名
  • homebrew 安装后添加brew到系统环境

    每次安装完homebrew后重新登录系统就不能使用brew了 解决 bash echo eval home linuxbrew linuxbrew bin brew shellenv gt gt HOME bash profile zsh
  • 叶子结点和分支节点_完全二叉树总结点数与叶结点数关系分析

    摘要 该文从两个角度分析了完全二叉树的总结点数与叶结点数之间的关系 其一 通过归纳找到总结点数的奇偶性与度为1的结点个数之间的关系 进而导出总结点数与叶结点数的关系 其二 由最后一个结点的父结点为倒数第一个分支结点的事实 找到总结点数与叶结
  • QT 常用setAttribute 、setWindowFlags

    文章目录 一 主界面 1 窗体属性 2 窗体标志 二 注意 1 最大化按钮失效置灰的问题 一 主界面 1 窗体属性 设置为模态框 如果再设置无边框窗口 那么模态会失效 不会阻塞其他窗口 须重新设置 setAttribute Qt WA Sh
  • C++ 内存地址以及成员变量的访问

    文档 C 内存地址以及成员变量的访问 note 链接 http note youdao com noteshare id 95ca5300ea7857c988f4ea746954678f sub CD49B4832609463780DECD
  • Flutter事件基础-手势部件

    目录 1 Draggable 2 LongPressDraggable 3 DragTarget 4 GestureDetector 5 Dismissible 6 IgnorePointer 7 AbsorbPointer 1 Dragg
  • 什么是计算机频繁读写硬盘,电脑经常卡爆?一文秒懂硬盘占用100%的原因

    原标题 电脑经常卡爆 一文秒懂硬盘占用100 的原因 很多人问存储极客 微信公众号 SSDGeek 为什么有时候硬盘读写速度明明不高 占用率却达到100 电脑用起来卡卡的 如上图中这样 0 1MB s的读写速度远低于机械硬盘100MB s以
  • chatGPT之100个例子-从体验到精通

    简介 本博文演示了100个chatGPT在各行各业的使用例子 全部看完有助于培养chatGPT解决问题的思维 在人工智能时代 智能软件并不会淘汰人类 淘汰人类的是会使用人工智能的人 我们直接使用openAI官方chatGPT 生动演示了ch
  • web服务器的基础协议是什么,web基础概念

    1 转发和重定向的区别 实际发生位置不同 地址栏不同 转发是发生在服务器的 转发是由服务器进行跳转的 细心的朋友会发现 在转发的时候 浏览器的地址栏是没有发生变化的 在我访问Servlet111的时候 即使跳转到了Servlet222的页面
  • mysql 多字段排序

    order by 字段1 字段2 指字段1 字段2都是升序 且 先升序字段1 再升序字段2 order by字段1 字段2 desc 指字段1升序 字段2降序 order by 字段1 desc 字段2 desc 指字段1降序 字段2降序
  • 嵌入式Linux开发板_WIFI无线网卡驱动移植

    linux开发时候 无线是一个重要的部分 下面分享一下WiFi相关开发使用 本文所用开发板 tiny4412 当然也可以在jz2440上实现 嵌入式中设备想要联网 无非就 有线和无线 两种方式 有线就插上网线 没什么好说的 无线的话一种是将
  • 第2讲 KMD ISP子系统缩略词及目录结构

    QCOM Camera子系统缩略词介绍 CPAS Camera Peripherals and Support CDM Camera Data Mover TFE Thin Front End IFE Image Front End OPE
  • python词云mask需要的图_Python词云wordcloud——根据词语生成图像

    wordcloud作者github应用实例 https github com amueller word cloud blob master examples masked py 官网 https amueller github io wo
  • 【论文笔记】Leveraging Line-point Consistence to Preserve Structures for Wide Parallax Image Stitching

    论文链接 https openaccess thecvf com content CVPR2021 papers Jia Leveraging Line Point Consistence To Preserve Structures fo
  • 初步认识Spring和Mybatis

    Spring 概述 Spring是一个开源框架 是一个IOC DI 和AOP容器框架 可以让简单的JavaBean实现EJB才有的功能 EJB EJB是Enterprise Java Beans技术的简称 又被称为企业Java Beans

随机推荐

  • 码匠编程:7 个令人兴奋的 JavaScript 新特性

    前言 一个ECMAScript标准的制作过程 包含了Stage 0到Stage 4五个阶段 每个阶段提交至下一阶段都需要TC39审批通过 本文介绍这些新特性处于Stage 3或者Stage 4阶段 这意味着应该很快在浏览器和其他引擎中支持这
  • 【代码】将任意形状的图片裁剪成一个带圆环的头像(附效果图)

    原图 转换后 void viewDidLoad super viewDidLoad 创建一个按钮 UIButton btn UIButton alloc initWithFrame CGRectMake self view frame si
  • Window下添加telnet及端口开放

    Window下添加telnet及端口开放 一 添加telnet 其实windows上有自带的telnet工具的 只是没有安装添加进来而已 打开控制面板 选择程序与功能进去 进到程序与功能界面 点击打开或者关闭windows功能进去 弹出wi
  • 《嵌入式C语言》-第二章 C语言数据的操作

    目录 5 C语言字符集 5 1 C语言字符集是ASCII字符集的子集 5 2 C语言的字符集构成C语言的基本元素 标识符 运算符 5 3 数据类型的分类 6常量与变量 6 1 常量 6 2 变量 7 C语言运算符 7 1算术运算符 7 2赋
  • 此URL不支持Http方法POST/GET描述 请求行中接收的方法由源服务器知道,但目标资源不支持

    出现这个错误 一般是你需要在自己的sevlet里面没有实现doget dopost 方法 而 如果你实现了doget 和dopost 方法 可以从前端获取数据 设置了响应页面 但是却没有响应 就比如说 我输入表单信息之后 根据账号密码 经过
  • ASCII最小位置索引

    注意 答案仅作为参考 实际考试中下列代码通过用例100 但不代表最优解 输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母 k gt 1 输出该字母所在字符串中的位置索引 字
  • 【Flink入门(6)】Flink的状态管理(基础)

    时间 2022 06 08 周三 题目 Flink入门 6 Flink的状态管理 基础 本专栏是尚硅谷Flink课程的笔记与思维导图 目录 引言 一 状态 state 概述 二 算子状态 Operator State 2 1 概述 2 2
  • realsense中IMU的简单使用与学习

    IMU的基本原理 如有错误 望批评指正 惯性测量单元 IMU 通常包含加速度计和陀螺仪组成的组合单元 陀螺仪就是内部有一个陀螺 它的轴由于陀螺效应始终与初始方向平行 这样就可以通过与初始方向的偏差计算出旋转方向和角度 这些都是角度变化值 而
  • HashMap底层实现原理

    HashMap HashMap 最早出现在 JDK 1 2中 底层基于散列算法实现 它是一个key value结构的容器 是一个key value的映射容器 key不重复 jdk8中的HashMap基于数组 链表 红黑树实现 不保证键值的顺
  • 树莓派内核编译和下载[1] --代码下载和交叉编译链安装

    版本信息 2022 04 04 raspios bullseye armhf full img 硬件信息 树莓派3B 整个编译和烧录已经完成 陆续更新一部分内容上来 目前网上内容不老旧不合理 所以这里重新更新出来 风险提示 首先 有服务器尽
  • java通用二维码生成工具封装

    该工具类使用google zxing实现二维码生成 可生成通用二维码和带中心图标的二维码 import java awt BasicStroke import java awt Color import java awt Graphics2
  • C语言详解系列——指针与结构体

    文章目录 指针是什么 指针变量的大小 指针与指针类型 野指针 指针运算 指针加减整数 指针减指针 指针的关系运算 指针与数组 二级指针 指针数组 结构体 结构体的声明 结构体变量的定义和初始化 结构体成员的访问 结构体传参 指针是什么 1
  • 谈一谈冷门的C语言爬虫

    目录 C语言写爬虫是可行的 C语言爬虫不受待见 C语言爬虫有哪些可用的库和工具 C语言爬虫示例 总结 在当今的编程世界中 C语言相比于一些主流编程语言如Python JavaScript等 使用范围相对较窄 然而 尽管C语言在爬虫领域的应用
  • centos系统应用日志文件被删,空间无法释放怎么办?

    前言 工作中经常遇到Linux系统磁盘空间不足 但是删除后较大的日志文件后 发现磁盘空间仍没有被释放 有点摸不着头脑 今天博主带大家解决这个问题 思路 1 工作发现磁盘空间不足 2 找到占用磁盘空间较大的文件进行删除 3 删除文件后 查看磁
  • 矩阵卷积运算过程讲解

    写了那么久的博客 始于Python爬虫 目前专于Java学习 终于有了属于自己的小窝 欢迎各位访问我的个人网站 未来我们一起交流进步 在爬虫处理验证码的过程中接触到矩阵卷积运算 关于该类运算 记录一下自己的心得 理论知识 在讲述卷积过程前
  • windows 串口中断编程_51单片机的中断及其使用方法

    51单片机采用中断方式的串口通信过程及程序分析 所谓中断方式 就是串口收 发标志位出发中断后 在中断中执行既定操作 可通过函数调用来实现 接收数据时 等待中断 gt 然后在中断中接收数据 发送数据时 发送数据 gt 等待中断 gt 然后在中
  • 3-linux集群搭建-Hive

    1 导入包并配置环境变量 导入需要的包 如hive mysql等 解压上传的包到指定文件 tar zxvf apache hive 2 0 0 bin tar gz C opt software 然后进入文件夹下改名 mv apache h
  • Springboot日志系统工作原理

    通过日志信息查找日志框架 当我们启动一个springboot项目时 我们会在控制台看到很多日志信息 如下图所示 那这些日志信息究竟是怎么打印出来的呢 就让我们一起来看看吧 2020 10 13 22 17 41 010 INFO 4569
  • three.js学习之环境贴图

    设置cube纹理加载器 设置cube纹理加载器 const cubeTextureLoader new THREE CubeTextureLoader const envMapTexture cubeTextureLoader load s
  • DS18B20_单总线协议

    H文件 ifndef ONEWIRE H define ONEWIRE H include STC15F2K60S2 H include