void write_onechar(unsigned char dat) {
unsigned char i=0; for(i=0;i<8;i++) {
DQ=0;
DQ=dat&0x01; delay0(15); DQ=1;
dat=dat>>=1; }
delay0(5); }
unsigned char read_onechar() {
unsigned char i=0;unsigned char dat=0; for(i=0;i<8;i++) {
DQ=0; dat>>=1; DQ=1;
if(DQ) dat|=0x80; delay0(20); }
return(dat); }
unsigned char Read_Temperature() {
unsigned char a,b;
unsigned char temp_value; init_ds18b20();
write_onechar(0xCC); //跳过读序列号的操作 write_onechar(0x44); // 启动温度转换 init_ds18b20();
write_onechar(0xCC); //跳过读序列号的操作
write_onechar(0xBE); //读取温度寄存器等(共可读9个寄存器) a=read_onechar(); b=read_onechar(); b=b<<4; a=a>>4; temp_value=b|a;
return(temp_value); }
前两个就是温度
相关推荐: