您好,欢迎访问三七文档
信息与电气工程学院电子信息工程CDIO三级项目(2015/2016学年第二学期)课程名称:数字温度计设计专业班级:学号:学生姓名:指导教师:设计成绩:年月日1、简介采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器c8051f340构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外c8051f340在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用c8051f340芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。2、课程设计的目的和意义2.1温度计的设计内容:(1)温范围在0~50℃,误差在±0.5℃以内。(2)分可以采用LED数码管直读显示(四连排LED数码管)。(3)设置温度的上/下限2.2课程设计要求(1)计原理图及相应的硬件电路。(2)接电路板并对电路板调试。(3)择的设计题目,设计系统软件。软件要做到:操作方便,实用性强,稳定可靠。(4)明书格式规范,层次合理,重点突出。并附上设计原理图、电路板图及相应的源程序。3、DS18B20的工作原理DS18B20数字温度传感器概述DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20的外部封装形式和电路图如图所示图1外部封装形式图2电路图3.1、DS18B20产品的特点:1.只要求一个端口即可实现通信。2.在DS18B20中的每个器件上都有独一无二的序列号。3.实际应用中不需要外部任何元器件即可实现测温。4.测量温度范围在-55.C到+125.C之间。5.数字温度计的分辨率用户可以从9位到12位选择。6.内部有温度上、下限告警设置。DS18B20的引脚排列见右图,其引脚功能描述见表序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地表1DS18B20详细引脚功能描述3.2、DS18B20的内部结构DS18B20的内部有64位的ROM单元,和9字节的暂存器单元。64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(CRC)。使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。3.3、DS18B20的温度转换DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。DS18B20的温度操作是使用16位,也就是说分辨率是0.0625。BIT15~BIT11是符号位,为了就是表示转换的值是正数还是负数。(要求出正数的十进制值,必须将读取到的LSB字节,MSB字节进行整合处理,然后乘以0.0625即可。)程序如下:if((temp_hig&0xf8)==0xf8)//如果是负温度{temp_value=~temp_value+1;//转换成补码ng=1;//符号位}else{ng=0;}temp_value=temp_hig*256+temp_low;t=(float)(temp_value)/16;//得到的真正的温度2.4、DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。4、DS18B20的工作过程DS18B20一般都是充当从机的角色,而单片机就是主机。单片机通过一线总线访问DS18B20的话,需要经过以下几个步骤:(1)、DS18B20复位(初始化),DS18B20复位。在某种意义上就是一次访问DS18B20的开始,或者可说成是开始信号。(2)、执行ROM指令(ROM命令跟随着需要交换的数据);ROM指令,也就是访问,搜索,匹配,DS18B20个别的64位序列号的动作。在单点情况下,可以直接跳过ROM指令。而跳过ROM指令的字节是0xCC(3)、执行DS18B20功能指令(RAM指令),功能命令跟随着需要交换的数据。0x44:开始转换温度。转换好的温度会储存到暂存器字节0和1。0xEE:读暂存指令。读暂存指令,会从暂存器0到9,一个一个字节读取,如果要停止的话,必须写下DS18B20复位。访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了SearchROM和AlarmSearch这两个命令,在这两个命令后,主机都必须返回到第一步)。一般上我们都是使用单点,也就是说单线总线上仅有一个DS18B20存在而已。所以我们无需刻意读取ROM里边的序列号来,然后匹配那个DS18B20?而是更直接的,跳过ROM指令,然后直接执行DS18B20功能指令。初始化,DS18B20复位:在初始化过程中,主机通过拉低单总线至少480µs,以产生复位脉冲(TX)。然后主机释放总线并进入接收(RX)模式。当总线被释放后,5kΩ的上拉电阻将单总线拉高。DS18B20检测到这个上升沿后,延时15µs~60µs,通过拉低总线60µs~240µs产生应答脉冲。(4)、DS18B20的复位时序如下:1.单片机拉低总线480us~950us,然后释放总线(拉高电平)。2.这时DS18B20会拉低信号,大约60~240us表示应答。3.DS18B20拉低电平的60~240us之间,单片机读取总线的电平,如果是低电平,那么表示复位成功。4.DS18B20拉低电平60~240us之后,会释放总线。DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。指令协议功能读ROM33H读DS18B20中的编码(即64位地址)符合ROM55H发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20V温度转换命令,适用于单个DS18B20工作报警搜索命令0ECH执行后,只有温度超过庙宇值上限或下限的片子才做出响应温度转换44H启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果丰入内部9字节RAM中读暂存器BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据复制暂存器48H将RAM中第3、4字内容复制到E2PROM中重调E2PROM0B8H将E2PROM中内容恢复到RAM中的第3、4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1”表2DS18B20的功能命令读和写时序在写时序期间,主机向DS18B20写入指令;而在读时序期间,主机读入来自DS18B20的指令。在每一个时序,总线只能传输一位数据。读/写时序如图3-9所示。存在两种写时序:“写1”和“写0”。主机在写1时序向DS18B20写入逻辑1,而在写0时序向DS18B20写入逻辑0。所有写时序至少需要60µs,且在两次写时序之间至少需要1µs的恢复时间。两种写时序均以主机拉低总线开始。产生写1时序:主机拉低总线后,必须在15µs内释放总线,然后由上拉电阻将总线拉至高电平。产生写0时序:主机拉低总线后,必须在整个时序期间保持低电平(至少60µs)。在写时序开始后的15µs~60µs期间,DS18B20采样总线的状态。如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。DS18B20读逻辑0的步骤如下:1.在读取的时候单片机拉低电平大约1us2.单片机释放总线,然后读取总线电平。3.这时候DS18B20会拉低电平。4.读取电平过后,延迟大约40~45微秒。DS18B20读逻辑1的步骤如下:1.在读取的时候单片机拉低电平大约1us2.单片机释放总线,然后读取总线电平。3.这时候DS18B20会拉高电平。4.读取电平过后,延迟大约40~45微妙如果要读或者写一个字节,就要重复以上的步骤八次。如以下的C代码,使用for循环,和数据变量的左移和或运算,实现一个字节读与写。DS18B20只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数据命令后,必须马上产生读时序,以便DS18B20能够传送数据。所有读时序至少60µs,且在两次独立的读时序之间至少需要1µs的恢复时间。每次读时序由主机发起,拉低总线至少1µs。在主机发起读时序之后,DS18B20开始在总线上传送1或0。若DS18B20发送1,则保持总线为高电平;若发送0,则拉低总线。当传送0时,DS18B20在该时序结束时释放总线,再由上拉电阻将总线拉回空闲高电平状态。DS18B20发出的数据在读时序下降沿起始后的15µs内有效,因此主机必须在读时序开始后的15µs内释放总线,并且采样总线状态。DS18B20在使用时,一般都采用单片机来实现数据采集。只需将DS18B20信号线与单片机1位I/O线相连,且单片机的1位I/O线可挂接多个DS18B20,就可实现单点或多点温度检测。5、电路原理图及其实物图图3电路原理图6、C语言程序******************************************************************/#includec8051f340.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitBEEP=P3^0;sbitSEG1=P3^1;sbitSEG2=P3^2;sbitSEG3=P3^3;sbitSEG4=P3^4;sbitLED8=P1^7;sbitDQ=P3^5;uintdelaytime;uinttemp_min=10,temp_max=50;uchardisbuf[6];bitng;//符号位uinttemp;uinttemp1;chartemp_valuez;chartemp_valuex;uinta;voiddi
本文标题:数字温度计设计
链接地址:https://www.777doc.com/doc-2388122 .html