搜档网
当前位置:搜档网 › DS18B20应用篇详细解说

DS18B20应用篇详细解说

DS18B20应用篇详细解说
DS18B20应用篇详细解说

板外的第一个扩展——DS18B20温度测量(1)理论知识

DS18B20数字温度测量传感器,网上介绍很多,我就不罗嗦了。见图

DS18B20与前产品DS1820的不同:

DS18B20继承了DS1820的全部优点,并做了如下改进1.供电范围扩大为3.0--5.5V。2.温度分辨力可编程。3.转换速率有很大提高.4.内部存储器映射关系发生变化。5.具有电源反接保护电路。5.体积减小一半。对我们使用来说最大的不同就是DS18B20可以程序设定9~12位的分辨率数字值,而DS1820为固定的9位数字值,且温度转换时的延时时间由2s减为750ms。。

电路的接法:

DS18B20说明书上介绍了几种电路的接法,但我这里就说最常用的一种接法见图:

先介绍一下DS18B20内部的结构:

常规的内部逻辑图我就不说了,只说说跟我们使用直接相关的内容。

DS18B20的内部存储资源分为8个字节的ROM、9个字节的RAM、3个字节的EEPROM如下图:

一、ROM:

在DS18B20内部光刻了一个长度为64bit的ROM,这个编码是器件的身份识别标志。如下图:

64位光刻ROM的排列是:开始(最低)8位是产品类型标号,对于DS18B20来说就是(28H),接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

二、RAM:

高速暂存存储器(RAM)由9个字节组成,包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是温度高限TH、温度低限TL暂存区,第五个字节是配置寄存器暂存区,第6、7、8字节是系统保留用,就相当于DS18B20的运算内存,第九个字节是冗余检验字节。其分配如下表所示。

①、第0和第1字节:

当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。看下图

例如+125℃的数字输出为07D0H,十进制是2000,乘以0.0625就等于125℃。同样+25.0625℃的数字输出为0191H,十进制为401,乘以0.0625就得出25.0625℃了。-55℃的数字输出为FC90H,因为符号位为1,先将1111110010010000取反,得1101101111,再加一得1101110000,十进制为880,乘以0.0625就得55,为负值,即-55℃。

②第2第3字节:

RAM的第2、3、4字节和EEPROM的三个字节是对应的,内容是相同的,只是RAM因为是暂存器,失电后数据就丢失了。而EEPROM 是电擦除只读存储器,失电后数据不会丢失。在工作时得到复位命令后就从EEPROM复制一份数据到RAM的第2、3、4字节内,作为我们进行报警搜索、改写报警值和改写器件设置用,我们从外部只能对RAM进行操作,EEPROM只能从RAM复制而得到要保存的数据。

第2字节为报警值高限TH,第3字节为报警值低限。DS18B20完成一次温度转换后,就拿温度值和存储在TH和TL中的值进行比较,因为这些寄存器是8位的,所以小数位被忽略不计。TH或TL的最高有效位直接对应16位温度寄存器的符号位。如果测得的温度高于TH或低于TL,器件内部就会置位一个报警标识。每进行一次测温就对这个标识进行一次更新。当报警标识置位时,DS18B20会对报警搜索命令有反应。这样就允许许多DS18B20并联在一起同时测温,如果某个地方温度超过了限定值。报警的器件就会被立即识别出来并读取。而不用读未报警的器件。

③第4字节配置寄存器:

第4字节的配置寄存器是用来设置DS18B20的工作模式和测量精度的,其内容如下图:

低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下图所示:(DS18B20出厂时被设置为12位)

我们使用时可以跟据实际需要通过修改RAM第4字节的R0和R1的值来DS18B20的温度测量精度。需要保存这种设置时,还要用一条复制命令将RAM内的数据复制到EEPROM内。

④第5、6、7、8字节:

前面我们已经说过。RAM的第5、6、7字节是器件的保留字节,就相当于器件内部转换运算时所用的内存。第8字节是循环冗余校验字节。它是前面8个字节的CRC值。起着对前面字节的校验作用。

三、EEPROM:

EEPROM只有三个字节,和RAM的第2、3、4字节的内容相对应,它的作用就是存储RAM第2、3、4字节的内容,以使这些数据在掉电后不丢失。可能通过几条命令将RAM的该3个字节内容复制到EEPROM或从EEPROM将该3个字节内容复制到RAM的第2、3、4字节去。因为我们从外部想改写报警值和器件的设置都是只对RAM进行操作的。要保存这些设置后的数据就还要用相应的命令将RAM的数据复制到EEPROM去。

好了,下面说说对DS18B20的操作都有哪些命令:

对DS18B20的操作分为对ROM的操作和对RAM的操作。列表见下图:

实际操作的具体实现:

DS18B20是单总线器件,通讯协议包括几种单线信号类型:复位脉冲、存在脉冲、写0、写1、读0、读1。所有这些信号,除存在脉冲外,其余都是由总线控制器(单片机)发出的。根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成一次操作经过三个步骤:①要对DS18B20进行复位操作,②复位成功后发送一条ROM指令,③最后发送RAM指令,这样才能对DS18B20进行预定的操作。

①对DS18B20复位操作:

主机(单片机)和DS18B20间的任何通讯都需要以初始化序列开始,初始化序列就是主机发出一个复位脉冲跟着检测一个DS18B20的存在脉冲,表明DS18B20已经准备好发送和接收数据。初始化序列见下图:

主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。

做为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。

②对DS18B20的写和读操作:

接下来就是主机发出各种操作命令,但各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。

写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。

