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

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

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

DS18B20的組成以及工作過程

ss ? 來源:李天生博客園、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的工作過程:

1.復(fù)位操作

2.執(zhí)行ROM操作的5條指令之一:1)讀ROM,2)匹配ROM,3)搜索ROM,4)跳過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};//共陽極數(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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • DS18B20
    +關(guān)注

    關(guān)注

    10

    文章

    777

    瀏覽量

    80639
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    ds18b20傳感器的使用方法

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

    ds18b20溫度傳感器怎么接線

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

    ds18b20溫度傳感器如何使用

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

    ds18b20溫度傳感器是什么類型

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

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

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

    MY18E20、MY1820 與 DS18B20 性能對比表

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

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

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

    基于51單片機(jī)DS18B20溫度采集1602液晶顯示報(bào)警設(shè)計(jì)

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機(jī)DS18B20溫度采集1602液晶顯示報(bào)警設(shè)計(jì)包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件
    發(fā)表于 06-25 10:16 ?0次下載

    DS18B20溫度傳感器工作原理

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

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

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

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

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

    基于51單片機(jī)的多點(diǎn)溫度檢測網(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

    為什么我的LCD1602不能顯示DS18B20采集的溫度

    =ReadTemperature();// LCD_Write_Char(5,0,temperature/100);// LCD_Write_Char(6,0,temperature%100/10); 仿真的結(jié)果: 查了一下說是DS18B20對時(shí)序要求很嚴(yán)格,檢查了一下沒發(fā)現(xiàn)問題。
    發(fā)表于 12-20 20:03

    樹莓派Pico上使用DS18B20溫度傳感器

    DS18B20 溫度傳感采用單總線的接口方式,與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與 DS18B20 的雙向通訊。單總線具有經(jīng)濟(jì)性好,抗干擾能力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場溫度測量。
    的頭像 發(fā)表于 11-21 14:21 ?1273次閱讀
    樹莓派Pico上使用<b class='flag-5'>DS18B20</b>溫度傳感器