单片机/MCUwilliam hill官网
直播中

月光下的魔術師

8年用户 11经验值
擅长:嵌入式技术
私信 关注
[问答]

ds18b20读写

用arm系统写了几天ds18b20的程序代码,最后仿真的时候没有温度显示,经过检测后觉得是对ds18b20的读写程序有问题,请问有人能帮忙解决下么void write_ds18b20(uint8 dat) //写数据
{
        uint8 i;
        IO0DIR|=DQ;       
        for(i=0;i<8;i++)
        {       
                 IO0CLR|=DQ;
                 delay_us(2);
                if(dat&0x01)
                {
                        IO0SET|=DQ;
                        delay_us(10);
                } else
                {       
                        IO0CLR|=DQ;
                        delay_us(10);
                }       
                delay_us(3);
                dat=dat>>1;
        }
                IO0SET|=DQ;
}
uint8 read_ds18b20()  //读数据
{
        uint i=0,readat=0;
        for(i=0;i<8;i++)
        {
                IO0DIR|=DQ;
                IO0CLR|=DQ;
                delay2us;    //1us
                readat>>=1;
                IO0SET|=DQ;        //置高
                IO0DIR&=(~DQ);  //设置端口输入,让ds18b20将数据传输到总线上
                if(IO0PIN&DQ)  readat|=0x80;  //主机开始采样
                delay_us(12);
        }       
        return readat;
}

回帖(1)

将军问鼎

2016-6-29 18:39:33
是这样,对DS18B20 出现的问题,最关键的就是延时 ,所以,我建议,好好查查  延时到底是多少,需要符合数据手册上的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分