我要成为嵌入式高手之4月9日51单片机第四天!!
————————————————————————————
DS18B20温度传感器
单总线数字温度计
异步的半双工的串行通信
测量范围从-55℃ ~ +125℃,增量值为0.5℃
要用DS18B20采集温度,就要实现与单片机之间的通信,因此有两个问题
Bus master active low:主机执行低电平
DS1820 active low:DS18B20执行低电平
Both bus master and DS1820 active low:全都释放低电平
Resistor pull-up:电阻拉高
1、如何向DS18B20发送数据
sendChar(发送单字节的数据)
主机(单片机)向DS18B20写入(发送)0:
空闲时总线上呈现高电平,如果要发送0,就把总线电平拉低:至少(MIN)拉低15微秒,典型(TYP)拉低30微秒,最多(MAX)拉低60微秒。这样一段时间就表示单片机向DS18B20写入一个0;(由于是异步传输,故0 和 1只能靠控制时间长短来表示)
主机(单片机)向DS18B20写入(发送)1:
空闲时总线上呈现高电平,如果要发送1,就把总线电平拉低,拉低时间大于1微秒后,立刻又将电平拉高,拉高时间为:至少(MIN)拉高15微秒,典型(TYP)拉高30微秒,最多(MAX)拉高60微秒。
2、如何从DS18B20读取数据
readChar()
MASTER SAMPLES:主机采样(读引脚电平)
主机(单片机)从DS18B20读取(接收)0:
空闲时总线上呈现高电平,DS18B20会将电平拉低,在拉低后的15微秒以内,单片机进行采样,若为低电平,说明收到的是0;
主机(单片机)从DS18B20读取(接收)1:
空闲时总线上呈现高电平ÿ