355 字
2 分钟
DS18B20相关功能
板子使用
这个在板子中是用来检测周围温度的芯片,无需设置,可通过捏该感应器来实现温度上升,试试自己代码是否有问题。
如果在数码管显示上,看到温度的读取时时跳出比较怪的数值,那就在整个时序的两端加上总中断的关和开,以此避免温度读取的时序被频繁打断。
底层代码
此处只填写一些官方提供代码中没有给出的部分
#include "onewire.h"#include "intrins.h"sbit DQ = P1 ^ 4;
//float rd_temperature() //读取温度,这里是我们要手打的代码!!!{ unsigned char low, high; //EA = 0; init_ds18b20(); //初始化 Write_DS18B20(0xcc); //跳过ROM操作 Write_DS18B20(0x44); //开启温度转化 Delay_OneWire(200); //不要忘记延时
init_ds18b20(); //初始化 Write_DS18B20(0xcc); //跳过ROM操作 Write_DS18B20(0xbe); //开启读取温度 low = Read_DS18B20(); //先读第八位low high = Read_DS18B20(); //再读高八位high //EA = 1; return (float)(high << 8 | low) * 0.0625; //返回浮点数类型}调用函数
如果要读取它的函数,建议用变量而不是数组。
- 如果要直接读取它的函数,用
unsigned char类型即可 - 如果要在数码管上显示保留一位小数,则要用
unsigned int类型
示例:
unsigned int tempertured_value_10x;
tempertured_value_10x = rd_temperature() * 10;
同理,如果要在数码管上显示保留两位小数,*100 即可。
部分信息可能已经过时














