04基于单总线的测温传感器DS18B20-PC机与单片机通信技术
DS18B20的工作原理
![DS18B20的工作原理](https://img.taocdn.com/s3/m/862ef175effdc8d376eeaeaad1f34693daef101a.png)
DS18B20的工作原理DS18B20是一种数字温度传感器,采用单总线接口通信,具有高精度、低功耗和可靠性强的特点。
它广泛应用于温度测量领域,例如室内温度监控、气象观测、工业自动化等。
DS18B20传感器的工作原理如下:1. 温度测量原理:DS18B20采用基于半导体的温度测量原理,利用温度对半导体材料电阻值的影响来测量温度。
它内部集成了温度传感器和模数转换器,能够将温度转换为数字信号输出。
2. 单总线通信:DS18B20传感器采用单总线通信方式,即通过一个数据线进行数据传输和控制。
这种通信方式使得传感器的连接更加简单,只需一个数据线和一个电源线即可。
3. 工作原理:DS18B20传感器的工作原理基于温度对半导体材料电阻值的影响。
传感器内部有一个温度传感器和一个模数转换器。
当传感器接收到读取温度的指令时,它会测量温度并将其转换为数字信号。
具体的工作流程如下:- 主控设备发送启动信号,将总线拉低一段时间;- 主控设备释放总线,等待传感器的响应;- 传感器检测到总线被拉低后,开始工作;- 传感器将温度数据转换为数字信号,并通过总线发送给主控设备;- 主控设备接收到传感器发送的数据,并进行解析。
4. 温度测量精度:DS18B20传感器具有高精度的温度测量能力,可实现±0.5℃的测量精度。
它还具有可调节的分辨率,可以根据需要选择9位、10位、11位或12位的分辨率。
5. 供电方式:DS18B20传感器可以通过总线线路供电,也可以通过外部电源供电。
通过总线供电时,传感器从总线线路获取所需的电能;通过外部电源供电时,传感器需要额外的电源线路提供电能。
总结:DS18B20传感器是一种基于半导体的数字温度传感器,采用单总线通信方式,具有高精度、低功耗和可靠性强的特点。
它的工作原理是利用温度对半导体材料电阻值的影响来测量温度,并通过单总线进行数据传输和控制。
DS18B20广泛应用于各种温度测量场景,为温度监测和控制提供了可靠的解决方案。
ds18b20与单片机工作原理
![ds18b20与单片机工作原理](https://img.taocdn.com/s3/m/237f4da59a89680203d8ce2f0066f5335b816779.png)
ds18b20与单片机工作原理
DS18B20是一款数字温度传感器,常用于单片机系统中进行温度测量。
它采用了1-Wire总线协议,可以通过单一的数据线实现数据传输和供电。
DS18B20传感器内部结构包含了一个温度传感器单元、数字转换单元和存储器单元。
温度传感器单元采用了精确的模拟传感器,能够测量环境温度并输出相应的模拟信号。
数字转换单元将模拟信号转换为数字信号,并通过1-Wire总线传输给单片机。
存储器单元用于存储温度传感器的序列号、配置信息和温度数据。
DS18B20与单片机之间的通信采用了1-Wire总线协议。
这种协议通过单一的数据线实现数据传输和供电,简化了硬件连接和布线。
在通信过程中,单片机作为总线的主设备,发出读取传感器数据的指令,并通过1-Wire总线接收传感器的响应。
传感器在接收到指令后,进行温度测量并将结果转换为数字信号,然后通过1-Wire总线传输给单片机。
为了确保稳定的数据传输,DS18B20还包含了内部的电源管理电路和时序控制电路。
电源管理电路能够自行调整传感器的供电电流,并且能够自动进入休眠状态以降低功耗。
时序控制电路用于控制通信的时间序列,确保数据的准确传输。
总结而言,DS18B20与单片机通过1-Wire总线协议进行通信,实现温度数据的测量和传输。
其内部结构包含温度传感器单元、数字转换单元和存储器单元,通过精确的模拟传感器进行温度测量,并采用电源管理和时序控制电路确保稳定的数据传输。
【注意】回答中出现的具体器件、厂商及其特定信息只是为了描述清楚相关原理,并不构成对其的任何推荐或宣传。
DS18B20温度传感器与单片机间的通信
![DS18B20温度传感器与单片机间的通信](https://img.taocdn.com/s3/m/f064de90f524ccbff12184b6.png)
DS18B20温度传感器与单片机间的通信线(延长线)可以多长20 [ 标签:温度传感器,单片机,通信线] 我需要延长50-100米,请问这是正常使用的距离还是要加特殊元件用它做探头,再弄个单片机,数码管,蜂鸣器成本很低吧,用两个18B20,延长线我选的是网线,当然线的成本是另算的,我指单片机读取显示部分成本就是很低?答案TS-18B20 数字温度传感器,该产品采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
1: 技术性能描述1.1 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
1.2 测温范围-55℃~+125℃,固有测温分辨率0.5℃。
1.31.4 工作电源: 3~5V/DC1.5 在使用中不需要任何外围元件1.6 测量结果以9~12位数字量方式串行传送1.7 不锈钢保护管直径Φ6 1.8 适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温1.9 标准安装螺纹M10X1, M12X1.5, G1/2”任选1.10 PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。
2:应用范围2.1 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域2.2 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。
2.3 汽车空调、冰箱、冷柜、以及中低温干燥箱等。
2.5 供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制编辑本段|回到顶部3:产品型号与规格型号测温范围安装螺纹电缆长度适用管道TS-18B20 -55~125 无 1.5 m TS-18B20A -55~125 M10X1 1.5m DN15~25TS-18B20B -55~125 1/2”G 接线盒DN40~ 60编辑本段|回到顶部4:特点独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源测量温度范围为-55 °C至+125 ℃。
DS18B20温度传感器与单片机的接口电路
![DS18B20温度传感器与单片机的接口电路](https://img.taocdn.com/s3/m/f06590c56137ee06eff91868.png)
最佳答案第2章硬件电路详细设计DS18B20的性能特点:1、采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),2、测温范围为-55℃-+125℃,测量分辨率为0.0625℃,3、内含64位经过激光修正的只读存储器ROM,4、适配各种单片机或系统机,5、用户可分别设定各路温度的上、下限,6、内含寄生电源。
温度传感器DS18B20连接方式:在寄生电源供电方式下,DS18B20从单线信号线上汲取能量,在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。
如图2.3所示。
2.4 复位电路的设计本设计采用人工复位,将一个按扭开关并联于上电自动复位电路按一下开关就在RST端出现一段时间的高电平,即器件复位。
2.5 晶振电路的设计2.6 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
2.7 温度测量系统整体硬件电路Wei1 BIT P3.0 ;;数码管第1位Wei2 BIT P3.1 ;;数码管第2位Wei3 BIT P3.2 ;;数码管第3位Wei4 BIT P3.3 ;;数码管第4位Dian EQU 20H ;;小数点状态状态保存字节DisData1 EQU 30H ;;第1位显示数据DisData2 EQU 31H ;;第2位显示数据DisData3 EQU 32H ;;第3位显示数据DisData4 EQU 33H ;;第4位显示数据DisTime EQU 34H ;;设置显示几次后读取温度值;;温度数据存储单元标号定义TempL EQU 35H ;;温度高位TempH EQU 36H ;;温度低位;;与DS18B20通迅部分存储单元及标号定义DS18B20 BIT P1.0 ;;与DS18B20通迅的位地址RFail BIT 21H.0 ;;复位失败标记Var EQU 22H ;;变量字节,温度数据处理时用到Var2 EQU 3FH ;;变量字节主程序部分:ORG 00HLJMP STARTORG 100HSTART: ;;-----初始化MOV SP,#60H ;;初始化堆栈指针Set18B20:;;-----DS18B20初始化;;DS18B20复位ACALL ResetJB RFail,LOOP ;;复位失败则直接跳至显示部分;;对DS18B20发出Skip ROM命令MOV A,#0CCHACALL Write;;对DS18B20发出温度转换命令MOV A,#44HACALL WriteSetDisT:MOV DisTime,#3 ;;设置下一个循环体的循环8次LOOP:ACALL Display ;;显示JB RFail,Set18B20 ;;DS18B20复位失败时,在显示完一次后重新复位DJNZ DisTime,LOOPJNB DS18B20,$ ;;判断DS18B20是否已完成温度转换ACALL GetTemp ;;从DS18B20读出温度值ACALL DealTemp ;;温度值处理ACALL SendDisDT ;;根据当前系统状态设置显示内容SJMP SetDisT ;;;;;;;;;根据当前状态给显示模块设置显示参数SendDisDT:MOV Dian,#7FH ;;最高位为0代表显示小数点;;传送温度值MOV A,TempH ;;送高位数据MOV VAR,TempL ;;送低位数据ACALL TransDataRET;;A中保存高位值,Var中保存低位值TransData:;;取个位值MOV B,#10DIV ABMOV DisData2,B;;取十位值JZ HavNot1 ;;判断商是否为0MOV B,#10DIV ABMOV DisData3,BJZ HavNot2 ;;判断商是否为0MOV DisData4,ASJMP XiaoShu ;;跳至百位符号处理部分HavNot1:MOV DisData3,#10 ;;十位开始没有数字HavNot2:MOV DisData4,#10 ;;百位开始没有数字SignJudge:;;符号处理部分JNB VAR.7,XiaoShu ;;当为负数显示符号MOV A,#10CJNE A,DisData3,BWSignMOV DisData3,#11 ;;负号在十位SJMP XiaoShuBWSign:MOV DisData4,#11 ;;负号在百位XiaoShu:;;小数处理部分,用查表法获取小数值,精确到小数点后1位MOV A,VARANL A,#0FHMOV DPTR,#XSTabMOVC A,@A+DPTRMOV DisData1,ARTransTemp:RETXSTab: DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9DS18B20通迅模块组-------复位模块Reset: ;;3微秒高电平SETB DS18B20MOV R7,#250CLR RFail ;;清0复位失败标记CLR DS18B20;;延迟501uSDJNZ R7,$SETB DS18B20 ;;释放总线(拉高数据线);;等待DS18B20作出复位成功反应,最大等待时间为69uSMOV R7,#17Wait:JNB DS18B20,RReset ;;若DS18B20在作出复位成功反应,不再等待DJNZ R7,WaitSETB RFail ;;70uS内DS18B20作出复位成功反应,置1复位失败标记RReset:;;延迟350UsMOV R7,#174DJNZ R7,$SETB DS18B20RET/;;-------向DS18B20写一个字的模块,要写的内容提前装入ACC中Write:MOV R6,#8 ;写8位WriteBit:;;2微秒高电平SETB DS18B20MOV R7,#3;;7微秒低电平CLR DS18B20DJNZ R7,$;;ACC低位送至DS18B20RRC AMOV DS18B20,C;;延迟60UsMOV R7,#28DJNZ R7,$;;是否已写完8位DJNZ R6,WriteBitRWrite:SETB DS18B20RET; /;;-------从DS18B20读回一个字节的内容,读回的内容装入ACC中Read:MOV R6,#8 ;;读回8位MOV A,#0 ;;读回的内容装入ACC中ReadBit:;;2微秒高电平SETB DS18B20MOV R7,#7;;2微秒低电平CLR DS18B20NOP;;16微秒高电平SETB DS18B20DJNZ R7,$;;读回一位数据放入ACC中MOV C,DS18B20RRC A;;延迟66UsMOV R7,#33DJNZ R7,$;;是否已读完8位DJNZ R6,ReadBitRRead:SETB DS18B20RET/;;-------与DS18B20通迅,读回两字节温度值,并装入ACC中TempL和TempH 中GetTemp:ACALL Reset ;;复位JB RFail,RGetTemp ;;判断复位是否成功;;复位成功;;对DS18B20发出Skip ROM命令MOV A,#0CCHACALL Write;;对DS18B20发出读命令MOV A,#0BEHACALL Write;;从DS18B20读回低8位温度值ACALL ReadMOV TempL,A;;从DS18B20读回高8位温度值ACALL ReadMOV TempH,AACALL Reset ;;复位JB RFail,RGetTemp ;;判断复位是否成功;;对DS18B20发出Skip ROM命令MOV A,#0CCHACALL Write;;对DS18B20发出温度转换命令MOV A,#44HACALL WriteRGetTemp:RET温度数据处理模块DealTemp:;;将整数的二进制数部分移到一个字节,符号位和小数部分移到一个字节MOV R1,#VarMOV Var,TempHMOV A,TempLXCHD A,@R1 ;;符号位、小数部分至VAR(@R1),整数部分至ACC SWAP A;;整数部分处理JNB Var.7,NotNeg ;;判断是否为负数CPL A ;;为负数,取反后加1得其绝对值;;小数部分取反XRL Var,#1FH ;;INC VarNotNeg:MOV TempH,AMOV TempL,VarRET显示模块-------显示DisData(30H)从开始的三个字节保存显示信息Display:MOV DPTR,#Tab;;**显示小数部分MOV A,DisData1MOVC A,@A+DPTRMOV P2,ACLR Wei1ACALL DelaySETB Wei1;;**显示个位MOV A,DisData2MOVC A,@A+DPTR;;小数点处理ANL A,DianMOV P2,ACLR Wei2ACALL DelaySETB Wei2;;**显示十位MOV A,DisData3MOVC A,@A+DPTRMOV P2,ACLR Wei3ACALL DelaySETB Wei3;;**显示百位MOV A,DisData4MOVC A,@A+DPTRMOV P2,ACLR Wei4ACALL DelaySETB Wei4RETTab: ;;0~9、空白、负号的编码DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH ;;延迟Delay:MOV R6,#6DD1:MOV R5,#250DJNZ R5,$DJNZ R6,DD1RETEND这里面插不了图,我有这个的整套课程设计报告,想要找我,mingchaofu@。
单总线控制DS18B20温度传感器
![单总线控制DS18B20温度传感器](https://img.taocdn.com/s3/m/044f4e57fe4733687e21aa6c.png)
单总线控制DS18B20温度传感器一DS18B20通过单总线初始化时序如下:由上图可见,当主机要操作DS18B20时,需要把总线打底,并持续480us以960us 然后释放总线(即拉高),当时间流逝15-60us的时候,DS18B20若存在且没有坏的话,它会把总线拉低,并持续60-240us .在这段时间主机可以查看总线状态,来确定初始化完成 .二DS18B20通过单总线读写时序如下:由上图可以看出,主机要读或写DS18B20时,需要要将总线接低并持续15us,上面的两个时序是写的时序,主机在接低总线的15us后继续拉低总线,持续15-30us. 在这个时间内DS18B20采样0,完成0的写入.主机拉低总线15us后拉高总线然后持续15-30us等待DS18B20采样完成 1的写入.下面的两个图是读的时序图.主机拉低总线并持续15us后,释放总线.如果DS18B20要输出0就继续拉低总线,若要输出1 就拉高总线,并持续15-30us,等待主机查询总线状态完成 0或者1的读写.三DS18B20的ROM操作命令如下:四DS18B20的存储器操作命令如下:五DS18B20内部9个字节存储器以及E2RAM:六DS18B20内部存储温度字节格式:七DS18B20操作的C语言程序:/*************************此部分为18B20的驱动程序*************************************/#include <reg52.H>#include <intrins.h>sbit D18B20=P3^7;#define NOP() _nop_() /* 定义空指令 */#define _Nop() _nop_() /*定义空指令*/void TempDelay (unsigned char idata us);void Init18b20 (void);void WriteByte (unsigned char idata wr); //单字节写入void read_bytes (unsigned char idata j);unsigned char CRC (unsigned char j);void GemTemp (void);void Config18b20 (void);void ReadID (void);void TemperatuerResult(void);bit flag;unsigned int idata Temperature,D[10];unsigned char idata temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID为8字节unsigned char idata id_buff[8];unsigned char idata *p,TIM;unsigned char idata crc_data;unsigned char code CrcTable [256]={0, 94,188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102,229, 187, 89, 7,219, 133,103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 1 96, 154,217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,248, 166,68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 2 31, 185,140, 210,48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,175, 241,19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,202, 148,118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 2 13, 139,87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};///*************************************************************Function:延时处理*parameter:*Return:*Modify:*************************************************************/void TempDelay (unsigned char idata us){while(us--);}/*************************************************************Function:18B20初始化*parameter:*Return:*Modify:*************************************************************/void Init18b20 (void){_nop_();D18B20=0;TempDelay(50); //delay 530 uS//80_nop_();D18B20=1;TempDelay(10); //delay 100 uS//14_nop_();_nop_();_nop_();if(D18B20==0)flag = 1; //detect 1820 success!elseflag = 0; //detect 1820 fail!TempDelay(15); //20_nop_();_nop_();D18B20 = 1;}/************************************************************ *Function:向18B20写入一个字节*parameter:*Return:*Modify:*************************************************************/ void WriteByte (unsigned char idata wr) //单字节写入{unsigned char idata i;for (i=0;i<8;i++){D18B20 = 0;_nop_();D18B20=wr&0x01;TempDelay(3); //delay 45 uS //5_nop_();_nop_();D18B20=1;wr >>= 1;}}/************************************************************ *Function:读18B20的一个字节*parameter:*Return:*Modify:*************************************************************/ unsigned char ReadByte (void) //读取单字节{unsigned char idata i,u=0;for(i=0;i<8;i++){D18B20 = 0;u >>= 1;D18B20 = 1;if(D18B20==1)u |= 0x80;TempDelay (2);_nop_();}return(u);}/************************************************************ *Function:读18B20*parameter:*Return:*Modify:*************************************************************/ void read_bytes (unsigned char idata j){unsigned char idata i;for(i=0;i<j;i++){*p = ReadByte();p++;}}/************************************************************ *Function:CRC校验*parameter:*Return:*Modify:*************************************************************/ unsigned char CRC (unsigned char j){unsigned char idata i,crc_data=0;for(i=0;i<j;i++) //查表校验crc_data = CrcTable[crc_data^temp_buff[i]];return (crc_data);}/************************************************************ *Function:读取温度*parameter:*Return:*Modify:*************************************************************/ void GemTemp (void){read_bytes (9);if (CRC(9)==0) //校验正确{Temperature = temp_buff[1]*0x100 + temp_buff[0];// Temperature *= 0.625;Temperature /= 16;TempDelay(1);}}/************************************************************ *Function:内部配置*parameter:*Return:*Modify:*************************************************************/ void Config18b20 (void) //重新配置报警限定值和分辨率{Init18b20();WriteByte(0xcc); //skip romWriteByte(0x4e); //write scratchpadWriteByte(0x19); //上限WriteByte(0x1a); //下限WriteByte(0x7f); //set 11 bit (0.125)Init18b20();WriteByte(0xcc); //skip romWriteByte(0x48); //保存设定值Init18b20();WriteByte(0xcc); //skip romWriteByte(0xb8); //回调设定值}/************************************************************ *Function:读18B20ID*parameter:*Return:*Modify:*************************************************************/ void ReadID (void)//读取器件 id{Init18b20();WriteByte(0x33); //read romread_bytes(8);}/************************************************************ *Function:18B20ID全处理*parameter:*Return:*Modify:*************************************************************/ void TemperatuerResult(void){p = id_buff;ReadID();Config18b20();Init18b20 ();WriteByte(0xcc); //skip romWriteByte(0x44); //Temperature convertInit18b20 ();WriteByte(0xcc); //skip romWriteByte(0xbe); //read Temperaturep = temp_buff;GemTemp();}unsigned int TempTick=0;void GetTemp(){if(TIM==1){ TIM=0;TemperatuerResult();D[5]=Temperature;}}/*************************************[ t1 (0.5ms)中断] 中断中做 PWM 输出------------1000/(0.02ms*250)=200Hz*************************************/void T1zd(void) interrupt 3{TH1 = 0xfe; //11.0592TL1 = 0x33;TIM++;}。
DS18B20的工作原理
![DS18B20的工作原理](https://img.taocdn.com/s3/m/f72b7544b42acfc789eb172ded630b1c58ee9b60.png)
DS18B20的工作原理DS18B20是一种数字温度传感器,可以通过一根单线串行总线与微处理器或者其他设备进行通信。
它采用了数字温度传感技术,可以准确地测量环境温度,并将温度数据以数字形式传输给主设备。
DS18B20的工作原理如下:1. 温度测量原理:DS18B20使用了一个精确的温度传感器,该传感器基于温度对半导体材料电阻值的影响。
在DS18B20中,温度传感器是由一对金属电极和一个细丝电阻器组成的。
当温度升高时,电阻值增加,反之亦然。
通过测量电阻值的变化,可以确定环境温度。
2. 单线串行总线通信:DS18B20通过单线串行总线与主设备通信,这意味着只需要一根数据线就可以实现数据传输。
通信过程中,主设备发送指令给DS18B20,DS18B20将温度数据以数字形式传输回主设备。
这种通信方式简化了硬件连接,降低了成本。
3. 温度转换和精度:DS18B20将温度数据转换为数字形式,并以12位精度表示。
它可以测量的温度范围为-55℃至+125℃,精度为±0.5℃。
DS18B20还具有可编程的分辨率功能,可以选择9位、10位、11位或者12位的温度分辨率。
4. 供电和工作模式:DS18B20可以通过总线路线提供供电,也可以通过外部电源提供供电。
它还具有多种工作模式,包括连续转换模式和温度警报模式。
在连续转换模式下,DS18B20可以周期性地测量温度并发送数据。
在温度警报模式下,DS18B20可以设置上下限温度阈值,当温度超过或者低于设定阈值时,会触发警报信号。
总结:DS18B20是一种数字温度传感器,采用了数字温度传感技术。
它通过测量温度对半导体材料电阻值的影响来测量环境温度,并将温度数据以数字形式传输给主设备。
DS18B20具有单线串行总线通信、温度转换和精度、供电和工作模式等特点。
它在许多领域中被广泛应用,如气象监测、工业自动化、家用电器等。
其高精度和简单的硬件连接使其成为一种理想的温度传感器。
基于DS18B20的单总线数字温度计毕业设计
![基于DS18B20的单总线数字温度计毕业设计](https://img.taocdn.com/s3/m/6da77bc9a1c7aa00b52acbdb.png)
1 前言在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。
而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。
其缺点如下:硬件电路复杂;软件调试复杂;制作成本高。
针对以上问题,采用一种改进型智能温度传感器作为检测元件,测温范围为-55~+125 ℃,最高分辨率可达0.0625℃,误差 +0.5℃以内。
数字温度计传感器可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
本数字温度计设计采用一种改进型智能温度传感器作为检测元件,测温范围为-55~125 ℃,最高分辨率可达0.0625℃,误差 +0.5℃以内。
而传统的温度计,如热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。
硬件电路复杂,软件调试困难,制作成本高等缺点都给科技、工业、农业等诸多领域带来许多问题,尤其在生物学,珊瑚以其独特的生物学及生态学特性成为研究热带海洋环境的重要信息载体.阐明了珊瑚微量元素Sr/Ca、Mg/Ca温度计的建立基础、测定方法、研究成果、环境意义、争论问题及进一步研究的设想.多种海表温度计的对比研究,为现代和古海洋环境的重建、探索气候的变率与特征事件(冷暖、旱涝、ENSO等)的关联以及为预测未来气候变化的趋势提供科学的判据。
因此,鉴于以上问题主要设计测温范围为-55~125 ℃,精度为0.1℃的数字温度计。
2 系统硬件的设计本数字温度计设计采用美国DALLAS 半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55~+125 ℃,最高分辨率可达0.0625℃.DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
按照系统设计的功能和要求,确定系统由3个模块组成:主控制器,测温电路和显示电路[1]。
(完整版)单片机与DS18B20传感器连接.
![(完整版)单片机与DS18B20传感器连接.](https://img.taocdn.com/s3/m/0e245b3d69dc5022abea006e.png)
案例单片机与DS18B20传感器连接下图给出了DS18B20与单片机连接的电路图,用单片机AT89C52的P0.7口线经上拉后接至DS18B20的引脚2数据端,引脚1接电源地端,引脚3接+5V电源端。
单片机与DS18B20的连接电路图下面给出对DS18B20的操作用C51编写的具体程序。
应该说明的是,程序对应于单片机的时钟频率为12MHz,如改用其它时钟频率,程序中的延时应重新调整。
#include <reg51.h>#include <intrins.h>sbit LE = P2^5;sbit DQ = P0^7;bit DS_IS_OK = 1;unsigned char seg[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //字段数组定义了12个元素,其中第11个元素是负号"-"的字段码//第12个元素为不显示的字段码,用于显示正温度值unsigned char buf[4];unsigned int temperature;void delay(unsigned int time) //延时函数{while(time--);}unsigned char Init_Ds18b20() //DS18B20初始化函数{unsigned char status;DQ = 1; delay(8);DQ = 0;delay(90);DQ = 1;delay(5);status = DQ;delay(60);return status;}unsigned char read() //读字节函数{unsigned char i = 0;unsigned char dat = 0;DQ=1;_nop_();for(i=8; i>0; i--){DQ = 0;dat >>= 1;DQ = 1;_nop_();_nop_();if(DQ) dat |=0x80;delay(30); DQ = 1;}return(dat);}void write(unsigned char dat) //写字节函数{unsigned char i;for(i=8;i>0;i--){DQ = 0;DQ = dat & 0x01;delay(5);DQ=1; dat >>=1;}}void ReadTemperature() //采样温度函数{unsigned char tempL=0;unsigned char tempH=0;if(Init_Ds18b20() == 1) //DS18B20故障DS_IS_OK = 0;else{DS_IS_OK = 1;write(0xcc);write(0x44);Init_Ds18b20();write(0xcc);write(0xbe);tempL = read();tempH = read();temperature = (tempH<<8)|tempL;}}void dispute() //温度值显示处理函数{unsigned int temp,temp1; //用于中途的数据转换//以下if语句用于处理负温度值,因为保存的是温度值的补码if((temperature & 0xf800) == 0xf800){temperature = ~temperature+1;buf[0]=10;}else buf[0]= 11;temp=temperature/16.0*100;//转换成实际温度值并放大100倍,用于对百分位四舍五入if(temp <10) buf[0] = 11; //处理0度,温度是0度时保证不出现负号else{temp1 = temp % 10;if(temp1>=5) //四舍五入temp += 10;}temp /= 10 ; //去掉温度值的百分位if(temp>=1000) //如果温度>=100度,则显示四位{buf[0]=temp/1000;buf[1]=temp/100%10;buf[2]=temp/10%10;buf[3]=temp%10;}else {buf[1]=temp/100;buf[2]=temp/10%10;buf[3]=temp%10;}}void display() //显示函数.{int i,j;unsigned char temp=0xfe;for(j=0;j<30;j++) //由于是动态显示方式,因此必须多次循环才能成功显示,很关键,处理不好温度值将显示不成功{temp=0xfe;for(i=0;i<4;i++){LE=0; P2=temp;if(i==2)P1=seg[buf[i]]+0x80;else P1=seg[buf[i]];LE=1;LE=0;delay(10);temp=(temp<<1)|1;}P2=temp; //关显示,进行下一次测试}}void main(){ReadTemperature();delay(50000);delay(50000);while(1){if(DS_IS_OK ==1){ReadTemperature();dispute();display();}}}。
《单片机》教学课件DS18B20单总线数字温度传感器
![《单片机》教学课件DS18B20单总线数字温度传感器](https://img.taocdn.com/s3/m/21a50657a36925c52cc58bd63186bceb19e8ed14.png)
复位
上拉数据线 下拉数据线 主机发出延时500微秒的复位低脉冲 拉高数据线 延时60us等待DS18B20回应 ;flag=0,18B20不存在 ;flag=1,18B20存在 上拉数据线
6
写时序
下拉数据线 延时15微秒 读一位数据 延时45us 上拉数据线 循环8次,写8位数据
7
读时序
上拉数据线 下拉数据线 上拉数据线 延时15微秒 读一位数据 延时45us 循环16次,读取16位数据
8
DS18B20单总线数字温度传感 器
1
一
DS18B20管脚、接口电路
二
读DS18B20温度
三
复位时序
四
写3
接口电路
4
读温度流程
复位 判断18B20是否存在 写CCH; 跳过ROM匹配 写44H;发出转换温度转换命令 复位 写CCH; 跳过ROM匹配 写BEH ;发出读温度命令 读数据
基于单片机和DS18B20的温度传感器
![基于单片机和DS18B20的温度传感器](https://img.taocdn.com/s3/m/5d12bdd784254b35eefd3427.png)
任务书利用数字温度传感器DS18B20与单片机结合来测量温度。
利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。
其温度测量范围为−55℃~125℃,精确到0.5℃。
数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,用LED数码管实现温度显示。
目录第一章、绪论 (3)1、1单片机概述 (3)1、2选题背景及设计意义 (3)1、3设计方案论证 (4)第二章、硬件设计 (6)2、1硬件电路的设计 (6)1、时钟电路 (7)2、复位电路 (8)3、显示电路 (10)2、2 元器件的介绍 (11)1、单片机AT89C51 (11)2、温度传感器DS18B20 (15)第三章、系统软件设计 (17)1、系统工作流程图 (17)2、温度传感器子程序流程图 (18)第四章、汇编语言程序部分(略) (19)第五章、调试部分 (19)参考文献 (20)第一章绪论1.1 单片机概述单片机的结构特征是将组成计算机的基本部件集成在一块晶体芯片上,构成一台功能独特的单片微型计算机。
一台典型的单片机的基本组成结构包括中央处理器(CPU),存储器(ROM和RAM),并行I/O口,串行I/O口,定时器/计数器,定时电路及元件。
由此可见,单片机在结构上突破了常规的按逻辑功能划分芯片。
由多片构成了微型计算机的设计思想,将构成计算机的许多功能集成在一块晶体芯片上。
1.2 选题背景及设计意义最早的温度计是在1593年由意大利科学家伽利略发明的。
他的第一只温度计是一根一端敞口的玻璃管,另一端带有核桃大的玻璃泡。
使用时先给玻璃泡加热,然后把玻璃管插入水中。
随着温度的变化,玻璃管中的水面就会上下移动,根据移动的多少就可以判定温度的变化和温度的高低。
这种温度计,受外界大气压强等环境因素的影响较大,所以测量误差大。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
基于DS18B20的单片机温度监测系统
![基于DS18B20的单片机温度监测系统](https://img.taocdn.com/s3/m/397c70feab00b52acfc789eb172ded630b1c98bc.png)
基于DS18B20的单片机温度监测系统一、引言近年来,随着物联网技术的快速发展,各种智能设备得到了广泛应用。
其中,温度监测系统在生活、工业和农业等领域发挥着重要作用。
基于DS18B20的单片机温度监测系统是一种成本低、精度高、易于实现的温度监测方案。
本文将详细介绍基于DS18B20的单片机温度监测系统的原理、设计和实现。
二、系统原理基于DS18B20的单片机温度监测系统由DS18B20温度传感器、单片机和显示设备组成。
DS18B20是一种数字温度传感器,通过单总线协议与单片机进行通信。
单片机负责接收DS18B20传感器的数据,并将温度值显示在相应的显示设备上。
三、硬件设计1. DS18B20温度传感器DS18B20温度传感器具有较高的温度测量精度和广泛的工作温度范围。
它采用单总线接口,只需要一个IO口即可完成与单片机的通信。
在设计中,将DS18B20的VDD引脚连接到单片机的供电引脚,GND引脚连接到单片机的地引脚,DQ 引脚连接到单片机的IO口。
2. 单片机单片机是温度监测系统的核心控制器,负责接收DS18B20传感器的数据并进行处理。
常用的单片机型号有STC89C52、AT89S52等。
在设计中,将单片机的IO口连接到DS18B20传感器的DQ引脚,通过单总线协议与传感器进行通信。
3. 显示设备显示设备用于将温度值显示出来,常用的显示设备有LCD液晶显示屏、LED数码管等。
在设计中,将单片机的IO口连接到显示设备的控制引脚,通过控制引脚向显示设备发送温度值。
四、软件设计1. 单片机程序设计单片机程序设计是整个系统的核心,主要包括初始化配置、与DS18B20传感器通信、温度数据处理和显示等功能。
在程序设计中,首先需要初始化单片机的IO口和定时器,使其能够与DS18B20传感器进行通信。
接着,通过单总线协议与传感器进行通信,从传感器读取温度数据。
然后,对读取的温度数据进行处理,计算出实际的温度值。
实验报告温度计(SPI通信及单总线通信)
![实验报告温度计(SPI通信及单总线通信)](https://img.taocdn.com/s3/m/5bd5acec9b89680203d8255d.png)
{
dat_w12864(0x00);//写点内容,列地址自动加1
}
}
}
/***初始化****/
void init12864(void)
{
chekbusy12864();
cmd_w12864(0xc0);
cmd_w12864(0x3f);
}
/**8X16字符的显示**/
实验原理及内容:
1.DS18B20与单片机采用单总线通信,DS1302与单片机采用SPI通信,在液晶显示器上实时显示当前的温度以及日历与时间。
2.实验电路图如下:
实验步骤及数据记录:
3.实验程序如下:
main程序如下:
#include "ds18b20.h"
#include "12864.h"
#include "1302.h"
vertical(3,63,63);
vertical(3,63,62);
vertical(3,63,58);
vertical(3,63,57);
for(i=0;i<7;i++)
{
dot(57+i,3);
dot(57+i,63);
}
for(i=0;i<12;i++)
{
dot(59,8+5*i);
}
for(i=0;i<7;i++)
cmd_w12864(page+0xb9);
for(i=16;i<32;i++)
{
ds18b20温度传感器工作原理
![ds18b20温度传感器工作原理](https://img.taocdn.com/s3/m/ecd049b3951ea76e58fafab069dc5022aaea4625.png)
ds18b20温度传感器工作原理
DS18B20是一种数字温度传感器,它通过一根单一的数据总线进行工作。
传感器内部有一个精确的温度传感器和数字转换器。
以下是DS18B20温度传感器的工作原理:
1. 单线总线通信:DS18B20传感器使用单一的数据总线进行通信。
该总线不仅用于传输数据,还用于为传感器提供电源。
通过这种方式,可以减少传感器的引脚数量,使其适用于各种微控制器和嵌入式系统。
2. 温度测量:传感器内部有一个温度传感器,该传感器可以测量实时环境温度。
它使用精确的电阻和温度-电压转换技术,以确保温度测量的准确性和稳定性。
3. 数据转换:DS18B20传感器将温度测量结果转换为数字信号。
传感器内部的模数转换器将模拟信号转换为数字码,以便于传感器与主控制器之间的通信和处理。
4. ROM存储器:每个DS18B20传感器都有一个唯一的64位ROM存储器。
这个ROM存储器包含传感器的唯一序列号、制造商信息和其他相关信息。
这些信息可以用来识别传感器并设置其工作参数。
5. 通信协议:DS18B20传感器使用一种称为1-Wire协议的通信协议与主控制器进行通信。
该协议在传感器和主控制器之间建立一种基于时间的序列通信方式,主控制器上的软件可以通过这种协议与传感器进行数据传输、配置和控制。
总而言之,DS18B20温度传感器通过单一的数据总线进行通信,并使用内部的温度传感器和数字转换器测量环境温度。
它通过ROM存储器保存唯一的序列号和其他信息,使用1-Wire 协议与主控制器进行通信。
DS18B20的工作原理
![DS18B20的工作原理](https://img.taocdn.com/s3/m/0f8b6df168dc5022aaea998fcc22bcd126ff42e3.png)
DS18B20的工作原理DS18B20是一种数字温度传感器,它基于一种称为“单总线”的通信协议来与微控制器进行通信。
DS18B20能够以高精度和高分辨率测量环境温度,并通过数字信号输出温度值。
DS18B20的工作原理如下:1. 温度传感器:DS18B20采用了一个精确的温度传感器,该传感器基于温度对半导体材料的电气特性的影响进行测量。
传感器内部包含一个电阻,其电阻值会随温度的变化而变化。
2. 单总线通信:DS18B20使用单总线通信协议与微控制器进行通信。
单总线是一种串行通信协议,只需要使用一个引脚即可实现数据传输。
DS18B20通过该引脚接收来自微控制器的指令,并将温度数据以数字信号的形式发送回微控制器。
3. ROM存储器:DS18B20内部包含一个惟一的64位ROM存储器,用于存储传感器的惟一标识符和其他相关信息。
这个惟一标识符可以用于区分多个DS18B20传感器。
4. 温度转换:DS18B20的温度转换过程分为三个步骤:启动转换、温度转换和读取温度。
首先,微控制器向DS18B20发送启动转换的指令。
然后,DS18B20开始测量环境温度,并将其转换为数字信号。
最后,微控制器通过单总线通信协议从DS18B20读取温度值。
5. 分辨率和精度:DS18B20具有可调节的分辨率和精度。
它可以以9位、10位、11位或者12位的分辨率输出温度值,分别对应0.5°C、0.25°C、0.125°C和0.0625°C的精度。
通过调整分辨率,可以根据应用需求平衡精度和响应时间。
6. 供电和引脚:DS18B20可以通过单总线引脚从微控制器获得供电,也可以通过外部电源供电。
除了单总线引脚,DS18B20还包含用于供电和地线连接的引脚。
总结:DS18B20是一种数字温度传感器,通过单总线通信协议与微控制器进行通信。
它利用温度对半导体材料的电气特性的影响进行测量,具有高精度和高分辨率。
DS18B20温度传感器与单片机间的通信
![DS18B20温度传感器与单片机间的通信](https://img.taocdn.com/s3/m/83c673d148d7c1c709a1455f.png)
DS18B20温度传感器与单片机间的通信线(延长线)可以多长20 [ 标签:温度传感器,单片机,通信线] 我需要延长50-100米,请问这是正常使用的距离还是要加特殊元件用它做探头,再弄个单片机,数码管,蜂鸣器成本很低吧,用两个18B20,延长线我选的是网线,当然线的成本是另算的,我指单片机读取显示部分成本就是很低?答案TS-18B20 数字温度传感器,该产品采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
1: 技术性能描述1.1 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
1.2 测温范围-55℃~+125℃,固有测温分辨率0.5℃。
1.31.4 工作电源: 3~5V/DC1.5 在使用中不需要任何外围元件1.6 测量结果以9~12位数字量方式串行传送1.7 不锈钢保护管直径Φ6 1.8 适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温1.9 标准安装螺纹M10X1, M12X1.5, G1/2”任选1.10 PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。
2:应用范围2.1 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域2.2 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。
2.3 汽车空调、冰箱、冷柜、以及中低温干燥箱等。
2.5 供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制编辑本段|回到顶部3:产品型号与规格型号测温范围安装螺纹电缆长度适用管道TS-18B20 -55~125 无 1.5 m TS-18B20A -55~125 M10X1 1.5m DN15~25TS-18B20B -55~125 1/2”G 接线盒DN40~ 60编辑本段|回到顶部4:特点独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源测量温度范围为-55 °C至+125 ℃。
基于单总线器件DS18B20的智能温度测量
![基于单总线器件DS18B20的智能温度测量](https://img.taocdn.com/s3/m/d102d4b81a37f111f1855b75.png)
2010年第23期(总第111期)
writeonechar(0xbe);//发读温度寄存器命令 tempL=read_byte(); //读检测低8位温度值 tempH=read_byte(); //读检测高8位温度值 temperatue=change( );//转换为实际温度 display(temperatue);//显示温度 }
Cheng Yuanlian Guangzhou Panyu polytechnic, Guangzhou, 511483, China
Abstract: 1-wireBus technology is introduced briefly. And the operating principle of the 1-wire device DS18B20 is expounded detailed. Based on DS18B20, an intellect temperature measuring set is composed. The paper gives out the concrete design procedures of the set and is beneficial to know about the application of 1-wireBus technology. Key words: DS18B20; 1-wireBus; temperature measurement
1.硬件设计 由D S18B20构成的智能温度测量装置由3部分组 成:D S18B20温度传感器、单片机A T89S51及显示模 块。其电路如图3所示。温度传感器D S18B20可置于离 装置150米以内的任何地方,输出脚I/O直接与单片机 的P2.7相连,R4为上拉电阻,传感器采用外部电源供 电。单片机A T89S51是整个装置的控制核心。显示模 块由四位一体的共阳数码管和4个9012组成。
(完整版)单片机与DS18B20传感器连接.
![(完整版)单片机与DS18B20传感器连接.](https://img.taocdn.com/s3/m/0e245b3d69dc5022abea006e.png)
案例单片机与DS18B20传感器连接下图给出了DS18B20与单片机连接的电路图,用单片机AT89C52的P0.7口线经上拉后接至DS18B20的引脚2数据端,引脚1接电源地端,引脚3接+5V电源端。
单片机与DS18B20的连接电路图下面给出对DS18B20的操作用C51编写的具体程序。
应该说明的是,程序对应于单片机的时钟频率为12MHz,如改用其它时钟频率,程序中的延时应重新调整。
#include <reg51.h>#include <intrins.h>sbit LE = P2^5;sbit DQ = P0^7;bit DS_IS_OK = 1;unsigned char seg[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //字段数组定义了12个元素,其中第11个元素是负号"-"的字段码//第12个元素为不显示的字段码,用于显示正温度值unsigned char buf[4];unsigned int temperature;void delay(unsigned int time) //延时函数{while(time--);}unsigned char Init_Ds18b20() //DS18B20初始化函数{unsigned char status;DQ = 1; delay(8);DQ = 0;delay(90);DQ = 1;delay(5);status = DQ;delay(60);return status;}unsigned char read() //读字节函数{unsigned char i = 0;unsigned char dat = 0;DQ=1;_nop_();for(i=8; i>0; i--){DQ = 0;dat >>= 1;DQ = 1;_nop_();_nop_();if(DQ) dat |=0x80;delay(30); DQ = 1;}return(dat);}void write(unsigned char dat) //写字节函数{unsigned char i;for(i=8;i>0;i--){DQ = 0;DQ = dat & 0x01;delay(5);DQ=1; dat >>=1;}}void ReadTemperature() //采样温度函数{unsigned char tempL=0;unsigned char tempH=0;if(Init_Ds18b20() == 1) //DS18B20故障DS_IS_OK = 0;else{DS_IS_OK = 1;write(0xcc);write(0x44);Init_Ds18b20();write(0xcc);write(0xbe);tempL = read();tempH = read();temperature = (tempH<<8)|tempL;}}void dispute() //温度值显示处理函数{unsigned int temp,temp1; //用于中途的数据转换//以下if语句用于处理负温度值,因为保存的是温度值的补码if((temperature & 0xf800) == 0xf800){temperature = ~temperature+1;buf[0]=10;}else buf[0]= 11;temp=temperature/16.0*100;//转换成实际温度值并放大100倍,用于对百分位四舍五入if(temp <10) buf[0] = 11; //处理0度,温度是0度时保证不出现负号else{temp1 = temp % 10;if(temp1>=5) //四舍五入temp += 10;}temp /= 10 ; //去掉温度值的百分位if(temp>=1000) //如果温度>=100度,则显示四位{buf[0]=temp/1000;buf[1]=temp/100%10;buf[2]=temp/10%10;buf[3]=temp%10;}else {buf[1]=temp/100;buf[2]=temp/10%10;buf[3]=temp%10;}}void display() //显示函数.{int i,j;unsigned char temp=0xfe;for(j=0;j<30;j++) //由于是动态显示方式,因此必须多次循环才能成功显示,很关键,处理不好温度值将显示不成功{temp=0xfe;for(i=0;i<4;i++){LE=0; P2=temp;if(i==2)P1=seg[buf[i]]+0x80;else P1=seg[buf[i]];LE=1;LE=0;delay(10);temp=(temp<<1)|1;}P2=temp; //关显示,进行下一次测试}}void main(){ReadTemperature();delay(50000);delay(50000);while(1){if(DS_IS_OK ==1){ReadTemperature();dispute();display();}}}。
DS18B20的工作原理
![DS18B20的工作原理](https://img.taocdn.com/s3/m/d3de7348a517866fb84ae45c3b3567ec112ddc61.png)
DS18B20的工作原理DS18B20是一种数字温度传感器,它采用单总线接口进行通信,并能够提供高精度的温度测量。
其工作原理如下:1. 基本原理:DS18B20采用了基于半导体的温度传感技术。
它内部集成了温度传感器、模数转换器和数字接口电路。
传感器通过测量半导体材料的电阻来获取温度信息,然后将其转换为数字信号输出。
2. 温度测量:DS18B20的温度测量是通过测量半导体材料的电阻来实现的。
半导体材料的电阻随着温度的变化而变化,DS18B20利用这一特性来确定温度。
其内部集成了一个精密的模数转换器,可以将电阻值转换为数字信号。
3. 单总线接口:DS18B20采用单总线接口进行通信,这意味着它只需要一条数据线即可完成数据传输。
通过控制数据线上的电平变化,可以实现与DS18B20的通信。
这种设计简化了连接和控制电路的复杂性。
4. 工作原理:DS18B20的工作原理可以分为三个步骤:初始化、温度转换和读取温度值。
- 初始化:主设备发送初始化命令,DS18B20响应并进入工作模式。
- 温度转换:主设备发送温度转换命令,DS18B20开始测量温度,并将结果存储在内部寄存器中。
- 读取温度值:主设备发送读取命令,DS18B20将温度值通过单总线接口发送给主设备。
5. 精度和分辨率:DS18B20具有高精度和可调节的分辨率。
它可以提供精度为±0.5℃的温度测量,并且可以通过设置分辨率来调整测量精度。
分辨率越高,测量精度越高,但测量时间也会增加。
6. 应用领域:DS18B20广泛应用于各种需要温度测量的领域,例如气象观测、工业自动化、家用电器等。
由于其数字接口和高精度的特性,它在温度监测和控制方面具有很大的优势。
总结:DS18B20是一种基于半导体技术的数字温度传感器,通过测量半导体材料的电阻来获取温度信息,并通过单总线接口与主设备进行通信。
它具有高精度、可调节的分辨率和广泛的应用领域。
在各种温度测量和控制场景中,DS18B20都是一种可靠且方便的选择。
单片机课程设计-DS18B20单线数字温度传感器
![单片机课程设计-DS18B20单线数字温度传感器](https://img.taocdn.com/s3/m/fe40172c0066f5335a812199.png)
第一章:概述 (1)第二章:课程设计功能描述 (2)第三章:课程设计分析设计 (3)3.1. 温度采集系统 (3)3.2. DS18B20单线数字温度传感器 (3)3.2.1.DS18B20的管脚 (4)3.2.2.DS18B20存储器 (5)3.2.3.DS18B20高速暂存存储器 (5)3.2.4.DS18B20有4个主要的数据部件 (6)3.2.5.DS18B20和电源的接线方式 (7)3.3. DS18B20的工作原理 (8)3.3.1.DS18B20的初始化 (8)3.3.2.对DS18B20写和读 (9)3.3.3.DS18B20在应用中应注意的事项 (12)3.4. AT89S52单片机简介 (13)3.4.1. AT89S52主要功能列举如下 (13)3.4.2. AT89S52各引脚功能介绍 (13)第四章:绘制硬件电路图并对硬件电路图进行说明 (16)4.1.PROTUEL软件简介 (16)4.2.PROTUEL软件特色 (17)第五章:绘制软件流程图和对软件流程图的介绍 (19)第六章:上机调试及运行结果 (21)6.1.对proteus的简介 (21)6.2.proteus功能特点 (21)6.3.电路仿真 (22)6.4.调试遇到的问题分析 (22)6.5. PRTEUS原理图 (23)总结 (23)参考文献 (25)附录 (26)第一章:概述大学本科学生动手能力的培养和提高是大学本科教育的一个重要内容。
如何让学生在学好基础知识的同时,迅速掌握应用技术,实验与课程设计环节起着非常重要的作用。
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)DS18B20的复位时序
所有时序都是 将主机作为主设备,单总线器件 作为从设备。而每一次命令和数据的传输都是从主 机主动启动写时序开始,如果要求单总线器件回送 数据,在进行写命令后,主机需 启动读时序完成 数据接收。数据和命令的传输都是低位在先。
(2)DS18B20的读数据时序
18B20的读时序是从主机把单总线拉 低之后,在15us之内就得释放单总线,以让 DS18B20把数据传输到单总线上。DS18B20在完成一 个读时序过程,至少需要60us才能完成。下图为 DS18B20的读取数据时序图。
1、单总线概述
目前常用的微机与外设之间进行数据传 输的串行总线主要有I2C总线、SPI总线和 SCI总线。这些总线至少需要两条或两条以 上的信号线。
近年来,美国的达拉斯半导体(DALLAS SEMICONDUCTOR)推出了一项特有的数据传 输技术。该技术与上述总线不同,它采用 单根信号线,既可传输时钟,又能传输数 据,而且数据传输是双向的。这种具有线 路简单,硬件开销 ,成本低廉,便于总线 扩展和维护的数据传输技术被称之为单总 线技术
TO-92封装的DS18B20的引脚排列见图
DS18B20的引脚排列图 其引脚功能如下 GND:信号地 DQ :数据输入/输出引脚。开漏单总线接口引脚。 当被用着在寄生电源下,也可以向器件提供电源。 VDD:可选择的VDD引脚。当工作于寄生电源时,此 引脚必须接地。
2)DS18B20的读写方法
由于DS18B20是在一根I/O线上读写数据,因此, 对读写的数据位有着严格的时序要求,DS18B20 有严格的通信协议来保证各位数据传输的正确性 和完整性。该协议定义了几种信号的时序:初始 化时序、读时序、写时序。 所有时序都是 将主 机作为主设备,单总线器件作为从设备。而每一 次命令和数据的传输都是从主机主动启动写时序 开始,如果要求单总线器件回送数据,在进行写 命令后,主机需 启动读时序完成数据接收。数据 和命令的传输都是低位在先。
主机和从机之间的通信可通过3个步骤 完成,分别为初始化单总线器件、识别单 总线器件和交换数据。由于它们是主从结 构,只有主机呼叫从机时,从机才能应答, 因此主机访问单总线器件都必须严格遵循 单总线命令序列,即初始化、ROM、命令功 能命令。如果出现序列混乱,单总线器件 将不响应主机(搜索ROM命令,报警搜索命 令除外)。
3、通过完成项目,了解单线多点测控系统的 基本原理。
【项目知识点与技能点】
1、单总线的通信协议。
2、使用单总线技术控制多个从机设备的 基本原理。
3、单总线器件DS18B20的相关知识。
【项目知识准备】
1、单总线概述 2、单总线的工作原理 3、使用单总线技术控制多个从机设备的基本
原理及示意 4、单总线器件DS18B20的相关知识
基于DS18B20测温传感器的单总线
• 项目功能 • 项目知识点与技能点 • 项目知识准备 • 软件设计 • 硬件电路 • 项目实施
【项目功能】
1、完成单片机读取单总线数字式温度传感器 DS18B20,并将所得到的温度数据通过数 码管显示出来。
2、通过完成项目,了解单总线器件的控制及 读取原理,并掌握其基本应用。
3、使用单总线技术控制多个从机设备的基本 原理及示意
单总线适用于单主机系统,能够控制一 个或多个从机设备。主机可以是微控制器, 从机可以是单总线器件,它们之间的数据交 换只通过一条信号线。当只有一个从机设备 时,系统可按单节点系统操作;当有多个从 机设备时,系统则按多节点系统操作。下图 所示是单总线多节点系统的示意图。
a、只要求一个端口即可实现通信。 b、在DS18B20中的每个器件上都有独一无二的 序列号。 c、实际应用中不需要外部任何元器件即可实 现测温。 d、测量温度范围在-55℃到+125℃之间。 e、数字温度计的分辨率用户可以从9位到12位 选择。 f、内部有温度上、下限告警设置。
(2)、DS18B20的引脚介绍
4、单总线器件DS18B20的相关知识
1)DS18B20基本知识
DS18B20数字温度传感器是DALLAS公司生 产的1-Wire,即单总线器件,具有线路简 单,体积小的特点。因此用它来组成一个 测温系统,线路简单,在一根通信线可以 挂很多这样的数字温度字温度传感器,十 分方便。
(1)DS18B20产品的特点
(2)DS18B20的使用注意事项
A、在对DS1820进行读写编程时,必须严格的保证读写时序, 否则将无法读取测温结果。在使用PL/M、C等高级语言进行 系统程序设计时,对DS1820操作部分最好采用汇编语言实现。 B、当单总线上所挂DS1820超过8个时,就需要解决微处理器 的总线驱动问题,这一点在进行多点测温系统设计时要加以注 意。 C、连接DS1820的总线电缆是有长度限制的。当采用普通信号 电缆传输长度超过50m时,读取的测温数据将发生错误。当 将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达 150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正 常通讯距离进一步加长。这种情况主要是由总线分布电容使信 号波形产生畸变造成的。因此,在用DS1820进行长距离测温 系统设计时要充分考虑总线分布电容和阻抗匹配问题。
DS18B20的写数据时序图如图
3)DS18B20测量数据存放格式及使用注意事 项
(1)DS18B20的数据存放格式
18B20中的温度传感器可独立完成对温度的 测量,以12位转化为例:用16位符号扩展的二 进制补码读数形式提供,以0.0625℃/LSB形 式表达,其中S为符号位。这是12位转化后得 到的12位数据,存储在DS18B20的两个8比特 的RAM中,二进制中的前面5位是符号位,如 果测得的温度大于0,这5位为0,只要将测到 的数值乘于0.0625即可得到实际温度;如果 温度小于0,这5位为1,测到的数值需要取反 加1再乘于0.0625即可得到实际温度。例如 +125℃的数字输出为07D0H,+25.0625℃的数 字输出为0191H,-25.0625℃的数字输出为 FF6FH,-55℃的数字输出为FC90H。
2、单总线的工作原理
简单的说,单总线即只有一根数据线, 系统中的数据交换、控制都由这根线完成。 设备(主机或从机)通过一个漏极开路或 三态端口连至该数据线,以允许设备在不 发送数据时能够释放总线,而让其它设备 使用总线。单总线通常要求外接一个约为 4.7kΩ 的上拉电阻,这样,当总线闲置时, 其状态为高电平。
通常把挂在单总线上的器件称之为单总线器 件,单总线器件内一般都具有控制、收/发、存储 等电路。为了区分不同的单总线器件,厂家生产 单总线器件时都要刻录一个64位的二进制ROM代码, 以标志其ID号。对于每一个单总线器件,都有一 个唯一的ID号与之相对应。在主机对其进行操作 时,先对单总线上所有的单总线器件进行ID识别, 然后确定要操作的单总线器件并匹配其ID号,最 后通过读写指令对其进行操作。这样,便能保证 所有单总线上各点与主机之间通讯畅通无阻、准 确无误。
(3)DS18B20的写数据时序
DS18B20的写数据时序同样可以分为写0和写1 两个过程,但在时序操作上与读取数据时序有所不 同。当要写0时序时,单总线要被拉低至少60us, 保证DS18B20能够在15us到45us之间能够正确地采 样IO总线上的“0”电平,当要写1时序时,单总线 被拉低之后,在15us之内就得释放单总线。
D、在DS1820测温程序设计中,向DS1820发出温度转换 命令后,程序总要等待DS1820的返回信号,一旦某个 DS1820接触不好或断线,当程序读该DS1820时,将没 有返回信号,程序进入死循环。建议采用看门狗解决一问 题。
E、测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地 线与信号线,另一组接VCC和地线,屏蔽层在源端单点接 地。
【软件设计】
程序流程图
【硬件电路】
单总线器件DS18B20测温显示原理图
原理图说明:
单片机读取单总线器件DS18B20 温度传感器所 测量的数据,并通过数码管显示出来。DS18B20 的单总线与单片机的PD6管脚相连接。显示部分 为以74LS164主器件的5位数码管,PC4为显示数 据输入端,PC5为时钟端。这样就构成了以 ATmega16单片机为核心、DS18B20为测量器件 的温度测量系统。
【项目实施】