基于单片机和温度传感器的温度控制系统(5)

2018-12-21 11:59

图4-1 DS18B20两种封装

GND:芯片的输入电源的负极 DQ:它是信号的输入输出脚

VDD:芯片的输入电源的正极 NC:这是空引脚

4、DS18B20与单片机硬件连接

我们在前面也描述过温度传感器的特性,它具有单总线的特点,它的单总线技术是采用了单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的。与单片机与外设之间进行串行传输的串行总线I2C、SPI和SCI总线相比,它的线路更加简单,硬件少了很多外围器件,成本相对低了很多,总线扩展和维护方便。

17

图4-2 DS18B20与微处理器典型连接电路

从上图可以看得出,微控制器可以是单片机,从机可以是单总线器件,它们之间的数据传输是通过一条信号线。当只有一个从机设备时,系统可按单节点系统操作;当有多个从机设备时,系统则按多节点系统操作。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其他设备使用总线。单总线通常要求外接一个约为5K的上拉电阻。本毕业设计单片机只是与一个DS18B20通信,如果要控制多个DS18B20进行温度采集,只要将所有DS18B20的I/O口全部接到一起就可以了。具体操作时,可以通过读取每个DS18B20内部芯片的序列号来识别。

5、工作原理

我们要向利用单片机要读取出DS18B20的温度值数据,那么首先得要知道如何去控制DS18B20的指令,下面就简述这些指令。

(1)33H:读ROM,读取DS18B20温度传感器ROM中的编码(64位地址) (2)55H:匹配ROM。发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20并使之做出响应,为下一步对该DS18B20的读/写作准备。 (3)F0H:搜索ROM。用于确定挂接在同一总线上DS18B20的个数,识别64位ROM地址,为操作各器件做好准备。

(4)CCH:跳过ROM。忽略64位ROM地址,直接向DS18B20发温度转换命令,使用与一个从机工作。

(5)ECH:告警搜索命令。执行后只有温度超过设定值上限或下限的,芯片才做

18

出响应。

ROM的作用就可以分别出不同的DS18B20,这样在一条总线上挂接多个DS18B20,单片机也可以轻易分别出来。当主机需要对众多在线DS18B20中的某一个进行操作时,主机应先逐个与DS18B20挂接,读出其序列号。然后再将所有的DS18B20挂接到总线上,单片机发出匹配ROM命令,紧接着主机提供的64位序列号之后的操作就是针对该DS18B20。

本毕业设计只对一个DS18B20进行操作,所以就不需要读取ROM编码和匹配了,直接跳过ROM命令,就可以进行温度转换和读取。其操作如下:

(1)44H--温度转换。启动DS18B20进行温度转换,结果存入9字节的RAM中。 (2)BEH--读暂存器。读内部RAM中9字节的温度数据。

(3)4EH--写暂存器。发出向内部RAM的第2,3字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节数据。其他指令在这里就不做详细介绍。

DS18B20在出厂时都是默认配置为12位的,其中最高位为符号位,也就是温度值共11位,单片机在读数据时,一次会读两字节共16位,读完后将低11位的二进制数转化为十进制数后再乘以0.0625便为所测的实际温度值。另外,还需要判断温度的正负。前5个字符为符号位,这5位同时变化,我们只需要判断11位就可以了。前5位为1时,读取的温度为负值,且测到的数值需要取反加1再乘以0.0625才得到实际温度值。前5位为0时,读取温度位为正值,只需要将数值乘0.0625即可。

6、工作时序图

(1)初始化(时序图见图4-3)

图4-3初始化时序图

19

① 首先将数据线置高电平1。

② 然后进行延时(尽可能短,没有严格要求)。 ③ 然后把数据线拉倒低电平0。

④ 再延时750μs(时间可以在480μs~960μs中选) ⑤ 再将数据线拉高到电平1。

⑥ 延时等待。如果初始化成功则在15~60μs内产生一个由DS18B20返回的低电平0。这个可以确定它的存在。

⑦ 假设是单片机的CPU读到数据线上的低电平后,还要进行延时,那么时间从发出高电平算起不能少于480μs。

⑧ 最后将数据线再次拉到低电平后结束。 (2)DS18B20写数据(时序图见4-4)

图4-4 DS18B20写时序图

① 首先将数据线先置低电平0。 ② 然后延时确定的时间为15μs。 ③ 再按从低位到高位的顺序来发送数据。 ④ 其中延时时间为45μs。 ⑤ 再把数据线拉倒高电平1。

⑥ 然后再重复前面五步,直到发送完整一个字节。 ⑦ 最后将数据线拉高到1。 (3)DS18B20读数据(时序图见4-5)

20

图4-5 DS18B20读时序图

① 首先将数据线拉高到1。 ② 然后延时2μs。 ③ 再将数据线拉低到0.

④ 然后延时5μs。(时间大于1μs) ⑤ 再将数据线拉高到1. ⑥ 延时4μs。

⑦ 通过读数据线的状态得到下一个状态位,而且再进行数据处理。 ⑧ 延时30μs。

⑨ 重复以上所有步骤,直到读取完一个字节 4.3显示模块

在显示模块中,温度的显示采用三个共阴数单位码管显示。现在简单介绍下共阴数码管的原理:共阴数码管的内部就是8个发光二极管的阴极连接在一起,而8个阳极是相互独立的。对于共阴数码管来说,通常设计电路都是阴极接地。当我们要显示什么数时,只要按照共阴数码管编码表,对单片机相应的I/O口赋值就可以显示相应的数字。

21


基于单片机和温度传感器的温度控制系统(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年度针灸康复科年终工作总结 (自动保存的)

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

马上注册会员

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