0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DS18B20的組成以及工作過(guò)程

ss ? 來(lái)源:李天生博客園、CSDN_朱堅(jiān)強(qiáng) ? 作者:李天生博客園、 ? 2021-07-08 09:18 ? 次閱讀

DS18B20一般都是由64位ROM溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器組成。ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。

DS18B20的工作過(guò)程:

1.復(fù)位操作

2.執(zhí)行ROM操作的5條指令之一:1)讀ROM,2)匹配ROM,3)搜索ROM,4)跳過(guò)ROM,5)報(bào)警搜索。

3.存儲(chǔ)器操作命令:溫度轉(zhuǎn)換、讀取溫度、設(shè)定上下限溫度值等指令

4.讀取溫度數(shù)據(jù):主機(jī)讀取溫度數(shù)據(jù)后進(jìn)行數(shù)據(jù)處理。

應(yīng)用實(shí)例

數(shù)字電子溫度計(jì)

功能:顯示當(dāng)前溫度值,可顯示正和負(fù)溫度值

程序:

#include《reg52.h》

/*------SEG PORT-----*/

#define LEDADDR P2

#define LED_port P0

/*------DS18B20 PORT-----*/

sbit DB_B20=P0^0;

/*-----COMMON FUNCTION----*/

void delay_us(unsigned int time);

/*-----SEG FUNCTION-------*/

unsigned char seg_val[6];

unsigned char ledcode[12] = {0XC0,0XF9,0XA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf,0xff};//共陽(yáng)極數(shù)碼管0,1,2,3,4,5,6,7,8,9,-,null

unsigned char currled=0;

unsigned char led_en=0x04;//

void display(void);

void display_tem(void);

/*--- DS18B20 FUNCTION-----*/

unsigned char tem_pnt;

unsigned char tem_num;

bit tem_sign;

bit reset_B20(void);

unsigned char read_b20_byte(void);

void write_b20_byte(unsigned char);

void convert_cmd_b20(void);

void read_cmd_b20(void);

void data_convert_b20(void);

/*--- TIME FUNCTION-----*/

unsigned char times;

void times_init(void);

/*-----------------------*/

main()

{

times_init();

while(1)

{

display_tem();

display();

}

}

/*-----COMMON FUNCTION----*/

void delay_us(unsigned int us)

{

while(us--);//for(;us》0;us--);//while(time--);

}

/*-----SEG FUNCTION-------*/

void display(void)

{

LEDADDR=0xff;

LED_port=(LED_port&0x03)|led_en;

led_en《《=1;

if(currled==1)

LEDADDR=ledcode[seg_val[currled]]& 0x7f;

else

LEDADDR=ledcode[seg_val[currled]];

currled++;

if(currled==6)

{

currled=0;

led_en=0x04;

}

delay_us(300);

}

void display_tem(void)

{

unsigned char n;

unsigned char p;

if(tem_sign==0)

{

n=~(tem_num-1);

p=~(tem_pnt-1);

}

else

{

n=tem_num;

p=tem_pnt;

}

seg_val[5]=11;

seg_val[4]=11;

seg_val[3]=n/100;

n=n%100;

seg_val[2]=n/10;

if(seg_val[3]==0)

{

seg_val[3]=11;

if(seg_val[2]==0)

seg_val[2]=11;

}

seg_val[1]=n%10;

seg_val[0]=p;

if(seg_val[2]==11 && seg_val[3]==11 && tem_sign==0)

seg_val[2]=10;

else if(seg_val[3]==11 && tem_sign==0)

seg_val[3]=10;

else if(tem_sign==0)

seg_val[4]=10;

}

/*--- DS18B20 FUNCTION-----*/

bit reset_B20(void)

{

bit state;

DB_B20=0;

delay_us(29);//》480us 29

DB_B20=1;

delay_us(3);//15---60us 3

state=DB_B20;

delay_us(25);//480us 25

return state;

}

void write_b20_byte(unsigned char cmd)

{

unsigned char i;

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

{

DB_B20=0;

DB_B20=cmd&0x01;

delay_us(5);

DB_B20=1;

cmd》》=1; //6

}

delay_us(5);

}

unsigned char read_b20_byte(void)

{

unsigned char rbyte=0;

unsigned char i;

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

{

rbyte》》=1;

DB_B20=0;

DB_B20=1;

//delay_us(1);

if(DB_B20)

rbyte |= 0x80;

delay_us(6); //6

}

return rbyte;

}

