⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 18b20.txt

📁 1602单片机仿真电路图和18b20源码
💻 TXT
字号:


#define uchar unsigned char
#define uint unsigned int

sbit DQ=P3^7;//ds18b20与单片机连接口


 uint tvalue;//温度值 
 uchar tflag;//温度正负标志
/******************************ds1820程序***************************************/
void delay_18B20(uint  i)//延时1微秒
{
   while(i--);
}

void ds1820rst()/*ds1820复位*/
{ uchar  x=0;
DQ = 1;          //DQ复位
delay_18B20(4); //延时
DQ = 0;          //DQ拉低
delay_18B20(100); //精确延时大于480us
DQ = 1;          //拉高
delay_18B20(40); 
   } 

   uchar ds1820rd()/*读数据*/
{ uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{   DQ = 0; //给脉冲信号
    dat>>=1;
    DQ = 1; //给脉冲信号
    if(DQ)
    dat|=0x80;
    delay_18B20(10);
}
   return(dat);
}

void ds1820wr(uchar wdata)/*写数据*/
{uchar i=0;
    for (i=8; i>0; i--)
   { DQ = 0;
     DQ = wdata&0x01;
     delay_18B20(10);
     DQ = 1;
     wdata>>=1;
   }
}



 uint read_temp(  )/*读取温度值并转换*/
{uchar a,b;
 
ds1820rst();    
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0x44);//*启动温度转换*/
ds1820rst();    
ds1820wr(0xcc);//*跳过读序列号*/ 
ds1820wr(0xbe);//*读取温度*/ 
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<<=8;            // tvalue为16位
tvalue=tvalue|a;
 if(tvalue<0x0fff)
   tflag=0;
    else
   {tvalue=~tvalue+1;
tflag=1;
   }
    

   
tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小

	 
  return(tvalue); 	
	     
 } 
    
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -