基于ds18b20的数字温度计设计_第1页
基于ds18b20的数字温度计设计_第2页
基于ds18b20的数字温度计设计_第3页
基于ds18b20的数字温度计设计_第4页
基于ds18b20的数字温度计设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

目录(一设计内容及要求2(二)系统的硬件选择及设计321核心处理器的设计31、AT89C51引脚图32、AT89C51引脚功能介绍322温度采集电路的设计51、单线技术52、DS18B20的简介63、DS18B20内部结构84、DS18B20测温原理115、温度采集电路1223温度显示电路的设计131、LED数码管的操作132、温度显示电路13(三)系统的软件设计1531概述1532DS18B20的单线协议和命令151初始化152ROM操作命令153内存操作命令1633温度采集程序流程图的设计1834温度显示程序流程图的设计19(四结论19(五)汇编代码20(六)参考文献27基于DS18B20的数字温度计设计摘要在本设计中选用AT89C51型单片机作为主控制器件,采用DS18B20数字温度传感器作为测温元件,通过两位共阴极LED数码显示管并行传送数据,实现温度显示。本设计的内容主要分为两部分,一是对系统硬件部分的设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用汇编语言实现温度的采集与显示。通过DS18B20直接读取被测温度值,送入单片机进行数据处理,之后进行输出显示,最终完成了数字温度计的总体设计。其系统构成简单,信号采集效果好,数据处理速度快,便于实际检测使用。关键词单片机AT89C51;温度传感器DS18B20;LED数码管;数字温度计(一设计内容及要求本设计主要介绍了用单片机和数字温度传感器DS18B20相结合的方法来实现温度的采集,以单片机AT89C51芯片为核心,辅以温度传感器DS18B20和LED数码管及必要的外围电路,构成了一个多功能单片机数字温度计。本次设计的主要思路是利用51系列单片机,数字温度传感器DS18B20和LED数码显示器,构成实现温度检测与显示的单片机控制系统,即数字温度计。通过对单片机编写相应的程序,达到能够实时检测周围温度的目的。通过对本课题的设计能够熟悉数字温度计的工作原理及过程,了解各功能器件单片机、DS18B20、LED的基本原理与应用,掌握各部分电路的硬件连线与程序编写,最终完成对数字温度计的总体设计。其具体的要求如下1、根据设计要求,选用AT89C51单片机为核心器件;2、温度检测器件采用DS18B20数字式温度传感器,利用单总线式连接方式与单片机的P22引脚相连;3、显示电路采用两位LED数码管以串口并行输出方式动态显示。(二)系统的硬件选择及设计21核心处理器的设计1、AT89C51引脚图芯片AT89C51的引脚排列和逻辑符号如图21所示。图21AT89C51单片机引脚图2、AT89C51引脚功能介绍单片机芯片AT89C51为40引脚双列直插式封装。本设计使用的其各个引脚功能介绍如下1VCC供电电压;2GND接地;3P0口一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。本设计中使用P0作为两个共阴极LED数码管的位选和段选输出控制口,其中用到74HC573作为输出锁存,将段选和位选分开控制,由P27,P28开启。电路图如下4P1口一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口被拉为低电平时将输出电流。本设计中只用到P10管脚,当所测量温度超过预设报警温度时点亮LED灯,其中用到74HC573作为输出锁存,由25开启该锁存器。电路图如下5P2口一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。本设计中使用P22管脚和DS18B20的管脚相连作为通信总线,AT89C51和DS18B20都能对该线电平拉高和拉低操作来进行通信,当电平为高时总线传输“”,当电平为低时总线传输“”;P27,P28开启数码管的位选和段选的P0口的锁存;25开启报警LED灯的P1口的锁存。6RST复位输入端。当振荡器复位时,要保持RST脚两个机器周期的高电平时间。22温度采集电路的设计1、单线技术该技术采用单根信号线,即可传输时钟,又能传输数据,而且数据传输时是双向的,因而这种单线技术具有线路简单,硬件开销少,成本低廉。便于扩展的优点。单线技术适用以单主机系统,单主机能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单线器件,它们之间的数据交换,控制都由这根线完成。主机或从机通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放线,而让其它设备使用。单线通常要求外接一个约5K的上拉电阻,这样,当该线闲置时,器件状态为高电平。主机和从机之间的通信主要分为3个步骤初始化单线器件,识别单线器件和单线数据传输。由于只有一根线通信,所以它们必须是严格的主从结构,只有主机呼叫从机时,从机才能应答,主机访问每个单线器件都必须严格遵循单线命令序列,从机遵守上述三个步骤的顺序。如果命令序列混乱,单线器件将不会响应主机。所有的单线器件都有遵循严格的协议,以保证数据的完整性。单线协议有复位脉冲,其他均由主机发起,并且所有命令和数据都是字节的低位在前。2、DS18B20的简介DALLAS最新单线数字温度传感器DS18B20是一种新型的”一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。温度测量范围为55125摄氏度,可编程为9位12位转换精度,测温分辨率可达00625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20的性能特点如下独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条总线即可实现微处理器与DS18B20的双向通讯;DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;适应电压范围更宽,电压范围3055V,在寄生电源方式下可由数据线供电;测温范围55125,在1085时精度为05;零待机功耗;可编程的分辨率为912位,对应的可分辨温度分别为05、025、0125和00625,可实现高精度测温;在9位分辨率时最多在9375MS内把温度转换为数字,12位分辨率时最多在750MS内把温度值转换为数字,速度更快;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度温度报警条件的器件;测量结果直接输出数字温度信号,以“一线总线“串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作以上特点使DS18B20非常适用与多点、远距离温度检测系统。DS18B20内部结构主要由四部分组成64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图24所示。其中,DQ为数据输入/输出引脚,也可用作开漏单总线接口引脚,当被用在寄生电源工作方式下,可以向器件提供电源;GND为地信号;VDD为可选择的电源引脚,当工作于寄生电源时,此引脚必须接地。其电路图25所示。图24外部封装形式图25传感器电路图3、DS18B20内部结构图26为DS1820的内部结构框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器内含便笺式RAM,用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码CRC发生器等七部分。图26DS18B20内部结构框图DS18B20采用3脚PR35封装或8脚SOIC封装。(1)64BIT闪速ROM的结构如下8BIT校验CRC48BIT序列号8BIT工厂代码10HMSBLSBMSBLSBMSBLSB开始的8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。主机操作ROM的命令有五种,在软件设计时会提到。(2)高速暂存RAM的结构为8字节的存储器结构如图27所示。图27高速暂存RAM结构图其中,前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。暂存存储器的第5个字节是配置寄存器,可以通过相应的写命令进行配置,其内容如下0R1R0111111MSBLSB其中R0和R1是温度值分辨率位,可按表23进行配置。表23温度值分辨率配置表R1R0分辨率最大转换时间MS009位9375MSTCONV/80110位18350MSTCONV/41011位375MSTCONV/21112位750MSTCONV当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可通过单线接口读到该数据,读取时低位在前、高位在后,数据格式以00625/LSB形式表示。温度值格式如下低2322212021222324高SSSSS262524MSBLSB这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于00625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于00625即可得到实际温度。格式中,S表示位。对应的温度计算当符号位S0时,表示测得的温度植为正值,直接将二进制位转换为十进制;当S1时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。例如125的数字输出为07D0H,250625的数字输出为0191H,250625的数字输出为FF6FH,55的数字输出为FC90H。DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以00625/LSB形式表示。表24是部分温度值对应的二进制温度表示数据。表24部分温度的二进制数表示温度数字输出(二进制)数字输出(16进制)125000001111101000007D0H8500000101010100000550H25062500000001100100010191H10125000000001010001000A2H0500000000000010000008H000000000000000000000H051111111111111000FFF8H101251111111101011110FFE5H2506251111111001101111FF6FH551111110010010000FC90H4、DS18B20测温原理DS18B20的测温原理如图28所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在55所对应的一个基数值。图28DS18B20测温原理图减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图38中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时间概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。5、温度采集电路设计的温度采集电路如图29所示。图29温度采集电路图23温度显示电路的设计1、LED数码管的操作LED数码管的基本组成是半导体发光二极管,它是将若干个发光二极管,按照一定的笔段组合起来构成的一个整体。LED数码管能显示09十个数字及部份英文字母。常见的八段LED数码管结构如图210所示。图210数码管的内部结构它由8个发光二极管组成,其中7个长条形的发光二极管排列成”日”字形,另一个发光二极管在整个数码管的右下角,用来显示小数点。本设计采用共阴极LED数码管,8个发光二极管的阴极都连在一起的。加到各笔段对应发光二极管阳极上的代码不同,则就能控制LED数码管显示不同的字符和数字,这个代码称为段码。通常将这个段码用单片机系统中的一个字节进行存储,正好这个字节中的8个二进制位D7、D6、D5、D4、D3、D2、D1、D0,依次对应LED数码管的8个笔段DP、G、F、E、D、C、B、A。此外,选用多个数码管还要注意位选问题,即先将某个数码管点亮,再赋予相应段码;再点亮另一个数码管,赋予新的段码。2、温度显示电路显示电路采用两个共阴极LED数码管显示所测温度的十位和各位,从P0口并行输出温度段码和位选码,通过两个74HC57锁存分开控制位选和段选,P27和P28控制锁存器的开启。其具体电路图如图211所示。图211显示电路由于数码管余辉效应和人眼的视觉延迟,当数码管每秒点亮50次时,就会出现静止显示的温度值。(三)系统的软件设计31概述软件设计关键在于DS18B20的使用。DS18B20属于单线式器件,它在一根数据线上实现数据的双向传输,这就需要一定的协议,来对读写数据提出严格的时序要求,而AT89C51单片机并不支持单线传输,因此必须采用软件的方法来模拟单线的协议时序。32DS18B20的单线协议和命令DS18B20有严格的通信协议来保证各为数据传输的正确性和完整性。主机操作单线器件DS18B20必须遵循下面的顺序。1初始化单线总线上的所有操作都是从初始化开始的。过程如下1、请求主机通过拉低单线480US以上,产生复位脉冲,然后释放该线,进入RX接收模式。主机释放总线时,会产生一个上升沿脉冲。DQ10480US12、响应DS18B20检测到该上升沿后,延时1560US,通过拉低总线60240US来产生应答脉冲。DQ11560US060240US3、接收响应主机接收到从机的应答脉冲后,说明有单线器件在线。至此,初始化完成。DQ02ROM操作命令当主机检测到应答脉冲,便可发起ROM操作命令。共有5类ROM操作命令,如表31所示。表31ROM操作命令指令类型命令字节功能说明READROM读ROM33H读取激光ROM中的64位,只能用于总线上单个DS18B20器件情况,多挂时会发生数据冲突;MATCHROM匹配ROM55H此命令后跟64位ROM序列号,寻址多挂总线上的对应DS18B20,只有序列号完全匹配的DS18B20才能响应后面的内存操作命令,其他不匹配的将等待复位脉冲,可用于单挂或多挂两种情况;SKIPROM跳过ROMCCH可无须提供64位ROM序列号即可运行内存操作命令,只能用于单挂;SEARCHROM搜索ROMF0H通过一个排除法过程,识别出总线上所有器件的ROM序列号;ALARMSEARCH报警搜索ECH命令流程与SEARCHROM相同,但DS18B20只有最近的一次温度测量时满足了报警触发条件的,才会响应此命令。3内存操作命令在成功执行ROM操作命令后,才可使用内存操作命令。共有6种内存操作命令,如表32所示。表32内存操作命令指令类型命令字节功能说明WRITESCRATCHPAD写暂存器4EH写暂存器中地址2地址4的3个字节TH,TL和配置寄存器在发起复位脉冲之前,3个字节都必须要写;READSCRATCHPAD读暂存器BEH读取暂存器内容,从字节0一直到字节8,共9个字节,主机可随时发起复位脉冲,停止此操作,通常我们只需读前5个字节;COPYSCRATCHPAD复制暂存器48H将暂存器中的内容复制进EERAM,以便将温度告警触发字节存入非易失内存,如果此命令后主机产生读时隙,那么只要器件还在进行复制都会输出0,复制完成后输出1;CONVERTT温度转换44H开始温度转换操作,若在此命令后主机产生时隙,那么只要器件还在进行温度转换就会输出0,转换完成后输出1;RECALLE2重调E2暂存器B8H将存储在EERAM中的温度告警触发值和配置寄存器值重新拷贝到暂存器中,此操作在DS18B20加电时自动产生;READPOWERSUPPLY读供电方式B4H主机发起此命令后每个读数时隙内,DS18B20会发信号通知它的供电方式0寄生电源,1外部供电。33温度采集程序流程图的设计开始初始化DS18B20应答脉冲发起SKIPROM命令发起CONVERTT命令延时1S,等待温度转换完成初始化DS18B20应答脉冲发起READSCRATCHAPAD命令读取第1,2字节即为温度数值NONO图34温度采集流程34温度显示程序流程图的设计图35LED显示流程图(四结论本设计介绍了基于DS18B20的数字温度计的工作原理及实现过程,我在这几天的时间内阅读了有关数字温度计原理及设计的相关资料,根据系统所需的电路原理图设计了实现采集与显示功能的软件程序,完成了基于DS18B20的数字温度计的设计。设计中采用最常用的单片机AT89C51作为主控模块,单总线数字温度传感器DS18B20用来测量温度,温度数据采用数码管LED显示。本设计的特点是构成系统的硬件器件少,操作简单,数据处理功能强。通过这次课程设计使我学习到了很多的东西,不仅加深了对专业知识的理解,而且更好地把理论知识与实践相结合,提高了自身的动手能力和实践水平,开始点亮所有数码管选中LED1显符号延迟选中LED2显十位延迟选LED3显个位延迟选LED4显小数结束增强了学习单片机系统开发与设计的兴趣。由于本人的知识有限,在本设计中不可避免存在一些不足之处,我会在以后的学习生活中不断加以完善。相信本次设计的经历一定会在我今后的学习生活中产生巨大的推动作用。(五)汇编代码ORG0000HTEMPER_HEQU21H用于保存读出温度的高8位TEMPER_LEQU20H用于保存读出温度的低8位TEMPEREQU30H用于保存读出温度的字节TEMPER_SETEQU31H设定温度比较值,测量温度小于该值,开LED灯FLAG1EQU38H是否检测到DS18B20标志位FLAG2EQU39H是否完成温度测量标志位MAINSTART0LCALLGET_TEMPERWAITJBFLAG2,START1AJMPWAITSTART1MOV28H,AMOV29H,BCLRFLAG2START2MOVR2,28HMOVR3,29HLCALLDISPLAY调用数码管显示子程序AJMPSTART0DS18B20应用入口子程序GET_TEMPERLCALLINIT_1820JBFLAG1,TSS2检测到设备,标志位置1,跳至TSS2RET判断DS1820是否存在,不存在则返回DS18B20初始化子程序INIT_1820SETBP22先拉高总线NOPCLRP22拉低总线等待设备回应MOVR1,3主机发出延时537微秒的复位低脉冲TSR1MOVR0,107DJNZR0,DJNZR1,TSR1延时1073个时钟SETBP22然后再拉高数据线,等待设备回应NOPNOPNOPMOVR0,25H等待设备回应延时TSR2JNBP22,TSR3若总线为低,有回应,跳至TSR3,否则等待DJNZR0,TSR2LJMPTSR4延时后还是没收到回应,跳至TSR4TSR3SETBFLAG1置标志位,表示DS1820存在LJMPTSR5TSR4CLRFLAG1清标志位,表示DS1820不存在LJMPTSR7TSR5MOVR0,117检测到设备TSR6DJNZR0,TSR6时序要求延时一段时间TSR7SETBP35未检测到设备,拉高总线RET初始化完毕检测到设备,温度测控主程序TSS2MOVA,0CCH跳过ROM匹配,通过总线0011_0011写值LCALLWRITE_1820MOVA,44H发出温度转换命令,通过总线0010_0010写值LCALLWRITE_1820LCALLINIT_1820准备读温度前先复位MOVA,0CCH跳过ROM匹配,通过总线0011_0011写值LCALLWRITE_1820MOVA,0BEH发出读温度命令,通过总线0111_1101写值LCALLWRITE_1820LCALLREAD_18200将读出的温度数据保存到35H/36H,此时A的值为0111_1100,7CHLCALLCHECKSETBFLAG2RET写DS18B20的子程序有具体的时序要求WRITE_1820MOVR2,8一共8位数据,循环右移,C的值赋给总线CLRCWR1CLRP22拉低总线MOVR3,6DJNZR3,RRCA带上进位C循环右移,A0CCH跳过ROM匹配,A44H(温度转换),A0BEH(读温度请求)MOVP22,C右循环将控制字从低位依次通过C赋给总线MOVR3,23DJNZR3,SETBP22重新老高总线NOPDJNZR2,WR1循环,将8位控制字通过总线写给设备SETBP22拉高总线RET读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200MOVR4,2将温度高位和低位从DS18B20中读出MOVR1,20H先低位存入20HTEMPER_L,后高位存入21HTEMPER_HRE00MOVR2,8数据一共有8位RE01CLRCSETBP22NOPNOPCLRP22NOPNOPNOPSETBP22总线先控制为101MOVR3,9RE10DJNZR3,RE10R3的值先等待9时钟MOVC

温馨提示

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

评论

0/150

提交评论