DS18B20中文资料附加程序(2)

2019-03-05 22:16

这是向RAM中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警RAM之TH)和地址3(报警RAM之TL)。写入过程中可以用复位信号中止写入。

Read Scratchpad (从RAM中读数据)[BEH]

此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。 Copy Scratchpad (将RAM数据复制到EEPROM中)[48H] 此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。

Convert T(温度转换)[44H]

收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。

Recall EEPROM(将EEPROM中的报警值复制到RAM)[B8H] 此指令将EEPROM中的报警值复制到RAM中的第3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,

当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样RAM中的两个报警字节位将始终为EEPROM中数据的镜像。

Read Power Supply(工作方式切换)[B4H]

此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。 DS18B20复位及应答关系示意图: 图6

每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。 DS18B20读写时间隙:

DS18B20的数据读写是通过时间隙处理位和命令字来确认信息交换的。 写时间隙: 图7

写时间隙分为写“0”和写“1”,时序如图7。在写数据时间隙的前15uS总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在15~60uS,采样时间内如果控制器将总线拉高则表示写“1”,如果控制器将总线拉低则表示写“0”。每一位的发送都应该有一个至少15uS的低电平起始位,随后的数据“0”或“1”应该在45uS内完成。整个位的发送时间应该保持在60~120uS,否则不能保证通信的正常。

读时间隙: 图8

读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时也是必须先由主机产生至少1uS的低电平,表示读时间的起始。随后在总线被释放后的15uS中DS18B20会发送内部数据位,这时控制如果发现总线为高电平表示读出“1”,如果总线为低电平则表示读出数据“0”。每一位的读取之前都由控制器加一个起始信号。注意:如图8所示,必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。

在通信时是以8位“0”或“1”为一个字节,字节的读或写是从高位开始的,即A7到A0.字节的读写顺序也是如图2自上而下的。

51单片机采集18B20温度

-----并用7段数码管动态显示

#include

#define uchar unsigned char #define uint unsigned int

uchar table[]={ 0xc0,0xf9,0xa4,0xb0, //\共阳 0x99,0x92,0x82,0xf8, //\ 0x80,0x90,0xbf,0xff}; //\,负温度/错误,正温度/消隐 uchar shu[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; sbit DQ=P3^7; //定义18B20数据线 bit sflag; //正负标志位

uchar readdata[2]; //保存温度数值数组 uchar test; //保存温度数值中间变量 uchar LED[8]; //数码管显示数变量,LED[0]正负标记位,之后依次为 百 十 个 十分 百分

uchar live=0; //18b20存在标记位 uchar cnt=0; //中断标记位

//************18B20程序***********************************************************// void delayus(uint t) //微秒级延时 {while(t--);}

void reset(void)//复位18B20 { DQ=1; delayus(8); DQ=0; delayus(80); DQ=1; delayus(10); live=DQ; delayus(20); DQ=1; delayus(100); }

void writebyte(uchar command)//写字节到18B20 { uchar i=0; for(i=8;i>0;i--) { DQ=0; DQ=command&0x01; delayus(5); command>>=1; DQ=1; }

}

uchar readbyte()//从18b20读出字节 { uchar i=0; uchar temp=0; for(i=8;i>0;i--) { DQ=0; //采样开始 DQ=1; //释放总线 temp>>=1; if(DQ) temp|=0x80; delayus(5); DQ=1; //总线复位 } return(temp); }

//************数码管扫描程序***********************************************************// void display(uchar LED[]) { uint i; for(i=0;i<8;i++) { P0=0X00; if(i==3) P2=table[LED[i]]&0x7f; else P2=table[LED[i]]; P0=shu[i]; delayus(250); } }

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

void main() { uint i=0; TMOD=0X01; TR0=1; ET0=1;


DS18B20中文资料附加程序(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版小学语文三年级下册看拼音写词语(共八个单元)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: