• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: 其他
  • 标签: dS18b20  C8051F020  

资源简介

DS18B20底层驱动,用C8051F020做控制器,也可用普通51单片机,只需修改微小部分就行

资源截图

代码片段和文件信息

#include“18B20.H“

/*************************************************************************************/
void delay(unsigned int i)//延时函数
{
while(i--);
}
/***************************************************************************************/
//18b20初始化函数
void Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1;    //DQ复位
delay(8);  //稍做延时
DQ = 0;    //单片机将DQ拉低
delay(80); //精确延时 大于 480us
DQ = 1;    //拉高总线
delay(10);
x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
delay(5);
}

//读一个字节
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
 {
  DQ = 0; // 给脉冲信号
  dat>>=1;
  DQ = 1; // 给脉冲信号
  //在if(DQ)之前将DQ设置为输入口以便单片机读取DQ的值
  if(DQ)
  dat|=0x80;
  delay(5);
 }
 return(dat);
}

//写一个字节
void WriteOneChar(unsigned char dat)
{
 unsigned char i=0;
 for (i=8; i>0; i--)
 {
  DQ = 0;
  DQ = dat&0x01;
  delay(5);
  DQ = 1;
  dat>>=1;
 }
delay(5);
}

//读取温度
unsigned char ReadTemperature(void)   
{
unsigned char a=0;
unsigned char b=0;  
unsigned char t=0;
// unsigned char tt;
//float tt=0;            
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
delay(200);    
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作 
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();
b=ReadOneChar();

b<<=4;
b+=(a&0xf0)>>4;
t=b;
// tt=t*0.0625;
// t= t1*10; //放大10倍输出并四舍五入
return(t);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    I.A....       629  2009-08-22 21:00  TEST.C

    I.A....      1661  2009-08-22 21:00  18B20.c

    I.A....       590  2009-08-22 20:48  18B20.H

    I.A....       129  2009-08-22 20:45  HEADER.H

----------- ---------  ---------- -----  ----

                 3009                    4


评论

共有 条评论