对于读数据操作时序也分为读0时序和读1时序两个过程。读时隙是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60us 才能完成。(为什么不可以像写时序那样将采样时间放在读周期开始后的第15微秒到45微秒之间呢。虽然目前这样也不是不可以,但总觉得不安全。有点悬啊!)

DS18B20的说明书上也说,由于主机拉低总线电平时间Tint、释放总线时的恢复时间TRC与采样时间Tsample之和必须小于15微秒。如下图13。为了使读出数据更可靠,说明书上建议Tint和TRC保持时间尽可能小,把控制器采样时间放到15微秒周期的最后。如下图14。

(要是像写周期那样不就从容了,何必搞得紧紧张张的,唉!)

好!弄清了如何复位,如何写1写0和读1读0,我们现在就要看看在总线上如何进行实际的运用。

例如,我们做两个操作,第一个是让DS18B20进行一次温度的转换。第二是读取RAM内的温度。

①让DS18B20进行一次温度的转换。前面已经讲过每一个对DS18B20的操作都要有三个步骤。一是复位操作。二是对ROM的操作。三是对RAM的操作。现在我们要做的是让DS18B20进行一次温度的转换,那具体的操作就是:1、主机先作个复位操作,2、主机再写跳过ROM 的操作(CCH)命令,3、然后主机接着写个转换温度的操作命令,后面释放总线至少一秒,让DS18B20完成转换的操作。在这里要注意的是每个命令字节在写的时候都是低字节先写,例如CCH的二进制为11001100,在写到总线上时要从低位开始写,写的顺序是“零、零、壹、壹、零、零、壹、壹”。整个操作的总线状态如下图。

②读取RAM内的温度数据。同样,这个操作也要接照三个步骤。1、主机发出复位操作并接收DS18B20的应答(存在)脉冲。2、主机发出跳过对ROM操作的命令(CCH)。3、主机发出读取RAM的命令(BEH),随后主机依次读取DS18B20发出的从第0一第8,共九个字节的数据。如果只想读取温度数据,那在读完第0和第1个数据后就不再理会后面DS18B20发出的数据即可。同样读取数据也是低位在前的。整个操作的总线状态如下图:

在这里得说明一下,第二步跳过对ROM操作的命令是在总线上只有一个器件时,为节省时间而简化的操作,若总线上不止一个器件,那么跳过

板外的第一个扩展——DS18B20温度测量(2)实际制做这个扩展,电路很简单,板子就不用做了吧!把电路焊好就行了。

这个是原理图:

实际接线图如下:

接好的实物图如下:

接下来就是写程序了,我们还是一步步地来完成:

①向总线发出复位信号:

sbit TMDAT=P1^1; //设P1.1为TMDAT

void tmreset(void)

{

uint i;

TMDAT=0; //将总线拉低

i=103;

while(i>0) i--; //延时700微秒

i=4;

while(i>0) i--; //延时40微秒

}

②检测总线上是否有器件应答(是否有存在信号):

void tmpre(void)

{

uint i;

while(TMDAT); //检测低电平的存在。否则一直循环。

while(~TMDAT); //检测高电平的存在。否则一直循环。

i=4;

while(i>0) i--; //延时

}

这段程序就是检测一个先低后高的脉冲的存在。说明有器件应答了。

③从DS18B20上读一个bit

bit tmrbit(void)

{

uint i;

bit dat;

TMDAT=0; //先将总线拉低

i++; //延时一微秒

TMDAT=1; //释放总线

i++;

i++; //延时两微秒

dat=TMDAT; //读取总线

i=8;

while(i>0) i--; //延时

return(dat);

}

④向总线写一个bit

void tmwbit(bit testb)

{

{ TMDAT=0; //先拉低总线

i++; i++; //延时2微秒

TMDAT=1; //释放总线

i=8;

while(i>0) i--; //延时40微秒

}

else //如果是0

{ TMDAT=0; //先拉低总线

i=8;

while(i>0) i--; //延时40微秒

TMDAT=1; //释放总线

i++; i++; //延时2微秒

}

}

我这么写大家能看懂吧!

与单片机连接图:

好!现在上完整的程序:(要慢慢的读了)

//LCD12864

//**********************************************************

//连线表: CPU=89C51 SysClock=12MHz *

//RS=P2.0 R/W=P2.1 E=P2.2 CS1=P2.3 CS2=P2.4 *

//DB0-DB7=P3.0-P3.7 /Reset=InBoard * //********************************************************** //DS18B20

//********************************************************** //连线表: CPU=89C51 SysClock=12MHz * //单总线:TMDAT=P1.1

//

//********************************************************** #include

#include

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

/********************LCD引脚定义********************/

#define DataPort P3 //LCD128*64 I/O 信号管脚

sbit RS =P2^0; //数据指令

sbit RW =P2^1; //读写

sbit E =P2^2; //使能

sbit CSL =P2^3; //左片选

sbit CSR =P2^4; //右片选

uchar Page; //页地址

uchar Col; //列地址

uchar code ASC_5x7[]; //5×7阵点字模

uchar str[4]; //char的值转换成字符串

/********************DS18B20引脚定义********************/ sbit TMDAT=P1^1;

/********************DS18B20函数定义*******************/ void dmsec(uint count);//延时(count)毫秒

void tmreset(void); //产生复位信号

void tmpre(void); //检测器件应答信号

uchar tmrbyte(void); //从总线读一个字节

void mwbyte(uchar dat);//向总线写一个字节

void tmstart(void); //启动一次温度转换

uchar tmrtemp(void); //读取温度数据

/********************LCD函数定义*******************/

