收藏 分销(赏)

温度测控器课程设计-毕设论文.doc

上传人:胜**** 文档编号:2908004 上传时间:2024-06-11 格式:DOC 页数:22 大小:878KB
下载 相关 举报
温度测控器课程设计-毕设论文.doc_第1页
第1页 / 共22页
温度测控器课程设计-毕设论文.doc_第2页
第2页 / 共22页
温度测控器课程设计-毕设论文.doc_第3页
第3页 / 共22页
温度测控器课程设计-毕设论文.doc_第4页
第4页 / 共22页
温度测控器课程设计-毕设论文.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、 吉 吉林工商学院 温度测控器课程设计 设计名称: 温度测控器班 级:电子信息10403班 2012年 12 月 14 日 一、温度测控器的原理及功能如图11所示此多点温度测量电路主要由以下几部分组成:两个温度传感器DS18B20择开关电路,控制器单片机AT89S52、扫描驱动电路、数码管LED显示器、报警及电源电路等。 LED显示器预设温度 实际温度单片机AT89S52扫描驱动DS18B20电 源温度控制电路 图11系统组成方框图温度传感器从测试点采集温度,然后把温度转换成电压(或电流),温度传感器输出电压的大小随温度的高低变化而变化,电压值的变化范围从几个微伏到几个毫伏,不同的温度传感器,

2、输出电压的范围也差别很大。单片机AT89S52是多点温度测量电路的控制核心,它将采集到的数字温度电压值,经过计算处理,得到相应的温度值,经扫描驱动送到LED显示器以数字形式显示测量的温度。LED显示器用于显示预设温度和实际测量温度的结果。 二、系统硬件电路的设计2.1 温度测量电路多点温度测量电路由主控器单片机AT89S52作为多点温度测量电路的核心,温度传感器DS18B20负责从测量点采集温度,七位共阳LED数码管以动态扫描法实现温度显示。2.1.1 DS18B20单线智能温度传感器的工作原理(1) DS18B20单线智能温度传感器的性能特点DS18B20温度传感器是美国DALLAS半导体公

3、司最近推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在唯一的三线上,实现多点组网功能;无须外接部件;可通过数据供电,电压范围为3.05.5V;零待机功耗;温度以9或12位数字量读出;用户可定义的非易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧坏,但不能正常工作.(2) DS18B20的内部结构框图如图21 所示,

4、它采用3脚PR35封装或8脚SOIC封装其管脚封装如图22所示。(3) DS18B20单线智能温度传感器的工作原理64位ROM的位结构如图23 所示。开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个 DS18B20可以采用一线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM。高速暂存RAM的结构为8字节的存储器,结构如图26 所示。CVDDI/O存储器与控制器高速缓存8位 CRC发生器配置寄存器低温触发器

5、TL高温触发器TH温度传感器64位ROM和单线接口 图21 DS18B20内部结构 图22 DS18B20的引脚排列头2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图25所示。低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要改动,R1和R0决定温度转换的精度位数,即用来设置分辨率,方法见表24 。8位检验CRC48位序列

6、号8位工厂代码(10H)MSB LSB MSB LSB MSB LSB 图23 位64位ROM结构图由表33可见,DS18B20温度转换时间比较长,而且设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。 表24 DS18B20分辨率的定义规定R1R0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750 温度LSB 温度MSBTH用户字节1TL用户字节2配置寄存器保留保留

7、保留CRC1字节TH用户字节12字节3字节4字节 TL用户字节25字节6字节7字节 EEPROM8字节9字节图2-5 配置寄存器 图26 高速暂存RAM结构图TMR1R011111 当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单总线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如图28 所示。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制

8、值。表24 是一部分温度值对应的二进制温度数据。232221202-12-22-32-4SSSSSSSSLS字节MS字节 图27 温度数据值格式在64位ROM的最高有效字节中存储器循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC值做比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理如图29所示.图中低温度系数晶振的振荡频率受温度的影响很小,用它产生的信号作为减法计数器1的脉冲输入;高温度系数晶振随温度变化其振荡频率明显变化,所以产生的信号作为减法计数器2的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20对低温度系数振荡

