精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

DS18B20的組成以及工作過程

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

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

DS18B20的工作過程:

1.復位操作

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

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

4.讀取溫度數據:主機讀取溫度數據后進行數據處理。

應用實例

數字電子溫度計

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

程序:

#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};//共陽極數碼管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

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

    關注

    10

    文章

    778

    瀏覽量

    80694
收藏 人收藏

    評論

    相關推薦

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

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

    ds18b20傳感器的使用方法

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

    ds18b20溫度傳感器怎么接線

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

    ds18b20溫度傳感器如何使用

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

    ds18b20溫度傳感器是什么類型

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

    ds18b20溫度傳感器和dht11的區別

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

    MY18E20、MY1820 與 DS18B20 性能對比表

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

    STC32和STC8H驅動DS18B20測溫串口發送數據

    STC32G12K128 和 STC8H8K64U 驅動 DS18B20 模塊,采集環境溫度并通過串口發送數據至電腦
    的頭像 發表于 06-27 16:27 ?735次閱讀
    STC32和STC8H驅動<b class='flag-5'>DS18B20</b>測溫串口發送數據

    基于51單片機煙霧及DS18B20溫度檢測設計

    本資源內容概要:? ? ? ?這是基于51單片機煙霧及DS18B20溫度檢測設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件清單(excel
    發表于 06-27 11:33 ?0次下載

    基于51單片機DS18B20溫度采集1602液晶顯示報警設計

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

    DS18B20溫度傳感器工作原理

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

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

    之前通過 STC 單片機和 DS18B20 實現了環境溫度采集并串口顯示,后面進一步想要實現溫度的實時監測和數據記錄保存,因此編寫了 LabVIEW 程序,修改了部分單片機程序代碼。經過實驗驗證
    發表于 04-08 12:28

    DS18B20溫度傳感器的優缺點

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

    基于51單片機的多點溫度檢測網絡,DS18B20傳感器,代碼,仿真,原理圖等資料

    、調試生成的Multi_temp的hex文件導入到Proteus中的AT89C52里進行仿真,整體結果如下: (1)開機LCD顯示界面。 (2)系統正常狀態下,循環顯示4組DS18B20的溫度值以及各組
    發表于 03-24 22:08

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

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