DS18B20的编程应用举例.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DS18B20的编程应用举例 DS18B20功能很强,电路连接却很简单,代价是程序麻烦。在总线上只有一个DS18B20的情况下,如果我们要启动一次温度转换,并读出转换的结果,则要如下几个步骤: 初始化 发出跳过ROM命令,因为只有一个从器件,不必寻址。 发出转换命令 等待转换完成,出厂默认进行12位转换,需要750毫秒。 初始化 发出跳过ROM命令 发出读RAM命令 读RAM内容,一般读出前2个字节就可以了。 读出的字节地址0、1的内容格式如下:见图10-24 图10-24 读出的数据格式 从图中可以看出,总共有16位二进制数,二的补码形式,最高位的几个S是符号位的扩展,0代表正,1代表负,然后有7位整数,小数点在20位的后面,单位为摄氏度,如果利用小数部分,可以达到的分辨率是1/16度,其实它的测量精度只能达到1/2度,再高的分辨率只有相对意义。 读出DS18B20的转换结果之后,就要对数据进行处理。可以根据需要编写适当的处理子程序。 按照图10-20的接线,我们可以编写启动一次温度转换,并读出转换的结果的程序如下: 先对程序中使用的单片机资源进行分配和定义,包括子程序中用到的。如果改变资源的分配,修改这里就可以了。 TEMPER_L EQU 36H ;温度值低字节 TEMPER_H EQU 35H ;温度值高字节 TEMPER_NUM EQU 60H ;计算后温度值 FLAG1 BIT 00H ;18B20存在时置一,不存在时置零 DQ BIT P3.3 ;18B20的数据线接在P3.3 GET_TEMPER: SETB DQ ; 空闲状态 BCD: LCALL INIT_1820 ;1820初始化 JB FLAG1,S22 ;存在标志,就进行下一步 LJMP DEF ;若DS18B20不存在则返回 S22: LCALL DELAY1 ;延时70US MOV A,#0CCH ;跳过ROM匹配的命令---0CCH LCALL WRITE_1820 ;将命令写入DS18B20 MOV A,#44H ;温度转换命令----044H LCALL WRITE_1820 ;写入 LCALL DELAY ;延时132MS,等待18B20转换温度完成 LCALL DELAY ;延时132MS CBA: LCALL INIT_1820 ;1820初始化 JB FLAG1,ABC ;存在标志,就进行下一步 LJMP CBA ;若DS18B20不存在则返回 ABC: LCALL DELAY1 ;延时70μS MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 ;写入 MOV A,#0BEH ;发出读温度命令 LCALL WRITE_1820 ;写入 LCALL READ_18202 ;读出2字节,放在TEMPER_L和TEMPER_H两个单元 DEF: RET ;================================================================ 以上程序中使用了大量的子程序,目的是节省存储器,也使程序结构清晰,这段程序就是按照前面的步骤写出来的。各个不同的子程序完成各自的功能,多个子程序互相配合,完成题目的要求。几个重要子程序如下: ;-------------------DS18B20初始化程序 ;在只有一个DS18B20时适用, ;先复位脉冲(低电平)500US,释放总线(高电平) ;再等待100US, ;若有低电平,说明器件存在,置标志位FLAG1 为1;否则置0 INIT_1820: SETB DQ NOP CLR DQ ;低电平,复位脉冲开始 MOV R3,#07FH

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档