新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STC12C5A60S2控制溫度傳感器DS18B20 c程序

STC12C5A60S2控制溫度傳感器DS18B20 c程序

作者: 時(shí)間:2013-05-11 來源:網(wǎng)絡(luò) 收藏

控制 c程序工作頻率:12.000MHz
#include"REG51.H"
#include"INTRINS.H" typedefunsignedcharBYTE; sbitDQ=P3^3;//的數(shù)據(jù)口位P3.3


BYTETPH;//存放溫度值的高字節(jié)
BYTETPL;//存放溫度值的低字節(jié) voidDelayXus(BYTEn);
void_Reset();
voidDS18B20_WriteByte(BYTEdat);
BYTEDS18B20_ReadByte(); voidmain()
{
DS18B20_Reset();//設(shè)備復(fù)位
DS18B20_WriteByte(0xCC);//跳過ROM命令
DS18B20_WriteByte(0x44);//開始轉(zhuǎn)換命令
while(!DQ);//等待轉(zhuǎn)換完成 DS18B20_Reset();//設(shè)備復(fù)位
DS18B20_WriteByte(0xCC);//跳過ROM命令
DS18B20_WriteByte(0xBE);//讀暫存存儲(chǔ)器命令
TPL=DS18B20_ReadByte();//讀溫度低字節(jié)
TPH=DS18B20_ReadByte();//讀溫度高字節(jié) while(1);
} /**************************************
延時(shí)X微秒(@12M)
不同的工作環(huán)境,需要調(diào)整此函數(shù)
此延時(shí)函數(shù)是使用1T的指令周期進(jìn)行計(jì)算,與傳統(tǒng)的12T的MCU不同
**************************************/
voidDelayXus(BYTEn)
{
while(n--)
{
_nop_();
_nop_();
}
} /**************************************
復(fù)位DS18B20,并檢測設(shè)備是否存在
**************************************/
voidDS18B20_Reset()
{
CY=1;
while(CY)
{
DQ=0;//送出低電平復(fù)位信號
DelayXus(240);//延時(shí)至少480us
DelayXus(240);
DQ=1;//釋放數(shù)據(jù)線
DelayXus(60);//等待60us
CY=DQ;//檢測存在脈沖
DelayXus(240);//等待設(shè)備釋放數(shù)據(jù)線
DelayXus(180);
}
} /**************************************
從DS18B20讀1字節(jié)數(shù)據(jù)
**************************************/
BYTEDS18B20_ReadByte()
{
BYTEi;
BYTEdat=0; for(i=0;i8;i++)//8位計(jì)數(shù)器
{
dat>>=1;
DQ=0;//開始時(shí)間片
DelayXus(1);//延時(shí)等待
DQ=1;//準(zhǔn)備接收
DelayXus(1);//接收延時(shí)
if(DQ)dat|=0x80;//讀取數(shù)據(jù)
DelayXus(60);//等待時(shí)間片結(jié)束
} returndat;
} /**************************************
向DS18B20寫1字節(jié)數(shù)據(jù)
**************************************/
voidDS18B20_WriteByte(BYTEdat)
{
chari; for(i=0;i8;i++)//8位計(jì)數(shù)器
{
DQ=0;//開始時(shí)間片
DelayXus(1);//延時(shí)等待
dat>>=1;//送出數(shù)據(jù)
DQ=CY;
DelayXus(60);//等待時(shí)間片結(jié)束
DQ=1;//恢復(fù)數(shù)據(jù)線
DelayXus(1);//恢復(fù)延時(shí)
}
}

傳感器相關(guān)文章:傳感器工作原理


風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理
塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理


關(guān)鍵詞: STC12C5A60S2 溫度傳感器 DS18B20

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