![DS18B20溫度傳感器及C5111_第1頁(yè)](http://file4.renrendoc.com/view8/M00/32/0B/wKhkGWbC-zKABrk7AAJ4jAQnwhc001.jpg)
![DS18B20溫度傳感器及C5111_第2頁(yè)](http://file4.renrendoc.com/view8/M00/32/0B/wKhkGWbC-zKABrk7AAJ4jAQnwhc0012.jpg)
![DS18B20溫度傳感器及C5111_第3頁(yè)](http://file4.renrendoc.com/view8/M00/32/0B/wKhkGWbC-zKABrk7AAJ4jAQnwhc0013.jpg)
![DS18B20溫度傳感器及C5111_第4頁(yè)](http://file4.renrendoc.com/view8/M00/32/0B/wKhkGWbC-zKABrk7AAJ4jAQnwhc0014.jpg)
![DS18B20溫度傳感器及C5111_第5頁(yè)](http://file4.renrendoc.com/view8/M00/32/0B/wKhkGWbC-zKABrk7AAJ4jAQnwhc0015.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
DS18B20溫度傳感器及C51+freescale9S12單片機(jī)程序DALLAS最新單線數(shù)字溫度傳感器DS18B20簡(jiǎn)介新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟(jì)Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。DS18B20、DS1822“一線總線”數(shù)字化溫度傳感器同DS1820一樣,DS18B20也支持“一線總線”接口,測(cè)量溫度范圍為-55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C。DS1822的精度較差為±2°C?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。DS18B20、DS1822的特性DS18B20可以程序設(shè)定9~12位的分辨率,精度為±0.5°C。可選更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價(jià)格比也非常出色!DS1822與DS18B20軟件兼容,是DS18B20的簡(jiǎn)化版本。省略了存儲(chǔ)用戶定義報(bào)警溫度、分辨率參數(shù)的EEPROM,精度降低為±2°C,適用于對(duì)性能要求不高,成本控制嚴(yán)格的應(yīng)用,是經(jīng)濟(jì)型產(chǎn)品。繼“一線總線”的早期產(chǎn)品后,DS1820開辟了溫度傳感器技術(shù)的新概念。DS18B20和DS1822使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng)。DS18B20的內(nèi)部結(jié)構(gòu)
DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如下:
DQ為數(shù)字信號(hào)輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。
光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。
DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。
這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。
例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。DS18B20溫度傳感器的存儲(chǔ)器
DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。
暫存存儲(chǔ)器包含了8個(gè)連續(xù)字節(jié),前兩個(gè)字節(jié)是測(cè)得的溫度信息,第一個(gè)字節(jié)的內(nèi)容是溫度的低八位,第二個(gè)字節(jié)是溫度的高八位。第三個(gè)和第四個(gè)字節(jié)是TH、TL的易失性拷貝,第五個(gè)字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個(gè)字節(jié)的內(nèi)容在每一次上電復(fù)位時(shí)被刷新。第六、七、八個(gè)字節(jié)用于內(nèi)部計(jì)算。第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié)。該字節(jié)各位的意義如下:
TMR1R011111
低五位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1和R0用來(lái)設(shè)置分辨率,如下表所示:(DS18B20出廠時(shí)被設(shè)置為12位)
分辨率設(shè)置表:R1R0分辨率溫度最大轉(zhuǎn)換時(shí)間009位93.75ms0110位187.5ms1011位375ms1112位750ms
根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號(hào)后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。DS1820使用中注意事項(xiàng)DS1820雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題:(1)較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS1820進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì)DS1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。(2)在DS1820的有關(guān)資料中均未提及單總線上所掛DS1820數(shù)量問(wèn)題,容易使人誤認(rèn)為可以掛任意多個(gè)DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS1820超過(guò)8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。(3)連接DS1820的總線電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過(guò)50m時(shí),讀取的測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),正常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻?。因此,在用DS1820進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線分布電容和阻抗匹配問(wèn)題。(4)在DS1820測(cè)溫程序設(shè)計(jì)中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號(hào),一旦某個(gè)DS1820接觸不好或斷線,當(dāng)程序讀該DS1820時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。
測(cè)溫電纜線建議采用屏蔽4芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另一組接VCC和地線,屏蔽層在源端單點(diǎn)接地。DS18B20溫度傳感器C51程序,無(wú)CRC2008-06-3011:18/********************************************************
*DS18B20溫度傳感器
*
*
C51
*
*yajou2008-06-28
無(wú)CRC
*
********************************************************/#include"reg51.h"
#include"intrins.h"
#include"DS18B20.h"
/********************************************************
*us延時(shí)程序
*
********************************************************/
voidDelayus(ucharus)
{
while(us--);//12M,一次6us,加進(jìn)入退出14us(8M晶振,一次9us)
}
/********************************************************
*DS18B20初始化
*
********************************************************/
bitDs18b20_Init(void)//存在返0,否則返1
{
bittemp=1;
ucharouttime=ReDetectTime;//超時(shí)時(shí)間
while(outtime--&&temp)
{
Delayus(10);//(250)1514us時(shí)間可以減小嗎
ReleaseDQ();
Delay2us();
PullDownDQ();
Delayus(100);//614us(480-960)
ReleaseDQ();
Delayus(10);//73us(>60)
temp=dq;
Delayus(70);//us
}
returntemp;
}/********************************************************
*寫bit2DS18B20
*
********************************************************/
voidDs18b20_WriteBit(bitbitdata)
{
if(bitdata)
{
PullDownDQ();
Delay2us();
//2us(>1us)
ReleaseDQ();//(上述1-15)
Delayus(12);//86us(45-x,總時(shí)間>60)
}else
{
PullDownDQ();
Delayus(12);//86us(60-120)
}
ReleaseDQ();
Delay2us();
//2us(>1us)
}/********************************************************
*寫B(tài)yteDS18B20
*
********************************************************/
voidDs18b20_WriteByte(ucharchrdata)
{
ucharii;
for(ii=0;ii<8;ii++)
{
Ds18b20_WriteBit(chrdata&0x01);
chrdata>>=1;
}
}/********************************************************
*寫DS18B20
*
********************************************************/
//voidDs18b20_Write(uchar*p_readdata,ucharbytes)
//{
//while(bytes--)
//{
//
Ds18b20_WriteByte(*p_readdata);
//
p_readdata++;
//}
//}
/********************************************************
*讀bitFromDS18B20
*
********************************************************/
bitDs18b20_ReadBit(void)
{
bitbitdata;
PullDownDQ();
Delay2us();
//2us(>1us)
ReleaseDQ();
Delay8us();
//8us(<15us)
bitdata=dq;
Delayus(7);//86us(上述總時(shí)間要>60us)
returnbitdata;
}
/********************************************************
*讀ByteDS18B20
*
********************************************************/
ucharDs18b20_ReadByte(void)
{
ucharii,chardata;
for(ii=0;ii<8;ii++)
{
chardata>>=1;
if(Ds18b20_ReadBit())chardata|=0x80;
}
returnchardata;
}
/********************************************************
*讀DS18B20ROM
*
********************************************************/
bitDs18b20_ReadRom(uchar*p_readdata)//成功返0,失敗返1
{
ucharii=8;
if(Ds18b20_Init())return1;
Ds18b20_WriteByte(ReadROM);
while(ii--)
{
*p_readdata=Ds18b20_ReadByte();
p_readdata++;
}
return0;
}
/********************************************************
*讀DS18B20EE
*
********************************************************/
bitDs18b20_ReadEE(uchar*p_readdata)//成功返0,失敗返1
{
ucharii=2;if(Ds18b20_Init())return1;
Ds18b20_WriteByte(SkipROM);
Ds18b20_WriteByte(ReadScr);
while(ii--)
{
*p_readdata=Ds18b20_ReadByte();
p_readdata++;
}
return0;
}
/********************************************************
*溫度采集計(jì)算
*
********************************************************/
bitTempCal(float*p_wendu)//成功返0,失敗返1(溫度范圍-55---+128)
{
uchartemp[9],ii;
uinttmp;
floattmpwendu;TR1=0;
TR0=0;//讀暫存器和CRC值-----------------------
if(Ds18b20_ReadEE(temp))
{
TR1=1;
TR0=1;
return1;
}
//-------------------------------------
//CRC校驗(yàn)------------------------------
//
//此處應(yīng)加入CRC校驗(yàn)等
//
//
//-------------------------------------
//使溫度值寫入相應(yīng)的wendu[i]數(shù)組中-----
for(ii=i;ii>0;ii--)
{
p_wendu++;
}
i++;
if(i>4)i=0;
//-------------------------------------
//溫度正負(fù)數(shù)處理-----------------------
////-------------------------------------
//溫度計(jì)算-----------------------------
tmp=temp[1];
//
tmp<<=8;
//
tmp|=temp[0];
//組成溫度的兩字節(jié)合并
tmpwendu=tmp;
*p_wendu=tmpwendu/16;
//-------------------------------------
//開始溫度轉(zhuǎn)換-------------------------
if(Ds18b20_Init())
{
TR1=1;
TR0=1;
return1;
}
Ds18b20_WriteByte(SkipROM);
Ds18b20_WriteByte(Convert);
ReleaseDQ();//寄生電源時(shí)要拉高DQ
//------------------------------------TR1=1;
TR0=1;
return0;
}//////////DS18B20.h//////////////////////////********************************************************
*I/O口定義
*
********************************************************/
sbitdq=P1^3;
sbitdv=P1^4;//DS18B20強(qiáng)上拉電源
/********************************************************
*命令字定義
*
********************************************************/
#defineucharunsignedchar
#defineuintunsignedint
#defineReleaseDQ()
dq=1;
//上拉/釋放總線
#definePullDownDQ()dq=0;
//下拉總線#defineDelay2us()
_nop_();_nop_();//延時(shí)2us,每nop1us
#defineDelay8us()
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//設(shè)置重復(fù)檢測(cè)次次數(shù),超出次數(shù)則超時(shí)
#define
ReDetectTime
20
//ds18b20命令
#define
SkipROM
0xCC
#define
MatchROM
0x55
#define
ReadROM
0x33
#define
SearchROM
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 用戶行為對(duì)共享住宿影響研究-深度研究
- 知識(shí)傳播效果評(píng)價(jià)模型研究-深度研究
- 地球系統(tǒng)多尺度分析-深度研究
- 生殖細(xì)胞基因編輯-深度研究
- 2025年高溫氣冷堆及配套產(chǎn)品項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模范
- 2025年民營(yíng)醫(yī)療服務(wù)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模式
- 代理品牌轉(zhuǎn)讓合同范例
- 2025年中國(guó)重型包裝行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略咨詢報(bào)告
- 加工店鋪轉(zhuǎn)讓合同范例
- 2025年度建筑材料耐久性檢測(cè)服務(wù)合同
- 特種設(shè)備及重要設(shè)備安全管理制度
- 《自主神經(jīng)系統(tǒng)》課件
- 2025集團(tuán)公司內(nèi)部借款合同范本
- 遼寧省名校聯(lián)盟2025屆高三上學(xué)期1月份聯(lián)合考試語(yǔ)文試題(含答案)
- 2025年山西地質(zhì)集團(tuán)社會(huì)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年遼寧省沈陽(yáng)市沈河區(qū)七年級(jí)(上)期末英語(yǔ)試卷(含答案)
- 前牙即刻種植的臨床應(yīng)用
- 2024-2025學(xué)年初中七年級(jí)上學(xué)期數(shù)學(xué)期末綜合卷(人教版)含答案
- 體育活動(dòng)策劃與組織課件
- 公司違規(guī)違紀(jì)連帶處罰制度模版(2篇)
- 2025屆高考物理二輪總復(fù)習(xí)第一編專題2能量與動(dòng)量第1講動(dòng)能定理機(jī)械能守恒定律功能關(guān)系的應(yīng)用課件
評(píng)論
0/150
提交評(píng)論