9、器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。图29 中的斜率累加器用于温度补偿和修正测温过程中的非线形性,其输出用于修正减法计数

10、器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲) 发ROM功能命令 发存储器操作命令 处理数据。(4) DS18B20与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源方式,如图210 所示。单片机端口接单总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管

11、来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开始时间最大为10s。采用寄生电源供电方式时VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。温度/二进制十六进制表示+1250000 0111 1101 0000 07D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H0.51111

12、 1111 1111 1000FFF8H10.1251111 1111 0101 1110FF5EH25.06251111 1110 0110 1111FE6FH551111 1100 1001 0000FC90H 表28 DS18B20温度与测得值对应表 图29 DS18B20测温原理图图210 DS18B20采用寄生电源的电路图2.2 驱动电路 74ls245引脚图与用法 74LS245是我们常用的芯片,用来驱动led或者其他的设备,用法很简单如上图,这里简单的给出一些资料,他是8路同相三态双向总线收发器,可双向传输数据。 74LS245还具有双向三态功能,既可以输出,也可以输入数据。 当

13、8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。 当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)*DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。2.3 显示电路 LED 数码管显示原理 常用的LED显示器为8段(或7段)分别记作 a、b、c、d、e、f、g、dp 、其中 dp 为小数点,每一只发光二极管都有一根电极引到外部引脚上,而另外一只 引脚就连接在一起同样也引到外部引脚上,记作公共端(COM),如上图所示。 LED 数码管有两种,分为共阳极与共阴极.共阳极:当数码管里

14、面的发 光二极管的阳极接在一起作为公共引脚,在正常使用时此引脚接电源正极.当发光二 极管的阴极接低电平时, 发光二极管被点亮, 从而相应的数码段显示, 而输入高电平的段则不能点亮。相反,共阴极:当数码管里面的发光二极管的阴极接 在一起作为公共引脚,在正常使用时此引脚接电源负极.当发光二极管的阳极接高电平时,发光二极管被点亮,从而相应的数码段显示,而输入低电平的 段则不能点亮。 为了使LED显示器显示不同的符号或数字,要把某些段的发光二极管点亮,这样就要为LED显示器提供代码,因为这些代码可使LED相应的段发光,从而显示不同字型,因此该代码也成为段码(或称字型码)。 段码与字节中各位对应关系代码

15、位D7D6D5D4D3D2D1D0显示段dpgfedcba八段LED数码管段代码编码表字形0123456789共阳C0HF9HA4HB0H99H92H82HF8H80H90H共阴3FH06H5BH4FH66H6DH7DH07H7FH6FH 三、 系统软件的设计系统程序主要包括主程序、DS18B20复位初始化子程序,读出转换后的温度值,生成显示码子程序及显示子程序3.1 主程序主程序的主要功能是负责温度的实际显示、读数并处理DS18B20的测量温度值,温度测量每1s进行一次。3.2 DS18B20复位初始化子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC检验,校验有错时

16、不进行温度数据的改写。3.3读出转换后的温度值温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率知转换时间约750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。3.4生成显示码子程序及显示子程序 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0将符号显示位移入下一位四、程序设计流程程序流程图如图主程序开始初始化、设置常量调DS18B20初始化子程序读取转换温度值调数据处理子程序生成显示码显示温度值DS18B20复位子程序DQ置1DQ置0延时至少573微秒DQ置1短

17、延时,等待DS18B20回应DQ=0?FLAG1置1延时DQ置1返回FLAG1置0YN读温度值子程序DQ置1DS18B20复位FLAG1=1发送0CCH命令,跳过ROM匹配发送温度转换命令44H延时750微秒以上DS18B20初始化跳过ROM匹配发送读温度命令0BEH调用读数据子程序返回写DS18B20命令子程序设R2=8进位标志位C清零短延时DQ置0ACC带进位右移1位将C值写入DQ短延时DQ置1已读8位DQ置1返回YNYN读温度值子程序设R1=31H设R4=2(2字节)已读8位返回数据处理子程序C清零设R2=8(8位数据)进位标志位C清0为DQ提供一个低脉冲将DQ值读入CACC带进位右移1

18、位将ACC中的值存入R1R1=R1-1读完2字节符号位SIGN清零将转换数据高字节最高位移入CC=1C清零SIGN置1,表示负数将转换数据低字节逐位取反再加1转换数据高字节加进位C分离整数与小数,整数存入INTEG,小数存入DECIM返回YNYNYN附录一 程序DQ BIT P3.6FLAG1BIT00HSIGNBIT01HMSBEQU30H;转换数据高位字节LSBEQU31H;转换数据低位字节INTEG EQU32H;转换数据整数部分DECIM EQU33H;转换数据小数部分SEG_S EQU34HSEG_I3 EQU35HSEG_I2 EQU36HSEG_I1 EQU37H;3位整数段码S

19、EG_D1EQU38H;1位小数段码SEG_C EQU39HSEG_I6 EQU 40HSEG_I5 EQU 41HSEG_I4 EQU 42H;*;主程序;*ORG0000HMAIN:LCALLINIT_1820;DS18B20初始化LCALLGET_TEMPER;读取转换数据LCALLDATA_PROC;数据处理LCALLSEG_GEN;生成显示码LCALLDISPLAY;数码显示SJMPMAIN;*;DS18B20复位初始化子程序;*INIT_1820:SETB DQNOPCLR DQ;主机发出延时537微秒的复位低脉冲MOV R1,#3TSR1:MOV R0,#107DJNZ R0,$

20、DJNZ R1,TSR1SETB DQ;拉高数据线NOPNOPNOPMOV R0,#25HTSR2:JNB DQ,TSR3;等待DS18B20回应DJNZ R0,TSR2;延时并检测应答信号LJMP TSR4 TSR3:SETB FLAG1 ;置标志位,表示DS1820存在LJMP TSR5TSR4:CLR FLAG1 ;清标志位,表示DS1820不存在LJMP TSR6TSR5:MOV R0,#117DJNZ R0,$ ;时序要求延时一段时间TSR6:SETB DQRET;*;读出转换后的温度值;*GET_TEMPER:SETB DQLCALL INIT_1820;先复位DS18B20JB

21、FLAG1,TSS2RET ;判断DS1820是否存在TSS2:MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#44H ;发出温度转换命令LCALL WRITE_1820LCALL DELAY;等待AD转换结束,12位转换需750微秒LCALL INIT_1820;准备读温度前先复位MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ;发出读温度命令LCALL WRITE_1820LCALL READ_18200;将读出的温度数据保存到35H/36H RET;*;写DS18B20的子程序(有具体的时序要求);*W

22、RITE_1820:MOV R2,#8;一共8位数据CLR CWR1:CLR DQMOV R3,#6DJNZ R3,$RRC AMOV DQ,CMOV R3,#23DJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRET;*; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据 ;*READ_18200:MOV R4,#2 ;将温度高位和低位从DS18B20中读出MOV R1,#31H ;低位存入31H,高位存入30HRE00:MOV R2,#8;数据一共有8位RE01:CLR CSETB DQNOPNOPCLR DQNOPNOPNOPSETB DQMOV

23、 R3,#9RE10:DJNZ R3,RE10MOV C,DQMOV R3,#23DJNZ R3,$RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RET;*;数据处理子程序,判断正负,并分离转换值的整数和小数部分;符号位为SIGN,0为正,1为负;整数部分存放在INTEG(32H)中,小数部分存放在DECIM(33H)中;*DATA_PROC:CLRCCLRSIGNMOV A,MSBRLCAJCNEG;判断符号位LJMPPROCNEG:CLRC;对负数取补码SETBSIGNMOV A,LSBCPLAADDA,#1MOV LSB,AMOV A,MSBCPL

24、AADDCA,#0MOV MSB,APROC:MOV A,LSB;分离转换值的整数和小数部分ANLA,#0FHMOV DECIM,A;存储小数部分MOV A,MSBSWAPAANLA,#0F0HMOV INTEG,AMOV A,LSBSWAPAANLA,#0FHMOV R0,INTEGORLA,R0MOV INTEG,A;存储整数部分RET;*;生成显示码子程序;符号位段码存放在SEG_S中,整数段码存放在SEG_I3到SEG_I1中;小数部分段码存放在SEG_D1到SEG_D4中;*SEG_GEN:MOV DPTR,#TABLEJBSIGN,S_NEGMOV SEG_S,#00HSJMPS_

25、INTS_NEG:MOV SEG_S,#40HS_INT:MOV A,INTEGMOV B,#100DIVABMOVCA,A+DPTRMOV SEG_I3,A;百位数段码MOV A,BMOV B,#10DIVABMOVCA,A+DPTRMOV SEG_I2,A;十位数段码MOV A,BMOVCA,A+DPTRORLA,#80H;加小数点MOV SEG_I1,A;个位数段码MOV DPTR,#SWITCHMOV A,DECIMMOV B,DECIMADDA,BJMPA+DPTR;根据小数值查表,求段码SWITCH:AJMPK0AJMPK1AJMPK2AJMPK3AJMPK4AJMPK5AJMPK

26、6AJMPK7AJMPK8AJMPK9AJMPK10AJMPK11AJMPK12AJMPK13AJMPK14AJMPK15K0:MOV SEG_D1,#3FHAJMP RETURNK1:MOV SEG_D1,#06HAJMPRETURNK2:MOV SEG_D1,#06HAJMPRETURNK3:MOV SEG_D1,#5BHAJMPRETURNK4:MOV SEG_D1,#4FHAJMPRETURNK5:MOV SEG_D1,#4FHAJMPRETURNK6:MOV SEG_D1,#66HAJMPRETURNK7:MOV SEG_D1,#66HAJMPRETURNK8:MOV SEG_D1,

27、#6DHAJMPRETURNK9:MOV SEG_D1,#7DHAJMPRETURNK10:MOV SEG_D1,#7DHAJMPRETURNK11:MOV SEG_D1,#07HAJMPRETURNK12:MOV SEG_D1,#7FHAJMPRETURNK13:MOV SEG_D1,#7FHAJMPRETURNK14:MOV SEG_D1,#6FHAJMPRETURNK15:MOV SEG_D1,#6FHAJMPRETURNRETURN:MOV SEG_C,#39H;符号C的段码MOV DPTR,#TABLEMOV A,#25MOV B,#100DIVABMOVCA,A+DPTRMOV S

28、EG_I6,A;百位数段码MOV A,BMOV B,#10DIVABMOVCA,A+DPTRMOV SEG_I5,A;十位数段码MOV A,BMOVCA,A+DPTRMOV SEG_I4,ARET;*;显示子程序,首位为符号位,三位整数,1位小数;最后一位C为摄氏度标志;*DISPLAY:MOV P3,#0FFHCLRP3.0MOV P1,SEG_D1LCALLDELAYSETBP3.0CLRP3.1MOV P1,SEG_I1LCALLDELAYSETBP3.1CLRP3.2MOV P1,SEG_I2LCALLDELAYSETBP3.2CLRP3.3MOV p1,SEG_I3LCALLDELA

29、YSETBP3.3CLRP3.7MOV P1,SEG_I6LCALLDELAYSETBP3.7CLRP3.6MOV P1,SEG_I5LCALLDELAYSETBP3.6 CLRP3.5MOV P1,SEG_I4LCALLDELAYSETBP3.5RET;*;延时子程序,延时5ms;*DELAY:MOV R5,#5;延时5msD1:MOV R6,#248DJNZR6,$DJNZR5,D1RET;*TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H;段码表DB92H,82H,0F8H,80H,90HEND附录二 原理图 在此仿真图中数码管为共阴极的,段选码用的是共阳极的附录三 实物电路图 结论由于本设计采用了集成温度传感器,这样不仅减少了硬件电路的设计与调试,并且此温度传感元件的集成性能比传统的元件要优越得多,这样简化了电路的设计难度还降低了产品的价格。如果我们采用传统的元件则在设计中还要加入A/D转换器和模拟开关,这样就增加了电路的设计难度并且感温元件的精度和转换性能也是远不及集成的感温元件DS18B20的。所以在以后的设计过程中应该尽量的采用集成元件。另外,本设计还可以实现高低温报警功能和多点温度测量功能,因此,能够适用于多种场合。22

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服