欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 363|回復(fù): 0
收起左側(cè)

DS18B20例程

[復(fù)制鏈接]
ID:460597 發(fā)表于 2025-9-9 15:18 | 顯示全部樓層 |閱讀模式
#include <DS18B20.h>
#include "intrins.h"

unsigned char DS18B20_time;                                                     
                                                                                                                                                                                                                               
sbit DQ = P1^4 ;  //定義DS18B20端口DQ  
                                                                                                                                                                                                                               
/************************************************************************
以下是DS18B20的操作程序
************************************************************************/
void delay_18B20(unsigned int i)
{
    while (i--)
    { _nop_();_nop_();_nop_();_nop_();
    }
}
//設(shè)置全局變量,專門用于嚴(yán)格延時(shí)
/*****************************************************
函數(shù)功能:將DS18B20傳感器初始化,讀取應(yīng)答信號
出口參數(shù):flag
***************************************************/
/*初始化ds1820                                      */
/*******************************************************************/
bit Init_DS18B20(void)
{ unsigned char x=0;
DQ = 1;          //DQ拉高
delay_18B20(80); //延時(shí)
DQ = 0;          //DQ拉低
delay_18B20(800); //延時(shí) 480us以上
DQ = 1;          //DQ拉高
delay_18B20(140);
x=DQ;   delay_18B20(200);
}

/*****************************************************
函數(shù)功能:從DS18B20讀取一個(gè)字節(jié)數(shù)據(jù)
出口參數(shù):dat
***************************************************/
unsigned char ReadOneChar(void)
{
                uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
    DQ = 0; // ?????
    dat>>=1;
    DQ = 1; // ?????
    if(DQ)
    dat|=0x80;
    delay_18B20(40);     //40
}
   return(dat);
}
/*****************************************************
函數(shù)功能:向DS18B20寫入一個(gè)字節(jié)數(shù)據(jù)
入口參數(shù):dat
***************************************************/  
WriteOneChar(unsigned char dat)
{
        unsigned char i=0;
   for (i=8; i>0; i--)
   {
   DQ = 0;
    DQ = dat&0x01;
    delay_18B20(50); //50
    DQ = 1;
    dat>>=1;
}
}

/*****************************************************
函數(shù)功能:做好讀溫度的準(zhǔn)備
***************************************************/
void Read_Temperature(void)
{
      Init_DS18B20();     //將DS18B20初始化
                WriteOneChar(0xCC); // 跳過讀序號列號的操作
                WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換          
           for(DS18B20_time=0;DS18B20_time<100;DS18B20_time++)
                    ;         //溫度轉(zhuǎn)換需要一點(diǎn)時(shí)間
                Init_DS18B20();     //將DS18B20初始化
                WriteOneChar(0xCC); //跳過讀序號列號的操作
                WriteOneChar(0xBE); //讀取溫度寄存器,前兩個(gè)分別是溫度的低位和高位       
}


/******************************************************************************
以下是與溫度有關(guān)的顯示設(shè)置
******************************************************************************/

/****************************************************
函數(shù)功能:溫度的處理
入口參數(shù):x
***************************************************/

unsigned int  Disp_Temperature()
{       
unsigned char b=0;
unsigned char TN;      //儲存溫度的整數(shù)部分
unsigned char TD;       //儲存溫度的小數(shù)部分
unsigned int a;
unsigned int auu;
unsigned int temp_value=0;
Init_DS18B20();
WriteOneChar(0xCC);   
WriteOneChar(0x44);
delay_18B20(1);     
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
delay_18B20(1);
a=ReadOneChar();    //???????
b=ReadOneChar();      //???????
TN=b*16+a/16;      //實(shí)際溫度值=(TH*256+TL)/16,即:TH*16+TL/16
                                          //這樣得出的是溫度的整數(shù)部分,小數(shù)部分被丟棄了
TD=(a%16)*10/16;    //計(jì)算溫度的小數(shù)部分,將余數(shù)乘以10再除以16取整,
                                          //這樣得到的是溫度小數(shù)部分的第一位數(shù)字(保留1位小數(shù))

         auu=TN*10+TD;

         return auu;
}




回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表