找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

根据时序图来写关于 DS18B20的写数据

查看数: 3350 | 评论数: 14 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-2-29 14:35

正文摘要:

图片当中的写法看不明白,有没有能帮忙稍微详细解答下,新手一枚!我看很多师傅的写法不区分写1还是写0?又是为哈? * 函 数 名         : Ds18b20WriteByte * 函数功能  &nbs ...

回复

ID:709595 发表于 2020-4-16 18:33
有个朋友给的资料,觉得讲的不错分享给大家。
写时序图.jpg
ID:419968 发表于 2020-3-3 14:44
    DSPORT = dat & 0x01;  // 这里决定写0 还是写1
                i=6;
                while(i--); //延时68us,持续时间最少60us
                DSPORT = 1;        //这里是释放总线
ID:282850 发表于 2020-3-3 14:15
pull1121 发表于 2020-3-3 12:11
首先非常感谢您的详细解释,还手画了图。我能理解这几个关键点。就是在采样的45微秒的时候,不是数据线拉 ...

是这样的,理解正确。
ID:407089 发表于 2020-3-3 14:14
“我的理解是这样,是不是此时的高电平是被单片机被动拉高的,所以不用去处理?”
看来你对这时序还不是太明白,DSPORT = dat & 0x01; 这句的意义是数据dat最低位如果是1,与上0x01就是1,即DSPORT=1,单片机主动拉高电平;如果最低位是0,则DSPORT=0,单片机主动拉低电平。不管是拉低还是拉高,一直保持该电平到45us,这是给18b20读数据的时间,这期间DSPORT=1则18b20读到1,为0则读到0,不一定非要延时45us,我试过延时80us也正常工作
ID:535242 发表于 2020-3-3 12:11
f556 发表于 2020-3-3 10:20
重新画个图,来解释。图中有3处相同,所以正如你所说,大部分人不区分是写1还是写0。我所见过的程序各写的 ...

首先非常感谢您的详细解释,还手画了图。我能理解这几个关键点。就是在采样的45微秒的时候,不是数据线拉高了么?我的理解是这样,是不是此时的高电平是被单片机被动拉高的,所以不用去处理?
ID:535242 发表于 2020-3-3 12:06
odfggf 发表于 2020-3-2 20:55
程序写法千万种,每个人的写法不同,意义一样。
写周期一开始做为主机先把总线拉低1微秒表示写周期开始 ...

嗯嗯  很感谢您的详细解释 之前是不太明白 为啥不区分写0和1 。有跟帖的师傅解释的很清楚了 谢谢!
ID:282850 发表于 2020-3-3 10:20
重新画个图,来解释。图中有3处相同,所以正如你所说,大部分人不区分是写1还是写0。我所见过的程序各写的程序是不区分的。
你图中写1采样是15+20us,不对,原版上还是15+30us。
由于采样都是在15us后才开始的,不论写1、写0,所以关键点1:15us以内操作好DQ线。
由于采样时间都是45us,关键点2:不能在15+45us期间变换DQ,一定要保持足够时间让采样完成。
由于数据位的分隔是最小1us的高电平,关键点3:必须要有1us以上的分隔拉低再拉高电平。
区分写1写0的程序明显要复杂一点,没用延时函数较差劲(编译后要多),建议采纳大家都用的不区分方式。
IMG_20200303_100130.jpg
ID:642838 发表于 2020-3-2 20:55
pull1121 发表于 2020-3-1 11:46
我看到了 即使你的时序图是对的 那个写1的时候DS被拉高了 为啥我上面别人写的程序怎么不区分哈 还是按拉 ...

程序写法千万种,每个人的写法不同,意义一样。
写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后dat & 0x01,若为0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若为1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。
这就是第一种写法的意思。
ID:535242 发表于 2020-3-1 16:20
Y_G_G 发表于 2020-3-1 14:50
这是美信的官方PDF,你参考一下
18B20时序实际上是比较简单的,基本是以延时为主的,你多看一下别人的程序,或 ...

感谢哈 还是不太明白
ID:401564 发表于 2020-3-1 14:50
这是美信的官方PDF,你参考一下
18B20时序实际上是比较简单的,基本是以延时为主的,你多看一下别人的程序,或者是中文版的PDF数据手册就可以了 DS18B20.pdf (382.99 KB, 下载次数: 13)
ID:535242 发表于 2020-3-1 11:46
cccc888 发表于 2020-2-29 19:05
你这张图从哪里找的。

我看到了 即使你的时序图是对的 那个写1的时候DS被拉高了 为啥我上面别人写的程序怎么不区分哈 还是按拉低了处理的 根本不区分写0和1?
ID:535242 发表于 2020-3-1 11:41
cccc888 发表于 2020-2-29 19:05
你这张图从哪里找的。

从郭天祥老师写的书里面看来得 ,错了哈,你有英文原版的资料么 发我一份 pull1121@163.com 谢谢
ID:130435 发表于 2020-2-29 20:42
技术贴值得mark mark mark
ID:258566 发表于 2020-2-29 19:05
你这张图从哪里找的。 18b20图不一样.PNG

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表