栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

DS18B20时序解读,仿真实现

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DS18B20时序解读,仿真实现

DS18B20时序解读,51单片机实现

文章目录
    • DS18B20时序解读,51单片机实现
  • 前言
  • 一、DS18B20时序
  • 二、具体代码
  • 三、仿真
  • 总结


前言

一直在写毕业论文,今天忙里偷闲 ,重新学一下DS18B20


一、DS18B20时序

单总线通信协议,只需要一根数据线即可操作,半双工异步通信
1、初始化

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

注意:初始化时从机不可操作,从机应该是自动释放总线,所以主机释放总线后,延时70us,主机读取总线数据即可,再延时500us满足时间要求,在500us内从机会自动释放
2、发送一位

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

主机将总线拉低1—15us,然后释放总线,并在拉低后15us内读取总线电平(尽量贴近15us末尾),读取为低电平则为接收0,读取为高电平则为接收1,整个时间片应大于60us。
其实就是主机拉低总线,然后一会释放总线,此时若从机想发送0,会拉住总线不让主机释放;若从机发送1,则不理会主机释放总线,总线就拉高了。

4、发送一个字节
连续调用8次发送一位的时序,依次发送一个字节的8位。(低位在前)
5、接收一个字节
连续调用8次接收一位的时序,依次接收一个字节的8位(低位在前)

二、具体代码

OneWire.c

#include 
sbit OneWire_DQ=P3^7;
//初始化
unsigned char OneWire_Init()
{
	unsigned char i;
	unsigned char byte=0;
	OneWire_DQ=0;//延时500us
	i = 250;
	while (--i);
	OneWire_DQ=1;//延时65us
	i = 30;
	while (--i);
	byte=OneWire_DQ;//看是否有从机,延时500us
	i = 250;
	while (--i);
	return byte;
}
//发送一位
void OneWire_SendBit(bit Data)
{
	unsigned char i;
	OneWire_DQ=0;//延时5us
	i = 2;
	while (--i);
	OneWire_DQ=Data;//延时65us,发送1或者0由Data决定
	i = 30;
	while (--i);
	OneWire_DQ=1;//主机释放总线
}
//接收一位
unsigned char OneWire_ReceiveBit()
{
	unsigned char i;
	unsigned char Data=0;
	OneWire_DQ=0;//主机拉低总线延时5us
	i = 2;
	while (--i);
	OneWire_DQ=1;//主机释放总线
	i = 2;				//延时5us,看从机反映
	while (--i);
	Data=OneWire_DQ;//主机读取从机数据
	i = 25;					//延时50us
	while (--i);
	OneWire_DQ=1;//释放总线
	return Data;
}
//循环8次,发送一个字节,先发低位
void OneWire_SendByte(unsigned char Byte)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		if(Byte&(0x01<
	unsigned char i;
	unsigned char Byte=0x00;
	for(i=0;i<8;i++)
	{
		if(OneWire_ReceiveBit())
			Byte|=(0x01< 
三、仿真 

总结

简单写了些DS18B20时序函数,有问题评论即可,跪求点赞收藏

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号