void convert_cmd_b20(void)

{

reset_B20();

write_b20_byte(0xcc);

write_b20_byte(0x44);

}

void read_cmd_b20(void)

{

reset_B20();

write_b20_byte(0xcc);

write_b20_byte(0xbe);

}

void data_convert_b20(void)

{

unsigned char a;

unsigned char b;

int point;

a=read_b20_byte();

b=read_b20_byte();

point=(a & 0x0f)*625+500;

tem_pnt=point/1000;

tem_num=a》》4 | b《《4;

if(tem_num & 0x80)

tem_sign=0;

else

tem_sign=1;

}

/*--- TIME FUNCTION-----*/

void times_init(void)

{

times=29;

TMOD=0X01;

TH0=0X3C;

TL0=0XB0;

EA=1;

ET0=1;

TR0=1;

}

void time0(void) interrupt 1

{

if(times==19)

convert_cmd_b20();

else if(times==9)

read_cmd_b20();

else if(times==0)

{

data_convert_b20();

times=29;

}

times--;

TH0=0X3C;

TL0=0XB0;

}

/*---------------------*/

整合自:李天生博客園、CSDN_朱堅(jiān)強(qiáng)

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • DS18B20
    +關(guān)注

    關(guān)注

    10

    文章

    779

    瀏覽量

    80943
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】DS18B20、DHT11溫濕度采集

    DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個(gè),實(shí)現(xiàn)多點(diǎn)測(cè)溫,如果數(shù)量過(guò)多,會(huì)使供電電源電壓過(guò)低,從而造成信號(hào)傳輸?shù)牟环€(wěn)定。 工作電源: 3.0~5.5V/DC (可以數(shù)據(jù)線寄生電源) 在
    發(fā)表于 01-01 11:16

    《DNESP32S3使用指南-IDF版_V1.6》第二十九章 DS18B20實(shí)驗(yàn)

    封裝形式,從而使系統(tǒng)設(shè)置靈活、方便,設(shè)定分辨率以及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。其內(nèi)部結(jié)構(gòu)如下圖所示。 圖29.1.1.1 DS18B20內(nèi)部結(jié)構(gòu)圖ROM中的64位序列號(hào)是出廠
    發(fā)表于 12-25 09:43

    CW32模塊使用 DS18B20溫度傳感器

    ,DS18B20可以直接從數(shù)據(jù)線獲得電源(“寄生電源”),消除了每個(gè)DS18B20都有一個(gè)唯一的64位串行代碼,這允許多個(gè)DS18B20在同一條總線上工作。因此,使用一個(gè)微處理器來(lái)實(shí)現(xiàn)
    的頭像 發(fā)表于 11-26 17:47 ?275次閱讀
    CW32模塊使用 <b class='flag-5'>DS18B20</b>溫度傳感器

    DS18B20溫度傳感器的工作原理和硬件設(shè)計(jì)

    通過(guò)本文可以了解DS18B20溫度傳感器工作原理、硬件設(shè)計(jì)、DS18B20單總線接口驅(qū)動(dòng)編寫。
    的頭像 發(fā)表于 10-24 14:38 ?2854次閱讀
    <b class='flag-5'>DS18B20</b>溫度傳感器的<b class='flag-5'>工作</b>原理和硬件設(shè)計(jì)

    ds18b20傳感器的使用方法

    Integrated開發(fā)的一種數(shù)字溫度傳感器,它能夠提供9位到12位的溫度測(cè)量精度,測(cè)量范圍從-55°C到+125°C。這種傳感器非常適合用于需要精確溫度控制的應(yīng)用,如環(huán)境監(jiān)測(cè)、工業(yè)控制和家用電器。 工作原理 DS18B20傳感器使用一個(gè)精密的半導(dǎo)體溫度傳感器,通過(guò)內(nèi)部
    的頭像 發(fā)表于 10-18 14:52 ?949次閱讀

    ds18b20溫度傳感器怎么接線

    DS18B20是一種廣泛使用的數(shù)字溫度傳感器,它基于1-Wire(一線)通信協(xié)議工作。這種傳感器因其高精度、易用性和低成本而受到歡迎。 DS18B20傳感器引腳介紹 DS18B20有三
    的頭像 發(fā)表于 10-18 14:50 ?1609次閱讀

    ds18b20溫度傳感器如何使用

    Devices的一部分)生產(chǎn)的數(shù)字溫度傳感器。它能夠提供9位至12位的溫度測(cè)量數(shù)據(jù),具有高精度和可編程分辨率。DS18B20的溫度測(cè)量范圍為-55°C至+125°C,適用于多種環(huán)境和應(yīng)用。 工作
    的頭像 發(fā)表于 09-03 16:51 ?721次閱讀

    ds18b20溫度傳感器是什么類型

    DS18B20溫度傳感器是一種數(shù)字溫度傳感器,它屬于單總線(One-Wire)數(shù)字溫度傳感器類型。這意味著它僅需要一根數(shù)據(jù)線(加上電源線和地線,共三根線)就能與微處理器或其他數(shù)字電路進(jìn)行通信。這種
    的頭像 發(fā)表于 09-03 16:46 ?1118次閱讀

    ds18b20溫度傳感器和dht11的區(qū)別

    DS18B20和DHT11都是常用的溫度和濕度傳感器,它們?cè)谠S多項(xiàng)目和應(yīng)用中都有廣泛的應(yīng)用。 1. 工作原理 DS18B20 DS18B20是一種數(shù)字溫度傳感器,它使用1-Wire通信
    的頭像 發(fā)表于 09-03 16:44 ?1858次閱讀

    MY18E20、MY1820 與 DS18B20 性能對(duì)比表

    MY18E20、MY1820 與 DS18B20 最高測(cè)溫精度一樣,都是±0.5℃,M1820Z 最高測(cè)溫精度±0.1℃。芯片感溫原理基于 CMOS 半導(dǎo)體 PN節(jié)溫度與帶隙電壓的特性關(guān)系,經(jīng)過(guò)
    的頭像 發(fā)表于 07-29 18:22 ?919次閱讀
    MY<b class='flag-5'>18E20</b>、MY1820 與 <b class='flag-5'>DS18B20</b> 性能對(duì)比表

    STC32和STC8H驅(qū)動(dòng)DS18B20測(cè)溫串口發(fā)送數(shù)據(jù)

    STC32G12K128 和 STC8H8K64U 驅(qū)動(dòng) DS18B20 模塊,采集環(huán)境溫度并通過(guò)串口發(fā)送數(shù)據(jù)至電腦
    的頭像 發(fā)表于 06-27 16:27 ?930次閱讀
    STC32和STC8H驅(qū)動(dòng)<b class='flag-5'>DS18B20</b>測(cè)溫串口發(fā)送數(shù)據(jù)

    DS18B20溫度傳感器工作原理

    ,DS18B20以其獨(dú)特的工作原理、卓越的技術(shù)參數(shù)和廣泛的應(yīng)用場(chǎng)景,成為了市場(chǎng)的明星產(chǎn)品。 深入了解DS18B20工作原理 DS18B20
    的頭像 發(fā)表于 06-19 16:01 ?1357次閱讀

    基于STC8H8K64U和DS18B20的溫度采集和LabVIEW上位機(jī)顯示

    之前通過(guò) STC 單片機(jī)和 DS18B20 實(shí)現(xiàn)了環(huán)境溫度采集并串口顯示,后面進(jìn)一步想要實(shí)現(xiàn)溫度的實(shí)時(shí)監(jiān)測(cè)和數(shù)據(jù)記錄保存,因此編寫了 LabVIEW 程序,修改了部分單片機(jī)程序代碼。經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證
    發(fā)表于 04-08 12:28

    DS18B20溫度傳感器的優(yōu)缺點(diǎn)

    可編程寄存器:DS18B20內(nèi)部具有可編程寄存器,允許用戶對(duì)其進(jìn)行配置和控制,以滿足不同的應(yīng)用需求。
    發(fā)表于 04-04 11:39 ?4619次閱讀

    基于51單片機(jī)的多點(diǎn)溫度檢測(cè)網(wǎng)絡(luò),DS18B20傳感器,代碼,仿真,原理圖等資料

    、調(diào)試生成的Multi_temp的hex文件導(dǎo)入到Proteus中的AT89C52里進(jìn)行仿真,整體結(jié)果如下: (1)開機(jī)LCD顯示界面。 (2)系統(tǒng)正常狀態(tài)下,循環(huán)顯示4組DS18B20的溫度值以及各組
    發(fā)表于 03-24 22:08