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

 

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

/*****************************************************************************

程序功能:实时采集当前环境温度值,并显示于数码管上。
*****************************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit 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 delay
   DS=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 0
      i=8;
	  while(i>0)i--;
      DS=1;
      i++;i++;
    }

  }
}

void tmpchange(void)  //DS18B20 begin change
{
  dsreset();
  delay(1);
  tmpwritebyte(0xcc);  // address all drivers on bus
  tmpwritebyte(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 variable
  temp=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);
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙真有前景吗?是真是假?

直到“纯血鸿蒙”发布&#xff0c;才看清华为真正的布局&#xff0c;这一招实在是高明&#xff01; “纯血鸿蒙”发布之前&#xff0c;国内大批人唱衰华为&#xff0c;唱衰鸿蒙系统的生态&#xff0c;认为大概率会走诺基亚和微软的老路&#xff0c;没想到“纯血鸿蒙”一经推出…

高质 智能 绿色低碳棒线材轧制 智能测径仪等亦起关键作用

第十一届棒线材会议围绕推动轧钢装备数字化、智能化、绿色化转型升级&#xff0c;实现高质量发展&#xff0c;高质量、智能化、绿色低碳主题&#xff0c;将于4月22-24日在贵州省六盘水市召开。这也是轧钢生产近几年的发展趋势。 在线棒材生产中&#xff0c;蓝鹏测控可提供三种类…

每天十条linux知识点-24-0226(1)

文章目录 1.在哪下载linux内核源码&#xff1f;2.linux文件夹都有哪些文件&#xff1f;arch&#xff1a;包含和硬件体系结构相关的代码&#xff0c;每种平台占一个相应的目录&#xff0c;如i386、arm、arm64、powerpc、mips等。block&#xff1a;块设备驱动程序I/O调度。certs&…

又降价啦!2024年腾讯云服务器优惠价格表,不看后悔!

腾讯云服务器多少钱一年&#xff1f;62元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器218元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

高级语言期末2010级B卷(软件学院)

1.编写程序根据如下公式计算X的值&#xff08;精确到1e-5&#xff09;。 #include <stdio.h>int main(){int i1;double flag1.0/(2*i-1)*2.0*i/(2*i-1);double sum0;while(flag>1e-5){sumflag;i;flag1.0/(2*i-1)*2.0*i/(2*i-1);}printf("%lf",sum);return 0…

千兆单口(百兆双口)小体积 24PIN 网络变压器 H82409S 特点

Hqst华轩盛(石门盈盛)电子导读&#xff1a;千兆单口&#xff08;百兆双口&#xff09;小体积 24PIN 网络变压器 H82409S 特点 大家好&#xff0c;石门盈盛电子科技有限公司工程盛先生&#xff0c;今天向大家介绍石门盈盛电子科技有限公司的一款优势产品 - 千兆单口&#xff08;…

Docker(第四部分)

Docker微服务实战 通过IDEA新建一个普通微服务模块 把包放到linux机器里 pwd 通过dockerfile发布微服务部署到docker容器 dockerfile的内容 防火墙 Docker网络 网络主机 是什么&#xff1f; 网桥virbr0 常用基本命令 能干嘛 网络模式 最后都和u3一样了 结论&#xff1a;doc…

【Java程序设计】【C00329】基于Springboot的高校实习管理系统(有论文)

基于Springboot的高校实习管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校实习管理系统&#xff0c;本系统有管理员、公司、老师和学生四种角色&#xff1b; 管理员&#xff1a;个人中心、公司管理、…

故障排除:Failed to load SQL Modules into database Cluster

PostgreSQL 安装和故障排除 重新安装前的准备工作 在重新安装 PostgreSQL 之前&#xff0c;确保完成以下步骤&#xff1a; 重新卸载 PostgreSQL 并重启电脑。 删除以下目录&#xff1a; C:\Program Files\PostgreSQL\13C:\Users\admin\AppData\Roaming\pgadmin 重启安装过…

CentOS7——主机动态地址修改为静态地址

目录 1、查看本机的网络配置&#xff08;vmnet8网关&#xff09; 2、修改虚拟机主机网络信息配置文件 3、重启network服务使生效 4、测试 1、查看本机的网络配置&#xff08;vmnet8网关&#xff09; windows&#xff1a;“网络图标”——>“属性”——>“网络和共享中…

认识内部类

成员内部类 静态内部类 局部内部类 匿名内部类&#xff01;&#xff01;&#xff01;&#xff08;重点&#xff09; 匿名内部类在开发中常见的使用场景&#xff1a;通常作为一个参数传输给方法。

推荐系统经典模型YouTubeDNN代码

文章目录 前言数据预处理部分模型训练预测部分总结与问答 前言 上一篇讲到过YouTubeDNN论文部分内容&#xff0c;但是没有代码部分。最近网上教学视频里看到一段关于YouTubeDNN召回算法的代码&#xff0c;现在我分享一下给大家参考看一下&#xff0c;并附上一些我对代码的理解…

微信小程序真机调试:连接局域网失败ws://********:8001/失败,已切换回广域网模式的解决方式

这个问题大多数是由于系统上安装了虚拟网卡造成&#xff0c;只要禁用虚拟网卡即可查询方式&#xff1a;windx - 选择设备管理器 - 查看网络适配器&#xff0c;找到虚拟网卡禁用 重新勾选局域网模式进行调试即可

Go 互斥锁的实现原理?

Go sync包提供了两种锁类型&#xff1a;互斥锁sync.Mutex 和 读写互斥锁sync.RWMutex&#xff0c;都属于悲观锁。 概念 Mutex是互斥锁&#xff0c;当一个 goroutine 获得了锁后&#xff0c;其他 goroutine 不能获取锁&#xff08;只能存在一个写者或读者&#xff0c;不能同时…

Parallels Desktop安装虚拟机要执行此操作,您必须输入主机操作系统管理员认证凭据;执行该操作失败

弹窗1️⃣&#xff1a;执行此操作&#xff0c;您必须输入主机操作系统管理员认证凭据 桌面顶部点击《操作》点击《配置》 很多小伙伴在这一步又退回去重装了&#xff0c;其实不用&#xff0c;在配置里面设置就好了 弹窗2️⃣&#xff1a;执行该操作失败 设置如图&#xff1…

我写了个ImageWindow应用

文章目录 0 引言1 应用简介2 主要功能和特点2.1 多图像同/异步像素级对比2.2 支持多达30种图像格式2.3 高效率的图像处理性能 3 简明使用教程3.1 软件下载安装与更新3.1.1 软件下载与安装3.1.2 软件更新 3.2 多视窗添加并自动最优排列3.3 多样化图像导入方式3.4 自动切换显示模…

tinymce在vue3中的用法以及文本流式输出

一、版本 "tinymce/tinymce-vue": "4.0.5", "tinymce": "5.10.2", 二、步骤 具体步骤可以参考tinymce在vue2中的用法中的步骤 三、在项目index.html-body中引入tinymcejs <script src"tinymce/tinymce.min.js">&…

PyTorch概述(七)---Optim

torch.optim是一个实现多种优化算法的包;很多常用的方法已经被支持;接口丰富;容易整合更为复杂的算法; 如何使用一个优化器 为了使用torch.optim包功能;用户必须构建一个优化器对象;该优化器将保持当前的参数状态且基于计算的梯度更新参数; 构建优化器 要构建一个优化器;必…

【一个上下拉且松手回弹的自定义ScrollView】

文章目录 UserDefineScrollView举例使用activity_main.xmlMainActivity.java文件运行效果下拉前下拉后上拉 普通的scrollView下拉到顶部时就不动了&#xff0c;而如qq设置界面中的布局&#xff0c;下拉到顶端时还能下拉一段距离。本文介绍一个自定义scrollView就可以实现这样的…

遥感、航拍、影像等用于深度学习的数据集集合

遥感图像的纹理特征异常繁杂&#xff0c;地貌类型多变&#xff0c;人工提取往往存在特征提取困难和特征提取不准确的问题&#xff0c;同时&#xff0c;在这个过程中还会耗费海量的人力物力。随着计算力的突破、数据洪流的暴发和算法的不断创新&#xff0c;在具有鲜明“大数据”…