当前位置: 首页 > news >正文

单片机学习笔记.单总线one-wire协议(这里以普中开发板DS18B20为例)

硬件原理图: 


 DS18B20数据图:

 

 


首先根据原理图定义对应引脚:

sbit OneWire_DQ=P3^7;

 one-wire时序图:

one-wire初始化:

初始化时序分析: 

unsigned char OneWire_Init(void)
{unsigned char AckBit;OneWire_DQ=1;OneWire_DQ=0;Delay500us();OneWire_DQ=1;Delay70us();AckBit=OneWire_DQ;Delay500us();return AckBit;
}

one-wire读/写 1位:

one-wire读/写 1位 时序分析: 


 写一个位:

//写一个位
void OneWire_SendBit(unsigned char Bit)
{OneWire_DQ=0;Delay14us();//10usOneWire_DQ=Bit;Delay54us();//50usOneWire_DQ=1;
}

 接收一位: 

//接收一位
unsigned char OneWire_ReciveBit(void)
{unsigned char Bit;OneWire_DQ=0;Delay9us();//5usOneWire_DQ=1;Delay9us();//5usBit=OneWire_DQ;Delay54us();//50usreturn Bit;
}

  写入1个字节:

//写入一个字节
void OneWire_SendByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){OneWire_SendBit(Byte&(0x01<<i));}
}

 发送1个字节: 

//发送1个字节
unsigned char OneWire_ReciveByte(void)
{unsigned char Byte=0x00;unsigned char i;for(i=0;i<8;i++){if(OneWire_ReciveBit()){Byte|=(0x01<<i);}}return Byte;
}

http://www.lryc.cn/news/596391.html

相关文章:

  • rabbitmq 03
  • uniapp 报错 Not found ... at view.umd.min.js:1的问题
  • LWIP学习记录2——MAC内核
  • Linux系统安装Bash自动补全(bash-completion)
  • 基于SpringBoot+Uniapp的非遗文化宣传小程序(AI问答、协同过滤算法、Echarts图形化分析)
  • uniapp请求封装上传
  • 最新植物大战僵尸杂交版最新版本2.5.1版,内置触屏+加速+全屏,附PC+安卓+iOS最全安装教程!
  • C#文件操作(创建、读取、修改)
  • Java学习-------事务失效
  • 从“点状用例”到“质量生态”:现代软件测试的演进、困局与破局
  • Vue3 学习教程,从入门到精通,Vue3 循环语句(`v-for`)语法知识点与案例详解(13)
  • C# 属性
  • XSS(跨站脚本)
  • CPU 密集型 和 I/O 密集型 任务
  • 达梦数据库表字段增加时报错[-2106]:无效的表或视图名,[-2116]:列[IS_REPEAT]已存在
  • 【C++】第十八节—一文万字详解 | map和set的使用
  • 如何搭建appium工具环境?
  • Go的异常处理+文件处理
  • JAVA API (三):从基础爬虫构建到带条件数据提取 —— 详解 URL、正则与爬取策略
  • M3088NL是一款网络滤波器/变压器支持100M和1000M网络环境,适用于高速网络传输场景M3088
  • 在腾讯云上安装gitlab
  • HCIP第一二章笔记整理
  • 网络基础DAY16-MSTP-VRRP
  • 公司内部网址怎么在外网打开?如何让外网访问内网的网站呢?
  • 5G工业路由器如何凭借高性价比助力多行业数字化转型?
  • Hugging Face 模型的缓存和直接下载有什么区别?
  • TI DLP3010光机与相机触发使用指南
  • Android app如果不适配Android 15会怎么样
  • 一款基于 WPF 开源、功能全面的串口调试工具
  • 【Spark征服之路-3.7-Spark-SQL核心编程(六)】