单片机精进之路-9ds18b20温度传感器

 

ds18b20复位时序图,先将b20的数据引脚拉低至少480us,然后再将数据引脚拉高15-60us,再去将测传感器的数据引脚是不是变低电平并保持60-240us,如果是,则说明检测到温度传感器,并正常工作。需要在240us后才能检测温度值

/*****************************************************************************程序功能:实时采集当前环境温度值,并显示于数码管上。
*****************************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned intsbit DS=P2^2;           //define interface
uint temp;             // variable of temperature
bit flag;            // sign of the result positive or negative
sbit dula=P2^6;
sbit wela=P2^7;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};void delay(uint count)      //delay
{uint i;while(count){i=200;while(i>0)i--;count--;}
}bit dsreset(void)       //发送复位和初始化命令
{uint i;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;flag = DS;for (i = 0; i < 200; i ++);return flag;
}bit tmpreadbit(void)       //读取一个比特
{uint i;bit dat;DS=0;i++;          //i++ for delayDS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return (dat);
}uchar tmpread(void)   //读取一个字节数据
{uchar i,j,dat;dat=0;for(i=1; i<=8; i++){j=tmpreadbit();dat=(j<<7) | (dat>>1);   //读出的数据最低位在最前面,这样刚好一个字节在DAT里}return(dat);
}void tmpwritebyte(uchar dat)   //向ds18b20写一个字节
{uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb)     //write 1{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;       //write 0i=8;while(i>0)i--;DS=1;i++;i++;}}
}void tmpchange(void)  //DS18B20 begin change
{dsreset();delay(1);tmpwritebyte(0xcc);  // address all drivers on bustmpwritebyte(0x44);  //  initiates a single temperature conversion
}uint tmp()               //get the temperature
{float tt;uchar a,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp<<=8;             //two byte  compose a int variabletemp=temp|a;tt=temp*0.0625;temp=tt*10+0.5;return temp;
}void display(uint temp)			//显示程序
{uchar A1,A2,A2t,A3;A1=temp/100;A2t=temp%100;A2=A2t/10;A3=A2t%10;dula=0;P0=table[A1];		//显示百位dula=1;dula=0;wela=0;P0=0x7e;wela=1;wela=0;delay(1);dula=0;P0=table1[A2];		//显示十位dula=1;dula=0;wela=0;P0=0x7d;wela=1;wela=0;delay(1);P0=table[A3];		//显示个位dula=1;dula=0;P0=0x7b;wela=1;wela=0;delay(1);
}void main()
{uchar a;do{tmpchange();for(a=10; a>0; a--){   display(tmp());}}while(1);
}

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

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

相关文章

xss高级靶场

一、环境 XSS Game - Ma Spaghet! | PwnFunction 二、开始闯关 第一关 看看代码 试一下直接写 明显进来了为什么不执行看看官方文档吧 你不执行那我就更改单标签去使用呗 ?somebody<img%20src1%20onerror"alert(1)"> 防御&#xff1a; innerText 第二关…

Codeforces Round 930 (Div. 2) (A~B)

比赛&#xff1a;Codeforces Round 930 (Div. 2) (A~B) 目录&#xff1a;A B A题&#xff1a;Shuffle Party 标签: 模拟 题目大意 给你一个数组 a1,a2,…,an。最初&#xff0c;每个 1 ≤ i ≤ n都有 ai i&#xff0c;整数 k ≥ 2的运算 swap(k)定义如下&#xff1a; 设 d是…

Python图像形态学处理:腐蚀、膨胀、礼帽、黑帽……

文章目录 二值形态学灰度形态学 python图像处理教程&#xff1a;初步&#x1f4f7;插值变换 最基础的形态学操作有四个&#xff0c;分别是腐蚀、膨胀、开计算和闭计算&#xff0c;【scipy.ndimage】分别实现了二值数组和灰度数组的这四种运算。而针对灰度图像&#xff0c;【sc…

Office/WPS 好用的PPT插件-智能选择布局

软件介绍 PPT大珩助手是一款全新设计的Office PPT插件&#xff0c;它是一款功能强大且实用的PPT辅助工具&#xff0c;能够轻松帮助您修改、优化和管理幻灯片。凭借丰富的功能和用户友好的界面&#xff0c;PPT大珩助手能够助力您打造出精美而专业的演示文稿。我们致力于为用户提…

Flutter学习7 - Dart 泛型

1、泛型类 //泛型类 class Cache<T> {final Map<String, T> _cache {};void saveData(String key, T value) {_cache[key] value;}//泛型方法T? getData(String key) {return _cache[key];} }void main() {Cache<int> cache1 Cache();const String name…

NGINX的重写与反向代理机制解析

目录 引言 一、重写功能 &#xff08;一&#xff09;if指令 1.判断访问使用的协议 2.判断文件 &#xff08;二&#xff09;return指令 1.设置返回状态码 2.返回指定内容 3.指定URL &#xff08;三&#xff09;set指令 1.手动输入变量值 2.调用其它变量值为自定义变…

RISC-V特权架构 - CSR寄存器

RV32/64 特权架构 - CSR寄存器 1 CSR地址空间2 CSR定义2.1 用户级2.2 监管级2.3 超级监管级2.4 机器级 3 CSR访问3.1 CSRRW3.2 CSRRS3.3 CSRRC3.4 CSRRWI3.5 CSRRSI3.6 CSRRCI 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 CSR地址空间 RISC&…

房贷计算器微信小程序原生语言

微信小程序: 房贷计算器 效果: 输入 300万 结果 还款明细 一共有3个页面 1、输入页面 2、结果页面 3、详情页面 1 index页面 index.wxml文件 <view class="text-black"><!--房屋总价--><view class="cu-bar bg-white solid-bottom"&…

TCP/IP状态迁移

TCP&#xff08;传输控制协议&#xff09;是一种面向连接的流式控制协议&#xff0c;它定义了不同的状态以管理通信过程中的连接。TCP 状态迁移描述了 TCP 连接在不同状态之间的转换过程&#xff0c;常见的 TCP 状态包括 CLOSED、LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、…

免费下载《金融行业数据安全交换解决方案白皮书》

金融行业包括商业银行业务、证券业务、保险业务、基金业务、信托业务等&#xff0c;因此数据类型多种多样&#xff0c;并且数据涉及主体众多&#xff0c;应用场景上较为多样复杂&#xff0c;在数据交换上存在安全、合规、可控、可靠、高效等需求。 金融行业会面临哪些数据安全…

IIS发布PHP网站字体404解决办法

最近在使用 IIS 发布 PHP 网站时&#xff0c;我遇到了一个前端问题&#xff0c;即字体库文件 404 错误。这个问题的根本原因是 IIS 未能正确识别字体文件类型&#xff0c;导致浏览器在加载页面时无法正确获取所需字体资源&#xff0c;进而触发了404错误。这样的问题会导致网站页…

npm install 报错常见的解决方法

npm install 报错的情况有很多种&#xff0c;每种错误的具体解决方案也有所不同。这里我将汇总一些常见的npm install报错及其解决办法&#xff1a; 1. 下载速度慢/网络问题 解决办法&#xff1a;更换npm包的镜像源至国内镜像&#xff0c;如淘宝npm镜像&#xff1a;npm confi…

Javascript:输入输出

目录 一.前言 二.正文 1.输出 2.输入 3.字面量 概念&#xff1a; 三.结语 一.前言 Javascript作为运行浏览器的语言&#xff0c;对于学习前端的同学来说十分重要&#xff0c;那么从现在开始我们将开始介绍有关 Javascript。 二.正文 1.输出 document.write() : 向body内…

第十四篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:深度解读Azure Cognitive Services个性化推荐系统

传奇开心果博文系列 系列博文目录Python的文本和语音相互转换库技术点案例示例系列 博文目录前言一、个性化推荐系统介绍和关键功能以及优势解说二、雏形示例代码三、个性化推荐示例代码四、实时推荐示例代码五、多种推荐算法示例代码六、易于集成示例代码七、数据安全和隐私保…

C# DLL实现泄露实验

先说结论&#xff1a;如果应用程序项目中使用直接引用的形式调用动态链接库&#xff0c;当动态链接库是在调试模式生成的情况下&#xff0c;即使应用程序以发布模式生成&#xff0c;跟随应用程序一同生成的动态链接库仍为调试模式&#xff0c;会引发DLL实现泄露问题&#xff1b…

Google Genie:创意互动环境

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

cJSON读写数据例子

cJSON使用案例代码。 #include <stdio.h> #include <stdlib.h> #include "../cJson/cJSON.h" int main() { FILE* jsonFile fopen("data.json", "r"); if (jsonFile) { fseek(jsonFile, 0, SEEK_END); i…

C++的一些细节技巧

列表和数组的区别 【C】list使用 1.C中怎么把字符串放到list&#xff1a; 在C中将字符串存入列表&#xff08;List&#xff09;可以使用标准库的std::list<std::string>。下面是示例代码&#xff1a; #include <iostream> #include <list> #include <st…

pt模型转换为onnx的作用,直接用pt模型去检测可以吗

将PyTorch模型转换为ONNX模型的作用主要在于提高模型的可移植性和兼容性&#xff0c;同时不能直接用PyTorch模型去检测的原因可能涉及到环境配置、性能优化等方面。 首先&#xff0c;关于将PyTorch模型转换为ONNX模型的作用&#xff0c;ONNX&#xff08;Open Neural Network E…

day57 集合 List Set Map

List实现类 List接口特点&#xff1a;元素有序 可重复 Arraylist 可变数组 jdk 8 以前Arraylist容量初始值10 jdk8 之后初始值为0&#xff0c;添加数据时&#xff0c;容量为10&#xff1b; ArrayList与Vector的区别&#xff1f; LinkList&#xff1a;双向链表 优点&#xff1…