?? sensor.h
字號:
#ifndef _SENSOR
#define _SENSOR
/*************************************************************************/
#define uchar unsigned char
#define uint unsigned int
/***************************DS18B20管腳配置*******************************/
sbit dq = P2 ^ 1;
/********************************************************************************************
* 函數名稱:Sensor_Delay(uint16 count)//延時函數
* 功 能:DS18B20軟件延時專用
* 入口參數:count 延時參數,值越大,延時越長
* 出口參數:無
*********************************************************************************************/
void Sensor_Delay(uchar count)//延時函數
{
while(count--);
}
/********************************************************************************************
* 函數名稱:Sensor_Read_Byte()
* 功 能:從DS18B20讀一個字節
* 入口參數:無
* 出口參數:從DS18B20讀出的一個字節
*********************************************************************************************/
uchar Sensor_Read_Byte(void)
{
uchar i = 0;
uchar temp = 0;
for(i=8;i>0;i--)
{
dq = 0; // 給脈沖信號
temp >>= 1;
dq = 1; // 給脈沖信號
if(dq)
temp |= 0x80;
Sensor_Delay(4);
}
return (temp);
}
/********************************************************************************************
* 函數名稱:Sensor_Write_Byte()
* 功 能:向DS18B20寫一個字節
* 入口參數:temp 要寫入DS18B20的一字節數據
* 出口參數:無
*********************************************************************************************/
void Sensor_Write_Byte(uchar temp)
{
uchar i = 0;
for(i=8;i>0;i--)
{
dq = 0;
dq = temp&0x01;
Sensor_Delay(4);
dq = 1;
temp>>=1;
}
}
/********************************************************************************************
* 函數名稱:DS18B20_Init()
* 功 能:DS18B20初始化
* 入口參數:無
* 出口參數:返回值為1則初始化成功
* 返回值為0則初始化失敗
*********************************************************************************************/
uchar Sensor_Initial(void)
{
uchar i = 0;
dq = 1; // DQ復位
Sensor_Delay(8); // 稍做延時
dq = 0; // 單片機將DQ拉低
Sensor_Delay(80); // 精確延時,大于480us
dq = 1; // 拉高總線
Sensor_Delay(14); // 稍做延時后
i = dq; // 若x=0則初始化成功,若x=1則初始化失敗
Sensor_Delay(20);
return (~i);
}
/********************************************************************************************
* 函數名稱:Sensor_Fresh( temperature )
* 功 能:讀取并顯示溫度
* 入口參數:無
* 出口參數:無
*********************************************************************************************/
void Sensor_Fresh(uchar * temperature )
{
Sensor_Initial();
Sensor_Write_Byte( 0xCC ); // 跳過讀序號列號的操作
Sensor_Write_Byte( 0x44 ); // 啟動溫度轉換
Sensor_Initial();
Sensor_Write_Byte( 0xCC ); // 跳過讀序號列號的操作
Sensor_Write_Byte( 0xBE ); // 讀取溫度寄存器
temperature [0] = Sensor_Read_Byte();
temperature [1] = Sensor_Read_Byte();
}/********************************************************************************/
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -