单总线介绍

单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线
一根通信线:DQ
异步、半双工
单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线

单总线的电路规范

设备的DQ均要配置成开漏输出模式(与I2C总线相似)
DQ添加一个上拉电阻,阻值一般为4.7KΩ左右(与I2C总线相似)
若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路

单总线时序结构

初始化:

主机将总线拉低至少480us,然后释放总线,等待15 ~ 60us后,存在的从机会拉低总线60 ~ 240us以响应主机,之后从机将释放总线

sbit OneWire_DQ = P3^7;     //DS18B20d
/*** @brief单总线初始化* @param无* @retval返回从机应答值,0为应答,1为不应答*/
unsigned char OneWire_Init()
{unsigned char i;unsigned char AckBit;OneWire_DQ = 1;OneWire_DQ = 0;i = 247;while (--i); //使用STC-ISP生成的500us延时OneWire_DQ = 1;i = 47;while (--i);       //延时100usAckBit = OneWire_DQ;i = 247;while (--i); //延时500usreturn AckBit;
}

发送一位:

主机将总线拉低60 ~ 120us,然后释放总线,表示发送0;主机将总线拉低1~15us,然后释放总线,表示发送1。从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us

想发送0则按左边的时序,想发送1则按右边的时序

/*** @brief 主机发送一位* @param 要发送的数据位* @retval无*/
void OneWier_SendBit(unsigned char Bit)
{unsigned char i;OneWire_DQ = 0;i = 4;while (--i);        //延时10usOneWire_DQ = Bit;i = 24;while (--i);      //延时50usOneWire_DQ = 1;
}

接收一位:

主机将总线拉低1~15us,然后释放总线,并在拉低后15us内读取总线电平(尽量贴近15us的末尾),读取为低电平则为接收0,读取为高电平则为接收1 ,整个时间片应大于60us

/*** @brief主机接收一位* @param无* @retval返回接收到的位*/
unsigned char OneWire_ReceiveBit()
{unsigned char i;unsigned char Bit;OneWire_DQ = 0;         //先将总线拉低i = 2;while (--i);     //延时5usOneWire_DQ = 1;         //释放总线i = 2;while (--i);       //延时5usBit = OneWire_DQ;       //读取总线i = 24;while (--i);      //延时50usreturn Bit;
}

解释:

主机接收0:主机拉低总线几us后,释放总线,如果从机立马拉低总线,则表示从机想发送0,主机应该在15us的末尾读取总线状态0

主机接收1:主机拉低总线后,释放总线,从机并没有拉低总线,则表示从机想发送1,主机在15us末尾读取总线状态1

发送一个字节:

连续调用8次发送一位的时序,依次发送一个字节的8位(低位在前)

/*** @brief 发送一个字节* @param要发送的数据* @retval无*/
void OneWire_SendByte(unsigned char Data)
{unsigned char i;for(i = 0; i < 8; i++){OneWier_SendBit(Data & (0x01<<i));}
}

接收一个字节:

连续调用8次接收一位的时序,依次接收一个字节的8位(低位在前)

/*** @brief 接收一个字节* @param无* @retval返回接收到的数据*/
unsigned char OneWire_ReceiveByte()
{unsigned char i;unsigned char Data = 0x00;for(i = 0; i < 8; i++){if(OneWire_ReceiveBit()){Data|=(0x01<<i);}}return Data;
}

单总线编程介绍(用于DS18B20)相关推荐

  1. C#多线程编程介绍——使用thread、threadpool、timer

    C#多线程编程介绍--使用thread.threadpool.timer 在system.threading 命名空间提供一些使得能进行多线程编程的类和接口,其中线程的创建有以下三种方法:thread ...

  2. 新手必看的编程介绍,帮你推荐学习方案!

    新手必看的编程介绍,帮你推荐学习方案! VB是什么? ) y0 {6 G# G; j3 B VB 是Visual Basic编程语言 * B. O2 G# z) O1 |- g8 `4 ^ 编写计算机 ...

  3. wxWidgets GUI 编程介绍

    wxWidgets GUI 编程介绍 导论 wxWidgets 是C++的跨平台开发框架.它由 Julian Smart 于1992年在爱丁堡大学人工智能应用研究院发起的,自那之后,该框架分发到了众多 ...

  4. JS高级进阶总结day01---面向对象编程介绍,new的工作原理以及构造函数,原型对象,实力函数三者之间的关系

    02-面向对象编程 1.1-面向对象编程介绍 本小节知识点 1.理解什么是面向对象编程 面向对象不是一门技术,而是一种解决问题的思维方式 面向对象的本质是对面向过程的一种封装 2.理解什么是对象 对象 ...

  5. 来吧,嘤!,c++高级编程介绍

    c++高级编程介绍 学c++确实是件痛苦的事,这水平得一步步抬上去,实话说学校教的也不好,就更痛苦了,还要学这学那,对技术没半点提升.最近就在学这个,没得方向,只好自己归纳了.嘤!嘤! 目录 预处理 ...

  6. UE4入门学习4:C++编程介绍

    - - 文章 UE4入门学习4:C++编程介绍 作者 游蓝海( http://blog.csdn.net/you_lan_hai ) UE4直接使用C++作为逻辑层语言,这样引擎层与逻辑层语言统一,不 ...

  7. 计算机概述(三)——编程介绍

    计算机概述系列目录 第一章 计算机概述(一)--计算机发展历程与基础表示 第二章 计算机概述(二)--构建CPU 第三章 计算机概述(三)--编程介绍 文章目录 计算机概述系列目录 前言 一.早期的编 ...

  8. Reactor (1)Mono和Flux进行响应式编程介绍

    Reactor Mono和Flux进行反应式编程 官网:https://projectreactor.io/ 教程:https://projectreactor.io/docs/core/releas ...

  9. 2021年大数据常用语言Scala(二十):函数式编程 介绍

    目录 函数式编程 介绍 函数式编程的意义在哪? 函数式编程 介绍 我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程.下面的这些操作是学习的重点. 现在我们将会逐渐接触函数式编程的方 ...

最新文章

  1. Sprint(第十天11.23)
  2. 限时抢订!价值4800元TechNet Plus赠阅一年!今天己到哈~~~
  3. python路径找类并获取静态字段
  4. Android Activity学习笔记——Activity的启动和创建
  5. 同步装饰器来替换线程安全类
  6. 使用模拟的单元测试–测试技术5
  7. Centos7 开机启动汇总
  8. python经典程序实例-Python简单基础小程序的实例代码
  9. 日志模块logging
  10. win10系统如何启动sql服务器,升级win10后sql2005 sql服务无法启动如何解决
  11. 360系统修复过程中卡慢问题的解决方案
  12. Unity Kinect体感跑酷互动游戏方案
  13. linux sdl windows.h,SDL入门教程(十):1、多语言支持,Win32下的GetText
  14. HJ82 将真分数分解为埃及分数(需要知道求埃及数的数学方法)
  15. mysql 部分汉字乱码_一次mysql部分汉字乱码解决过程
  16. grep的语法和用法
  17. subprocess模块call的用法
  18. 计算机毕业论文会计,会计毕业论文6000字
  19. js如何打开编辑服务器端文件夹,js 打开本地或共享文件夹
  20. mysql类型转换及小数点保留问题(cast函数)

热门文章

  1. python 爬网页版钉钉消息_Python实现钉钉订阅消息功能
  2. 【交通信号灯相位说明及设置】
  3. 能玩java游戏oppo按键手机_游戏手机排行榜 | OPPO Reno果然不负期待
  4. Office这么多版本傻傻分不清,到底哪个版本好用?
  5. 北邮计算机专业的培养方案,现代邮政学院2016级专业培养方案-北京邮电大学.PDF...
  6. + kt360buy - 牛肉丸是用牛的什么部位做的
  7. 换屏后sim卡显示无服务器,话机屏幕上显示“插入SIM卡”、“SIM卡无效”、“请插入UIM卡”,“无法获得网络服务”或“紧急呼叫”...
  8. webapi2学习笔记
  9. 生活中常见的电压值,你知道多少?
  10. 浅析安科瑞无线测温装置在香港科技大学配电系统中的设计应用