多路18b20测温系统设计论文_第1页
多路18b20测温系统设计论文_第2页
多路18b20测温系统设计论文_第3页
多路18b20测温系统设计论文_第4页
多路18b20测温系统设计论文_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录绪论 -4-第一章背景及探讨意义 -5-1.1温度传感器的发展状况 -5-1.2智能温度传感器发展的新趋势 -5-提高测温精度和辨别力 -6-增加测试功能 -6-总线技术的标准化与规范化 -6-牢靠性及平安性设计 -6-虚拟温度传感器和网络温度传感器 -7-单片测温系统 -8-1.3选题背景和探讨意义 -8-其次章方案设计与论证 -9-2.1方案一:运用AD7416作为传感器 -9-2.2方案二:运用DS18B20作为传感器 -9-2.3方案比较 -10-第三章DS18B20简介 -11-3.1DS18B20的特点 -11-3.2DS18B20的内部结构 -11-3.3DS18B20的运用留意事项 -14-3.4DS18B20的工作原理 -15-第四章总体电路设计 -17-4.1电路硬件设计 -17-4.2电路软件设计 -17-4.2.1DS18B20的工作流程 -17-4.2.2DS18B20温度采样程序 -18-串口通信 -19-显示程序设计 -21-结束语: -22-致谢: -23-参考文献: -24-附录 -25-附录1:程序 -25-附录2:PCB图 -48-附录3:实物图片 -48-关键词:DS18B20;分布式;测温系统;AT89C2051。绪论在人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。自18世纪工业革命以来,工业发展对是否能驾驭温度有着肯定的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推动了温度传感器和基于温度传感器的测温系统的发展。传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生产、科学探讨和生活等领域,数量高居各种传感器之首。近百年来,温度传感器的发展大致经验了以下三个阶段;(1)传统的分立式温度传感器(含敏感元件);(2)模拟集成温度传感器/限制器;(3)智能温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展。第一章背景及探讨意义1.1温度传感器的发展状况传感器主要大体经过了三个发展阶段:模拟集成温度传感器。该传感器是采纳硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不须要进行非线性校准,外围电路简洁。它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等;模拟集成温度限制器。模拟集成温度限制器主要包括温控开关、可编程温度限制器,典型产品有LM56、AD22105和MAX6509。某些增加型集成温度限制器(例如TC652/653)中还包含了A/D转换器以及固化好的程序,这与智能温度传感器有某些相像之处。但它自成系统,工作时并不受微处理器的限制,这是二者的主要区分;智能温度传感器(亦称数字温度传感器)是在20世纪90年头中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。智能温度传感器内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中心限制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器的特点是能输出温度数据及相关的温度限制量,适配各种微限制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。进入21世纪后,温度传感器的发展趋势正朝着高精度、多功能、总线标准化、高牢靠性及平安性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向快速发展。所以数字温度传感器得以更加广泛的应用。数字温度传感器DS18B20是智能温度传感器一种,它将非电模拟量温度值转换为数字信号输出仅需占用1位I/O端口,能够干脆读取被测物体的温度值。它体积小,电压适用范围宽3V~5V,用户还可以通过编程实现9~12位的温度读数,即具有可调的温度辨别率,因此它的好用性和牢靠性比同类产品更高。针对测温系统的发展趋势,本课题提出了运用DS18B20做为传感器的多路测温系统。1.2智能温度传感器发展的新趋势进入21世纪后,智能温度传感器正朝着高精度、多功能、总线标准化、高牢靠性及平安性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向快速发展。1.2.1提高测温精度和辨别力

在20世纪90年头中期最早推出的智能温度传感器,采纳的是8位A/D转换器,其测温精度较低,辨别力只能达到1°C。目前,国外已相继推出多种高精度、高辨别力的智能温度传感器,所用的是9~12位A/D转换器,辨别力一般可达0.5~0.0625°C。由美国DALLAS半导体公司新研制的DS1624型高辨别力智能温度传感器,能输出13位二进制数据,其辨别力高达增加测试功能新型智能温度传感器的测试功能也在不断增加。例如,DS1629型单线智能温度传感器增加了实时日历时钟(RTC),使其功能更加完善。DS1624还增加了存储功能,利用芯片内部256字节的E2PROM存储器,可存储用户的短信息。另外,智能温度传感器正从单通道向多通道的方向发展,这就为研制和开发多路温度测控系统创建了良好条件。智能温度传感器都具有多种工作模式可供选择,主要包括单次转换模式、连续转换模式、待机模式,有的还增加了低温极限扩展模式,操作特别简便。对某些智能温度传感器而言,主机(外部微处理器或单片机)还可通过相应的寄存器来设定其A/D转换速率(典型产品为MAX6654),辨别力及最大转换时间(典型产品为DS1624)。智能温度传感器的基础上发展而成的。典型产品有DS1620、DS1623、TCN75、LM76、MAX6625。智能温度限制器适配各种微限制器,构成智能化温控系统;它们还可以脱离微限制器单独工作,自行构成一个温控仪。1.2.3总线技术的标准化与规范化

目前,智能温度传感器的总线技术也实现了标准化、规范化,所采纳的总线主要有单线(1-Wire)总线、I2C总线、SMBus总线和spI总线。温度传感器作为从机可通过专用总线接口与主机进行通信。1.2.4牢靠性及平安性设计

传统的A/D转换器大多采纳积分式或逐次比较式转换技术,其噪声容限低,抑制混叠噪声及量化噪声的实力比较差。新型智能温度传感器(例如TMP03/04、LM74、LM83)普遍采纳了高性能的Σ-Δ式A/D转换器,它能以很高的采样速率和很低的采样辨别力将模拟信号转换成数字信号,再利用过采样、噪声整形和数字滤波技术,来提高有效辨别力。Σ-Δ式A/D转换器不仅能滤除量化噪声,而且对外围元件的精度要求低;由于采纳了数字反馈方式,因此比较器的失调电压及零点漂移都不会影响温度的转换精度。这种智能温度传感器兼有抑制串模干扰实力强、辨别力高、线性度好、成本低等优点。为了避开在温控系统受到噪声干扰时产生误动作,在AD7416/7417/7817、LM75/76、MAX6625/6626等智能温度传感器的内部,都设置了一个可编程的“故障排队(fAultqueue)”计数器,专用于设定允许被测温度值超过上、下限的次数。仅当被测温度连续超过上限或低于下限的次数达到或超过所设定的次数n(n=1~4)时,才能触发中断端。若故障次数不满意上述条件或故障不是连续发生的,故障计数器就复位而不会触发中断端。这意味着假定n=3时,那么偶然受到一次或两次噪声干扰,都不会影响温控系统的正常工作。LM76型智能温度传感器增加了温度窗口比较器,特别适合设计一个符合ACPI(AdvAncedConfigurAtionAndPowerInterfAce,即“先进配置与电源接口”)规范的温控系统。这种系统具有完善的过热爱护功能,可用来监控笔记本电脑和服务器中CPU及主电路的温度。微处理器最高可承受的工作温度规定为tH,台式计算机一般为75℃,高档笔记本电脑的专用CPU可达100℃。一旦CPU或主电路的温度超出所设定的上、下限时,INT端马上使主机产生中断,再通过电源限制器发出信号,快速将主电源关断起到爱护作用。此外为防止因人体静电放电(ESD)而损坏芯片。一些智能温度传感器还增加了ESD爱护电路,一般可承受1000~4000V的静电放电电压。通常是将人体等效于由100PF电容和1.2K欧姆电阻串联而成的电路模型,当人体放电时,TCN75型智能温度传感器的串行接口端、中断/比较器信号输出端和地址输入端均可承受1000V的静电放电电压。LM83型智能温度传感器则可承受4000V木驳绶诺绲缪埂最新开发的智能温度传感器(例如MAX6654、LM83)还增加了传感器故障检测功能,能自动检测外部晶体管温度传感器(亦称远程传感器)的开路或短路故障。MAX6654还具有选择“寄生阻抗抵消”(PArAsiticResistAnceCAncellAtion,英文缩写为prc)模式,能抵消远程传感器引线阻抗所引起的测温误差,即使引线阻抗达到100欧姆,也不会影响测量精确度。远程传感器引线可采纳一般双绞线或者带屏蔽层的双绞线。1.2.5虚拟温度传感器和网络温度传感器(1)虚拟传感器

虚拟传感器是基于传感器硬件和计算机平台、并通过软件开发而成的。利用软件可完成传感器的标定及校准,以实现最佳性能指标。最近,美国B&K公司已开发出一种基于软件设置的TEDS型虚拟传感器,其主要特点是每只传感器都有唯一的产品序列号并且附带一张软盘,软盘上存储着对该传感器进行标定的有关数据。运用时,传感器通过数据采集器接至计算机,首先从计算机输入该传感器的产品序列号,再从软盘上读出有关数据,然后自动完成对传感器的检查、传感器参数的读取、传感器设置和记录工作。(2)网络温度传感器

