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

📄 main.c

📁 温度传感器ds18b20的操作代码
💻 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 + -