网站大量收购独家精品文档,联系QQ:2885784924

ds18b20在温室环境监测中的应用.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ds18b20在温室环境监测中的应用 1 ds18b20温度信号采集 在许多应用于温室环境监控的温敏元件中,尽管温敏电阻成本低,但后续电路复杂,需要进行温度校正。由于输出是模型信号,输出信号较弱,因此需要对后续电路进行放大和转换。如果采用普通传输,精度难以得到保证,但测量放大器的价格非常高,这增加了系统的成本。本系统采用美国DALLAS公司的产品可编程单总线数字式温度传感器DS18B20实现温室内温度信号的采集,进而实现温室内的温度监测及对其他传感器进行温度补偿。 DS18B20具有很多优点:如直接输出数字信号,故省去了后继的信号放大及模数转换部分,外围电路简单,成本低;单总线接口,只有一根信号线作为单总线与CPU连接,且每一只都有自己唯一的64位系列号存储在其内部的ROM存储器中,故在一根信号线上可以挂接多个DS18B20,便于多点测量且易于扩展。 DS18B20的测温范围从-55~125℃,且在-10~85℃之间精度为±0.5℃满足温室内温度监测的要求。 2 sd18b20温室温度监测 2.1 ds18b20工作原理 系统采用美国ATMEL公司的AT89C51单片机,其内部含有可重复编程的Flash存储器,可进行1000次擦写操作,故在开发过程中可以十分容易进行程序的修改,大大缩短了开发周期。 AT89C51外接E2PROM存储器,可采集大量数据进行计算并存储,进而通过RS232通讯接口将数据传送到上层计算机进行进一步分析处理,再根据分析结果对单片机进行控制。 系统通过键盘实现监测方式的选择:循环显示各路测量值、单独显示某一路的测量值、给每一路设定上下限报警值等。 DS18B20有两种封装模式:3脚和8脚封装,其中3脚封装比较常用,引脚功能分别为地GND、电源VDD、信号DQ。DS18B20可通过两种方式供电:外加电源工作方式和寄生电源方式。前者需要外加电源,正负极分别接引脚VDD及GND;后者不需外加电源,当总线(信号线)为高时稳定电源的提供是通过单线上的上拉电阻实现,总线信号为低时则由其内部的电容供电,在此种方式下VDD接地。系统采用3脚封装的DS18B20,选用外加电源工作方式。采用此种方式能增强DS18B20的抗干扰能力,保证工作的稳定性。 2.2 ds18b20读取时序 测温子系统流程图见图2。 通过编程可实现DS18B20温度转换结果的位数(9~12 bit)选择,其各自对应的分辨率为0.5℃、0.25℃、0.125℃和0.0625℃,其默认值为12,可在最多750 ms内把温度值转换为数字且实现12位分辨率。本系统采用其默认值12位分辨率。 对DS18B20处理顺序为:第一步:初始化;第二步:发送ROM命令;第三步:发送功能命令。初始化包括主机发出复位脉冲(通过将总线拉低至少480μs来实现)随即主机等待DS18B20发回的存在脉冲。DS18B20则从检测到复位脉冲的上升沿开始等待15~16 μs后通过将单线总线拉低60~240 μs实现存在脉冲的发送。初始化完成后即可发送ROM命令,包括搜索ROM命令(FOH)、读ROM命令(33H)、符合ROM命令(55H)、跳过ROM命令(CCH)及报警搜索命令(ECH)。随后即可发送功能命令,包括温度变换命令(44H)、写暂存器(4EH)读暂存器(BEH)命令等。命令的传送是通过写时序实现的,而主机读取DS18B20传送的数据是通过读时序实现的。本测温子系统主要使用的命令为匹配ROM命令、温度变换命令及读暂存器命令。 其中主要子程序代码如下: 复位子程序: TRESET: SETB P1.1 NOP CLR P1.1 MOV R0,#78H RESET1: DJNZ R0,RESET1;延时484 μs SETB P1.1 MOV R0,#0AH RESET2: JNB P1.1,RESET3 DJNZ R0,RESET2;延时84 μs LJMP RESET4 RESET3: MOV R2,#00H;有传感器则将R2置0 LJMP RESET5 RESET4: MOV R2,#0FH RESET5: MOV R0,#15H RESET6: DJNZ R0,RESET6 写时序子程序: TWRITE: SETB P1.1 MOV A,R3 MOV R6,#08H WRITE1: RRC A CLR P1.1 NOP MOV P1.1C;将欲传送值以进位形式送出 MOV R0,#15H;延时88 μs WRITE2: DJNZ R0,WRITE2 SETB P1.1 NOP DJNZ R6,WRITE1 RET 读时序子程序: TREAD: MOV R1,#21H;温度值存放的首址 MOV R5,#09H;读取的字节数 READ1: MOV R6,#08H READ2

文档评论(0)

lmzwkyc + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档