91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

    關注

    10

    文章

    782

    瀏覽量

    83361
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    DS92LV1818位總線LVDS串行器/解串器的深度解析

    DS92LV1818位總線LVDS串行器/解串器的深度解析 在電子設計領域,數(shù)據(jù)傳輸?shù)母咝院头€(wěn)定性一直是工程師們關注的重點。TI推出的DS92LV18 18位總線LVDS串行器/解
    的頭像 發(fā)表于 12-30 10:05 ?305次閱讀

    CW32F003怎樣延時1微秒?

    CW32F003怎樣延時1微秒,DS18B20,DHT11需要使用
    發(fā)表于 12-30 07:19

    探索DS90C363B:高性能LVDS發(fā)射器的卓越之選

    +3.3V 可編程LVDS發(fā)射器,專為18位平板顯示器(FPD)鏈接設計,最高支持65 MHz的工作頻率。 文件下載: ds90c363b.pdf 一、DS90C363B的特性亮點
    的頭像 發(fā)表于 12-29 17:00 ?987次閱讀

    CW32L031嘀嗒定時器怎樣定時1us?

    CW32L031嘀嗒定時器 怎樣定時1us,以便DS18B20,DHT11使用。提供一下代碼
    發(fā)表于 12-10 07:40

    請問CW32F003內(nèi)部上拉電阻是多少?

    最近在調(diào)試DS18B20,用寄生電源,所以需要上拉電阻,如果不接外部上拉電阻,芯片內(nèi)部的上拉電阻可以不?
    發(fā)表于 11-21 06:15

    要做一個DS18B20的讀取程序,單總線需要配置為輸入或者輸出,怎么配置好?

    目前要做一個DS18B20的讀取程序,單總線需要配置為輸入或者輸出。怎么配置好
    發(fā)表于 11-18 06:30

    使用18b20軟件包報錯怎么解決?

    In file included from ../packages/ds18b20-latest/src/dallas_ds18b20_sensor_v1.c:12:0: C
    發(fā)表于 10-14 06:49

    低頻段 LNA 前端模塊(B26/B5/B18/B19、B8、B20、B12/13/17、B28A、B28BB29) skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()低頻段 LNA 前端模塊(B26/B5/B18/B19、B8、B20、
    發(fā)表于 06-27 18:32
    低頻段 LNA 前端模塊(<b class='flag-5'>B</b>26/<b class='flag-5'>B</b>5/<b class='flag-5'>B18</b>/<b class='flag-5'>B</b>19、<b class='flag-5'>B</b>8、<b class='flag-5'>B20</b>、<b class='flag-5'>B</b>12/13/17、<b class='flag-5'>B</b>28A、<b class='flag-5'>B28B</b> 和 <b class='flag-5'>B</b>29) skyworksinc

    單片機實例項目:DS18B20溫度傳感器

    單片機實例項目:DS18B20溫度傳感器,推薦下載!
    發(fā)表于 06-03 20:59

    FD30-36S18B3(C) FD30-36S18B3(C)

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)FD30-36S18B3(C)相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有FD30-36S18B3(C)的引腳圖、接線圖、封裝手冊、中文資料、英文資料,F(xiàn)D30-36S18B3(C)真
    發(fā)表于 03-25 18:30
    FD30-36S<b class='flag-5'>18B</b>3(C) FD30-36S<b class='flag-5'>18B</b>3(C)

    血淚教訓總結(jié):Air780EPM的LuatOS二次開發(fā)——OneWire協(xié)議調(diào)試注意事項

    的OneWire通信,大幅提升項目開發(fā)效率。 一、LuatOS 及 OneWire 說明 ? LuatOS 支持 OneWire 通信協(xié)議,本文以 DS18B20 溫度傳感器和 Air780EPM 搭配
    的頭像 發(fā)表于 03-20 17:52 ?1155次閱讀
    血淚教訓總結(jié):Air780EPM的LuatOS二次開發(fā)——OneWire協(xié)議調(diào)試注意事項

    如何使用ZPS-CANFD觀察CAN數(shù)據(jù)鏈路層的工作過程

    也可以完成對CAN總線數(shù)據(jù)鏈路層工作過程的觀察。什么是數(shù)據(jù)鏈路層在CAN總線應用中,物理層一致性測試成為各CAN總線廠家必測的校驗任務,以此來保證總線或節(jié)點產(chǎn)品有
    的頭像 發(fā)表于 03-18 11:38 ?1016次閱讀
    如何使用ZPS-CANFD觀察CAN數(shù)據(jù)鏈路層的<b class='flag-5'>工作過程</b>

    最佳實踐指南:Air780EPM的LuatOS二次開發(fā)——OneWire協(xié)議調(diào)試的注意事項

    在物聯(lián)網(wǎng)設備開發(fā)中,精準且穩(wěn)定的數(shù)據(jù)傳輸是構(gòu)建智能系統(tǒng)的核心。 一、LuatOS 及 OneWire 說明 ? LuatOS 支持 OneWire 通信協(xié)議,本文以 DS18B20 溫度傳感器
    的頭像 發(fā)表于 03-17 16:57 ?760次閱讀
    最佳實踐指南:Air780EPM的LuatOS二次開發(fā)——OneWire協(xié)議調(diào)試的注意事項

    基于FPGA的DS18B20數(shù)字溫度傳感器測溫實例

    本文將使用三段式狀態(tài)機(Moore型)的寫法來對DS18B20進行測溫操作,以便了解DS18B20和熟悉三段式狀態(tài)機的寫法。
    的頭像 發(fā)表于 03-17 11:06 ?2460次閱讀
    基于FPGA的<b class='flag-5'>DS18B20</b>數(shù)字溫度傳感器測溫實例

    DS28EC20 adi

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)DS28EC20相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有DS28EC20的引腳圖、接線圖、封裝手冊、中文資料、英文資料,DS28EC20真值表,DS28EC20
    發(fā)表于 03-10 18:32
    <b class='flag-5'>DS28EC20</b> adi