1、报警信号一、引言当今社会,温度检测系统被广泛的社会生产、生活的各个领域。在工业、环境检测、医疗、家庭等多方面都有应用。同时单片机在电子产品中的应用已经越来越广泛。随着温度检测理论与技术的不断更新,温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和单导体传感器等,每种传感器根据其自身特性,都有它自己的应用领域。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温准确、其输出温度采用数字显示等优点,主要用于对温度比较准确的场所,或科研实验室使用。该设计控制器使用单片机AT89C51,温度传感器使
2、用DS18B20,用4位共阳极LED数码管以串口显示数据,实现温度显示。二、设计内容及性能指标本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:利用温度传感器(DS18B20)测量某一点环境温度测量范围为-5599,精度为0.5用数码管进行实际温度值显示能够根据需要方便设定上下限报警温度三、总体设计方案 整体功能说明:以51单片机为主控制器,以数字式温度传感器DS18B20为传感元件,以LED数码管作为显示器件实时显示测量温度(十进制数)。数字式温度计测温范围在55125,误差在0.5以内。温度测量间隔时间选择1 s
3、。 通过键盘扩展,实现温度上下限值的设定及温度报警功能。对温度采样值实现数字滤波。通过硬件或软件方法实现时间显示。2. 硬件功能模块组成:温度计的控制器使用单片机AT89C2051,温度传感器使用DS18B20,用4位共阳LED数码管以动态扫描法实现温度显示。主控制器: 单片机AT89C2051具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要。显示电路:显示电路采用4位共阳LED数码管,从P1口输出段码,列扫描用P3.0P3.3口来实现,列驱动用9012三极管。3. 软件功能组成模块:系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序
4、等。主程序:主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1 s 进行一次。读出温度子程序:主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。温度转换命令子程序:主要是发温度转换开始命令。计算温度子程序:将RAM中读取值进行BCD码的转换运行,并进行温度值正负的判定。显示数据刷新子程序:主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。4. 硬件总体框图:5. 测试计划: (1)硬件测试:主要测试各部分硬件是否能正常工作,每部分通过简单程序来检测。 (2)软件测试:测试软件是否符合
5、设计要求、是否存在BUG。四、系统硬件电路的设计1. 整体功能说明:2硬件功能模块组成:温度计电路设计原理图如图4.1所示,温度计的控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳极LED数码管以动态扫描法实现温度显示。图中有3个独立式按键可以分别调整温度的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度显示,这时可以调整上下限,从而测出被测的温度值。图4.1温度计电路设计原理图2.1主控制器单片机AT89C51具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要。2.2温度测量模块主要用到的是DS
6、18B20温度传感器,将采集到的温度模拟量(-55度到125度)转换成数字量,并接上一个上拉电阻后再送给单片机P3.4口。2.3显示电路显示电路采用4位共阳极LED数码管,从P0口输出段码,列扫描用P2.0P2.3口来实现,列驱动用9012三极管。2.4温度传感器工作原理1. DS18B20的性能特点DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器。与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的性能特点如下:.独特的单线接口仅需要一个端口引脚进行通信;.多个DS18B2
7、0可以并联在唯一的三线上,实现多点组网功能;.不需要外部器件;.可通过数据线供电,电压范围为3.0-5.5 V;.零待机功耗;.温度以912位数字量读出;.用户可定义的非易失性温度报警设置;.报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;. 负电压特性,电源极性接反时,温度计不会因发热而烧毁,只是不能正常工作。2. DS18B20的内部结构DS18B20采用3脚PR一35封装或8脚SOIL封装,其内部结构框图如图4.2所示。图4.2 DS18B20内部结构框图64位ROM的位结构如图4.3所示。开始8位是产品类型的编号;接着是每个器件的唯一的序号,共有48位;最后8位是前面56
8、位的CRC检验码,这也是多个DS18B20可以采用单线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写人用户报警上下限数据。图4.3 64位ROM结构框图3.DS18B20测温原理图4.4所示,图中低温度系数振荡器的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输人。图4.4 DS18B20的测温原理图图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55
9、所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55所对应的一个基数值。减 法 计 数器1对低温度系数振荡器产生的脉冲信号进行减法计数,当减法计数器1的预置值减到。时,温度寄存器的值将加1,减法计数器1的预置值将重新被装人,并重新开始对低温度系数振荡器产生的脉冲信号进行计数。如此循环,直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。图4.8中的斜率累加器用于补偿和修正测温过程中的非线形性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。另外 ,由 于DS18B20
10、单线通信功能是分时完成的,有严格的时隙概念,因此读/写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。4.DS18B20与单片机的接口电路DS 18 B 20可以采用两种方式供电:一种是采用电源供电方式,此时DS18B20的第1脚接单片机课程设计指导地,第2脚作为信号线,第3脚接电源;另一种是寄生电源供电方式,如图4.5所示。单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当 DS 18 B20处于写存储器操作和温度A/D转换操
11、作时,总线上必须有强的上拉,上拉开启时间最长为500 ms。采用寄生电源供电方式时,VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。图4.5 DS18B20采用寄生电源的电路图4.测温系统的硬件工作原理 对DS18B20初始化后,主机发出SKIP ROM命令,此命令执行后的存储器操作命令将对所在线的DS18B20,在发出温度转换启动码(44H),等待750ms后,先发出匹配ROM命令(55H)紧接着主机提供一片DS18B20的64位序列号,读取其温度存储器值,存入数据缓存。五、系统的软件设计1.主程序主程序需要调用4个子程序,分别为数码管显示程序,温度测试及处理子程序,
12、报警子程序,中断设定子程序。各模块程序功能如下:数码管显示程序:向数码的显示送数,控制系统的显示部分。温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。报警子程序:进行温度上下限判断及报警输出。中断设定程序:实现设定上下限报警功能。主程序流程见图5.1:图5.1 主程序流程图2. 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。其流程如图5.2所示。图5.2读DS18B20流程图3. 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。其流程如图5.3所示。图5.3温度转换命令子程序流程图4. 计算温度子程序计算温度子程序的主要功能是将RAM中读取值进
13、行BCD码的转换运行,并进行温度值正负的判定。其流程如图5.4所示。图5.4计算温度子程序流程5. 显示数据刷新子程序显示数据刷新子程序的主要功能是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。其流程如图5.5所示。图5.5 显示数据刷新子程序流程六、系统调试 根据方案设计的要求,调试过程共分3大部分:硬件调试、软件调试和软硬联调。 单片机的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试中被发现和纠正的。但通常是先排除明显的硬件故障以后,在和软件结合起来调试以进一步排除故障。可见硬件的调试是基础。如果硬件调试不通过,软件设计就是无从说起。1硬件
14、调试硬件调试比较简单首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。1.1排除逻辑故障 这类故障往往由于设计和加工制板过程中工艺性错误所造成的。只要包括错线、开路、短路。排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其他信号线短路。必要时利用数字万用表的短路测试功能,可以缩短排错时间。1.2排除元器件失效 造成这类错误的原因有2个:一是元器件买来时就已坏了;另一个是安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和要求是否一致。在
15、保证安装无误后,用替换方法排除错误。1.3排除电源故障 在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。2软件调试本系统的软件系统较大,全面采用汇编语言编写,除语法和逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。采取自下而上的方法,单独调好每一个模块,最后完成一个完整的系统调试。3软硬调试 系统做好后,进行系统的完整调试。联机仿真必须借助仿真开发装置、示波器、万用表等工具。这些工具是单片机开发的最基本工具。七、程序清单 ;常数定义TIMEL EQU 0E0HTIMEH EQU 0B1H ; 20ms,定时器0时间常数TEMPHEAD EQU 36H工作内存定义B
16、ITST DATA 20HTIME1SOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H引脚定义TEMPDIN BIT P3.4中断向量区 ORG 0000H LJMP START ORG 000BH LJMP TOIT系统初始化 ORG 0030H START: MOV SP,#60H CLSMEM: MOV R0,#20H MOV R1,#60HCLSMEM1: MOV R0,#00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,#00
17、100001B ;定时器0工作方式(16位) MOV TH0,#TIMEL MOV TL0,#TIMEH ;20ms SJMP INIT ERROR: NOP NOP INIT: SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR TEMPONEOK LJMP MAIN定时器0中断服务程序 TOIT: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL0,#TIMEL INC R7 CJNE R7, #32H,TOIT1 MOV R7, #00H SETB TIME1SOK ;1s定时标志 TOIT1: POP PSW RE
18、TI主程序 MAIN: LCALL DISP1 ;调用显示子程序 JNB TIME1SOK,MAIN CLR TIME1SOK ;测温每1s一次 JNB TEMPONEOK,MAIN2 ;上电时先温度转换一次 LCALL READTEMP1 ;读出温度子程序 LCALL CONVTEMP ;温度BCD码计算处理子程序 LCALL DISPBCD ;显示区BCD码 温度值刷新子程序 LCALL DISP1 ;消闪烁,显示一次 MAIN2: LCALL READTEMP ;温度转换开始 SETB TEMPONEOK子程序区复位DS18B20INITDS1820: SETB TEMPDIN NOP
19、CLR TEMPDIN MOV R6,#0A0H ;延时480us DJNZ R6,$ MOV R6,#0A0H MOV R6,#32H ;延时70us MOV R6,#3CH LOOP1820: MOV C, TEMPDIN JC INITDS1820OUT DJNZ R6, LOOP1820 MOV R6,#064H ;延时200us SJMP INITDS1820 RETINITDS1820OUT:SETB TEMPDIN读DS18B20的程序,从读出DS18B20一字节的数据READDS1820: MOV R7, #08HREADDS1820LOOP: MOV R6,#07H ;延时1
20、5us MOV R6,#3CH ;延时120us RRC A DJNZ R7, READDS1820LOOP写DS18B20的程序,从读出DS18B20一字节的数据 WRITEDS1820: WRITEDS1820LOP: CLR TEMPDIN MOV TEMPDIN,C MOV R6,#34H ;延时104us DJNZ R7, WRITEDS1820LOP;*读温度TEMP* READTEMP:LCALL INITDS1820 MOV A,#0CCH LCALL WRITEDS1820 ;SKIP ROM MOV A,#44H开始转换READTEMP1:MOV A,#0BEHLCALL
21、WRITEDS1820MOV R6,#34HDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READDS1820 MOV R0,A INC R0READTEMP21: LCALL CRC8CAL DJNZ R5,READTEMP2 MOV A,B JNZ READTEMPOUT MOV A,TEMPHEAD+0 MOV TEMPL,A MOV A,TEMPHEAD+1 MOV TEMPH,A READTEMPOUT:RET*处理温度BCD码子程序* CONVTEMP: MOV A,TEMPH ANL A ,#80H
22、JZ TEMPC1 CLR C MOV A,TEMPL CPL A ADD A,#01H MOV A,TEMPH ;- ADDC A,#00H MOV TEMPH,A ;TEMPHC HI=符号位 MOV TEMPHC,#0BH SJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;+TEMPC11:MOV A,TEMPHC SWAP A MOV TEMPHC,A ANL A,#0FH ;乘以0.625 MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR MOV TEMPLC,A ;TEMPLC LOW=小数部分BCD MOV A,TEMPL ;整数部分 ANL A,#0F0H ANL A,#0FH ORL A,TEMPL LCALL HEX2BCD1 SWAP A ;TEMPHC LOW=十位 ORL A,TEMPHC TEMPHC HI=个位 ORL A,TEMPLC MOV TEMPLC,A MOV A,R7 JZ TEMPC12 MOV R7,A MOV A,TEMPHC ;TEMPHC HI=百位BCD ORL A,r7TEMPC12:*小数码表* TEMPDOTTAB: DB 00H
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1