51单片机课程设计,数字温度计
/
/*****************************************************/
uchar ds18b20_read() {
uchar i; uchar d=0; DQ = 1; //准备读;
for(i=8;i>0;i--) {
d >>= 1;
DQ = 0; _nop_(); _nop_(); DQ = 1; if(DQ)
//低位先发;
//必须写1,否则读出来的将是不预期的数据; //在12us处读取数据;
d |= 0x80; ds18b20_delayus(10); } return d;
//返回读取的值
}
/******************************************************/ /* DS18B20字节写函数 /
/*****************************************************/ void ds18b20_write(uchar d) {
uchar i;
for(i=8;i>0;i--) { DQ=0; DQ=d&0x01; ds18b20_delayus(5); DQ=1; d >>= 1; }