温度传感器*---------------------------------------------------------------------------------------------------标签打印机内置一定的字体、字库和相当数量的标签模板格式,通过机身液晶屏幕可以直接根据自己的需要进行标签内容的输入、编辑、排版,然后直接打印输出的打印机。
功能:实现对ds18b20的读取
原理:单总线协议
注意:单总线协议对延时要求比较严格,此程序中采用的是110592m的晶振,如果使用其他的晶振请跟据ds18b20的资料修改延时参数
版本:14
最后修改时间:2004年11月8号
开发人:鞠春阳
版权:哈尔滨众邦龙开发有限公司 单片机坐标网:
====================================================================================================*
#51
dq =p1^4; 定义通信端口
延时函数
*
()
{
(--);
}
*
初始化函数
i_ds18b20()
{
=0;
dq = 1; dq复位
(8); 稍做延时
dq = 0; 单片机将dq拉低
(80); 精确延时 大于 480
dq = 1; 拉高总线
(14);
=dq; 稍做延时后 如果=0则初始化成功 =1则初始化失败
(20);
}
读一个字节
roc()
{
=0;
= 0;
(=8;0;--)
{
dq = 0;给脉冲信号
=1;
dq = 1;给脉冲信号
(dq)
|=080;
(4);
}
();
}
写一个字节
woc()
{
=0;
(=8; 0; --)
{
dq = 0;
dq = 001;
(5);
dq = 1;
=1;
}
(4);
}
读取温度
rt()
{
=0;
=0;
=0;
=0;
i_ds18b20();
woc(0cc);跳过读序号列号的操作
woc(044);启动温度转换
i_ds18b20();
woc(0cc); 跳过读序号列号的操作
woc(0be); 读取温度寄存器等(共可读9个寄存器) 前两个就是温度
=roc();
=roc();
=;
=8;
=|;
=*00625;
= *10+05; 放大10倍输出并四舍五入---此行没用
();
}
()
{
=0;
(1)
{
=rt();读温度
}
}