📄 main.c
字号:
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
extern int display(float data);
int main(void)
{
unsigned int temp=0;
float fTemp=0.0;
temp = DS18B20_Initial(); //初始化DS18B20
fTemp = DS18B20_ReadTemp(); //进行一次测温并读取测量温度值
while(1)
{
*P_Watchdog_Clear = 0x0001;
}
}
//=====================================================================
//语法格式: float DS18B20_ReadTemp(void)
//实现功能: 启动一次DS18B20测温,并读取测温结果,以浮点数返回
// 在本函数中,启动测温后在程序里面作了等待,以待测DS18B20
// 完成本次测温转换如用户觉得不合适,可对本函数进行个性化的
// 修改,以适应自己的应用需求
//参数: 无
//返回值: 测温值,浮点数 以摄氏度为单位
//=====================================================================
float DS18B20_ReadTemp(void)
{
int uiTemp=0;
float fTemp=0.0;
unsigned int Data[9];
F_18B20_SetSystemCLK();
if(F_18B20_Reset())
{
DS18B20_WriteByte(0xcc); //Skip ROM
DS18B20_WriteByte(0x44); //Start one time conver
F_18B20_Delay1(); //延时750ms用来完成温度转换
while(F_18B20_Read_DQ()==0) //wait for converting OK
{
uiTemp++;
}
F_18B20_Reset();
DS18B20_WriteByte(0xcc); //Skip ROM
DS18B20_WriteByte(0xbe); //Read Scratchpad
for(uiTemp=0;uiTemp<9;uiTemp++)
{
Data[uiTemp] = DS18B20_ReadByte();
}
F_18B20_Reset();
uiTemp = (Data[0]>>8)|Data[1];
fTemp = (float)uiTemp;
fTemp = fTemp/16;
display(fTemp);
}
F_18B20_RsuSystemCLK();
return fTemp;
}
//=====================================================================
//语法格式: unsigned int DS18B20_Initial(void)
//实现功能: DS18B20初始化
// 包括对端口的初始化,以及对DS18B20进行一次复位(总线)
//参数: 无
//返回值: 初始化结果,返回0表示初始化失败
//=====================================================================
unsigned int DS18B20_Initial(void)
{
unsigned int uiTemp=0;
F_18B20_SetSystemCLK();
F_18B20_Initial_IO();
uiTemp = F_18B20_Reset();
F_18B20_RsuSystemCLK();
return uiTemp;
}
//=====================================================================
//语法格式: void DS18B20_WriteByte(unsigned int Data)
//实现功能: DS18B20字节写入子程序
// 无需修改,实际上是属于整合的程序,供其它的API调用
//参数: Data 要写入的数值,低八位有效
//返回值: 无
//=====================================================================
void DS18B20_WriteByte(unsigned int Data)
{
unsigned int i;
for(i=0;i<8;i++)
{
if(Data&0x0001)
F_18B20_Write_1();
else
F_18B20_Write_0();
Data = Data>>1;
}
}
//=====================================================================
//语法格式: unsigned int DS18B20_ReadByte(void)
//实现功能: DS18B20字节读出子程序
// 无需修改,实际上是属于整合的程序,供其它的API调用
//参数: 无
//返回值: 读出的字节数据,低八位有效
//=====================================================================
unsigned int DS18B20_ReadByte(void)
{
unsigned int i,Data=0;
for(i=0;i<8;i++)
{
Data = Data>>1;
Data = Data|F_18B20_Read_DQ();
}
return Data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -