- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
单片机应用技术潍坊职业学院机电工程学院任务5.2数字温度计LOGO项目五测控仪表任务5.2数字温度计明确任务在工业控制、智能家居等领域的测量系统中,环境温度的测量和控制是非常普遍和重要的。为了能对温度进行检测,需要温度传感器,把温度转换成相应的电信号。常用的模拟量传感器主要是PT100等,但是需要设计人员进行微弱电信号处理,然后再进行AD转换,将数字信息传给单片机进行处理,非常复杂。目前温度传感器正从模拟向数字方法转变,体积小使用方便,在很多场合已经代替了模拟式传感器。利用数字式温度传感器DS18B20制作一个数字温度计,利用LCD1602进行显示,精度1℃。DS18B20是DALLAS公司生产的1-Wire,即单总线器件,用它来组成一个测温系统,具有线路简单,体积小的特点。其全部传感元件及转换电路集成在形如一只三极管的集成电路内。另外1-Wire总线协议,节省且经济,可以挂接多个传感器,组建网络。知识链接一、DS18B20简介DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)(1)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。?(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃?。(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温?。??(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快?。?(8)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力?。?(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。二、DS18B20内部结构温度寄存器格式DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位常用温度表DS18B20存储器配置寄存器结构各位的意义如下bit7bit6bit5bit4bit3bit2bit1bit0TMR1R011111低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率DS18B20的温度分辨率设置DS18B20的ROM指令三、DS18B20通信指令DS18B20的RAM指令四、DS18B20时序1.初始化时序2写时序3读时序寄生电源供电方式五、DS18B20供电方式外部电源供电方式六、单个采用外部电源供电方式的DS18B20发出温度转换命令序号主机数据(LSB在先)说明1TX复位复位脉冲2RX存在应答应答信号3TXCCH发出跳过ROM指令4TX44H发出温度转换指令5RX1个字节的数据读“忙”标志3次,直至数据为FFH6TX复位复位脉冲7RX存在应答应答脉冲8TXCCH发出跳过ROM指令9TXBEH读暂存存储器命令10RX9个字节的数据读暂存存储器以及CRC,并把计算得出的CRC和读出的CRC相比较。如果两者相符,数据有效,主机保存温度值。11TX复位复位脉冲12RX存在应答应答脉冲,操作完成七硬件电路设计八ADC0809驱动程序设计/*******18B20初始化*******/voidinit_DS18B20() { unsignedcharx=0; DQ=1; //DQ复位 delay1(8); DQ=0; //将DQ拉高 delay1(80); DQ=1; //拉高总线 delay1(15); x=DQ; //稍做延时后如果x=0则
文档评论(0)