网络温度传感器是包含数字传感器、网络接口和处理单元的新一代智能传感器。数字传感器首先将被测温度转换成数字量,再送给微限制器作数据处理。最终将测量结果传输给网络,以便实现各传感器之间、传感器与执行器之间、传感器与系统之间的数据交换及资源共享,在更换传感器时无须进行标定和校准,可做到“即插即用”,这样就极大地便利了用户。1.2.6单片测温系统单片系统(SystemOnChip)是21世纪一项高新科技产品。它是在芯片上集成一个系统或子系统,其集成度将高达108~109元件/片,这将给IC产业及IC应用带来划时代的进步。目前,国际上一些闻名的IC厂家已起先研制单片测温系统,信任在不久的将来即可面市。1.3选题背景和探讨意义温度的测量和限制在储粮仓库、智能楼宇空调限制及其它的工农业生产和科学探讨中应用广泛。温度检测的传统方法是运用诸如热电偶、热电阻、半导体PN结如AD590之类的模拟传感器经信号取样电路、放大电路和模数转换电路处理,获得表示温度值的数字信号,再交由微处理器或DSP处理。被测温度信号从敏感元件接收的非电模拟量起先,到转换为微处理器可处理的数字信号之间,设计者须考虑的线路环节较多,相应测温装置中元器件数量难以下降,随之影响产品的高牢靠性及体积微缩化。这样,由于各种因素会造成传输检测系统较大的偏差;又因为检测环境困难、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和牢靠性下降。本文介绍一种基于数字温度传感器DS18B20的主从分布式多路测温系统、该系统以PC为主机,采纳ATMEL公司的AT89C2051单片机做从机,二者之间通过MAX232通讯总线连接,数字温度传感器通过与单片机P1.4至P1.7分别连接,系统结构简洁,抗干扰实力强,适合于恶劣环境下进行现场温度测量,可应用于仓库测温、楼宇空调限制制和生产过程监控等领域。其次章方案设计与论证2.1方案一:运用AD7416作为传感器AD7416的内部寄存器结构和引脚特性:AD7416是封装在一个SO-8芯片中的完整的温度计。它包括一个带隙温度传感器和一个用来监视并将温度数字化10位A/D转换器,其精度达0.25℃,温度测量范围-55℃至+125℃。其工作电源电压在2.7~5.5V之间,具有标准IC总线接口。由于采纳低功耗CMOS技术,Vcc(2.7~5.5V)和GND供应工作电源。同系列芯片还有AD7415等。AD7416的引脚配置如图2-1所示。SDA-串行地址/数据双向I/O端。漏极开路,运用时须接上拉电阻。SCL-串行时钟输入端。2.7V时可达100kHz,5V时达400kHz。OTI-温输出,漏极开路。可作为中断输出信号。在系统构成时,降低功耗起见,上拉电阻取值至少大于10kΩ。A0、A1、A2为地址引脚,AD7416可以级联至多8片在同一个IC上。Vcc(2.7V~5.5V)和GND供应工作电源。图2-1AD7416的引脚图2.2方案二:运用DS18B20作为传感器由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及限制仪器、测控系统和大型设备中。与传统的热敏电阻温度传感器不同,它能够干脆读出被测温度,并且可依据实际要求通过简洁的编程实现9~12位的数字值读数方式,可以分别在93.75ms和750ms内将温度值转化9位和12位的数字量。它具有体积小、接口便利、传输距离远等特点,内含寄生电源。系统有如下特点:(1)不须要备份电源,可通过信号线供电,电源电压范围从3.3~5V;(2)送串行数据,不须要外部元件;(3)温度测量范围从-55℃~+125℃,-10~+85℃时测量精度为±0.(4)通过编程可实现9~12位的数字值读数方式(出厂时被设置为12位);(5)在93.75ms和750ms内将温度值转化9位和12位的数字量;(6)零功耗等待;(7)系统的抗干扰性好,适合于恶劣环境的现场温度测量,如环境限制、设备过程限制、测温类消费电子产品等。2.3方案比较由于DS18B20结构更加简洁,内含寄生电源,管脚也只用了3个,体积更小,所以接口便利。它具有体积小,接口便利,传输距离远等特点。经过比较测试,本次毕业设计选用DS18B20作为温度传感器。第三章DS18B20简介3.1DS18B20的特点DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,运用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822“一线总线”数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55℃~+125℃,在-10~+85℃范围内,精度为±0.5℃。DS1822的精度较差为±2℃。现场温度干脆以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境限制、设备或过程限制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更敏捷、便利。而且新一代产品更便宜,体积更小。DS18B20、DS1822的特性DS18B20可以程序设定9~12位的辨别率,精度为±0.5℃。可选更小的封装方式,更宽的电压适用范围。辨别率设定,及用户设定的报警温度存储在EEPROM中,掉电后依旧保存。DS18B20的性能是新一代产品中最好的!性能价格比也特别精彩!DS1822与DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、辨别率参数的EEPROM,精度降低为3.2DS18B20的内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 表1-1二进制补码bit7bit6bit5bit4bit3bit2bit1bit0232221202-12-22-32-4bit15bit14bit13bit12bit11bit10bit9bit8SSSSS262524光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:起先8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最终8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式供应,以0.这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,假如测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;假如温度小于0,这5位为1,测到的数值须要取反加1再乘于0.0625即可得到实际温度。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,表1-2DS18B20暂寸寄存器分布寄存器内容字节地址温度最低数字位0温度最高数字位1高温限值2低温限值3保留4保留5记数剩余值6每度记数值7CRC校检8表1-3TEMPERATUREDIGTALOUTPUT(Binary)DIGITALOUTPUT(Hex)+12000001111101000007D0H+8500000101010100000550H+2500000001100100010191H+10000000001010001000A2H+000000000000010000008H000000000000000000000H-01111111111111000FFF8H-101111111101011110FF5EH-251111111001101111FF6EH-551111110010010000FC90H*Thepower-onresetvalueofthetemperatureregisteris+85DS18B20温度传感器的存储。DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,其次个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。该字节各位的意义:“TMR1R011111”,低五位始终都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置辨别率,如下表所示:(DS18B20出厂时被设置为12位)辨别率设置表:表1-4辨别率设置表R1R0辨别率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms0112位750ms据DS18B20的通讯协议,主机限制DS18B20完成温度转换必需经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位胜利后发送一条ROM指令,最终发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位胜利。表1-5指令代码和功能指令约定代码功能读ROM33H读DS18B20ROM中的编码(64位地址)符合ROM55H发出此吩咐后,接着发出64位ROM编码,访问单总线上与编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作打算。搜寻ROM0F0H用于确定挂接在同一总线上的DS18B20的个数和识别64位ROM地址,为操作各个器件作好打算。跳过ROM0CCH忽视64位ROM地址,干脆向DS18B20发温度转换温度,适用单片机工作。告警搜寻吩咐0ECH执行后,只有温度超过设定值上限或下限时单片机作出反应。温度转换44H启动DS18B20进行温度转换,转换时间最长500ms,结果存入内部9字节RAM中。读寄存器0BEH读内部RAM中9字节的内容。写寄存器4EH发出向内部RAM的第3,4字节上写上,下限温度数据吩咐,紧跟该吩咐之后,是传送两字节的数据。复制寄存器48H将内部RAM的第3,4字节的内容复制到EPRAM中。复制EPRAM0B8H将EPRAM中内容复原到RAM的第3,4字节。读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”。3.3DS18B20的运用留意事项DS18B20虽然具有测温系统简洁、测温精度高、连接便利、占用口线少等优点,但在实际应用中也应留意以下几方面的问题:(1)较小的硬件开销须要相对困难的软件进行补偿,由于DS18B20与微处理器间采纳串行数据传送,因此,在对DS18B20进行读写编程时,必需严格的保证读写时序,否则将无法读取测温结果。在运用PL/M、C等高级语言进行系统程序设计时,对DS18B20操作部分最好采纳汇编语言实现。(2)在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,简洁使人误认为可以挂随意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就须要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以留意。(3)连接DS18B20的总线电缆是有长度限制的。试验中,当采纳一般信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采纳每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种状况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。(4)在DS18B20发出温度转换吩咐后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时也要赐予肯定的重视。测温电缆线建议采纳屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。3.4DS18B20的工作原理图3-1DS18B20的工作原理图DS18B20的测温原理如图3-1所示,图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变更其振荡率明显变更,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃第四章总体电路设计4.1电路硬件设计图4-1电路原理图在单片机AT89C2051的P1.4至P1.7上分别接一个数字温度传感器DS18B20,DS18B20的1脚接地,3脚接+5V电源并上拉4.7K电阻。DS18B20处于写存储器操作和温度A/D变换操作时,总线上必需有强的上拉,上拉开启时间最大为10As。主机控DS18B20完成温度转换必需经过3个步骤:初始化、ROM操作指令、存储器操作指令。单片机系统所用的晶振频率为11.0592MHZ,依据DS18B20的初始化时序、写时序和读时序,分别编写3个子程序:INIT为初始化子程序,WRITE为写(吩咐或数据)子程序,READ为读数据子程序,全部的数据读写均由最低位起先。我的设计原理是P1口四路接受温度信号,然后发送到串口送入上位机,在上位机上完成对温度的显示和限制。4.2电路软件设计4.2.1DS18B20的工作流程在对DS18B20进行操作的整个工作过程中,主要包括三个关键过程:搜寻DS18B20序列号子程序;启动在线DS18B20作温度转换子程序:读取在线DS18B20的温度值子程序。在DS18B20接入系统之前,应分别从激光ROM中读出其序号,然后分别赐予在系统中的编号12N。单片机首先发出一复位脉冲,使信号线上全部的DS18B20芯片都被复位,然后从器件DS18B20回送一存在脉冲,告知主机已打算就绪。主机检测到存在脉冲就发出一个ROM操作吩咐,使序列号编码匹配的DS18B20被激活,打算接收下面的内存访问吩咐,其中包括读ROM,符合ROM,跳过ROM,告警搜寻等。内存访问吩咐限制DS18B20的工作状态,完成温度转换、存储、读取等一系列工作。图4-2为同步启动单片机某位线上DS18B20进行温度转换,然后从某指定的DS1820中读出转换温度结果,完成一个DS18B20的操作后,又转向另一个DS18B20的操作,如此反复,直至全部在线DS18B20的操作完成的工作。图4-2DS18B20的工作流程图4.2.2DS18B20温度采样程序本系统采纳P1口四路分别接四个数字传感器DS18B20,在DS18B20初始化后采集P1.4至P1.7四路温度,然后把采集的温度发送到串口送入PC机(上位机),并在上位机用VB远程限制和显示。起先起先初始化DS18B20复位采集第1路温度值采集第2路温度值采集第3路温度值发送数据采集第3路温度值图4-3温度采样程序流程图4.2.3串口通信PC机与单片机的接口如图4-4所示。AT89C2051单片机通过串行口干脆接收PC机传送来的串行数据,然后把接收到的数据存入数据存储器。由于PC机的串行口都是RS-232C标准的接口,所以,其输入输出在电平上和采纳TTL电平的AT89C2051在接口时会产生电平不同的问题。为了解决这个问题,在PC机和单片机的串行通信电路中加入了MAX232芯片,以实现TTL电平和RS-232C接口电平之间的转换。这样PC机和AT89C2051单片机进行串行通信时就可以顺当进行了。除了电路结构之外,要实现PC机和AT89C2051之间的通信,还须要有合适的通信软件。图4-4串口通信原理图为了能够在电脑端看到单片机发出的数据,我们必需借助一个WINDOWS软件进行视察,这里我们利用一个免费的电脑串口调试软件。图4-5电脑串口调试界面软件界面如图4-5所示,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站供应的51单片机试验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机试验板的万能插座中,并接通51单片机试验板的电源,这时只要按下K1一次,在串口调试助手软件的接收区界面中就会增加一个“AF”字符,表示单片机向电脑发送“AF”字符胜利。串口试验的源程序如下所示:;这是一个AT89C2051单片机试验开发板向PC机的串口单向发送数据AF的演示程序;采纳MAX232专用芯片作RS232/TTL电平转换。;通讯波特率为4800KBPS,只要按下一次K1(就是P3.6引脚变成低电平);就发送一个16进制的AF字符ORG0000HMOVSCON,#50H;设置成串口1方式MOVTMOD,#20H;波特率发生器T1工作在模式2上MOVPCON,#80H;波特率翻倍为2400x2=4800BPSMOVTH1,#0F3H;预置初值(依据波特率2400BPS预置初值)MOVTL1,#0F3H;预置初值(依据波特率2400BPS预置初值)SETBTR1;启动定时器T1;以上完成通讯初始化设置WRIT:JBP3.6,$;推断K1是否按下,假如没有按下就等待ACALLDELAY10;延时10毫秒消触点抖动JBP3.6,WRIT;去除干扰信号JNBP3.6,$;等待按键松开MOVA,#0AFH;将16进制的字符AF发送到串口去MOVSBUF,A;将AF通过串口发送出去AJMPWRIT;10毫秒延时子程序DELAY10:MOVR4,#20D2:MOVR5,#248DJNZR5,$DJNZR4,D2RETEND这是上面程序汇编以后获得的编程器烧写文件:88.hex。4.2.4VB显示程序设计在上位机做好VB显示界面,接受下位机发送的数据,做到正确显示。如单击串口开关就能显示测的P1.4至P1.7口上测得的温度。图4-6VB显示界面结束语:本次毕业设计的主要任务是通过DS18B20单线数字温度传感器和单片机实现多点测温,并通过串口上传给PC上位机,实现远程多点温度遥测功能!通过指导老师的指导和自己的努力,最终实现了这一课题!致谢:在毕业设计的整个过程中,让我体会到了整个过程的喜怒哀乐!熟识了单片机开发的每个步骤,它不但检查了我的整个学问面的驾驭程度,知道了自己的不足,让我更加坚固的驾驭了单片机方面的相关学问!也让我学会了在遇到问题时,如何冷静的思索问题,学习、解决问题!更让我懂得了学习贵在坚持,学到了更多以前没有学到过的学问。在这里,我很感谢指导老师和社会各界人士给我的帮助,使我能顺当完成我的毕业设计。参考文献:胡振宇,刘鲁源,杜振辉.DS18B20接口的C语言程序设计[J].单片机与入式系应用,2002.7.1。金伟正.单线数字温度传感器的原理与应用[J]。电子技术应用.2000.(6)。李朝青.单片机原理及接口技术[M].北京:航空航天高校出版社,1994。廖卫东.VisualBasic编程手册[M].北京:机械工业出版社,1996。周月霞,孙传友.DS18B20硬件连接及软件编程[J].传感器世界,2001(12)。单线数字温度传感器资料[M].武汉:武汉力源电子有限公司,1996。贾东耀,汪仁煌.数字温度传感器在仓库温度检测系统的应用[J].传感器世界,2001。徐淑华.单片微型机原理及应用[M].哈尔滨:哈尔滨工业高校出版社,1994。何立民.单片计应用系统设计[M].北京:航空航天高校出版社,1990.1。刘君华.智能传感器系统[M].西安:西安电子科技高校出版社,1999.1。沙占有.智能化集成温度传感器原理与应用[M].北京:机械工业出版社,2002.7:84-102。 附录附录1:程序单片机AT89C2051程序:#include<reg51.h>#include<stdio.h>#include<absacc.h>#include<intrins.h>//此文件中有_nop_()空操作函数#defineucharunsignedchar#defineuintunsignedintucharddt[11];//发送的数据/*******************1820脚定义*******************/sbitb1820_0=P1^4;sbitb1820_1=P1^5;sbitb1820_2=P1^6;sbitb1820_3=P1^7;bitok_1820_0;//复位后,若存在置1,不在置0bitok_1820_1;bitok_1820_2;bitok_1820_3;ucharwd_h,wd_l;//温度高8位温度低8位/*******************函数定义**************************/voidret1820_0(void);voidret1820_1(void);voidret1820_2(void);voidret1820_3(void);voidwrite1820_0(uchardda);voidwrite1820_1(uchardda);voidwrite1820_2(uchardda);voidwrite1820_3(uchardda);voidread1820_0(void);voidread1820_1(void);voidread1820_2(void);voidread1820_3(void);voidqd1820_0(void);voidqd1820_1(void);voidqd1820_2(void);voidqd1820_3(void);voidzhuanhuan_0();voidzhuanhuan_1();voidzhuanhuan_2();voidzhuanhuan_3();/*******************延时程序***************/voiddelay(uintk){while(k){k--;}}/******************1820_0复位*********************/voidret1820_0(void){uchari;b1820_0=1;_nop_();b1820_0=0;delay(68);//主机发出延时550微秒的复位低脉冲b1820_0=1;for(i=30;i>0;i--)//延时60us等待DS18B20回应{if(b1820_0){ok_1820_0=0;}//1820不存在else{ok_1820_0=1;i=1;}//1820存在,及退出推断}if(ok_1820_0)//1820存在则延时{for(i=200;i>0;i--)//延时240us{}}b1820_0=1;}/******************1820_1复位*********************/voidret1820_1(void){uchari;b1820_1=1;_nop_();b1820_1=0;delay(68);//主机发出延时550微秒的复位低脉冲b1820_1=1;for(i=30;i>0;i--)//延时60us等待DS18B20回应{if(b1820_1){ok_1820_1=0;}//1820不存在else{ok_1820_1=1;i=1;}//1820存在,及退出推断}if(ok_1820_1)//1820存在则延时{for(i=200;i>0;i--)//延时240us{}}b1820_1=1;}/******************1820_2复位*********************/voidret1820_2(void){uchari;b1820_2=1;_nop_();b1820_2=0;delay(68);//主机发出延时550微秒的复位低脉冲b1820_2=1;for(i=30;i>0;i--)//延时60us等待DS18B20回应{if(b1820_2){ok_1820_2=0;}//1820不存在else{ok_1820_2=1;i=1;}//1820存在,及退出推断}if(ok_1820_2)//1820存在则延时{for(i=200;i>0;i--)//延时240us{}}b1820_2=1;}/******************1820复位*********************/voidret1820_3(void){uchari;b1820_3=1;_nop_();b1820_3=0;delay(68);//主机发出延时550微秒的复位低脉冲b1820_3=1;for(i=30;i>0;i--)//延时60us等待DS18B20回应{if(b1820_3){ok_1820_3=0;}//1820不存在else{ok_1820_3=1;i=1;}//1820存在,及退出推断}if(ok_1820_3)//1820存在则延时{for(i=200;i>0;i--)//延时240us{}}b1820_3=1;}/******************b1820_0****************/voidwrite1820_0(uchardda){ucharj;for(j=8;j>0;j--)//先写低字节{b1820_0=1;_nop_();_nop_();b1820_0=0;_nop_();//5uSdelay_nop_();_nop_();_nop_();_nop_();if(dda&0x01){b1820_0=1;}else{b1820_0=0;}dda=dda>>1;delay(7);//66uSdelay}b1820_0=1;}voidread1820_0(void){uchari;for(i=8;i>0;i--)//读低八位{wd_l=wd_l>>1;b1820_0=1;_nop_();_nop_();b1820_0=0;_nop_();_nop_();_nop_();_nop_();b1820_0=1;_nop_();_nop_();_nop_();_nop_();if(b1820_0){wd_l=wd_l|0x80;}delay(7);//延时66uS}for(i=8;i>0;i--)//读高八位{wd_h=wd_h>>1;b1820_0=1;_nop_();_nop_();b1820_0=0;_nop_();_nop_();_nop_();_nop_();b1820_0=1;_nop_();_nop_();_nop_();_nop_();if(b1820_0){wd_h=wd_h|0x80;}delay(7);//延时66uS} }/******************b1820_1****************/voidwrite1820_1(uchardda){ucharj;for(j=8;j>0;j--)//先写低字节{b1820_1=1;_nop_();_nop_();b1820_1=0;_nop_();//5uSdelay_nop_();_nop_();_nop_();_nop_();if(dda&0x01){b1820_1=1;}else{b1820_1=0;}dda=dda>>1;delay(7);//66uSdelay}b1820_1=1;}voidread1820_1(void){uchari;for(i=8;i>0;i--)//读低八位{wd_l=wd_l>>1;b1820_1=1;_nop_();_nop_();b1820_1=0;_nop_();_nop_();_nop_();_nop_();b1820_1=1;_nop_();_nop_();_nop_();_nop_();if(b1820_1){wd_l=wd_l|0x80;}delay(7);//延时66uS}for(i=8;i>0;i--)//读高八位{wd_h=wd_h>>1;b1820_1=1;_nop_();_nop_();b1820_1=0;_nop_();_nop_();_nop_();_nop_();b1820_1=1;_nop_();_nop_();_nop_();_nop_();if(b1820_1){wd_h=wd_h|0x80;}delay(7);//延时66uS}}/******************b1820_2****************/voidwrite1820_2(uchardda){ucharj;for(j=8;j>0;j--)//先写低字节{b1820_2=1;_nop_();_nop_();b1820_2=0;_nop_();//5uSdelay_nop_();_nop_();_nop_();_nop_();if(dda&0x01){b1820_2=1;}else{b1820_2=0;}dda=dda>>1;delay(7);//66uSdelay}b1820_2=1;}voidread1820_2(void){uchari;for(i=8;i>0;i--)//读低八位{wd_l=wd_l>>1;b1820_2=1;_nop_();_nop_();b1820_2=0;_nop_();_nop_();_nop_();_nop_();b1820_2=1;_nop_();_nop_();_nop_();_nop_();if(b1820_2){wd_l=wd_l|0x80;}delay(7);//延时66uS}for(i=8;i>0;i--)//读高八位{wd_h=wd_h>>1;b1820_2=1;_nop_();_nop_();b1820_2=0;_nop_();_nop_();_nop_();_nop_();b1820_2=1;_nop_();_nop_();_nop_();_nop_();if(b1820_2){wd_h=wd_h|0x80;}delay(7);//延时66uS}}/******************b1820_3****************/voidwrite1820_3(uchardda){ucharj;for(j=8;j>0;j--)//先写低字节{b1820_3=1;_nop_();_nop_();b1820_3=0;_nop_();//5uSdelay_nop_();_nop_();_nop_();_nop_();if(dda&0x01){b1820_3=1;}else{b1820_3=0;}dda=dda>>1;delay(7);//66uSdelay}b1820_3=1;}voidread1820_3(void){uchari;for(i=8;i>0;i--)//读低八位{wd_l=wd_l>>1;b1820_3=1;_nop_();_nop_();b1820_3=0;_nop_();_nop_();_nop_();_nop_();b1820_3=1;_nop_();_nop_();_nop_();_nop_();if(b1820_3){wd_l=wd_l|0x80;}delay(7);//延时66uS}for(i=8;i>0;i--)//读高八位{wd_h=wd_h>>1;b1820_3=1;_nop_();_nop_();b1820_3=0;_nop_();_nop_();_nop_();_nop_();b1820_3=1;_nop_();_nop_();_nop_();_nop_();if(b1820_3){wd_h=wd_h|0x80;}delay(7);//延时66uS}}/***********************启动1820*******************/voidqd1820_0(void){ret1820_0();//复位,while(!b1820_0)//应答{}write1820_0(0xcc);//发skiprom吩咐write1820_0(0x44);//发转换吩咐delay(60000);//750mS等待转换delay(30000);ret1820_0();//复位,write1820_0(0xcc);//发skiprom吩咐write1820_0(0xbe);//发读吩咐read1820_0();}/***********************启动1820*******************/voidqd1820_1(void){ret1820_1();//复位,while(!b1820_1)//应答{}write1820_1(0xcc);//发skiprom吩咐write1820_1(0x44);//发转换吩咐delay(60000);//750mS等待转换delay(30000);ret1820_1();//复位,write1820_1(0xcc);//发skiprom吩咐write1820_1(0xbe);//发读吩咐read1820_1();}/***********************启动1820*******************/voidqd1820_2(void){ret1820_2();//复位,while(!b1820_2)//应答{}write1820_2(0xcc);//发skiprom吩咐write1820_2(0x44);//发转换吩咐delay(60000);//750mS等待转换delay(30000);ret1820_2();//复位,write1820_2(0xcc);//发skiprom吩咐write1820_2(0xbe);//发读吩咐read1820_2();}/***********************启动1820*******************/voidqd1820_3(void){ret1820_3();//复位,while(!b1820_3)//应答{}write1820_3(0xcc);//发skiprom吩咐write1820_3(0x44);//发转换吩咐delay(60000);//750mS等待转换delay(30000);ret1820_3();//复位,write1820_3(0xcc);//发skiprom吩咐write1820_3(0xbe);//发读吩咐read1820_3();}/******************zhuanhuan_0**********************************/voidzhuanhuan_0()//温度转换{ucharwd_zs,wd_xs,wd_fh;//温度整数部分,温度小数部分uinttemp;//算温度小数部分时的中间变量intwd_bm;qd1820_0();if(wd_h&0x80)//温度为负的{wd_bm=(wd_h<<8)+wd_l; wd_bm=(~wd_bm)+0x01; wd_l=wd_bm; wd_h=wd_bm>>8; wd_fh='-';wd_zs=wd_h<<4;wd_zs=wd_zs|(wd_l>>4);//温度整数部分//算小数部分的温度乘10000后的结果 if(wd_l&0x01){temp=625;}else{temp=0;}if(wd_l&0x02){temp=temp+1250;}if(wd_l&0x04){temp=temp+2500;}if(wd_l&0x08){temp=temp+5000;}wd_xs=wd_l&0x0f;//温度小数部分在wd_xs乘10000后的结果ddt[0]=wd_fh;ddt[1]=wd_zs;ddt[2]=wd_xs;}else{wd_fh='+';wd_zs=wd_h<<4;wd_zs=wd_zs|(wd_l>>4);//温度整数部分//算小数部分的温度乘10000后的结果 if(wd_l&0x01){temp=625;}else{temp=0;}if(wd_l&0x02){temp=temp+1250;}if(wd_l&0x04){temp=temp+2500;}if(wd_l&0x08){temp=temp+5000;}wd_xs=wd_l&0x0f;//温度小数部分在wd_xs乘10000后的结果ddt[0]=wd_fh;ddt[1]=wd_zs;ddt[2]=wd_xs;}}/******************zhuanhuan_1**********************************/voidzhuanhuan_1()//温度转换{ucharwd_zs,wd_xs,wd_fh;//温度整数部分,温度小数部分uinttemp;//算温度小数部分时的中间变量intwd_bm;qd1820_1();if(wd_h&0x80)//温度为负的{wd_bm=(wd_h<<8)+wd_l; wd_bm=(~wd_bm)+0x01; wd_l=wd_bm; wd_h=wd_bm>>8; wd_fh='-';wd_zs=wd_h<<4;wd_zs=wd_zs|(wd_l>>4);//温度整数部分//算小数部分的温度乘10000后的结果 if(wd_l&0x01){temp=625;}else{temp=0;}if(wd_l&0x02){temp=temp+1250;}if(wd_l&0x04){temp=temp+2500;}if(wd_l&0x08){temp=temp+5000;}wd_xs=wd_l&0x0f;//温度小数部分在wd_xs乘10000后的结果ddt[3]=wd_fh;ddt[4]=wd_zs;ddt[5]=wd_xs;}else{wd_fh='+';wd_zs=wd_h<<4;wd_zs=wd_zs|(wd_l>>4);//温度整数部分//算小数部分的温度乘10000后的结果if(wd_l&0x01){temp=625;}else{temp=0;}if(wd_l&0x02){temp=temp+1250;}if(wd_l&0x04){temp=temp+2500;}if(wd_l&0x08){temp=temp+5000;}wd_xs=wd_l&0x0f;//温度小数部分在wd_xs乘10000后的结果ddt[3]=wd_fh;ddt[4]=wd_zs;ddt[5]=wd_xs;}}/******************zhuanhuan_2**********************************/voidzhuanhuan_2()//温度转换{ucharwd_zs,wd_xs,wd_fh;//温度整数部分,温度小数部分uinttemp;//算温度小数部分时的中间变量intwd_bm;qd1820_2();if(wd_h&0x80)//温度为负的{wd_bm=(wd_h<<8)+wd_l; wd_bm=(~wd_bm)+0x01; wd_l=wd_bm; wd_h=wd_bm>>8; wd_fh='-';wd_zs=wd_h<<4;wd_zs=wd_zs|(wd_l>>4);//温度整数部分//算小数部分的温度乘10000后的结果 if(wd_l&0x01){temp=625;}else{temp=0;}if(wd_l&0x02){temp=temp+1250;}if(wd_l&0x04){temp=temp+2500;}if(wd_l&0x08){temp=temp+5000;}wd_xs=wd_l&0x0f;//温度小数部分在wd_xs乘10000后的结果}ddt[6]=wd_fh;ddt[7]=wd_zs;ddt[8]=wd_xs;}else{wd_fh='+';wd_zs=wd_h<<4;wd_zs=wd_zs|(wd_l>>4);//温度整数部分//算小数部分的温度乘10000后的结果if(wd_l&0x01){temp=625;}else{temp=0;}if(wd_l&0x02){temp=temp+1250;}if(wd_l&0x04){temp=temp+2500;}if(wd_l&0x08){temp=temp+5000;}wd_xs=wd_l&0x0f;//温度小数部分在wd_xs乘10000后的结果ddt[6]=wd_fh;ddt[7]=wd_zs;ddt[8]=wd_xs;}}/******************zhuanhuan_3**********************************/voidzhuanhuan_3()//温度转换{ucharwd_zs,wd_xs,wd_fh;//温度整数部分,温度小数部分uinttemp;//算温度小数部分时的中间变量intwd_bm;qd1820_3();if(wd_h&0x80)//温度为负的{wd_bm=(wd_h<<8)+wd_l; wd_bm=(~wd_bm)+0x01; wd_l=wd_bm; wd_h=wd_bm>>8; wd_fh='-';wd_zs=wd_h<<4;wd_zs=wd_zs|(wd_l>>4);//温度整数部分//算小数部分的温度乘10000后的结果 if(wd_l&0x01){temp=625;}else{temp=0;}if(wd_l&0x02){temp=temp+1250;}if(wd_l&0x04){temp=temp+2500;}if(wd_l&0x08){temp=temp+5000;}wd_xs=wd_l&0x0f;//温度小数部分在wd_xs乘10000后的结果}ddt[9]=wd_fh;ddt[10]=wd_zs;ddt[11]=wd_xs;}else{wd_fh='+';wd_zs=wd_h<<4;wd_zs=wd_zs|(wd_l>>4);//温度整数部分//算小数部分的温度乘10000后的结果if(wd_l&0x01){temp=625;}else{temp=0;}if(wd_l&0x02){temp=temp+1250;}if(wd_l&0x04){temp=temp+2500;}if(wd_l&0x08){temp=temp+5000;}wd_xs=wd_l&0x0f;//温度小数部分在wd_xs乘10000后的结果ddt[9]=wd_fh;ddt[10]=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论