DS18B20中有一个64位光刻ROM,按说明书说法,开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
读取ROM方法:先复位DS18B20,成功后执行读取ROM命令(33H),然后将这64位以8个字节的方式存入数组,最后用LCD或LED逐个字节显示出来。下面是读取ROM的主程序:
void main()
{
uchar i;
uint j=200;
rest_ds18b20();//复位
write_ds18b20(0x33); //读序列号
for(i=0;i<8;i++)
Rom_18B20[i]=read_ds18b20();
while(1)
{
for(i=0;i<8;i++)
{
while(j--)
dis(i,16,Rom_18B20[i]/16,Rom_18B20[i]%16,16,16);//数码管显示
j=200;
}
}
}
在读取ROM实验中发现:仿真或实际电路实验第0字节均为28,这情有可原,因为这是DS的产品类型标号。但第5、6字节均为00,无论仿真或实际电路实验都是如此。如果真的这样,那第5、6字节就失去意义了,64位ROM其实就只有48位了。真的吗?
关键字:DS18B20 系列号
引用地址:
关于DS18B20系列号
推荐阅读最新更新时间:2024-03-16 14:04
AVR单片机+DS18B20简易VB显示程序
//------AVR代码----------------- #include iom16.h //1602代码 #include intrinsics.h
#define RS PORTB_Bit0 #define RW PORTB_Bit1 #define EN PORTB_Bit2 #define DATA PORTA #define busy 0x80
void delay(uint k) { uint i,j; for(i=0;i k;i++) for(j=0;j 1140;j++); }
void wait() { uchar val; DATA=0xff;
[单片机]
DS18B20与数码管程序
#include reg51.h #define uint unsigned int #define uchar unsigned char sbit DQ=P2^0;//P2^0 uchar code tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//不带小数点 uchar code tab1 ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点 sbit wei0=P0^0;//P3^2 sbit wei1=P0^1;//P3^3 //sbit wei2=P1^2; //sbit wei3=P1
[单片机]
电池温度智能监测系统设计与实现
蓄电池作为一种供电方便、安全可靠的直流电源,在电力、通信、军事等领域中得到了广泛的应用。温度是蓄电池的一个重要参数,它可以间接地反映电池的性能状况,并且根据此温度参数可以对电池进行智能化管理,以延长电池的寿命。在蓄电池组充放电维护及工作工程中,电池内部产生的热量会引起电池的温度发生变化,尤其是蓄电池过充电、电池内部电解液发生异常变化等原因均可能造成电池温度过高而造成电池损坏。 传统上用人工定时测量的方法,劳动强度大、测量精度差,工作环境恶劣,尤其是不能及时发现异常单体电池容易导致单体电池损坏,甚至导致整组电池故障或损坏; 基于总线结构的有线多点温度监测系统,能够实现温度的智能化测量,但存在布线繁多复杂、维护扩展困难等不足。
[单片机]
DS18B20单总线数据传输
纯单片机干不了大事,必须得配上各种外设,那么了解单片机与传感器之间的数据通信就显得必不可少了。常见的单片机数据通信方式有SPI,IIC,RS232,单总线等等。每种通信方式都有相应的时序图,分析时序图并完成代码的编写是单片机学习者的必修课。本文以DS18B20为例分析一下单总线数据传输。 DS18B20是单总线数据传输,因此对于时序的要求就非常的高,学会分析其时序图是非常有必要的。 1.初始化时序图分析: 首先是由总线控制器拉低总线,维持480us。在480us后释放总线,由上拉电阻讲总线拉高。等待5-60us后,DS18B20开始响应,会将数据总线拉低60-240us.之后便释放总线,由上拉电阻拉高总线
[单片机]
DS18B20+LCD1602数字温度传感器
/*STC89C52+LCD1602+DS18B20温度显示 显示4位小数 仅支持正温度 DJNZ指令为两周期指令*/ RS BIT P2.4 RW BIT P2.5 E BIT P2.6 DQ BIT P1.7 COM DATA 30H DAT DATA 31H BAI DATA 32H SHI DATA 33H GEX DATA 34H TH DATA 35H TL DATA 36H XI DATA 37H ORG 0000H SJMP MAIN ORG 0030H MAIN:MOV SP,#40H LCALL INIT_LCD N1:LCALL TEMP_18B20//测温 LCALL LCD18B2
[单片机]
PIC16F877A DS18B20数字温度计实验
main.c #include htc.h #include stdio.h #include def.h #include ds18b20.h __CONFIG(0xFF32); void Delay_ms(u16 xms) { int i,j; for(i=0;i xms;i++) { for(j=0;j 71;j++) ; } } void uart_init(void) { TXSTA=0x24; //开启发射使能位、高波特率,TRMT初始值可0可1 RCSTA=0x80; SPBRG=0x19; //4M晶振,波特率9600,则SPBRG初值为25 } //printf函数
[单片机]
基于DS18B20设计的多点测温系统
1温度传感器DS18B20介绍 DALLAS公司单线数字温度传感器DS18B20是一种新的 一线器件 ,它具有体积小、适用电压宽等特点。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20支持 一线总线 接口,测量温度范围为-55℃~+125℃,在-10℃~+85℃范围内,精度为 0.5℃;通过编程可实现9~12位的数字值读数方式;可以分别在93.75ms和750ms内将温度值转化为9位和12位的数字量。每个DS18B20具有唯一的64位长序列号,存放于DS18B20内部ROM只读存储器中。 DS18B20温度传感器的内部存储器包括1个高速暂存RAM和1个非易失性的电可擦除E
[单片机]
基于单总线温度传感器的多点测温系统设计
0 引言 多点测温系统在工业领域及其国民生产中有广泛的用途。如在化工领域中,经常需要检测和控制反应釜中的液体的温度,使之能够稳定在一定的温度范围之内;在粮食储存以及加工过程中,会储存高水分的粮食,高水分的粮食极易升温发霉,因此粮食储存的测温显得尤为重要。以往的测温系统多采用热敏电阻,精度低、易损坏,且模拟信号远距离温度测量系统中,需要很好地解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。 因此,在温度测量系统中,具有足够的精度和实时性,控制足够的精度,并且尽可能具有较低的成本,这样的产品才具有实用价值。本文采用新型数字温度传感器 DSl8B20,它具有体积更
[单片机]