毕业论文

打赏
当前位置: 毕业论文 > 自动化 >

AT89S52单片机最小远程监控系统的设计与开发+程序代码+电路图(10)

时间:2016-12-29 15:41来源:毕业论文
} delay(45); //延时500us flag = ~DQ; } DQ=1; } 图16 DS18B20初始化时序图 此初始化程序功能为:检测DS18B20是否存在,如存在,将位地址38H置1;如不存在,将位地址


           }
        delay(45);    //延时500us
        flag = ~DQ;
    }
    DQ=1;
}                                                                      
               
图16 DS18B20初始化时序图
此初始化程序功能为:检测DS18B20是否存在,如存在,将位地址38H置1;如不存在,将位地址38H清零。
3.4.2 DS18B20写时序
单片机写DS18B20的时序如图17所示,当主机总线从高拉至低电平时就产生写时间隙,DS18B20在检测到下降沿后15μS时开始采样总线上的电平,所以15μS之内应将所需写的位送到总线上,DS18B20再15—60μS间对总线采样,每写一位总时间必须在60—120μS之间完成。若低电平写入的位是0,高电平写入的位是1,连续写时位间的间隙应大于1μS。程序如下所示:
void write_byte(uint8 val)
{
    uint8 i;
    for (i=0; i<8; i++)
    {
        DQ = 1;
        _nop_();
        DQ = 0;
        nops(); //4us
        DQ = val & 0x01;      //最低位移出
        delay(6);           //66us
        val >>= 1;          //右移一位
    }
    DQ = 1;
    delay(1);  
}
图17 单片机写DS18B20时序图
3.4.3 读时序
单片机读DS18B20的时序如图18所示,单片机主动产生一个下降沿的启动信号,并文持低电平大于1μS后释放总线,15μS后DS18B20占主动权,DS18B20会将数据按位放在总线上(低位在先,当读取两个字节的温度值时,低字节在先),这时单片机可读取信号,读取一位的时间应在60μS内完成。当需要读取下一位时再产生下降沿启动信号。
uint8 read_byte(void)
{   uint8 i, value=0;
    for (i=0; i<8; i++)
    {
        DQ=1;
        _nop_();
        value >>= 1;
        DQ = 0;
        nops();   //4us
        DQ = 1;
        nops();   //4us
        if (DQ)
        value|=0x80;
        delay(6);           //66us
    }
    DQ=1;
    return(value);
}
图18 单片机读DS18B20时序图
此程序功能为:读取DS18B20 A/D转换后的温度值,转换后的二进制存入36H、35H单元,默认为12位转换,低8位存入36H单元,高8位存入35H单元(35H单元的高5位均为符号位,所以判断符号只需判断低12位数据的最高位即可)。1表示为零度以下,0表示零度以上,实际有效位为11位。 AT89S52单片机最小远程监控系统的设计与开发+程序代码+电路图(10):http://www.751com.cn/zidonghua/lunwen_1669.html
------分隔线----------------------------
推荐内容