?? fun_18s20.h
字號(hào):
//========================================
//功能控制子程序
//實(shí)現(xiàn)對(duì)DS18S20的常用操作
//Design by ZM
//2007/1/8
//========================================
#include "SPCE061A.h"
#include "DS18S20.h"
//====================================
//語(yǔ)法格式: void DS18S20_Write_Byte(unsigned int Data)
//實(shí)現(xiàn)功能: DS1820字節(jié)寫入程序
//參數(shù): Data->要寫入的字節(jié)
//返回值: 無(wú)
//=====================================
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;
}
}
//============================================
//語(yǔ)法格式: unsigned int DS18S20_Read_Byte(void)
//實(shí)現(xiàn)功能: 讀出DS18S20的一個(gè)字節(jié)內(nèi)容
//參數(shù): 無(wú)
//返回值: 字節(jié)內(nèi)容,低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;
}
//==============================================
//語(yǔ)法格式: unisigned int DS18S20_Initial(void)
//實(shí)現(xiàn)功能:對(duì)DS18S20的初始化,包括對(duì)端口的初始化
// 以及一次復(fù)位
//參數(shù): 無(wú)
//返回值: 成功->1;失敗->0
//===============================================
extern unsigned int DS18S20_Initial(void)
{
unsigned int i;
// F_18S20_SetSystemCLK(); //49Mhz
F_18S20_Initial_IO(); //IO初始化
i=F_18S20_Reset(); //對(duì)DS18S20復(fù)位
return(i);
}
//=================================================
//語(yǔ)法格式: float DS18S20_Convert_Temp(void)
//實(shí)現(xiàn)功能: 實(shí)現(xiàn)一次溫度轉(zhuǎn)換,并把結(jié)果以實(shí)型數(shù)據(jù)返回
//參數(shù): 無(wú)
//返回值: 溫度值
//==================================================
extern unsigned int DS18S20_Convert_Temp(void)
{
unsigned int i,Data[9];
//float temp;
// F_18S20_SetSystemCLK(); //CPU時(shí)鐘設(shè)置為49Mhz
if(F_18S20_Reset())
{
DS18S20_Write_Byte(0xcc); //跳過(guò)ROM檢查
DS18S20_Write_Byte(0x44); //啟動(dòng)一次轉(zhuǎn)換
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++) //讀取連續(xù)9個(gè)字節(jié)的內(nèi)容
{
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; //轉(zhuǎn)換后的溫度值
}
// F_18S20_RsuSystemCLK(); //系統(tǒng)時(shí)鐘恢復(fù)
return i;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -