2025-11-08 23:31:08
首先得接电源地接3.3V供电数据线接单片机IO口用4.7k电阻上拉然后单片机发复位命令再发写温度命令读32位数据转换成十进制温度值。这个操作要分三步走复位时单片机拉低数据线1秒再拉高然后读应答信号写温度要分高低字节先写低后写高读数据时每接收到一个1就拉高再放低把读到的16位数据除以10就能得到摄氏度数。
为什么得这么操作呢?因为DS18B20是单总线协议传感器必须严格按时序走流程。复位阶段要确保拉低至少480us再拉高才能触发芯片响应。写温度命令前必须确认芯片处于空闲状态(拉高500us以上)。数据格式是16位有符号整数所以需要除以10得到实际温度值。根据官方手册数据转换公式是T=(sign<<3)+(data[1]>>6)+(data[0]>>4)+(data[0]&0x0f)16。实测在25℃时数据是0x7f00转换后刚好25.0℃。读数据时每接收一个位要等待15-60us再释放总线确保时序稳定。如果拉低时间不够芯片会拒绝通信导致读不到数据。
本题链接: