谈谈18B20温度传感器详解

谈谈18b20温度传感器详解
温度传感器特性:最普遍的热敏打印机机使用一种带加热点阵的固定打印头,打印头设有320个方点,每一点为0.25mm×0.25mm。利用这种点阵,打印机可把打印点在热敏纸的任意位置上。
1单独的单线接口,只需1个接口引脚即可通信;
2不需要外部元件;
3可用数据线供电;
4不需备份电源;
5测量范围从-55c ~ +125c, 增量为00625c;
6以12位数字值方式读出温度;
7在1内把温度变换为数字;
知识点:
1每个18b20包括唯一的64位长的序号放在rom中;
开始8位产品类型编码 接着48位每个器件唯一序号| 最后8位:前56位的crc
218b20最小单位刻度是00625c, (这里后面解释)
ds18b20的控制流程
根据ds18b20的通信协议,ds18b20只能作为从机,而单片机系统作为主机,片机控制ds18b20完成一次温度转换必须经过3个步骤:
1 初始化;
2发送rom指令;
3发送18b20功能指令。
@以上3个流程还有顺序不能颠倒且缺一不可,每次只要发送任何一条rom指令,这个流程必须从第1再开始才能发送另外的rom指令;
一,初始化
*
*******************************************************************************
**
**gpio_dq_o_m()
**
**
**功能描述:设置dq引脚为开漏输出模式
**
**参数:无
**
**返回值:无
**
*******************************************************************************
*
gpio_dq_o_m()
{
gpio_itdgpio_is;
gpio_isgpio_p=dq_gpio_p;
gpio_isgpio_s=gpio_s_50mh;
gpio_isgpio_m=gpio_m_o_od;开漏输出
gpio_i(dq_gpio,gpio_is);
}
*
*******************************************************************************
**
**gpio_dq_i_m()
**
**
**功能描述:设置dq引脚为浮空输入模式
**
**参数:无
**
**返回值:无
**
*******************************************************************************
*
gpio_dq_i_m()
{
gpio_itdgpio_is;
gpio_isgpio_p=dq_gpio_p;
gpio_isgpio_s=gpio_s_50mh;
gpio_isgpio_m=gpio_m_in_floating;浮空输入
gpio_i(dq_gpio,gpio_is);
}
*
*******************************************************************************
**t_rp()
**
**
**功能描述:发送复位脉冲
**
**参数:无
**
**返回值:无
**
*******************************************************************************
*
t_rp()
{
gpio_dq_o_m();
dq_w_0();复位脉冲
d_10(50);至少保持480
dq_w_1();加速上升沿速度
d_10(1);
}
*
*******************************************************************************
**
**r_pp()
**
**
**功能描述:接受应答信号
**
**参数:无
**
**返回值:无
**
*******************************************************************************
*
r_pp()
{
gpio_dq_i_m();
(dq_rb());等待ds1820应答
(dq_rb()==0);ds1820将总线拉低60~240,然后总线由上拉电阻拉高
d_10(30);
gpio_dq_o_m();接受完成,主机重新控制总线
}
*
*******************************************************************************
**ds18b20_i()
**
**
**功能描述:初始化ds1820
**
**参数:无
**
**返回值:无
**
*******************************************************************************
*
ds18b20_i()
{
t_rp();
r_pp();
}
t_rp:函数:主机总线发送复位脉冲
pp函数:主机读取18b20返回的存在脉冲(电平持续60-240)
二写时序
*
*******************************************************************************
**
**w_ob_tds1820()
**
**
**功能描述:写一个字节到ds1820
**
**参数:无
**
**返回值:无
**
*******************************************************************************
*
w_ob_tds1820()
{
;
gpio_dq_o_m();
(=0;8;++)
{
(001)低位在前
{
写1
dq_w_0();写时间空隙总是从总线的低电平开始
d_10(1);15内拉高
dq_w_1();
d_10(8);整个写1时隙不低于60
}
{
写0
dq_w_0();
d_10(11);保持在60到120之间
dq_w_1();
d_10(1) ;