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

📄 ds18b20.c

📁 ds18b20+1602液晶显示 基于atmega16l单片机的编程
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#include "ds18b20.h"
#include "lm1602.h"


byte DS18B20_Reset(void)	 //DS18B20初始化函数
{  
	 byte err=0;
	 DQ_OUT;     //DQ复位
     _NOP();
	 _NOP();
	 DQ_L;
	 delay_nus(300);      //延时470us
    // DQ_H;
	 DQ_IN;
	 delay_nus(60);       //延时100us
	 if(DQ_IN_H)
	  err = 1;
	  delay_nus(60);       //延时100us
	 return err;
}

void DS18B20_WriteBit(byte bitval)
{
    DQ_OUT;
	_NOP();
	_NOP();
	 DQ_L;//将DQ线拉低,开始写时间隙
	 delay_nus(10);      //延时30us
	 if(bitval == 1)  //如果写1,DQ线拉高
	   DQ_H;
	 delay_nus(20);      //延时30us
     DQ_H;
}

byte DS18B20_ReadBit(void)
{
    byte rbit = 0;
	DQ_OUT;
	_NOP();
	_NOP();
	 DQ_L;  //将DQ线拉低,开始写时间隙
     delay_us();       //延时30us
	//DQ_H;
	// delay_nus(10);      //延时
	 DQ_IN;
	 _NOP();
	 _NOP();
	// 
	 if(DQ_IN_H)
	 rbit =1;
	 delay_nus(40);
     return (rbit);
}

void DS18B20_WriteChar(byte val)
{
    byte i;
	byte temp;
	temp = val;
	for(i = 0;i<8;i++)
	{
	    temp =val>>i;
		if((temp&0x01) == 0x01)
		DS18B20_WriteBit(1);
		else 
		DS18B20_WriteBit(0);
		
		
	}
	
	 delay_nus(60);      //延时
}

byte DS18B20_ReadChar(void)	   //读一个字节数据函数
{					    
  unsigned char i = 0;
  byte R_data = 0;
   
   for (i=0;i<8;i++)
    {
	  if(DS18B20_ReadBit())
	    R_data |=1<<i;
    }
    return (R_data);
}

unsigned int ReadTemperature(void)	 //读取温度函数
{
	 byte Rom[2];
     unsigned int tempValue;
	 if(DS18B20_Reset())
	 {
		return 0xffff;
	 }
     DS18B20_WriteChar(0xcc) ;  //跳过读序号列号的操作
     DS18B20_WriteChar(0x44) ;  //启动温度转换
	 delay_nus(100); 
      if(DS18B20_Reset())
	 {
		return 0xffff;
	 }
     DS18B20_WriteChar(0xCC) ;  //跳过读序号列号的操作
     DS18B20_WriteChar(0xBE) ;  //读取温度寄存器
      delay_nus(200); 
     Rom[0] = DS18B20_ReadChar() ;   //读温度低8位
     Rom[1] = DS18B20_ReadChar() ;   //读温度高8位 
	/* *tempValue = Rom[1];
	 *tempValue <<= 8;
	 *tempValue |= Rom[0];*/
	 tempValue = Rom[1];
	 tempValue <<= 8;
	 tempValue |= Rom[0];
	 return tempValue;
}


  
 

⌨️ 快捷键说明

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