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

📄 fun_18s20.h

📁 51单片机时钟 和18B20 温度的 LCD显示
💻 H
字号:
//========================================
//功能控制子程序
//实现对DS18S20的常用操作
//Design by ZM
//2007/1/8
//========================================

#include "SPCE061A.h"
#include "DS18S20.h"
//====================================
//语法格式:	void DS18S20_Write_Byte(unsigned int Data)
//实现功能:	DS1820字节写入程序
//参数:		Data->要写入的字节
//返回值:	无
//=====================================
extern void DS18S20_Write_Byte(unsigned int Data)
{
	unsigned int i;
	for (i=0;i<8;i++)
	{
		if(Data&0x01)
			F_18S20_Write_1();
		else
			F_18S20_Write_0();
		Data=Data>>1;
	}
}

//============================================
//语法格式:	unsigned int DS18S20_Read_Byte(void)
//实现功能:	读出DS18S20的一个字节内容
//参数:	无
//返回值:	字节内容,低8位有效
//=============================================			
extern unsigned int DS18S20_Read_Byte(void)
{
	unsigned int i,Data;
	for(i=0;i<8;i++)
	{
		Data=Data>>1;
		Data=Data|F_18S20_Read();
	}
		return Data;
}

//==============================================
//语法格式:	unisigned int DS18S20_Initial(void)
//实现功能:对DS18S20的初始化,包括对端口的初始化
//								以及一次复位
//参数:		无
//返回值:	成功->1;失败->0
//===============================================
extern unsigned int DS18S20_Initial(void)
{
	unsigned int i;
	F_18S20_SetSystemCLK();		//49Mhz
	F_18S20_Initial_IO();		//IO初始化
	i=F_18S20_Reset();			//对DS18S20复位
	//F_18S20_RsuSystemCLK();		//时钟恢复
	return(i);
}

//=================================================
//语法格式:	float DS18S20_Convert_Temp(void)
//实现功能:	实现一次温度转换,并把结果以实型数据返回
//参数:		无
//返回值:	温度值
//==================================================
extern unsigned int DS18S20_Convert_Temp(void)
{
	unsigned int i,Data[9];
	//float temp;
//	F_18S20_SetSystemCLK();			//CPU时钟设置为49Mhz
	if(F_18S20_Reset())
	{
		DS18S20_Write_Byte(0xcc);	//跳过ROM检查
		DS18S20_Write_Byte(0x44);	//启动一次转换
		while(F_18S20_Read()==0x80)
		{
			*P_Watchdog_Clear=0x0001;
		}
		F_18S20_Reset();
		DS18S20_Write_Byte(0xcc);       //Skip ROM
        DS18S20_Write_Byte(0xbe);       //Read Scratchpad
		for(i=0;i<9;i++)			//读取连续9个字节的内容
		{
			Data[i]=DS18S20_Read_Byte();
		}
		F_18S20_Reset();
		i=(Data[1]<<8)|Data[0];		//Data[0]->温度低8位,Data[1]->温度高8位
		//temp=(float)i;
		//temp=temp/2;				//转换后的温度值
	}
//	F_18S20_RsuSystemCLK();			//系统时钟恢复
	return i;
}

⌨️ 快捷键说明

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