DS18B20操作程序
- 格式:ppt
- 大小:38.50 KB
- 文档页数:5


现在我们要做的是让DS18B20进行一次温度的转换,那具体的操作就是
1、主机先作个复位操作,2、主机再写跳过ROM的操作(CCH)命令, 3、然后主机接着写个转换温度的操作命令,后面释放总线至少一秒,让DS18B20完成转换的操作。在这里要注意的是每个命令字节在写的时候都是低字节先写 //1111111111111111111111111111111111111111111111111111111111111111111111111111111111111
读取RAM内的温度数据。同样,这个操作也要接照三个步骤。
1、主机发出复位操作并接收DS18B20的应答(存在)脉冲。2、主机发出跳过对ROM操作的命令(CCH)。
3、主机发出读取RAM的命令(BEH),随后主机依次读取DS18B20发出的从第0一第8,共九个字节的数据。如果只想读取温度数据,那在读完第0和第1个数据后就不再理会后面DS18B20发出的数据即可。同样读取数据也是低位在前的。整个操作的总线状态如下图:
.初始化时序 初始化时序:
Muc :写0:拉低,480us(mimium)~960us(maxium)
释放总线15——60us
Ds18b20 :写0:拉低,60~120us,总的应答时序(minimum)为480us
Mcu写18b20
先拉高总线电平:写0,拉低电平60us~120us,(前15us,稳定数据,后45us供ds18b20采样)
先拉高总线电平:写1,拉低电平(1~15us),再拉高总线(在15us内必须让高点平稳定,后45us供ds18b20采样)
Mcu 读18b20
Ds18b20向mcu写入数据
Mcu将总线拉高:写0:ds18b20拉低电平15us,后45us释放总线(mcu必须在15us内完成采样,自己规定11us时采样),
Mcu将总线拉高:写1:ds18b20拉总线1us,之后释放总线,(mcu必须在15us内完成采样),
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define DelayNop() {_nop_();_nop_();_nop_();_nop_();}
//Declare functions
uchar Busy_Check();
void Initialize_LCD();
void Write_LCD_Data(uchar dat);
void Write_LCD_Command(uchar cmd);
void Display_String(uchar x,uchar y,uchar *str);
//DS18b20 one-wire bus interface
sbit DQ=P3^3;
//Display buffer
uchar code temp_title[]={"Current Temp:"};
uchar current_temp_buffer[]={"Temp: "};
//Temp float part
uchar code temp_float[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9}; uchar current_temp=0;
uchar temp_value[]={0x00,0x00};
uchar display_digital[]={0,0,0,0};
bit DS18b20_OK=1;
//Delay Function1
void Delay_Us(int x)
{
uchar i;
while(x--)
for(i=0;i<200;i++);
}
//Delay Function2
void Delay(uint x)
{
while(--x);
}
//Initialize DS18b20
TH EQU 38 ;高温报警点
TL EQU 10 ;低温报警点
TEMPH EQU 60H ;读出寄存器5个单元的内容
TEMPL EQU 61H
REG2 EQU 62H
REG3 EQU 63H
REG4 EQU 64H
CONFIG9 EQU 65H ;9位精度的CONFIG数据
COMFIG10 EQU 66H ;10位精度的CONFIG数据
CONFIG11 EQU 67H ;11位精度的CONFIG数据
CONFIG12 EQU 68H ;12位精度的CONFIG数据
CNT EQU 6FH ;中断转换时间
DAT EQU P1.7;数据线
FLAG1 BIT 00H ;测试DS18B20的存在
;*******************************************
; I/O口定义
;*******************************************
DAT1 BIT P1.1 ;HD7279A的DATA连接于P1.1
KEY BIT P3.3 ;HD7279A的KEY连接于P3.3
CS BIT P2.6 ;HD7279A的CS连接于P2.6
CLK BIT P1.0 ;HD7279A的CLK连接于P1.0
;QD1 BIT P1.7 ;18B20的数据端口
;===================================================
;*********************************
; RAM定义
;*********************************
BIT_COUNT DATA 07FH
TIMER DATA 07EH
DS18B20智能温度控制器
DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822
“一线总线”数字化温度传感器 同DS1820一样,DS18B20也 支持“一线总线”接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。
DS18B20、 DS1822 的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20的内部结构
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下: