野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8534|回复: 2

DS18B20读数据和写数据的实现

[复制链接]
发表于 2015-12-30 13:08:22 | 显示全部楼层 |阅读模式
/**************************************************
函 数 名  : Ds18b20Write
功能描述  : 写数据
输入参数  : infor---写入的数据
输出参数  : NONE
返 回 值  : NONE
***************************************************/
void Ds18b20Write(uchar infor)
{
    uint i;

    Data_OUT();
    for(i=0;i<8;i++)
    {
        if((infor & 0x01))
        {
            sda = 0;
            Ds18b20Delay(6);
            sda = 1;
            Ds18b20Delay(50);
        }
        else
        {
            sda = 0;
            Ds18b20Delay(50);
            sda = 1;
            Ds18b20Delay(6);
        }
        infor >>= 1;
    }
}


/**************************************************
函 数 名  : Ds18b20Read
功能描述  : 读数据
输入参数  : NONE
输出参数  : NONE
返 回 值  : Value---读出的数据
***************************************************/
uchar Ds18b20Read(void)
{
    uchar Value = 0x00;
    uint i;
    Data_OUT();
    sda = 1;
    Ds18b20Delay(10);
    for(i=0;i<8;i++)
    {
        Value >>= 1;
        Data_OUT();
        sda = 0;
        Ds18b20Delay(3);
        sda = 1;
        Ds18b20Delay(3);
        Data_IN();
        if(sda == 1) Value |= 0x80;
        Ds18b20Delay(15);
    }
    return Value;
}
上述两个读写函数不是很懂,哪位大侠能够具体解释下,万分感谢!

回复

使用道具 举报

发表于 2015-12-30 13:30:28 | 显示全部楼层
就是读取引脚的电平状态而已
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-30 17:47:18 | 显示全部楼层
flyleaf 发表于 2015-12-30 13:30
就是读取引脚的电平状态而已

作为初学者,理解原理很重要,也是一个漫长的过程。这个说的比较明白。http://www.360doc.com/content/15/0212/21/21287212_448223381.shtml
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-23 20:03 , Processed in 0.026809 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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