当前位置:首页 > 技术学院 > 热搜器件
[导读]采集完数据,数据的处理方法很多,选中一种好的思路才是王道。

采集完数据,数据的处理方法很多,选中一种好的思路,那才是王道!

1.

unsigned int ReadTemperature(void)

{

unsigned char a=0;

unsigned int b=0;

unsigned int t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作

WriteOneChar(0x44); // 启动温度转换

DelayMs(10);

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度

a=ReadOneChar(); //低位

b=ReadOneChar(); //高位

b<<=8;

t=a+b;

return(t);

}

int temp;

float temperature;

ReadTempFlag=0;

temp=ReadTemperature();

temperature=(float)temp*0.0625;

2.

unsigned char temp;

unsigned char temp1;

void Temp_test(void)

{

uchar low,high;

Ds18b20Initial();

Ds18b20Write(0xcc);

Ds18b20Write(0x44);

// Ds18b20Delay(5);

Ds18b20Initial();

Ds18b20Write(0xcc);

Ds18b20Write(0xbe);

low = Ds18b20Read();//低位

high = Ds18b20Read();//高位

temp = high;

temp <<=8;

temp |= low;

temp = ((low >> 4)+((high & 0x07)*16));

temp1 = low&0x0f; //这就是小数位,不需要转成float,然后又要转回int型处理

}

int temp;

float temperature;

temperature=(float)

Temp_shi=temp/10;

Temp_ge=temp;

Temp_xiao=(temp1*625+500)/1000;//为了留一位小数,并实现四舍五入

总结:之前在51上做,当程序比较多时,用上float型,容易出错;后来在cc2530上做温度采集时,为了显示小数这一位,用了很多方法,显示整数两位没有问题,一加上小数位,就读不出来,后来在网上看到第2中方法的处理,它是一直用unsigned char,这种处理数据方法,对于某些场合,真的很好用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