资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
芯片介绍 DS18B20 及示范程序第 1 页 共 7 页数字温度传感器DS18B20芯片介绍单总线命令序列典型的单总线命令序列如下第一步:初始化;第二步:ROM 命令跟随需要交换的数据;第三步:功能命令跟随需要交换的数据;(每次访问单总线器件,必须严格遵守这个命令序列。)如果出现序列混乱,则单总线器件不会响应主机。但是这个准则对于搜索ROM 命令和报警搜索命令例外。在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。1 初始化基于单总线上的所有传输过程,都是以初始化开始的。初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道总线上有从机设备,且准备就绪,复位和应答脉冲的时间详见单总线信号部分。2 ROM命令在主机检测到应答脉冲后,就可以发出ROM 命令。每种命令长度为8 ,主机在发出功能命令之前必须送出合适的ROM 命令。ROM 命令的操作流程如图3 所示。ROM命令字如下:READROM命令代码33H:如果只有一片DS1820,可用此命令读出其序列号,若在线DS1820多于一个,将发生冲突。MATCHROM命令代码55H:多个DS1820在线时,可用此命令匹配一个给定序列号的DS1820,此后的命令就针对该DS1820。SKIPROM命令代码CCH:此命令执行后的存储器操作将针对在线的所有DS1820。SEARCHRDH命令代码F0H:用以读出在线的DS1820的序列号。ALARMSEARCH命令代码ECH:当温度值高于TH或低于TL中的数值时,此命令可以读出报警的DS1820。3 功能命令(以 DS18B20 为例) WRITESCRATCHPAD命令代码4EH:写两个字节的数据到温度寄存器。 READSCRATCHPAD命令代码BEH:读取温度寄存器的温度值。COPYSCRATCHPAD命令代码48H:将温度寄存器的数值拷贝到EEROM中,保证温度值不丢失。RECALL EE命令代码B8H:将EEROM中的数值拷贝到温度寄存器中。READPOWERSUPPLY命令代码B4H:在本命令送到DS1280之后的每一个读数据芯片介绍 DS18B20 及示范程序第 2 页 共 7 页间隙,指出电源模式:“0”为寄生电源;“1”为外部电源。CONVERT命令代码44H:启动在线 DS1280做温度A/D转换1DS1820 的特性单线接口:仅需一根口线与MCU 连接无需外围元件由总线提供电源测温范围为-5575,精度为0.5九位温度读数A/D 变换时间为200ms用户自设定温度报警上下限,其值是非易失性的 报警搜索命令可识别哪片DS1820 超温度限2DS1820 引脚及功能(见图4) GND:地; DQ:数据输入输出脚(单线接口,可作寄生供电); VDD:电源电压。4DS18B20 内部结构DS1820 的内部结构如图 5 所示。由图5 可知,DS1820 由三个主要数字器件组成: 64bit 闪速 ROM;温度传感器;非易失性温度报警触发器 TH 和 TL。64bit 闪速 ROM 的结构如下5. 温度寄存器格式图 4.DS18B20 引脚图图 5.DS18B20 内部结构芯片介绍 DS18B20 及示范程序第 3 页 共 7 页7. DS18B20 内部存储器结构8.DS18B20 时序及信号方式所有的单总线器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲、写 0、写 1、读 0 和读 1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前,这一点与多数串行通信格式不同(多数为字节的高位在前) 。8.1 初始化序列:复位和应答脉冲单总线上的所有通信都是以初始化序列开始,包括:主机发出的复位脉冲及从机的应答脉冲,如图 8 所示。当从机发出响应主机的应答脉冲时,即向主机表明它处于总线上,且工作准备就绪。在主机初始化过程,主机通过拉低单总线至少 480s,以产生(Tx )复位脉冲。接着,主机释放总线,并进入接收模式(Rx) 。当总线被释放后,5k 上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时 15-60s,接着通过拉低总线 60-240s,以产生应答脉冲。82 读/写时隙在写时隙期间,主机向单总线器件写入数据;而在读时隙期间,主机读入来自从机的数据。在每一个时隙,总线只能传输一位数据。图 8. DS18B20 复位与应答脉冲芯片介绍 DS18B20 及示范程序第 4 页 共 7 页821 写时隙存在两种写时隙:“写 1”和“写 0”。主机采用写 1 时隙向从机写入 1,而采用写 0 时隙向从机写入 0。所有写时隙至少需要 60s,且在两次独立的写时隙之间至少需要 1s 的恢复时间。两种写时隙均起始于主机拉低总线(图 5 所示) 。产生写 1 时隙的方式:主机在拉低总线后,接着必须在 15s 之内释放总线,由 5k 上拉电阻将总线拉至高电平;而产生写 0 时隙的方式:在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少 60s) 。在写时隙起始后 15-60s 期间,单总线器件采样总线电平状态。如果在此期间采样为高电平,则逻辑 1 被写入该器件;如果为 0,则写入逻辑 0。822 读时隙单总线器件仅在主机发出读时隙时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。所有读时隙至少需要60s ,且在两次独立的读时隙之间至少需要 1s 的恢复时间。每个读时隙都由主机发起,至少拉低总线 1s(图 5 所示) 。在主机发起读时隙之后,单总线器件才开始在总线上发送 0 或 1。若从机发送 1,则保持总线为高电平;若发送 0,则拉低总线。当发送 0 时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。从机发出的数据在起始时隙之后,保持有效时间 15s,因而,主机在读时隙期间必须释放总线,并且在时隙起始后的 15s 之内采样总线状态。图 9. DS18B20 读/ 写时隙芯片介绍 DS18B20 及示范程序第 5 页 共 7 页示范程序temp equ 50hORG 000HSTART: MOV SP,#70HMOV 25H,#00HMOV 26H,#00HMOV 27H,#00HMOV 28H,#00HlCALL DIRlCALL DELAYMAIN: lCALL reset_pulselCALL PRESENCElCALL READ_TEMPmov a,51hanl a,#07hswap amov 51h,amov a,temp;Temperature LSBanl a,#0f0hswap aorl a,51hmov b,#100div abda amov 25h,amov a,bmov b,#10div abda amov 26h,amov a,bda amov 27h,amov a,tempanl a,#0fhmov b,#2div abda amov 28h,alCALL DIRmov a,26hcjne a,#5,compareacall alam_bellsjmp continucompare: jc continulcall alam_bellcontinu: lcall delayAJMP MAINwrite_alam:mov a,#0cchlcall write_bytemov a,#4ehlcall write_bytemov a,#32h;上限报警 50度lcall write_bytemov a,#0a0hlcall write_bytemov a,#0efhjnb p1.1,$retread_temp: ;Read temperature DS1820 mov a,#0cch ;Skip ROM command acall write_byte mov a,#044h ;Initiates temperature conversion acall write_byte jnb p1.1,$ ;Read temperature busy status acall delayacall reset_pulse ;Tx reset pulse acall presence ;Rx presence pulse mov a,#0cch ;Skip ROM command acall write_byte mov A,#0beh ;Read scratchpad command acall write_byte acall read_byte ;Read EEprom byte 0 (Temperature LSB) mov temp,a acall read_bytemov 51h,a acall reset_pulse ;Tx reset pulse acall presence ;Rx presence pulse ret read_byte:;-Read scratchpad 1 byte- mov r3,#8 ;-count 8 bit -read1: clr p1.1 nop nop setb p1.1 nop nop nop nop mov c,p1.1 芯片介绍 DS18B20 及示范程序第 6 页 共 7 页mov r2,#30 ;delay 60 uS djnz r2,$ rrc a djnz r3,read1 ret write_byte: ;write scratchpad 1 byte mov r3,#8;counter 8 bit write: rrc a jc write1 clr p1.1 ;p1.2mov r2,#15 ;delay 60 uS djnz r2,$ setb p1.1 nop nop nop nop djnz r3,write ret write1: clr p1.1 nop nop nop nop setb p1.1 mov r2,#15 ;delay 60 uS djnz r2,$ djnz r3,write ret reset_pulse: ;Tx reset pulse clr p1.1 mov r2,#250 ;delay 500 uS djnz r2,$ setb p1.1 mov r2,#10 ;delay 20 uS djnz r2,$ ret presence: jb p1.1,$ ;Rx presence pulse jnb p1.1,$ ret alam_bell:setb p1.6mov 1eh,#10main2: mov r6,#200pp: mov r7,#50cc: djnz r7,cccpl p1.6djnz r6, ppmov r6,#200pp1: mov r7,#60cc1: djnz r7,cc1cpl p1.6djnz r6,pp1djnz 1eh,main2retdir: mov dptr,#tabmov a,25hmovc a,a+dptrmov 29h,amov dptr,#tabmov a,26hmovc a,a+dptrmov 2ah,amov dptr,#tabmov a,27hmovc a,a+dptrorl a,#01Hmov 2bh,amov dptr,#tabmov a,28hmovc a,a+dptrmov 2ch,aacall dir1ret;dir1: clr p1.5clr p1.4mov r6,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号