我是刚刚学习,看了很多书在学习,C语言的框架能够看懂,就是单片机的一些指令有点一知半解。
下面是 读取温度的函数:
- int getTmpValue()
- {
- unsigned int tmpvalue;
- int value; //存放温度数值
- float t;
- unsigned char low, high;
- sendReadCmd();
- //连续读取两个字节数据
- low = readByte();
- high = readByte();
- //将高低两个字节合成一个整形变量
- //计算机中对于负数是利用补码来表示的
- //若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的value
- tmpvalue = high;
- tmpvalue <<= 8;
- tmpvalue |= low;
- value = tmpvalue;
-
- //使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度
- t = value * 0.0625;
- //将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入
- //如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度
- //如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度
- value = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5
- return value;
- }
|