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

📄 ds18b20.c

📁 基于DS18B20的数字温度计法师的法示范
💻 C
字号:
//项目名称 :
//采用晶振:12M
//日期:2008-12-9
//#include <reg52.h>        // 引用标准库的头文件
#include <math.h>
#include<intrins.h>
#include"reg51.h"
#include"DS18B20.h"

#define uchar unsigned char
#define uint unsigned int
#define Delay2us()  _nop_();_nop_();_nop_();_nop_();
#define Delay8us()  _nop_();_nop_();_nop_();_nop_();nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();  

sbit    CS_18B20_DA=P1^5;


//**************************************************
void delay2(uint x)
{		for(;x>0;)
		{	 x--;
		}
} 

//********************************************************
void cs18b20_start(void)
{		uchar i;
	
		CS_18B20_DA=1;
		Delay2us();
		CS_18B20_DA=0;
		delay2(100);
		CS_18B20_DA=1;
		delay2(2);
		for(i=0;i<250;)
		{	 
				if(CS_18B20_DA==0)
				{		
						i=255;
				}
				

		}
		delay2(30);
		CS_18B20_DA=1;
}
//*****************************************************
void cs18b20_sen(uchar sen_data)
{		uchar i;
		CS_18B20_DA=1;
				
		for(i=0;i<8;i++)
		{ 		
				CS_18B20_DA=0;
				Delay2us();
				CS_18B20_DA=sen_data&0x01;
				sen_data=sen_data>>1;	    
				Delay8us();
				Delay8us();
				Delay8us();
				Delay8us();
			
				CS_18B20_DA=1;
		}		
		Delay8us();
						
}
//**********************************************
uchar cs18b20_receive(void)
{		uchar i;
		uchar temp=0;
		for(i=0;i<8;i++)
		{ 		
				CS_18B20_DA=0;
				_nop_();
				temp=temp>>1;
				CS_18B20_DA=1;
				_nop_();
				_nop_();
			
			   	if(CS_18B20_DA==1)
				{	   
					    temp=temp|0x80;
						
				}
				else	
						temp=temp&0x7f;

				Delay8us();
				Delay8us();
				Delay8us();
				Delay8us();
			
			
				}
		//CS_18B20_DA=1;		
		Delay8us();
		Delay8us();
		return(temp);
} 
//************************************************ 
uint wdbh_control(void)
{		uchar temp_l,temp_h;
		cs18b20_start();
		cs18b20_sen(0xcc);
		cs18b20_sen(0x44);
		delay2(15);
		cs18b20_start();
		cs18b20_sen(0xcc);
		cs18b20_sen(0xbe);
		temp_l=cs18b20_receive();
		temp_h=cs18b20_receive();
		return((temp_h*256+temp_l)*6.25);
}







⌨️ 快捷键说明

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