void BusyL(void); //左屏检测忙

void BusyR(void); //右屏检测忙

void CheckBusy(void); //读取忙信号

void Delay(uint MS); //延时

void Locatexy(void); //将屏幕横向0-12纵向0-7转换成左、右屏的的X、Y void WriteCommandL( uchar CommandByte ); //向左屏写入指令

void WriteCommandR( uchar CommandByte ); //向右屏写入指令

uchar ReadData( void ); //读数据

void WriteData( uchar DataByte ); //写数据

void LcmClear( void ); //清屏

void LcmInit( void ); //初始化

uchar * uchartostr(unsigned char unm); //将值转成字符串

void LcmPutAsc( uchar asc ); //显示一个5×7的ASC字符

void LcmPutstr( uchar row,uchar y,uchar * str ); //在设定位置显示字符串/*****************DS18B20函数体定义****************/

void dmsec(uint count)

{

uint i;

while(count--)

{ for(i=0;i<125;i++){}

}

}

void tmreset(void)

{

uint i;

TMDAT=0;

i=103;

TMDAT=1;

i=4;

while(i>0) i--;

}

void tmpre(void) {

uint i;

while(TMDAT); while(~TMDAT);

i=4;

while(i>0) i--;

}

bit tmrbit(void) {

uint i;

bit dat;

TMDAT=0;

i++;

TMDAT=1;

i++;

i++;

dat=TMDAT;

i=8;

while(i>0) i--; return(dat);

}

uchar tmrbyte(void) {

uchar i,j,dat;

dat=0;

for(i=1;i<=8;i++) { j=tmrbit();

}

return(dat);

}

void tmwbyte(uchar dat) {

uint i;

uchar j;

bit testb;

for(j=1;j<=8;j++)

{ testb=dat & 0x01;

dat=dat>>1;

if(testb)

{ TMDAT=0;

i++; i++;

TMDAT=1;

i=8;

while(i>0) i--;

}

else

{ TMDAT=0;

i=8;

while(i>0) i--;

TMDAT=1;

i++; i++;

}

}

}

void tmstart(void)

{

tmreset();

tmpre();

dmsec(1);

tmwbyte(0x44);

}

uchar tmrtemp(void)

{

uchar a,b,y1,y2,y3;

tmreset();

tmpre();

dmsec(1);

tmwbyte(0xcc);

tmwbyte(0xbe);

a=tmrbyte();

b=tmrbyte();

y1=a>>4;

y2=b<<4;

y3=y1|y2;

return(y3);

}

/************LCD12864函数体***************/ /***************************/

/*检查Busy */

/***************************/

void BusyL(void)

{

CSL= 1;

CSR= 0;

CheckBusy();

}

void BusyR(void)

{

CSL= 0;

CSR= 1;

}

void CheckBusy(void)

{

RS = 0; //指令

RW = 1;

DataPort= 0xFF; //输出0xff以便读取正确

E = 1;

_nop_();

while(0);//DataPort & 0x80); //Status Read Bit7 = BUSY

E = 0;

_nop_();

}

/********************************************************/

/*根据设定的坐标数据,定位LCM上的下一个操作单元位置*/

/********************************************************/

void Locatexy(void)

{

uchar x,y;

switch (Col&0xc0) /* col.and.0xC0 */

{ /*条件分支执行*/

case 0: {BusyL();break;}/*左区*/

case 0x40: {BusyR();break;}/*右区*/

}

x = Col&0x3F|0x40; /* col.and.0x3f.or.Set Y Address*/

y = Page&0x07|0xB8; /* row.and.0x07.or.set Page */

CheckBusy(); /* waitting for enable */

RS = 0; //指令

RW = 0; //写

DataPort = y; //设置页面地址

E = 1;

_nop_();

E = 0;

CheckBusy(); /* waitting for enable */

RS = 0;

RW = 0;

DataPort = x; //设置列地址

E = 1;

_nop_();

E = 0;

_nop_();

}

/***************************/

/*写指令*/

/***************************/

void WriteCommandL( uchar CommandByte )

{

BusyL();

DataPort = CommandByte;

RS = 0; //指令

RW = 0;

E = 1;

_nop_();

E = 0;

_nop_();

}

void WriteCommandR( uchar CommandByte )

{

BusyR();

DataPort = CommandByte;

RS = 0; //指令

RW = 0;

E = 1;

_nop_();

E = 0;

/***************************/

/*读数据*/

/***************************/

uchar ReadData( void )

{

uchar DataByte;

Locatexy(); /*坐标定位,返回时保留分区状态不变*/ RS = 1; /*数据输出*/

RW = 1; /*读入*/

DataPort = 0xFF; //输出0xff以便读取正确

E = 1; /*读入到LCM*/

_nop_();

DataByte = DataPort; /*数据读出到数据口P1 */

E = 0;

_nop_();

return DataByte;

}

/***************************/

/*写数据*/

/***************************/

void WriteData( uchar DataByte )

{

Locatexy(); /*坐标定位,返回时保留分区状态不变*/ RS = 1; /*数据输出*/

RW = 0; /*写输出*/

DataPort = DataByte; /*数据输出到数据口*/

E = 1; /*写入到LCM*/

_nop_();

E = 0;

_nop_();

}

Page = 0;

Col = 0;

for(Page=0;Page<8;Page++)

for(Col=0;Col<128;Col++)

WriteData(0);

}

void LcmInit( void )

