您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > DS18B20原理及引脚介绍
DS18B20原理及引脚介绍DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20产品的特点(1)、只要求一个端口即可实现通信。(2)、在DS18B20中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在-55。C到+125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。TO-92封装的DS18B20的引脚排列见下图,其引脚功能描述见下:1.GND地信号2.DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3.VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。18b20应用电路图18B20控制命令字18B20的ROM命令指令说明读ROM(33H)读18B20的序列号匹配ROM(55H)继续读完64位序列号的命令,用于多个18B20时定位跳过ROM(CCH)此命令执行后的在存储器打操作针对在线所有18B20搜ROM(F0H)识别总线上各器件的编码,为操作各器件做准备报警搜索(ECH)公温度越限的器件对此命令作出响应18B20存储控制命令指令说明温度转换(44H)启动在线ds18B20做温度AD转换读数据(BEH)从高速暂存器读9位温度值和CRC值写数据(4EH)将数据写入高速暂存的第3和第4字节中复制(48H)将高速暂存器中第3和第4字节复制到EERAM读EERAM(B8H)将EERAM内容写入高速暂存器中第3和第4字节读电源供电方式(B4H)了解18B20的供电方式18b20程序WENDU_LEQU29H;用于保存读出温度的低字节WENDU_HEQU28H;用于保存读出温度的高字节XIAOSHUEQU27H;用于保存温度的小数部分ZHENGSHUEQU26H;用于保存整数部分BIAOZHIBIT50H;18B20检查位1为存在,0为不存在ORG0000HAJMPMAINORG0030HMAIN:MOVSCON,#00HACALLDUWENACALLZHENGHEACALLBCDACALLDISPACALLTIME1AJMPMAIN;----------------------------------------------------------------------------------------------------------------------------------------;读温度子程序;----------------------------------------------------------------------------------------------------------------------------------------DUWEN:SETBP2.0ACALLFUWEI;读温度之前必须先复位JBBIAOZHI,CUNZAI;查看标志位看18B20是否存在,1为存在,0为不存在RET;不存在则返回CUNZAI:;存在则开始读温度MOVA,#0CCH;跳过ROM匹配ACALLXIE;调写子程序MOVA,#44H;发出温度转换命令ACALLXIE;调写子程序ACALLTIME1;调1秒延时,等等AD转换完成,现在分辨率为12位,温度最大转换时间为750MSACALLFUWEI;读温前需要复位MOVA,#0CCH;跳过ROM匹配ACALLXIEMOVA,#0BEH;发读温度命令ACALLXIEACALLDUSHU;将闱出数据读回CLRP1.2RET;------------------------------------------------------------------------------------------------------------------------------;复位子程序;18B20复位需要将数据位拉低500us;18B20收到信号后要等待16-60us,然后发出60-240us的低脉冲;-------------------------------------------------------------------------------------------------------------------------------FUWEI:SETBP2.0NOPCLRP2.0MOVR0,#3INTE:MOVR1,#107;设一个537us延时KK1:DJNZR1,KK1DJNZR0,INTESETBP2.0;拉高数据线,等待回应NOPNOPNOPMOVR0,#25;INTE1:JNBP2.0,INTE2;延时延时50us等待18B20回应,若返回低脉冲则说明18B20存在DJNZR0,INTE1AJMPINTE3;经过反应时间而没检测到18B20的存在,则跳转去清零标志位INTE2:SETBBIAOZHI;检测到18B20存在,置1标志位CLRP1.0AJMPINTE4INTE3:CLRBIAOZHI;没检测到18B20,清零标志位AJMPINTE5INTE4:MOVR0,#120;延时240us,确定回应信号已发完KK:DJNZR0,KKINTE5:SETBP2.0RET;----------------------------------------------------------------------------------------------------------------------------------------;写18B20子程序;-----------------------------------------------------------------------------------------------------------------------------------------XIE:MOVR2,#8;写计数寄存器,一共有8位数据CLRCLP:CLRP2.0MOVR3,#6;设一个延时LL1:DJNZR3,LL1RRCA;右循环,先输出低位MOVP2.0,CMOVR3,#23;设延时LL:DJNZR3,LL;SETBP2.0NOPNOPDJNZR2,LP;判断是否完成数据传送SETBP2.0;完成传送拉高数据位RET;-----------------------------------------------------------------------------------------------------------------------------------------;从18B20中读出温度数据子程序;-----------------------------------------------------------------------------------------------------------------------------------------DUSHU:MOVR4,#2;设读回数据个数指针MOVR1,#WENDU_L;把温度数据低位存入29HRE:MOVR2,#8;设数据长度指针RE1:CLRCSETBP2.0NOPNOPCLRP2.0NOPNOPNOPSETBP2.0MOVR3,#9DJNZR3,$MOVC,P2.0MOVR3,#23NN:DJNZR3,NNRRCADJNZR2,RE1MOV@R1,ADECR1;高位存入28HDJNZR4,RERET;---------------------------------------------------------------------------------------------------------------------------------;数据整合子程序;温度源数据的整合,读出数据的高字节的低四位决定温度的整数部分;低字节的低四位决定小数部分;-----------------------------------------------------------------------------------------------------------------------------ZHENGHE:MOVA,#0FHANLA,WENDU_L;低字节的低四位就是小数部分MOVXIAOSHU,A;获得小数部分MOVA,WENDU_L;将高字节的低四位移入低字节的高4位,MOVC,40H;获得的新字节就是整数部分的数据RRCAMOVC,41HRRCAMOVC,42HRRCAMOVC,43HRRCAMOVZHENGSHU,ARET;-----------------------------------------------------------------------------------------------------------------------------------------;显示数据拆解程序、显示程序、延时程序;----------------------------------------------------------------------------------------------------------------------------------------;数据拆解程序BCD:MOVA,ZHENGSHUMOVB,#10DIVABMOV50H,AMOV51H,BMOVA,XIAOSHUMOVR0,#52HMOVR2,#4D0:MOVB,#10MULABMOVB,#16DIVABMOV@R0,AINCR0MOVA,BDJNZR2,D0RET;-----------------------------------;显示程序;----------------------------------DISP:ACALLTIMEMOVR7,#6MOVDPTR,#TABMOVR0,#55HLP1:MOVA,@R0;MOVCA,@A+DPTRCJNER7,#2,NE1ANLA,#07FHNE1:MOVSBUF,AJNBTI,$CLRTIDECR0DJNZR7,LP1RET;----------------------------------------;延时程序;----------------------------------------TIME1:MOVR6,#4LOOP2:MOVR5,#250LOOP1:ACALLD1MSDJNZR5,LOOP1DJNZR6,LOOP2RETTIME:MOVR6,#200LOOP3:ACALLD1MSDJNZR6,LOOP3RETD1MS:MOVR7,#250LOOP0:NOPNOPNOPDJNZR7,LOOP0RETTAB:DB0C0H,0F9H,0A4H,0B0HDB99H,92H,82H,0F8HDB80H,90H,88H,83HDB0C6H,0A1H,86H,8EHDB0FFHEND18B20温度传感器温度计程序
本文标题:DS18B20原理及引脚介绍
链接地址:https://www.777doc.com/doc-5174218 .html