基于单总线多点温度采集系统设计与制作_第1页
基于单总线多点温度采集系统设计与制作_第2页
基于单总线多点温度采集系统设计与制作_第3页
基于单总线多点温度采集系统设计与制作_第4页
基于单总线多点温度采集系统设计与制作_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

论文编号: 华南师范大学增城学院本科毕业论文(设计)题 目:基于单总线多点温度采集系统设计与制作多功能多点温度采集设计与实现 姓 名:唐庆良学 号:系 别:计算机系专业班级:信息管理与信息系统 07信息指导教师:2011年04月20日学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律结果由本人承担。论文作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华南师范大学增城学院可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密,在_年解密后适用本授权书。2、不保密。(请在以上相应方框内打“”)作者签名:日期: 年 月 日指导老师签名:日期: 年 月 基于单总线多点温度采集系统设计与制作目录摘 要IAbstractII1. 背景及研究意义11.1温度传感器的发展状况11.2智能温度传感器发展的新趋势11.2.1提高测温精度和分辨力11.2.2增加测试功能21.2.3总线技术的标准化与规范化21.3选题背景和研究意义22. 方案论证比较与选择32.1 引言32.2方案设计32.2.1设计方案一32.2.2 设计方案二32.2.2 设计方案三32.3 方案的比较与选择43. 硬件设计53.1单片机应用系统53.1.1复位电路53.1.2时钟电路63.1.3 最小应用系统电路63.2红外遥控接收电路设计73.3温度传感器应用设计73.4 温度显示电路84. 软件系统设计94.1系统软件设计的一般步骤94.2 软件实现思路94.2.1系统主程序流程图104.3 DS18B20传感器程序设计104.3.1 DS18B20产品特点104.3.2 DS18B20的内部结构114.3.3 DS18B20的4个主要数据部件114.3.4 DS18B20的指令集134.3.5 DS18B20读取温度方法144.3.6 DS18B20软件驱动实现144.3.7 DS18B20编程注意事项184.4 DS18B20控制与显示设计185. 调试与小结205.1 硬件电路测试小结205.2 软件测试小结205.3 总结205.4展望21附图22程序附录23参考文献28致谢29III基于单总线多点温度采集系统设计与制作摘 要本课题主要研究基于STC89C52单片机与单总线DS18B20数字温度传感器的多点温度测量系统。它以STC89C52单片机为主控制芯片,采用数字温度传感器DS18B20实现多路温度的检测,测量精度可以达到0.5。该系统采用了LED16x64点阵显示模块,该模块用于提示当前的操作情况,用4位公阳极数码管显示温度,利用两个单片机实现双机通信,一个用于控制温度,一个用于控制点阵,还运用单片机与PC机通信技术实现对DS18B20的序列号读取;通过红外遥控器控制读取某一点的温度,实现无线通信。关键词:温度测量;单总线;温度传感器;单片机AbstractThis topic research based on single bus STC89C52 single-chip microcomputer and the digital temperature sensor DS18B20 multi-spot temperature measuring system. It mainly STC89C52 single-chip microcomputer control chip, using digital temperature sensor DS18B20 realize multiple temperature detection and measurement accuracy can reach 0.5 . The system USES LED16x64 dot matrix display module, this module used to indicate current operating conditions, with four male anode digital pipe display temperature, use two SCM realizing double machine communication, one for control temperature, one for control dot matrix, still using MCU and PC communications technologies to achieve the serial number of DS18B20 read; Through reading some infrared temperature control, wireless communications.Key words: Temperature measurement; Single bus; Temperature sensors; Microcontroller291. 背景及研究意义1.1温度传感器的发展状况传感器主要大体经过了三个发展阶段:第一阶段、模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。第二阶段、智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。它的特点是能输出温度数据及相关的温度控制量,需配相应的微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。第三阶段、数字温度传感器,进入21世纪后,温度传感器的发展趋势正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。所以数字温度传感器得以更加广泛的应用。数字温度传感器DS18B20是智能温度传感器一种,它将非电模拟量温度值转换为数字信号输出仅需占用 1 位 I/O 端口,能够直接读取被测物体的温度值。它体积小,电压适用范围宽 3 V5 V,用户还可以通过编程实现 912 位的温度读数,即具有可调的温度分辨率,因此它的实用性和可靠性比同类产品更高。1.2智能温度传感器发展的新趋势进入21世纪后,智能温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。1.2.1提高测温精度和分辨力在20世纪90年代中期最早推出的智能温度传感器,采用的是8位A/D转换器,其测温精度较低,分辨力只能达到1C。目前,国外已相继推出多种高精度、高分辨力的智能温度传感器,所用的是912位A/D转换器,分辨力一般可达0.50.0625C。由美国DALLAS半导体公司新研制的DS1624型高分辨力智能温度传感器,能输出13位二进制数据,其分辨力高达0.03125C,测温精度为0.2C。为了提高多通道智能温度传感器的转换速率,也有的芯片采用高速逐次逼近式A/D转换器。以AD7817型5通道智能温度传感器为例,它对本地传感器、每一路远程传感器的转换时间分别仅为27us、9us。1.2.2增加测试功能新型智能温度传感器都具有多种工作模式可供选择,主要包括单次转换模式、连续转换模式、待机模式,有的还增加了低温极限扩展模式,操作非常简便。对某些智能温度传感器而言,主机(外部微处理器或单片机)还可通过相应的寄存器来设定其A/D转换速率(典型产品为MAX6654),分辨力及最大转换时间(典型产品为DS1624)。1.2.3总线技术的标准化与规范化目前,智能温度传感器的总线技术也实现了标准化、规范化,所采用的总线主要有单线(1-Wire)总线、I2C总线、SMBUS总线和SPI总线。温度传感器作为从机可通过专用总线接口与主机进行通信。1.3选题背景和研究意义温度的测量和控制在储粮仓库、智能楼宇空调控制及其它的工农业生产和科学研究中应用广泛。温度检测的传统方法是使用诸如热电偶、热电阻、半导体 PN 结 如AD590 之类的模拟传感器经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或DSP处理。被测温度信号从敏感元件接收的非电模拟量开始,到转换为微处理器可处理的数字信号之间,设计者须考虑的线路环节较多,相应测温装置中元器件数量难以下降,随之影响产品的高可靠性及体积微缩化。这样,由于各种因素会造成传输检测系统较大的偏差;又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降 。本文介绍一种基于数字温度传感器DS18B20的主从分布式多路测温系统、该系统以单片机为主机,数字温度传感器通过与单片机P3.7连接,系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,可应用于仓库测温、楼宇空调控制和生产过程监控、酒窖等领域。2. 方案论证比较与选择2.1 引言温度测量的方案有很多种,可以采用传统的分立式传感器、模拟集成传感器以及新兴的智能型传感器。对于控制系统可以采用计算机、单片机等。2.2方案设计2.2.1设计方案一采用模拟分立元件,如电容、电感或晶体管等非线形元件,实现多点温度的测量及显示,该方案设计电路简单易懂,操作简单,且价格便宜,但采用分立元件分散性大,不便于集成数字化,而且测量误差大。2.2.2 设计方案二本方案采用STC89C52单片机为核心,通过温度传感器AD590采集温度信号,经信号放大器放大后,送到A/D转换芯片,最终经单片机检测处理温度信号。 图2-1 方案二的框图如图2-1,采用该方案技术已经成熟,AD转换电路设计较烦琐,而且使用AD590进行温度检测必须对冷端进行补偿,以减小误差。2.2.2 设计方案三本设计运用主从分布式思想,由一个单片机控制点阵实现,另一个单片机实现多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。数字温度传感器采用DS18B20。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼宇自动化系统、温控制生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械等。系统框图如2-2与图2-3: 图2-2读取DS18B20框图 图2.3系统控制框图2.3 方案的比较与选择基于数字式温度计DS18B20的温度测量仪的硬软件开发过程是将DS18B20温度信号直接转换为数字信号,实现了与单片机的直接接口,从而省去了信号调理电路。该仪器电路简单、功能可靠、测量效率高,很好地弥补了传统温度测量方法的不足。相对与方案1,在功能、性能、可操作性等方面都有较大的提升。相对与方案2,硬件电路简单,易于操作,具有更高的性价比,更大的市场。所以我采用方案3完成本设计。3. 硬件设计本课题研究的多点测温系统是以单片机和单总线数字温度传感器DS18B20为核心,充分利用单片机优越的内部和外部资源及数字温度传感器DS18B20的优越性能构成一个完备的测温系统,实现对温度的多点测量。整个系统由单片机控制,能够接收传感器的温度数据并显示出来,可以从用遥控其输入命令,系统根据命令,选择对应的温度传感器,并由驱动电路驱动温度显示,利用LED点阵对你的操作给予提示。本课题设计了一种合理、可行的单片机监控软件,完成测量和显示的任务。由于单片机具有强大的运算和控制功能,使得整个系统具有模块化、硬件电路简单以及操作方便等优点。本课题的整个系统的电路是由单片机、显示电路、红外遥控接收、DS18B20驱动电路,串口通信等构成。3.1单片机应用系统 在当今新科学技术飞速发展的年代里,单片机的应用已越来越受到人们的重视,它被广泛的应用于家电、医疗、智能仪表、工业自动化等各个领域。单片机全称单片微型计算机,是将计算机的基本部分微型化,使之集成在一块芯片上的微机。目前市场上较为流行的单片机有Intel公司和Philip公司的8051系列单片机Motorola 公司的M 6800系列单片机。本系统使用宏晶公司的STC89C52进行系统控制。3.1.1复位电路无论哪种单片机,都会涉及到复位电路。如果复位电路不可靠,在工作中就有可能出现“死机”,“程序走飞”等现象。所以,一个单片机复位电路的好坏,直接影响到整个系统工作的可靠性。复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。本复位电路有上电自动复位与手动复位功能,由一个电解电容和一个按键组成,具体电路如图3-1: 图3-1 复位电路图3.1.2时钟电路89C52单片机的时钟信号通常用内部振荡和外部振荡方式。在引脚XTAL1和XTAX2外接晶体振荡器,就够成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部振荡器方式如下。如图3.7,电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般为5-30PF。内部振荡方式所得的时钟信号比较稳定。外部振荡方式是把已有的时钟信号引入单片机内,这种方式适于用于用来使单片机的时钟与外部信号保持一致。具体电路如下: 图3-2 时钟原理图3.1.3 最小应用系统电路有了复位电路与时阵电路就可以构成单片机的最小应用系统了,单片机的I/O在做输入输出用时需要接上拉电阻,但51单片机的P1、P2、P3口就已经在内部接了上拉电阻就,外部就不需要接,而当你需要用P0口时就必须得接上拉电阻才能用,具体情况如图3-3:图3.3 单片机最小系统3.2红外遥控接收电路设计红外遥控器是电子设备常见的输入装置,作为人们与电子设备交流的重要途径,一旦出错,将影响到电子设备的整体使用,所以接收电路虽然简单,但接收电路的稳定性、可靠性,应引起足够的重视。本系统红外输入设置是用一个普通遥控器,而接收具体电路如图3-4: 图3-4 红外接收电路3.3温度传感器应用设计DS18B20温度传感器的主要特点就是单总线,电路接法简单,不用别的复杂的辅助电路只要一个10K的上拉电阻,一个I/O口就可以将多个18B20接在一条总线下,就实现多点温度采集系统的功能了,一条总线上最多可以接2的64次平方个18B20,这里我们只用到了8温度传感器,电路简单并节省资源,具体如图3-5:图3.5 DS18B20原理图3.4 温度显示电路本系统的温度显示主要是用到四位共阳极数码管,电路应用简单方便,具体电路如下图3-6:图3-6数码管显示原理图4. 软件系统设计单片机应用软件系统设计包括功能模块划分、程序流程确立、模块接口设计以及程序代码编写。我们依据系统的功能要求,将整体软件系统分割成若干个独立的程序模块。这些程序模块可以是几条语句的集合、功能函数或程序文件。随后,根据各程序模块的实现功能写出流程,一般需要写出具体的实现功能描述。程序代码通常采用汇编语言或高级语言(C语言)编写,本系统采用的是C语言。4.1系统软件设计的一般步骤统进行软件设计时,先要对本课题硬件有一个熟练的掌握,知道系统的组成,数据的传输,信号是如何被控制的,以及信号的显示。然后进行软件设计时,先搞清楚各个部分的子程序及他们的流程图,然后进行C语言编程,最后将它们系统的编程。4.2 软件实现思路系统软件设计步骤主要包括系统程序和流程图,根据整个系统的要求,完成温度的测量与控制必须经过以下几个步骤:单片机接受传感器的温度信号,通过数码管将其显示出来,并向主机(另一个控制LED点阵的单片机)接收一个提示信号,实现读取某一点的温度。系统总框架图如图4-1: 图4-1系统总框架图4.2.1系统主程序流程图图4-2系统主程序流程图4.3 DS18B20传感器程序设计DS18B20数字温度传感器是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂多这样的数字温度传感器,十分方便。4.3.1 DS18B20产品特点l 只要求一个端口即可实现通信。l 在DS18B20中的每个器件上都有独一无二的序列号。l 实际应用中不需要外部任何元器件即可实现测温。l 测量温度范围在55.C到125.C之间。l 数字温度计的分辨率用户可以从9位到12位选择。l 内部有温度上、下限告警设置。TO92封装的DS18B20的引脚排列见右图,其引脚功能描述见表4-1: 引脚功能表4-1序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地4.3.2 DS18B20的内部结构DS18B20的内部框图下图4-3所示。64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一个字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一个字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(CRC )。使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。图4-3 DS18B20的内部框图4.3.3 DS18B20的4个主要数据部件光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个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即可得到实际温度。例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。表4-2 DS18B20温度数据表TEMPERATUREDIGITAL OUTPUTDIGITAL OUTPUT+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90HDS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。配置寄存器表4-3配置寄存器0R1R011111低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)表4-4 R1与R0确定传感器分辨率设置表R1R0传感器精度/bit转换时间/ms00993.750110187.5101137511127504.3.4 DS18B20的指令集前面提及单总线器件的ROM命令,在主机检测到应答脉冲后,就可以发出ROM命令。这些命令与各个DS18B20设备的唯一64位ROM代码相关。允许主机在单总线上连接多个从机设备时,指定操作某个DS18B20设备。这些命令还允许主机能够检测到总线上有多少个从机设备,以及其设备类型或者有没有设备处于报警状态。从机设备可能支持5种ROM命令(实际情况与具体型号有关),每种命令长度为8位。主机在发出功能命令之前,必须发送合适的ROM命令。DS18B20的功能命令如表4-5: 表4-5DS18B20的功能命令指令协议功能读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”4.3.5 DS18B20读取温度方法DS18B20有两种应用方法,一种是一条总线上只挂了一个DS18B20。另外一种是一条总线上挂有多个DS18B20,两种应用的读取温度的方法大致一样,只有一些指令发送不一样而已,下面给出两种读取方法的步骤:(1)单点读取法 复位 发出“跳过ROM指令”0xcc 发出“温度转换指令”0x44 判忙(忙时数据线上为0) 复位 发出“跳过ROM指令”0xcc 发出“读暂存器指令”0xbe 读取两个字节,分别是温度值的低字节与高字节 复位,操作结束(2)多点读取法 复位 发出“匹配64位ROM指令”0x55 发出64位ROM码 发出“温度转换指令”0x44 判忙(忙时数据线上为0) 复位 发出64位ROM码 发出“读暂存器指令”0xbe 读取两个字节,分别是温度值的低字节与高字节 复位,操作结束4.3.6 DS18B20软件驱动实现DS18B20在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求,只有严格遵守通讯协议才能保证数据传输的正确性和完整性。所有时序均以主机为Master,单总线器件为Slave,每次数据的传输均从主机启动写时序开始,如果要求单总线器件回送数据,则在写命令后,主机需启动读时序完成数据接收,数据和命令的传输都是低位在先。本课题的温度测量与读取软件流程如图4-4: 图4-4 温度测量程序流图 DS18B20的复位时序 图4-5 DS18B20复位时序主要程序如下:void ds1820rst()/ds1820复位* unsigned char x=0;DQ = 1; /DQ复位delay_18B20(4); /延时DQ = 0; /DQ拉低delay_18B20(100); /精确延时大于480usDQ = 1; /拉高delay_18B20(40); DS18B20的读时序 图4-6 DS18B20读时序DS18B20的读时序是主机先把单总线拉低,在之后的l5s内必须释放单总线,以便将数据传输到单总线上。DS18B20完成一个读时序至少需要60s。读时序主要子函数如下: unsigned char ds1820rd()/读数据 unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat); DS18B20的写时序图4-7 DS18B20写0时序与写1时序主要程序如下:void ds1820wr(uchar wdata)/写数据unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata=1; 单总线上读取单个DS18B20温度DS18B20复位后,就可以编程控制读到其内部RAM所采集到的温度值(通过P3.7),并且读取数据时低位在前,高位在后。由于我们是在一天总线上挂了多个DS18B20,所以在对那个传感器进行读温度时,必须先向单总线上写DS18B20的序列号,才能完成读温度操作,读出数据后,还需判断读到的温度是正值还是负值,当温度值为正值时,直接将二进制数转换为十进制温度值;当温度值为负值时先将二进制补码变为原码,再转换为十进制温度值。向DS18B20写序列号程序:void changds18b20_1(uchar pds18bnum88,uchar aa) uchar i; ds1820rst();delay(1); ds1820wr(0x55); delay(1); for(i=0;i8;i+) ds1820wr(pds18bnumaai); 读取DS18B20温度并转换程序段:read_temp1()/读取温度值并转换uchar a,b;ds1820rst(); changds18b20_1(ds18b20num,countnum-1);ds1820wr(0x44);/启动温度转换ds1820rst(); changds18b20_1(ds18b20num,countnum-1);ds1820wr(0xbe);/读取温度a=ds1820rd();b=ds1820rd();tvalue=b;tvalue=8;tvalue=tvalue|a; if(tvalue32)/检测引导码bitnum=0; irdatabitnum=irtime; irtime=0; bitnum+; if(bitnum=33) bitnum=0; irrecok=1;startflag=0; else startflag=1;irtime=0; (2)显示程序:显示程序主要是将读取到的温度将其在数码管上显示出来,主要程序如下: void disp_temper(uint temper)/温度值显示 uchar temper_ge,temper_shi,temper_bai;temper_ge=temper%10;temper_shi=temper%100/10;temper_bai=temper/100;if(tflag=1)D4=0;P0=0xbf;delay(5);D4=1;D3=0;P0=tabtemper_bai;delay(5);D3=1;D2=0;P0=tabtemper_shi+10;delay(5);D2=1;D1=0;P0=tabtemper_ge;delay(5);D1=1;(3)主函数:主函数是一个程序执行的开始,主要是控制总个程序的运行的开始,主要程序代码如下:void main()uint temper1; it0send();ds1820rst(); delay(1); ds1820wr(0xcc);/跳过读序列号 ds1820wr(0x44);/启动温度转换delay(200); while(1)temper1=read_temp1(); disp_temper(temper1);5. 调试与小结5.1 硬件电路测试小结 本课题通过分析对比各种不同的温度传感器,选定DS18B20,这种单总线数字温度传感器的通信方式比较独特,软件编写要求的比较新颖,特点突出。用其构建的系统有很多优点:硬件连线简单,省去了使用模拟传感器要进行放大、A/D转换等工作,由于它的级联功能,一条总线可挂接多个传感器测量不同位置的温度,根据DS18B20唯一的序号识别不同传感器在各自位置的温度。硬件电路的简单是以软件的复杂为代价的,所以在程序编写和调试的过程中稍微粗心就会出现错误,包括时间延时不够,设置参数的类型有误,按键子程序放置位置不妥等错误。需要注意的是, 在系统安装及工作之前应将主机逐个与DS1820 挂接,以读出其序列号。另外,由于DS1820 单线通信功能是分时完成的,遵循严格的时隙概念,因此, 系统对DS1820 和各种操作必须按协议进行,即:初始化DS1820 (发复位脉冲)发ROM功能命令发存储器操作命令处理数据。现场温度直接以“一线总线”的数字方式传输,每一个自带地址,大大减少了系统的电缆数,提高了系统的稳定性和抗干扰性。5.2 软件测试小结本设计的软件程序用是的C语言编程,它的可读性非常强,容易理解,摆脱了难度的机器语言(汇编语言)跟进时代的发展脚步,这也是本次设计的一大优越点之一。程序在设计当中遇到了很困难,有时候是数据设置有问题。由于DS18B20采用的是单总线技术,所以在对它复位、写指令、读数据时对时间的要求控制是非常严格的,为了调试出准确的时间,我花了很多时,经过不断差资料,最后终于调出我想要的结果。5.3 总结经过几个月的不断学习和努力,在老师的谆谆教导下,在其他老师及同学们的热心帮助与指导下,基于单片机的单总线多点温度测控系统的毕业设计即将结束,基本完成了老师所规定的各项工作任务。通过这一次毕业设计,我学了不少的知识,发现自己的知识还很欠缺,还有很多知识没有掌握.通过这次设计我明白了学习是个不断积累的过程,在生活和工作中应当不断的积累,才能提高自己。学会了怎样查阅资料和利用工具书,以及熟练地使用KEIL开发工具。通过这次毕业设计,我更加深刻地认识到只有将书本与具体的实践相结合,才会有真正的收获,才能巩固自己的所学,认识到自己的不足。5.4展望采用单总线技术比用传统的方案具有较高的性能价格比。而且,可以看出该技术具有以下特点:适用于低速测控场合,测控对象越多越显示其优越性;硬件施工、维修方便;抗干扰性能好,可靠性高;软件设计规范,系统简明直观,易于掌握。因此,积极推广单总线技术的应用会有较好的经济效益和社会效益。单总线技术以其线路简单、硬件开销少、成本低廉、软件设计简单方便而有着无可比拟的应用前景。基于单总线技术能较好地解决传统识别器普遍存在的携带不便、易损坏、易受腐馈、易受电磁干扰等不足,可应用于高度安全的门禁、身份识别等领域。其通信可靠简单,很容易实现。由于单片机构成的应用系统可靠性高。系统配置规范控制功能具有预想性,变动控制方案容易。具有较高的性价比。因此单总线技术有着广阔的应用前景,是值得关注的一个发展领域。附图程序附录#include #define uchar unsigned char #define uint unsigned int sbit DQ=P37;sbit D4=P27;sbit D3=P26;sbit D2=P25;sbit D1=P24; sbit key1=P33; sbit key2=P34;uint tvalue;/温度值 uchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; uchar countnum;uchar tflag,flagdat,t,hh1,ds18b20_wei;/温度正负标志uchar tt,kk;uchar irtime,startflag,bitnum,irrecok,irprook,findir,ir_id;uchar code tabir42=0,1,0,3,0,4,0,6;uchar irdata33;uchar ircode4;uchar disp8;uchar code ds18b20num88=0x28,0x38,0x0e,0x3b,0x02,0x00,0x00,0x63, 0x28,0x5b,0x2e,0xc7,0x02,0x00,0x00,0x62, 0x28,0x50,0x39,0xc7,0x02,0x00,0x00,0xb7, 0x28,0x24,0x3e,0xc7,0x02,0x00,0x00,0xa2, 0x28,0x82,0x47,0xc7,0x02,0x00,0x00,0xd2, 0x28,0x99,0x4a,0xc7,0x02,0x00,0x00,0x9d, 0x28,0x3f,0x4d,0xc7,0x02,0x00,0x00,0x22, 0x28,0x73,0xf3,0x3a,0x02,0x00,0x00,0x2b ; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /*温度传感器程序*/void delay_18B20(uint i)/延时1微秒 while(i-);void ds1820rst()/ds1820复位* uchar x=0;DQ = 1; /DQ复位delay_18B20(4); /延时DQ = 0; /DQ拉低delay_18B20(100); /精确延时大于480usDQ = 1; /拉高delay_18B20(40); uchar ds1820rd()/读数据 uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat)

温馨提示

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

评论

0/150

提交评论