{

Delay(200); //等待复位

WriteCommandL(0x3f); //开显示

WriteCommandR(0x3f);

WriteCommandL(0xc0); //设置起始地址=0

WriteCommandR(0xc0);

WriteCommandL(0x3f); //开显示

WriteCommandR(0x3f);

LcmClear();

Col = 0;

Page= 0;

Locatexy();

}

uchar * uchartostr(uchar unm)

{

uchar x00,xx,x0,x,n;

x00=unm/100;

xx=unm%100;

x0=xx/10;

x=xx%10;

n=0;

if(x00!=0)

if(!(x00==0&x0==0))

{ str[n]=x0+48;

n++;

}

str[n]=x+48;

n++;

str[n]='\0';

return str;

}

void LcmPutAsc( uchar asc )

{

uchar j;

uint x;

x = 5*(asc-32);

for(j=0;j<5;j++)

{

WriteData(ASC_5x7[x]);

x++;

Col++;

}

WriteData(0x00);

Col++;

}

void LcmPutstr( uchar row,uchar y,uchar * str ) { unsigned char * x;

x=str;

Page=row;

Col=y;

while(*x!='\0')

{ LcmPutAsc( *x );

基于DS18B20的多点温度测量系统设计

一、绪论 1.1 课题来源 温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一,同时它也是一种最基本的环境参数。人民的生活与环境温度息息相关,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,在电力、化工、石油、冶金、机械制造、大型仓储室、实验室、农场塑料大棚甚至人们的居室里经常需要对环境温度进行检测,并根据实际的要求对环境温度进行控制。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行。炼油过程中,原油必须在不同的温度和压力条件下进行分流才能得到汽油、柴油、煤油等产品;没有合适的温度环境,许多电子设备不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。可见,研究温度的测量具有重要的理论意义和推广价值。 随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日益突出,成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域。本设计就是为了满足人们在生活生产中对温度测量系统方面的需求。 本设计要求系统测量的温度的点数为4个,测量精度为0.5℃,测温范围为-20℃~+80℃。采用液晶显示温度值和路数,显示格式为:温度的符号位,整数部分,小数部分,最后一位显示℃。显示数据每一秒刷新一次。 1.2 课题研究的意义 21世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了巨大的变化,我们已经进入了高速发展的信息时代,测量技术也成为当今科技的主流之一,被广泛地应用于生产的各个领域。对于本次设计,其目的在于: (1)掌握数字温度传感器DS18B20的原理、性能、使用特点和方法,利用C51对系统进行编程。

基于AT89C51单片机的测温系统

引言 本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程,并介绍了利用C语言编程对DS18B20的访问,该系统可以方便的实现实现温度采集和显示,使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量。数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示。 .

一、设计要求 通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,C语言的设计;并且把我们这一年所学的数字和模拟电子技术、检测技术、单片机应用等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。 以MCS-51系列单片机为核心器件,组成一个数字温度计,采用数字温度传感器DS18B20为检测器件,进行单点温度检测,检测精度为0.5摄氏度。温度显示采用3位LED数码管显示,两位整数,一位小数。具有键盘输入上下限功能,超过上下限温度时,进行声音报警。 二、基本原理 原理简述:数字温度传感器DS1820把温度信息转换为数字格式;通过“1-线协议”,单片机获取指定传感器的数字温度信息,并显示到显示设备上。通过键盘,单片机可根据程序指令实现更灵活的功能,如单点检测、轮转检测、越数字温度传感器的温度检测及显示的系统原理图如图DS1820限检测等。基于 图 2.1 基于DS1820的温度检测系统框图 三:主要器件介绍(时序图及各命令序列,温度如何计算等) 系统总体设计框图 由于DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。 测温电路设计总体设计框图如图所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,显示采用4位LED数码管,报警采用蜂鸣器、LED灯实现,键盘用来设定报警上下限温度。 .. . 测温电路设计总体设计框图图3.11.控制模块 AT89S52单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含有8kb的可系统编程的Flash只读程序存储器,器件采用ATMEL公

ds18b20详解及程序

最近都在学习和写单片机的程序, 今天有空又模仿DS18B20温度测量显示实验写了一个与DS18B20基于单总线通信的程序. DS18B20 数字温度传感器(参考:智能温度传感器DS18B20的原理与应用)是DALLAS 公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计。DS18B20 产品的特点: (1)、只要求一个I/O 口即可实现通信。 (2)、在DS18B20 中的每个器件上都有独一无二的序列号。 (3)、实际应用中不需要外部任何元器件即可实现测温。 (4)、测量温度范围在-55 到+125℃之间; 在-10 ~ +85℃范围内误差为±5℃; (5)、数字温度计的分辨率用户可以从9 位到12 位选择。将12位的温度值转换为数字量所需时间不超过750ms; (6)、内部有温度上、下限告警设置。 DS18B20引脚分布图 DS18B20 详细引脚功能描述: 1、GND 地信号; 2、DQ数据输入出引脚。开漏单总线接口引脚。当被用在寄生电源下,此引脚可以向器件提供电源;漏极开路, 常太下高电平. 通常要求外接一个约5kΩ的上拉电阻. 3、VDD可选择的VDD 引脚。电压范围:3~5.5V; 当工作于寄生电源时,此引脚必须接地。 DS18B20存储器结构图 暂存储器的头两个字节为测得温度信息的低位和高位字节;

第3, 4字节是TH和TL的易失性拷贝, 在每次电复位时都会被刷新; 第5字节是配置寄存器的易失性拷贝, 同样在电复位时被刷新; 第9字节是前面8个字节的CRC检验值. 配置寄存器的命令内容如下: MSB LSB R0和R1是温度值分辨率位, 按下表进行配置.默认出厂设置是R1R0 = 11, 即12位. 温度值分辨率配置表 4种分辨率对应的温度分辨率为0.5℃, 0.25℃, 0.125℃, 0.0625℃(即最低一位代表的温度值) 12位分辨率时的两个温度字节的具体格式如下: 其中高字节前5位都是符号位S, 若分辨率低于12位时, 相应地使最低为0, 如: 当分辨 , 高字节不变.... 一些温度与转换后输出的数字参照如下:

基于DS18B20的温度测量系统设计

课程设计(论文) 题目名称基于DS18B20温度测量系统设计 课程名称单片机原理及应用 学生姓名尹彬涛 学号1341301075 系、专业电子信息工程 指导教师江世民 2015年 6 月12 日

摘要 随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机; DS18B20; 温度传感器; 数字温度计; STC89C52

目录 摘要 (1) 引言 (3) 一、方案介绍 (3) 1、显示部分 (3) 2、温度采集 (5) 3、方案流程图 (5) 二、总体方案设计 (6) 1、硬件设计 (6) 1.1 温度采集设计 (6) 1.2温度显示设计 (6) 2、软件设计 (7) 2.1 DS18B20程序设计 (7) 2.2显示部分程序设计 (8) 三、实验调试过程 (10) 1、软件调试 (10) 1.1 显示部分调试........................................ . (10) 四、心得体会 (10) 五、致谢 (11) 六、参考文献 (12) 七、附录 (12) 附录一程序代码 (12) 附录二仿真电路图 (18)

(完整版)DS18B20的工作原理

DS18B20的工作原理: DS18B20单线数字温度传感器是DALLAS半导体公司开发的适配微处理器的智能温度传感器。它具有3脚TO-92小体积封装形式。温度测量范围为-55℃--+125℃,可进行9-12位的编程,分辨率可达0.0625。被测温度用符号扩展的16位数字量方式串行输出。工作电压支持3V-5.5V,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少。DS18B20采用3脚TO-92封装,引脚排列如图: DQ:数字信号端;GND:电源地;VDD:电源输入端 DS18B20的内部框图如图: 主要由寄生电源、64位激光ROM与单线接口、温度传感器、高速暂存器、触发寄存器、存储与控制逻辑、8位循环冗余校验码发生器组成。 测温电路原理: 低温度系数振荡器用于产生稳定的频率f,振荡频率受温度的影响很小,高温度系数振荡器将被测温度转化成频率信号,随温度变化其振荡频率明显改变。图中还隐含着计数门,当计数门打开时,DS18B20就对低温度振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定。每次测量前,首先将-55℃所对应的基数分别

置入减法计数器、温度寄存器中。在计数门关闭之前若计数器已减至零,温度寄存器中的数值就增加0.5℃。然后,计数器依斜率累加器的状态置入新的数值,再对时钟计数,然后减至零,温度寄存器值又增加0.5℃。只要计数门仍未关闭,就重复上诉过程,直至温度寄存器值达到被测温度值。 温度传感器的应用背景: 当今社会已经完全进入了电子信息化,温度控制器在各行各业中已经得到了充分的利用。具有对温度进行实时监控的功能,保证机器,测量仪器等等的正常运坐,他最大的特点是能实时监控周围温度的高低,并能同时控制电机运作来改变温度。现阶段运用于国内大部分家庭,系统效率越来越高,成本也越来越低。并可以根据其性质进行相应的改进运用于不同场合进行温度监测控制,比如仓库里、汽车里、电脑等等,带来大量的经济效益。可广泛应用于城市、农村、各种工业生产,在一定情况下也可以用于太阳能、锅炉及对温度敏感的产业的自动控制和温度报警,是实现无人值守的理想产品,市场极为广阔,需求量大。并且使用寿命长,适用范围广,安装及其容易。 智能风扇的应用: 传统的风扇大部分只有手动调速,再加一个定时器,功能单一。往往也存在一些隐患,如人们常常离开后忘记关闭风扇,浪费电且容易引发火灾,长时间工作还容易损坏电器。在如前半夜温度高,电风扇调的风速较高,但到了后半夜,温度下降,风速不会随气温变化,容易着凉,智能风扇的出现就能对环境进行检测,能随温度的变化而改变风速。 温度传感器的选择方案: 方案1:热敏电阻。 采用热敏电阻,可满足40摄氏度至90摄氏度的测量范围,但热敏电阻精度、重复性、可靠性比较差,对于检测1摄氏度的信号是不适用的。而且在温度测量系统中,是采用单片温度传感器,比如AD590,LM35等,但这些芯片输出的都是模拟信号,必须经过A/D转化后才能送给计算机,这样就使得测温装置的结构较复杂,另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量,即使能实现,也要用到复杂的算法,一定程度上增加了软件实现的难度 方案2:DS18B20 DS18B20温度传感器是以9位数字量的形式反映器件的温度值,DS18B20通过一个单线接口发送或接受信息,因此在中央微处理器和DS18B20之间仅需一条连线(加上地线),用于读写和温度转化的电源可以从数据线本身获得,无需外部电源。它可以直接将模拟信号转化为数字信号,降低了电路的复杂程度,提高电路的运行质量。 综上,选择了方案2进行温度测量。 DS18B20的一般操作过程: 1:初始化 2:跳过ROM(命令CCH) 3:温度变换(命令44H)

基于DS18B20的多点温度测量系统(毕业设计)

目录 中文摘要......................................................................................................... III 英文摘要......................................................................................................... I V 1 绪论. (1) 1.1课题来源 (1) 1.2课题研究的目的意义 (1) 1.3国内外现状及水平 (2) 1.4课题研究内容 (2) 2 系统方案设计 (3) 2.1基于模拟温度传感器设计方案 (3) 2.2基于数字温度传感器设计方案 (4) 2.3方案论证 (4) 3 电路设计 (6) 3.1工作原理 (6) 3.2DS18B20与单片机接口技术 (7) 3.3键盘电路设计 (14) 3.4显示电路设计 (15) 3.5报警电路设计 (16) 3.6电源电路设计 (17) 4 程序设计 (18) 4.1系统资源分配 (18) 4.2系统流程设计 (18) 4.3程序设计 (24) 5 系统仿真 (34) 5.1PROTEUS仿真环境介绍 (34) 5.2原理图绘制 (35) 5.3程序加载 (35) 5.4系统仿真 (36) 5.5仿真结果分析 ............................................................................................... 错误!未定义书签。 6 PCB板设计 (39) 6.1PCB板设计 (39)

DS18B20的测温原理

3.2.3 DS18B20的测温原理 DS18B20的测温原理如图3-2-2-6所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在 -55 ℃ 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。 另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。各种操作的时序图与DS1820相同。 图3-2-3-1 DS18B20与处理器连接图 3.2.4 DS18B20与单片机的典型接口设计 以MCS51单片机为例,图3-2-3-1中采用寄生电源供电方式,P1 1口接

DS18B20温度计C程序

温度值精确到0.1度,lcd1602显示 仿真电路图如下: c程序如下: #include #define uchar unsigned char #define uint unsigned int sbit DQ=P3^7;//ds18b20与单片机连接口 sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^2; unsigned char code str1[]={"temperature: "}; unsigned char code str2[]={" "};

uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志 /*************************lcd1602程序**************************/ void delay1ms(unsigned int ms)//延时1毫秒(不够精确的){unsigned int i,j; for(i=0;i

DS18B20操作时序详解

1.DS18B20复位程序分析 单片机发送复位脉冲低电平保持至少480us 释放总线进入接收状态,等待15us-60us DS18B20发出存在脉冲脉冲持续60-240us void reset() { uint i;//i 定义为uchar型 ds=0; i=103; while(i>0)i--; ds=1; while(i>0)i--;//在这里不做存在检测 } 2.DS18B20写程序 时序分析:

单片机由高电平拉低至低电平产生写时间隙 15us之后就需要将所需要写的位送到总线上面 DS18B20在开始之后的15-60us内对总线进行采样(注意采样时间)uint dswrite(uchar dat) { uchar i; uint j; sbit tempbyte; for(i=0;i<8;i++) { tempbyte=dat&0x01; dat>>=1;//从最低位开始每一位送到tempbyte临时位 //总线拉低为低电平 if(tempbyte)//写1 { ds=0; j++; j++;//延时个13us ds=1; j=8; while(j>0)j--//延时个71us }

else { ds=0; j=8; while(j>0)j--; ds=1; j++;j++;//保证大于1us- } } } 3.DS18B20读时序 时序分析 单片机从高电平拉低至低电平 低电平保持4us后将总线拉高产生读时间隙 读时间在4us后到15us之前(注意一定在15us之前)读时间才有效从拉低总线60us-120us之间释放总线(注意是在这个时间间隙之间,严格按照时序操作)

DS18B20中文资料

第一部分:DS18B20的封装和管脚定义 首先,我们来认识一下DS18B20这款芯片的外观和针脚定义,DS18B20芯片的常见封装为TO-92,也就是普通直插三极管的样子,当然也可以找到以SO(DS18B20Z)和μSOP(DS18B20U)形式封装的产品,下面为DS18B20各种封装的图示及引脚图。 了解了这些该芯片的封装形式,下面就要说到各个管脚的定义了,如下表即

为该芯片的管脚定义: 上面的表中提到了一个“奇怪”的词——“寄生电源”,那我有必要说明一下了,DS18B20芯片可以工作在“寄生电源模式”下,该模式允许DS18B20工作在无外部电源状态,当总线为高电平时,寄生电源由单总线通过VDD 引脚,此时DS18B20可以从总线“窃取”能量,并将“偷来”的能量储存到寄生电源储能电容(Cpp)中,当总线为低电平时释放能量供给器件工作使用。所以,当DS18B20工作在寄生电源模式时,VDD引脚必须接地。 第二部分:DS18B20的多种电路连接方式 如下面的两张图片所示,分别为外部供电模式下单只和多只DS18B20测温系统的典型电路连接图。 (1)外部供电模式下的单只DS18B20芯片的连接图

(2)外部供电模式下的多只DS18B20芯片的连接图 这里需要说明的是,DS18B20芯片通过达拉斯公司的单总线协议依靠一个单线端口通讯,当全部器件经由一个三态端口或者漏极开路端口与总线连接时,控制线需要连接一个弱上拉电阻。在多只DS18B20连接时,每个DS18B20都拥有一个全球唯一的64位序列号,在这个总线系统中,微处理器依靠每个器件独有的64位片序列号辨认总线上的器件和记录总线上的器件地址,从而允许多只DS18B20同时连接在一条单线总线上,因此,可以很轻松地利用一个微处理器去控制很多分布在不同区域的DS18B20,这一特性在环境控制、探测建

DS18B20中文全套资料

温度传感器DS18B20资料 2008-08-28 16:06 美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持 "一线总线"接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。目前DS18B20批量采购价格仅10元左右。 在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。 新的"一线器件"DS18B20体积更小、适用电压更宽、更经济。 DS18B20、DS1822的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!DS1822与DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继"一线总线"的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 DS18B20、DS1822 "一线总线"数字化温度传感器 同DS1820一样,DS18B20也支持"一线总线"接口,测量温度范围为-55°C~+125°C,在-10~+85°C 范围内,精度为±0.5°C。DS1822的精度较差为±2°C。现场温度直接以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 一、DS18B20的主要特性 (1)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电 (2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 (3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 (4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内 (5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃ (6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,

DS18B20温度检测

目录1引言1 2系统描述2 2.1系统功能2 2.2系统设计指标3 3系统的主要元件3 3.1单片机3 3.2温度传感元件4 3.3LCD显示屏7 4硬件电路8 4.1系统整体原理图8 4.2单片机晶振电路8 4.3温度传感器连接电路9 4.4LCD电路10 4.5报警和外部中断电路11

5结论12

温度监测系统硬件设计 摘要:利用DS18B20为代表的新型单总线数字式温度传感器实现温度的监测,可以 简化硬件电路,也可以实现单线的多点分布式温度监测,而不会浪费单片机接口,提供了单片机接口的利用率。同时提高了系统能够的抗干扰性,使系统更灵活、方 便。本系统主要实现温度的检测、显示以及高低温的报警。也可以通过单总线挂载 多个DS18B20实现多点温度的分布式监测。 关键词:DS18B20,单总线,温度,单片机 1引言 在科技广泛发展的今天,计算机的发展已经越来越快,它的应用已经越来越广泛。而单片机的发展和应用是其中的重要一方面。单片机在工业生产(机电、化工、轻纺、自控等等)和民用家电各方面有广泛的应用。其中,单片机在工业生产中的应用尤其广泛。 单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要测量参数。例如:在冶金工业、化工工业、电力工程、机械制造和食品加工等许多领域中,人们都需要对各类加热炉、热处理炉、反映炉和锅炉,尤其是热学试验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中的温度进行测量,并经常会对其进行控制。传统的方式是采用热电偶或热电阻,但是由于模拟温度传感器输出为模拟信号,必须经过A/D转换环节获得数字信号后才能够被单片机等微处理器接收处理,使得硬件电路结构复杂,制作成本较高。

DS18B20中文资料+C程序

18B20温度传感器应用解析 温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B 20更受欢迎。对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。 DS18B20的主要特征: ?? 全数字温度转换及输出。 ?? 先进的单总线数据通信。 ?? 最高12位分辨率,精度可达土0.5摄氏度。

?? 12位分辨率时的最大工作周期为750毫秒。 ?? 可选择寄生工作方式。 ?? 检测温度范围为–55°C ~+125°C (–67°F ~+257°F) ?? 内置EEPROM,限温报警功能。 ?? 64位光刻ROM,内置产品序列号,方便多机挂接。 ?? 多样封装形式,适应不同硬件系统。 DS18B20芯片封装结构: DS18B20引脚功能: ·GND 电压地·DQ 单数据总线·VDD 电源电压·NC 空引脚 DS18B20工作原理及应用: DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是: ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。 RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。RAM及EEPROM结构图: 图2 我们在每一次读温度之前都必须进行复杂的且精准时序的处理,因为DS18B20的硬件简单结果就会导致软件的巨大开消,也是尽力减少有形资产转化为无形资产的投入,是一种较好的节约之道。 控制器对18B20操作流程: 1,复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。 2,存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。 3,控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。ROM指令在下文有详细的介绍。 4,控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将R AM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。 5,执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。数据的读写方法将有下文有详细介绍。 若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读

DS18B20介绍、流程图和程序源代码

DS18B20单线数字温度传感器 DALLAS半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,体积更小、适用电压更宽、更经济。一线总线独特而且经济的特点,使用户可轻松地组建温度传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822 “一线总线”数字化温度传感器同DS1820一样,支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C,而DS1822的精度较差为± 2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C,分辨率设定,以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS1822与DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 1、 DS18B20性能特点 DS18B20的性能特点:①采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),②测温范围为-55℃-+125℃,测量分辨率为0.0625℃,③内含64位经过激光修正的只读存储器ROM,④适配各种单片机或系统机,⑤用户可分别设定各路温度的上、下限,⑥内含 寄生电源。 2、 DS18B20内部结构 DS18B20内部结构主要由四部分组成:64位光刻 ROM,温度传感器,非挥发的温度报警触发器TH和 TL,高速暂存器。DS18B20的管脚排列如图1所示。64 位光刻ROM是出厂前被光刻好的,它可以看作是该 DS18B20的地址序列号,不同的器件地址序列号不同。 8位产品系列号48位产品序号8位CRC编码DS18B20高速暂存器共9个存储单元,如表所示: 序号寄存器名称作用序号寄存器名称作用 0 温度低字节 以16位补码形式存放4、5 保留字节1、2 1 温度高字节 6 计数器余值 2 TH/用户字节1 存放温度上限7 计数器/℃ 3 HL/用户字节2 存放温度下限8 CRC CRC校验 图1 DS18B20引脚分布图

基于CC2430和DS18B20的无线测温系统设计

基于CC2430和DS18B20的无线测温系统设计 关键字: CC2430 DS18B20 无线测温系统 目前,很多场合的测温系统采用的还是有线测温设备,由温度传感器、分线器、测温机和监控机等组成,各部件之间采用电缆连接进行数据传输。这种系统布线复杂、维护困难、成本高,可采用无线方案解决这些问题。无线测温系统是一种集温度信号采集、大容量存储、无线射频发送、LED(或LCD)动态显示、控制与通信等功能于一体的新型系统。 本文从低功耗、小体积、使用简单等方面考虑,基于射频SoC CC2430和数字温度传感器DS18B20设计了一个无线测温系统,整个系统由多个无线节点和1个基站组成。无线节点工作在各个测温地点,进行温度数据采集和无线发送。基站与多个节点进行无线通信,并通过数码管将数据显示出来,同时可以通过RS-232串口将数据发送给PC。 CC2430简介 CC2430是TI/ChipconAs公司最新推出的符合2.4G IEEE802.15.4标准的射频收发器.利用此芯片开发的无线通信设备支持数据传输率高达250 kbit/s可以实现多点对多点的快速组网。CC2430的主要性能参数如下: (1)工作频带范围:2.400~2.483 5 GHz;(2)采用IEEE802.15.4规范要求的直接序列扩频方式; (3)数据速率达250 kbit/s码片速率达2 MChip/s; (4)采用o-QPSK调制方式; (5)超低电流消耗(RX:19.7mA,TX:17.4mA)高接收灵敏度(-99 dBm); (6)抗邻频道干扰能力强(39 dB); (7)内部集成有VCO、LNA、PA以及电源整流器采用低电压供电(2.1~3.6V); (8)输出功率编程可控; (9)IEEE802.15.4 MAC层硬件可支持自动帧格式生成、同步插入与检测、16bit CRC 校验、电源检测、完全自动MAC层安全保护(CTR,CBC-MAC,CCM); (10)与控制微处理器的接口配置容易(4总线SPI接口); (11)采用QLP-48封装,外形尺寸只有7×7mm。CC2430只需要极少的外围元器件,其典型应用电路如图2所示。它的外围电路包括晶振时钟电路、射频输入/输出匹配电路和微控制器接口电路3个部分。

DS18B20时序详解

DS18B20时序详解 初始化时序: DS18B20的所有通信都是以由复位脉冲组成的初始化序列开始的。该初始化序列由主机发出,后跟由DS18B20发出的存在脉冲(presence pulse)。下图阐述了这一点。 DS18B20发出存在脉冲,以通知主机它在总线上并且准备好操作了。 在初始化时序中,总线上的主机通过拉低单总线至少480μs来发送复位脉冲。然后总线主机释放总线并进入接收模式。总线释放后,4.7kΩ的上拉电阻把单总线上的电平拉回高电平。当DS18B20检测到上升沿后等待15到60us,然后以拉低总线60-240us的方式发出存在脉冲。如上所述,主机将总线拉低最短480us,之后释放总线。由4.7kΩ上拉电阻将总线恢复到高电平。DS18B20检测到上升沿后等待15到60us,发出存在脉冲:拉低总线60-240us。至此,初始化和存在时序完毕。 /*延时函数:(由于DS18B20延时均以15us为单位,故编写了延时单位为15us的延时函数,注意:以下延时函数晶振为12MHz)*/ /* ************************************ 函数:Delayxus_DS18B20 功能:DS18B20延时函数 参数:t为定时时间长度 返回:无 说明:延时公式:15n+15(近似),晶振12Mhz ****************************************** */ void Delayxus_DS18B20(unsigned int t) { for(t;t>0;t--) { _nop_();_nop_();_nop_();_nop_(); } _nop_(); _nop_();

智能温度报警系统:DS18B20 构成测温系统---论文篇

[实验任务] 用一片DS18B20 构成测温系统,测量的温度精度达到0.1 度,测量的温度的范围在-20度到+50度之间,用4位数码管显示出来。 [硬件电路图] [实验原理] DS18B20 数字温度计是DALLAS 公司生产的1-Wire,即单总线器件,具有线 路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计。DS18B20 产品的特点(1)、只要求一个 I/O口即可实现通信。(2)、在DS18B20中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在-55。C到+125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。 DS18B20详细引脚功能描述1 GND地信号;2 DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;3 VDD可选择 的VDD引脚。当工作于寄生电源时,此引脚必须接地。 DS18B20的使用方法。由于DS18B20采用的是1-Wire总线协议方式,即在一根 数据线实现数据的双向传输,而对AT89S51单片机来说,我们必须采用软件的方 法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一 根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有 严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

基于DS18B20的智能温度检测系统

基于DS18B20的智能温度检测系统

电子系统综合设计 题目基于DS18B20的智能温度检测系统学号 姓名 所属系机械工程学院 专业电子信息工程 班级10级电信本一班 指导教师 摘要

DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。 在此次设计中,我们采用LED显示温度,实现并焊接制作一个具有多种I/O接口的综合性功能电路,温度的测量值要精确到小数点的后1位,并采用单片机编程的方式使其使用方便、精度高。另外还通过protues软件对设计的数字钟进行了有效的仿真,使得设计的电子产品更具有实用性,该系统可应用于仓库测温、楼宇空调控制和生产过程监控等领域。 关键字:温度测量;LED;数字温度传感器;单片机

Abstract As a kind of high-accuracy digital net temperature sensor,DS18 B20 can be used building a sensor net easily. It can also make the net simple and reliable with it's special 1-wire interfa ce .This paper introduces the application of DS18B20 with singl e chip processor. The system is constituted by two parts the temperature measure d part and displayed part. The temperature measured part has a RS232 interface. It used AT89C51 of ATMEL company and DS18B20 of DALLAS company .The displayed part uses PC .Th is system is applied in such domains as warehouse detecting te mperature;air-conditioner controlling system in building and su pervisory productive process etc. Key words:temperature measure;LED;digital thermometer;si ngle chip processor

相关主题