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

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

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

DS18B20的組成以及工作過程

ss ? 來源:李天生博客園、CSDN_朱堅強 ? 作者:李天生博客園、 ? 2021-07-08 09:18 ? 次閱讀

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

DS18B20的工作過程:

1.復位操作

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

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

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

應用實例

數(shù)字電子溫度計

功能:顯示當前溫度值,可顯示正和負溫度值

程序:

#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_朱堅強

編輯:jq

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

    關(guān)注

    10

    文章

    777

    瀏覽量

    80581
收藏 人收藏

    評論

    相關(guān)推薦

    DS18B20溫度傳感器的工作原理和硬件設計

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

    ds18b20傳感器的使用方法

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

    ds18b20溫度傳感器怎么接線

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

    ds18b20溫度傳感器如何使用

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

    ds18b20溫度傳感器是什么類型

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

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

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

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

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

    DS18B20溫度傳感器工作原理

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

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

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

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

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

    為什么ds18b20不會在esp8266啟動時候把電平拉低?

    不好說了。 我實驗過,當2號端口接著單總線ds18b20,esp8266可以正常啟動。但是,并不清楚為什么ds18b20不會在esp8266啟動時候把電平拉低,所以來問問大家。
    發(fā)表于 11-10 06:54

    Proteus8.6兩個DS18B20只一個能用why?

    這兩個DS18B20都是帶仿真功能的,倆元件外觀一模一樣,分別用同一個程序仿真一個讀出數(shù)值正常,另一個(高精度)的不正常,難道驅(qū)動程序不同? 誰遇到過,如果是程序不同,改怎么改程序? 已
    發(fā)表于 11-09 06:39

    請問DS18B20測溫C程序怎么寫?

    DS18B20測溫C程序怎么寫?
    發(fā)表于 11-07 07:20

    請問ds18b20的分辨率是什么意思?

    ds18b20的分辨率是什么意思??
    發(fā)表于 11-03 07:42

    基于STM32最小系統(tǒng)的雙DS18B20檢測溫度并在OLED上顯示

    基于STM32最小系統(tǒng)的雙DS18B20檢測溫度并在OLED上顯示
    發(fā)表于 10-30 15:13 ?6次下載