在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DS18B20數字溫度計的單片機接口應用詳細說明

Wildesbeast ? 來源:單片機教程網 ? 作者:h1654155169.2086 ? 2020-05-05 14:53 ? 次閱讀

1.DS18B20基本知識

DS18B20數字溫度計是DALLAS公司生產的1-Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統,具有線路簡單,在一根通信線,可以掛很多這樣的數字溫度計,十分方便。

1、DS18B20產品的特點

(1)、只要求一個端口即可實現通信。

(2)、在DS18B20中的每個器件上都有獨一無二的序列號。

(3)、實際應用中不需要外部任何元器件即可實現測溫。

(4)、測量溫度范圍在-55。C到+125。C之間。

(5)、數字溫度計的分辨率用戶可以從9位到12位選擇。

(6)、內部有溫度上、下限告警設置。

2、DS18B20的引腳介紹

TO-92封裝的DS18B20的引腳排列見圖1,其引腳功能描述見表1。

(底視圖)

圖1

表1DS18B20詳細引腳功能描述

序號名稱引腳功能描述

1GND地信號

2DQ數據輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源。

3VDD可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。

3. DS18B20的使用方法

由于DS18B20采用的是1-Wire總線協議方式,即在一根數據線實現數據的雙向傳輸,而對AT89S51單片機來說,硬件上并不支持單總線協議,因此,我們必須采用軟件的方法來模擬單總線的協議時序來完成對DS18B20芯片的訪問。

由于DS18B20是在一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數據,在進行寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。

DS18B20的復位時序

DS18B20的讀時序

對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。

對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓DS18B20把數據傳輸到單總線上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。

DS18B20的寫時序

對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。

對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內就得釋放單總線。

4. 實驗任務

用一片DS18B20構成測溫系統,測量的溫度精度達到0.1度,測量的溫度的范圍在-20度到+100度之間,用8位數碼管顯示出來。

5. 電路原理

6. 系統板上硬件連線

(1). 把“單片機系統”區域中的P0.0-P0.7用8芯排線連接到“動態數碼顯示”區域中的ABCDEFGH端子上。

(2). 把“單片機系統”區域中的P2.0-P2.7用8芯排線連接到“動態數碼顯示”區域中的S1S2S3S4S5S6S7S8端子上。

(3). 把DS18B20芯片插入“四路單總線”區域中的任一個插座中,注意電源與地信號不要接反。

(4). 把“四路單總線”區域中的對應的DQ端子連接到“單片機系統”區域中的P3.7/RD端子上。

7. C語言源程序

#include 《AT89X52.H》

#include 《INTRINS.h》

unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x00,0x40};

unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,

25,28,31,34,38,41,44,48,

50,53,56,59,63,66,69,72,

75,78,81,84,88,91,94,97};

unsigned char displaycount;

unsigned char displaybuf[8]={16,16,16,16,16,16,16,16};

unsigned char timecount;

unsigned char readdata[8];

sbit DQ=P3^7;

bit sflag;

bit resetpulse(void)

{

unsigned char i;

DQ=0;

for(i=255;i》0;i--);

DQ=1;

for(i=60;i》0;i--);

return(DQ);

for(i=200;i》0;i--);

}

void writecommandtods18b20(unsigned char command)

{

unsigned char i;

unsigned char j;

for(i=0;i《8;i++)

{

if((command & 0x01)==0)

{

DQ=0;

for(j=35;j》0;j--);

DQ=1;

}

else

{

DQ=0;

for(j=2;j》0;j--);

DQ=1;

for(j=33;j》0;j--);

}

command=_cror_(command,1);

}

}

unsigned char readdatafromds18b20(void)

{

unsigned char i;

unsigned char j;

unsigned char temp;

temp=0;

for(i=0;i《8;i++)

{

temp=_cror_(temp,1);

DQ=0;

_nop_();

_nop_();

DQ=1;

for(j=10;j》0;j--);

if(DQ==1)

{

temp=temp | 0x80;

}

else

{

temp=temp | 0x00;

}

for(j=200;j》0;j--);

}

return(temp);

}

void main(void)

{

TMOD=0x01;

TH0=(65536-4000)/256;

TL0=(65536-4000)%6;

ET0=1;

EA=1;

while(resetpulse());

writecommandtods18b20(0xcc);

writecommandtods18b20(0x44);

TR0=1;

while(1)

{

;

}

}

void t0(void) interrupt 1 using 0

{

unsigned char x;

unsigned int result;

TH0=(65536-4000)/256;

TL0=(65536-4000)%6;

if(displaycount==2)

{

P0=displaycode[displaybuf[displaycount]] | 0x80;

}

else

{

P0=displaycode[displaybuf[displaycount]];

}

P2=displaybit[displaycount];

displaycount++;

if(displaycount==8)

{

displaycount=0;

}

timecount++;

if(timecount==150)

{

timecount=0;

while(resetpulse());

writecommandtods18b20(0xcc);

writecommandtods18b20(0xbe);

readdata[0]=readdatafromds18b20();

readdata[1]=readdatafromds18b20();

for(x=0;x《8;x++)

{

displaybuf[x]=16;

}

sflag=0;

if((readdata[1] & 0xf8)!=0x00)

{

sflag=1;

readdata[1]=~readdata[1];

readdata[0]=~readdata[0];

result=readdata[0]+1;

readdata[0]=result;

if(result》255)

{

readdata[1]++;

}

}

readdata[1]=readdata[1]《《4;

readdata[1]=readdata[1] & 0x70;

x=readdata[0];

x=x》》4;

x=x & 0x0f;

readdata[1]=readdata[1] | x;

x=2;

result=readdata[1];

while(result/10)

{

displaybuf[x]=result;

result=result/10;

x++;

}

displaybuf[x]=result;

if(sflag==1)

{

displaybuf[x+1]=17;

}

x=readdata[0] & 0x0f;

x=x《《1;

displaybuf[0]=(dotcode[x]);

displaybuf[1]=(dotcode[x])/10;

while(resetpulse());

writecommandtods18b20(0xcc);

writecommandtods18b20(0x44);

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6037

    文章

    44558

    瀏覽量

    635355
  • DS18B20
    +關注

    關注

    10

    文章

    779

    瀏覽量

    80869
  • 溫度計
    +關注

    關注

    6

    文章

    404

    瀏覽量

    78470
收藏 人收藏

    評論

    相關推薦

    DS18B20 數字溫度計特點

    一.DS18B20特點 DS18B20 數字溫度計提供12位(二進制)溫度讀數的數字型傳感器。傳
    的頭像 發表于 09-11 11:19 ?2845次閱讀
    <b class='flag-5'>DS18B20</b> <b class='flag-5'>數字</b><b class='flag-5'>溫度計</b>特點

    基于DS18B20的51單片機數字溫度計設計

    本帖最后由 kuofonfon 于 2020-1-3 17:39 編輯 實驗原理DS18B20數字溫度計是DALLAS公司生產的1-Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它
    發表于 11-04 12:27

    數字溫度計DS18B20的特性及應用

    DS18B20是美國DALLAS公司生產的可完全替代DS1820的全新型單線數字溫度計.文中介紹了DS18B20的性能結構和與
    發表于 04-25 15:19 ?69次下載

    基于MSP430單片機DS18B20數字溫度計

    為了在工業生產及過程控制中準確測量溫度,設計了一種基于低功耗MSP430單片機數字溫度計。整個系統通過單片機MSP430F1121A控制
    發表于 11-22 16:14 ?269次下載

    DS18B20數字溫度計使用

    DS18B20數字溫度計使用 1.DS18B20基本知識 DS18B20數字
    發表于 01-25 11:29 ?1569次閱讀
    <b class='flag-5'>DS18B20</b><b class='flag-5'>數字</b><b class='flag-5'>溫度計</b>使用

    基于DS18B20數字溫度計設計

    基于DS18B20數字溫度計設計,供大家下載。
    發表于 12-21 18:26 ?24次下載

    DS18B20溫度測試實驗

    基于單片機STC89C52的DS18B20數字溫度計,測量實時溫度。
    發表于 12-31 14:36 ?10次下載

    DS18B20數字溫度計使用

    DS18B20數字溫度計使用。
    發表于 05-05 14:56 ?0次下載

    51單片機DS18B20數字溫度計

    51單片機DS18B20數字溫度計。
    發表于 05-19 15:32 ?117次下載

    DS18B20數字溫度計使用

    學習單片機電路圖的很好的資料——DS18B20數字溫度計使用
    發表于 11-03 15:15 ?0次下載

    DS18B20溫度計原理圖和PCB和單片機程序

    DS18B20溫度計原理圖和PCB和單片機程序
    發表于 11-06 16:43 ?46次下載

    使用89C51單片機DS18B20溫度傳感器設計數字溫度計的源代碼

    本文檔的主要內容詳細介紹的是使用89C51單片機DS18B20溫度傳感器設計數字溫度計的源代碼
    發表于 03-07 17:06 ?97次下載
    使用89C51<b class='flag-5'>單片機</b>和<b class='flag-5'>DS18B20</b><b class='flag-5'>溫度</b>傳感器設計<b class='flag-5'>數字</b><b class='flag-5'>溫度計</b>的源代碼

    DS18B20溫度計原理圖和PCB及單片機程序免費下載

    本文檔的主要內容詳細介紹的是DS18B20溫度計原理圖和PCB及單片機程序免費下載。
    發表于 06-16 16:22 ?79次下載
    <b class='flag-5'>DS18B20</b><b class='flag-5'>溫度計</b>原理圖和PCB及<b class='flag-5'>單片機</b>程序免費下載

    使用STC單片機實現DS18B20溫度計的C51配套例程免費下載

    本文檔的主要內容詳細介紹的是使用STC單片機實現DS18B20溫度計的C51配套例程免費下載。
    發表于 03-16 10:12 ?40次下載

    DS18B20溫度傳感器的數字溫度計設計案例

    本設計采用的主控芯片是ATMEL公司的AT89S52單片機,數字溫度傳感器是DALLAS公司的DS18B20。本設計用數字傳感器
    發表于 05-09 16:02 ?53次下載
    主站蜘蛛池模板: 天天做天天爱天天操| 黄网在线免费观看| 欧美最猛黑人xxxx黑人猛交黄| av福利网址网站| 男人天堂网www| 手机看片国产在线| 女人的逼毛片| 免费一级在线观看| 手机在线看| 韩国一区二区三区视频| 久久这里只有精品免费视频| 日本在线黄色网址| 成人国产一区| 国产欧美亚洲精品第二区首页 | 四虎黄色影院| 成人欧美一区二区三区黑人免费 | 天堂资源8中文最新版在线| 色偷偷亚洲综合网亚洲| 欧美成人午夜精品免费福利| 欧美黄一片| 亚洲欧美人成网站综合在线| 国产精品国产主播在线观看| 亚洲精品日韩专区silk| 色老头在线精品视频在线播放| 亚洲三级色| 国模欢欢大尺度| 国产三级精品视频| 国产在线啪| 免费观看a毛片一区二区不卡| 久久久午夜视频| 天堂资源中文在线| 天天插天天狠天天透| 伊人亚洲综合网成人| 91欧美精品激情在线观看| 亚洲国产人久久久成人精品网站| 看真人一一级毛片| 婷婷亚洲五月琪琪综合| 欧美乱论视频| 亚洲欧美啪啪| 六月丁香婷婷天天在线| 婷婷六月丁香午夜爱爱|