单线多点数字温度检测仪设计 - 图文(7)

2019-05-26 21:42

西南交通大学本科毕业设计(论文) 第23页

这个电路会在I/O或VDD引脚处于高电平时“偷”能量。当有特定的时间和电压需求时,I/O要提供足够的能量。寄生电源有两个好处:1)进行远距离测温时,无需本地电源。2)可以没有常规电源的条件下读ROM。要想使DS1820 能够进行精确的温度转换,I/O线必须在转换期间保证供电。由于DS1820 的 工作电流达到1mA,所以仅靠5K上拉电阻提供电源是不行的,当几只DS1820 挂在同一根I/O 线上并同时想进行温度转换时,这个问题变得更加尖锐。

有两种方法能够使DS18B20在动态转换周期中获得足够的电流供应。 第一种方法,当进行温度转换或拷贝到EE存储器操作时,给I/O线提供一个强上拉。用MOSFET把I/O线直接拉到电源上就可以实现,见图3-14。在发出任何涉及拷贝到EERAM或启动温度转换的协议之后,必须在最多10us之内吧I/O线转换到强上啦。使用寄生电源方式时,VDD引脚必须接地。

图3-14 DS18B20温度转换期间的强上拉供电

另一种给DS18B20供电的方法是从VDD引脚接入一个外部电源,如图3-15所示。这样做的好处是I/O线上不需要加强上拉,而且总线控制器不用再温度转换期间总保持高电平。这样在转换期间可以允许在单线总线上进行其他数据往来。另外,

西南交通大学本科毕业设计(论文) 第24页 在单线总线上可以挂任意多片DS18B20,而且如果它们都使用外部电源的话,就可以先发一个跳过ROM命令,再接一个温度变换命令,让它们同时进行温转换。注意当加上外部电源时,GND引脚不能悬空。

图3-15 VDD供电

温度高于100℃时,不推荐使用寄生电源,因为DS18B20在这种温度下表现出的漏电流比较大,通讯可能无法进行。在类似这种温度情况下,使用DS18B20的VDD引脚。

对于总线控制器不知道总线上的DS18B20是用寄生电源还是外部电源的情况,DS18B20预备了一种信号指示电源的示意图。总线控制器发出一个跳过ROM协议,然后发出读电源命令,这条命令发出后,控制器发出读时间间隙,如果是寄生电源,DS18B20在单线总线上发回“0”,如果是从VDD供电,则发回“1”,这样总线控制器就能决定总线上是否有DS18B20需要强上拉。如果控制器接收到一个“0”,它知道必须在温度转换期间I/O线提供强上拉。

3.3 DS18B20软件设计

单片机与DS18B20通信的时候,需要按照DS18B20的通信协议进行通信,而经过单线接口访问DS18B20的协议如下:1)初始化;2)ROM操作命令;3)存储器操作命令;4)处理/数据

西南交通大学本科毕业设计(论文) 第25页

3.3.1 DS18B20初始化

通过单线总线的所有执行(处理)都从一个初始化序列开始,初始化序列包括一个有总线控制器发出的复位脉冲和跟有其后由从机发出的存在脉冲。

时序见图3-16主机总线to 时刻发送一复位脉冲(最短为480us 的低电平信号)接着在tl 时刻释放总线并进入接收状态 DSl820 在检测到总线的上升沿之后 等

待15-60us接着DS1820 在t2 时刻发出存在脉冲(低电平 持续60-240 us) 如图中虚线所示。

以下子程序在MCS51 仿真机上通过其晶振为12M. 初始化子程序为:

15~60微秒 480微秒 60~240微秒 t1 t2 t3 t4 400~960微秒 t0

图3-16 初始化时序

RESET

PUSH B ;保存B寄存器 PUSH A; 保存A寄存器 MOV CLR MOV

A,#4 ;设置循环次数 P1.0 ;发出复位脉冲 B,#250 ;计数250次

跳出循环

DJNZ B,WAITL ;总线低等待 DJNZ ACC,WAITL;释放总线等待一段时间

SJMP SHORT WH: MOV B,#111 WH1: ORL C,P1.0

DJNZ B,WH1 ;存在时间等待 SHORT: POP A POP RET

B

DJNZ B,$ ;保持低电平500us SETB Pl.0 ;释放总线 MOV CLR

B,#6 ;设置时间常数 C ;清存在信号标志

WAITL:JB Pl.0,WH;若总线释放

西南交通大学本科毕业设计(论文) 第27页

3.3.2 写数据时序

当主机总线t o时刻从高拉至低电平时就产生写时间隙见图3-17图3-18,从t0时刻开始15us之内应将所需写的位送到总线上,DSl820在t0后15-60us间对总线采样。若低电平,写入的位是0,见图3-17;若高电平,写入的位是1,见图3-18。连续写2位间的间隙应大于1us

>1微秒 >60微秒 15微秒 45 微秒 >60微秒 t0 15~60微秒 t1 t0 t1

图3-17 写0时序 图3-18 写1时序

写位子程序(待写位的内容在C中) :

WRBIT:

PUSH B ;保存B MOV CLR

B,#28 ;设置时间常数 P1.0 ;写开始

NOP ;1us NOP ;1us N0P ;1us MOV

Pl.0,C ;C内容到总线

WDLT: DJNZ B,WDLT;等待56Us POP

B

NOP ;1us NOP ;1us

写字节子程序(待写内容在A中): WRBYTB: PUSH B ;保存B MOV

B#8H ;设置写位个数

SETB Pl.0 ;释放总线 RET ;返回

ACALL WRBIT ;调写 1位子程序 DJNZ BWLOP ;8位全写完? POP RET

B

WLOP: RRC A ;把写的位放到C

3.3.3 读数据时序

见图3-19,主机总线t0时刻从高拉至低电平时,总线只须保持低电平,之后

西南交通大学本科毕业设计(论文) 第28页 在t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后t 2时刻前有效。t2距t0为15微秒,也就是说t2时刻前主机必须完成读位,并在t0后的60~120 微秒内释放总线。

>60微秒 15微秒 t2 >60微秒 主机起作用 BS18B20起作用 上拉电阻起作用 t0 t1

图3-19 读数据时序

读位子程序(读得的位到C中): RDBIT:

PUSH B ;保存B PUSH A ;保存A MOV CLR t0时刻

NOP ;1us NOP ;1us NOP ;1us NOP ;1us

SETB Pl.0 ;释放总线 MOV

A,P1 ;P1口读到A

中):

ACALL RDBIT ;调读1位子程序 RRC 次送A

A ;把读到位在C中并依

B,#23 ;设置时间常数 P1.0 ;读开始图3-19的

MOV

C,EOH ;P1.0内容C

NOP ;1us NOP ;1us NOP ;1us NOP ;1us

RDDLT: DJNZ B,RDDLT ;等待46us

SETB P1.0 POP POP RET

A B

读字节子程序(读到内容放到ARDBYTE: PUSH B ;保存B

RLOP:MOV B,#8H ;设置读位数


单线多点数字温度检测仪设计 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:诸葛神薮

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: