微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > ds18b20读写

ds18b20读写

时间:10-02 整理:3721RD 点击:
用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;
}

是这样,对DS18B20 出现的问题,最关键的就是延时 ,所以,我建议,好好查查  延时到底是多少,需要符合数据手册上的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top