DS18B20是一款单总线通信的温度传感器芯片。也就是说只需要一个GPIO就能实现通信。它的典型应用电路如下图所示。
下面讲解一下单总线通信协议的实现。
/*DQ--->P9.7
温度传感器的分辨率可由用户配置为9、10、11或12位,
分别对应0.5℃、0.25 ℃、0.125℃和0.0625℃的增量。
开机时的默认分辨率是12位。*/
#include "ds18b20.h"
uint8 temp[10] = {
0};
void Ds18b20_Init(void)
{
DQ_OUT;//将GPIO配置为输出
P9OUT |= BIT7;//首先DQ是高电平
delay_us(15);//延时,等DQ稳定
P9OUT &= ~BIT7;//拉低
delay_us(600);//延时大概600US
P9OUT |= BIT7;//拉高(释放)
delay_us(15