}
}
delay_us(4);
return(k);
void tmpwrite(unsigned char dat) 函数功能:向B20写一字节 { unsigned int i; }
void tmpchange(void)
unsigned char j; bit testb; for(j=1;j<=8;j++) { }
testb=dat&0x01; dat=dat>>1; if(testb) { } else { }
tem_in=0; i=8;while(i>0)i--; tem_in=1;i++;i++; tem_in=0;i++;i++; tem_in=1; i=8;while(i>0)i--;
{ }
void tmp(void) 温度采集及转换 {
int m,n=0;
float temnum1=0; dsreset(); delay(1); tmpwrite(0xcc); tmpwrite(0x44);
跳过序列号命令 转换命令
复位
dsreset();
delay(1); tmpwrite(0xcc); tmpwrite(0xbe); temp_l=readbyte(); temp_=flag1;
temp_==0xf8)tembuf[3]=10;
低位在前
temnum=temnum1; }
void dis(void) 温度显示 {
uchar i;
uchar j=0xfe;
for(i=0;i<4;i++) {
输送显示数据
}
P0=0xff; }
P0=ledcode[tembuf[i]];
if(i==1)P0=ledcode[tembuf[i]]+0x80; 小数点显示 P2=j; delay(15); j=(j<<1)+0x01;
void distance(void) 计算测量得到的距离 {
double radical,dist; if(b!=0) {
radical=sqrt(1+(temnum+273)273); dist=165.7*t*radical;
dist=dist+0.005; 四舍五入并留两位小数
if(dist>0&&dist<10) { }
dispbuf[3]=11; dispbuf[2]=(uchar)dist;
dispbuf[1]=(uchar)(dist*10); dispbuf[0]=(uchar)(dist*100);
if(dist>=10&&dist<=0) 测量距离大于10米或小于0显示\
也有出错的意思
{
dispbuf[3]=10;
dispbuf[2]=10; dispbuf[1]=10; dispbuf[0]=10; }
if(dist<100&&dist>=10)
{ dispbuf[3]=(uchar)dist10; }
dispbuf[2]=(uchar)dist; dispbuf[1]=(uchar)(dist*10); dispbuf[0]=(uchar)(dist*100);
}
else
{ 当T1溢出时,则测量时间无效
dispbuf[3]=10;
dispbuf[2]=10; dispbuf[1]=10; dispbuf[0]=10; }
}
void dis1(void) 距离显示 {
uchar i;
uchar j=0xfe;
for(i=0;i<0;i++) *输送显示数据*
相关推荐: