智能温度计设计(共24页).doc
精选优质文档-倾情为你奉上安阳师范学院本科学生毕业论文智能温度计设计作者 系(院) 专业 年级 学号 指导教师 日期 专心-专注-专业学生诚信承诺书和论文使用授权说明样张(A4纸210×297mm)学生诚信承诺书本人郑重承诺:所呈交的设计报告是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,报告中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在报告中作了明确的说明并表示了谢意。签名:日期:报告使用授权说明本人完全了解安阳师范学院有关保留、使用学位报告的规定,即:学校有权保留送交报告的复印件,允许报告被查阅和借阅;学校可以公布报告的全部或部分内容,可以采用影印、缩印或其他复制手段保存报告。签名:导师签名:日期:智能温度计设计摘要:本文从硬件和软件两方面来讲述水温自动控制过程,在控制过程中主要应用AT89C51、ADC0809、LED显示器、LM324比较器,而主要是通过 DS18B20数字温度传感器采集环境温度,以单片机为核心控制部件,并通过四位数码管显示实时温度的一种数字温度计。软件方面采用汇编语言来进行程序设计,使指令的执行速度快,节省存储空间。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,使硬件在软件的控制下协调运作。关键词:AT89C51单片机;DS18B20传感器;模数转换器;温度显示1引言单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。单片机的潜力越来越被人们所重视。特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。而现在单片机在农业上也有了很多的应用。温度是日常生活、工业、医学、环境保护、化工、石油等领域最常遇到的一个物理量。测量温度的基本方法是使用温度计直接读取温度。最常见到的测量温度的工具是各种各样的温度计,例如,水银玻璃温度计,酒精温度计,热电偶或热电阻温度计等。它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,又直观准确。2技术要求本课题的研究重点是设计一种基于单片机的数字温度计控制系统。利用数字温度传感器DS18B20,此传感器课读取被测量温度值,进行转换。主要工作如下:1. 温度测试基本范围0100。2. 精度误差小于1。3. LED液晶显示。3 方案论证该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现方案。3.1方案一采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成,热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有A/D 通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D 转换电路,感温电路比较麻烦。系统主要包括对A/D0809 的数据采集,自动手动工作方式检测,温度的显示等,这几项功能的信号通过输入输出电路经单片机处理。此外还有复位电路,晶振电路,启动电路等。故现场输入硬件有手动复位键、A/D 转换芯片,处理芯片为51 芯片,执行机构有4 位数码管等。系统框图如图 3-1所示。图 3-1 热电偶温差电路测温系统框图3.2 方案二采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC 机通信上传数据,另外AT89S51 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。【1】该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。从以上两种方案,容易看出方案一的测温装置可测温度范围宽、体积小,但是线性误差较大。方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案二。4 硬件设计DS18B204.1 系统框图电脑MAX23251单片机数码显示控制设备4.2 主要元器件1.51单片机2.温度传感器DS18B203.MAX2324.液晶显示4.3 电路基本原理利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,同时处理后的数据送到LED中显示。4.4 原理图 5 软件设计5.1 主程序设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。主程序流程见图5-1。图 5-1 主程序流程图5.2 DS18B20初始化图 5-2 DS18B20初始化流程图6 硬件安装6.1 系统的调试硬件调试比较简单,首先检查电路的焊接是否正确,然后可以用万用表测试或通电检测。软件程序使用keil2软件进行编程与编译,Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。下载软件使用的是STC-ISP,STC-ISP是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载到STC89系列和12C2052型单片机。6.2 性能分析性能测试可用制作的温度计和已有的成品温度计同时进行测量比较。由于DS18B20的精度很高,所以误差指标可以限制在±0.5以内。另外,-55+125的测量范围使得该温度计完全适合一般的应用场合,其低压供电特性可以做成电池供电的手持电子温度计。DS18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行应用开发,但在实际设计中应注意一下问题:DS18B20工作时电流高达1.5mA,总线上挂接点数较多且同时进行转换时要考虑增加总线驱动,可用单片机端口在温度转换时导通一个MOSFET供电。 连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配等问题。在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号。一旦某个DS18B20接触不好或短线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。7 总结本系统结构简单,成本低廉,维护方便.在实际应用中工作性能稳定,测量温度准确,直接将温度数据进行编码,使用单根电缆传输温度数据,通信方便,传输距离远且抗干扰性强.数字单总线温度传感器是目前最新的测温器件,它集温度测量,A/D转换于一体,具有单总线结构,数字量输出,直接与微机接口等优点。既可用它组成单路温度测量装置,也可用它组成多路温度测量装置, 因此本系统在同一条I/O口线上可以实现检测点数量的增加,可以通过一台电脑对多个场所环境温度进行多点监测、采集和控制,应用前景非常大,可以广泛地应用于农业蔬菜大棚、仓库以及其他对温度要求较高的场所。参考文献1 张毅刚.单片机原理及应用M.高等教育出版社.2004年1月,第1版:137-1562 曹巧媛主编. 单片机原理及应用(第二版). 北京:电子工业出版社,20023 何力民编. 单片机高级教程. 北京:北京航空大学出版社,20004 金发庆等编. 传感器技术与应用.北京机械工业出版社,20025 王锦标,方崇智过程计算机控制北京:清华大学出版社,1997;36406 邵惠鹤工业过程高级控制上海:上海交通大学出版社,1997;5862,781017 胡寿松自动控制原理北京:国防工业出版社,2000;1031248 刘伯春智能PID调节器的设计及应用电子自动化,1995;(3):20259 Katsuhiko OgataModen Control EngineeringPublishing house of electronics industry,2000:1 9620210 周润景,张丽娜基于PROTEUS 的电路及单片机系统设计与仿真M北京:航空航天大学出版社 ,2006.P321P32611 王忠飞,胥芳MCS-51 单片机原理及嵌入式系统应用M西安:西安电子科技大学出版社,2007P268-27312 刘国钧,陈绍业,王凤翥.图书馆目录.第1版.北京:高等教育出版社,195713 傅承义,陈运泰,祁贵中.地球物理学基础.北京:科学出版社,1985,447Design of Digital Thermomer Based on SCM AbstractMengshaopingAbstract:In this paper, both hardware and software for automatic control of water temperature on the process, in the control of the main application of the process of AT89C51, ADC0809, LED display, LM324 comparator, but mainly through the digital temperature sensor DS18B20 collecting ambient temperature to single-chip microcomputer as the core control components, and through four real-time digital display of a digital thermometer temperature. Software using assembly language for programming, so that the implementation of Directive speed, to save storage space. In order to facilitate the expansion and changes to the design of modular software structure, so that the logic of the relationship between program design more concise,Hardware software co-operation under the control of it.Key words:Single-chip microcomputer system ;Sensor;Data Acquisition;ADC;Temperature致 谢二年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。在这四年的求学生涯中师长、亲友给与了我大力支持,在这个翠绿的季节我将迈开脚步走向远方,怀念,思索,长长的问号一个个在求学的路途中被知识的举手击碎,而人生的思考才刚刚开始。感谢教书育人的老师,我不是你们最出色的学生,而你们却是我最尊敬的老师。大学时代的老师治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了对待知识,走向社会的思考方式。在这里尤其要感谢辛宇老师,从论文题目的选定到论文写作的指导,感谢您的悉心的点拨。 感谢同学在我遇到困境时向我伸出援助之手,同窗之谊我们社会再续;在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚谢意! 附录1;程序名称:DS18B20 ;程序功能:通过CPU模拟DS18B20时序,从而完成温度采集并显示 ;程序最终修改日期:2007年1月11日 TEMP_L EQU 30H ;存放读出的温度低8位 TEMP_H EQU 31H ;存放读出的温度高8位 DAT EQU P3.4 AA EQU 20H ;存放要显示温度的十位(十进制数) BB EQU 21H ;存放要显示温度的个位(十进制数) CC EQU 22H ;存放要显示小数点后一位(十进制数)温度 DD EQU 23H ;存放要显示小数点后第二位(十进制数)温度 RS BIT P2.5 RW BIT P2.6 EP BIT P2.7 NUM EQU P0 ORG 0000H SJMP MAIN ORG 0040H MAIN: MOV R2,#10 LOOP_DEL1:LCALL DEL_1MS DJNZ R2,LOOP_DEL1 LCALL LCD_INIT MOV R1,#4 LCALL LCD_WCMD MOV R3,#0 LOOP_W:MOV A,R3 MOV DPTR,#TEMP MOVC A,A+DPTR LCALL LCD_WDATA LCALL DEL_1MS INC R3 CJNE R3,#9,LOOP_WMAIN_18B20:LCALL INT ;调用初始化程序 MOV A,#0CCH ;发SKIP ROM(跳过ROM,代码为0CCH)命令 LCALL WRITE MOV A,#44H ;发"温度转换"命令,代码为44H LCALL WRITE LCALL DELAY ;延时500ms,等待DS18B20转换 LCALL INT ;调用复位程序 MOV A,#0CCH ;再次发送跳过ROM命令 LCALL WRITE MOV A,#0BEH ;发"读存储器"命令 LCALL WRITE ;接下来将依次读18B20内部缓冲寄存器的第0到第8个字节内容,因本次只需读出温度,又因为先读第0和第1字节,故有如下程序 LCALL READ MOV TEMP_L,A ;读出温度的低8位 LCALL READ MOV TEMP_H,A ;读出温度的高8位 ;接下来调用显示子程序 LCALL DISP SJMP MAIN_18B20 ;初始化程序,分以下几个步骤 INT: SETB DAT ;将DS18B20数据线DAT拉高电平 MOV R0,#200 LOOP: CLR DAT ;主机发出“复位脉冲”,将DS18B20数据线DAT拉低480-960微秒 DJNZ R0,LOOP ;以上两句三个机器周期。若晶振为11.0592MHZ,则约600多微秒 SETB DAT ;主机释放DS18B20数据线DAT,口线改为输入 MOV R0,#30 DJNZ R0,$ ;上拉电阻将DS18B20数据线DAT拉为高电平约15-60微秒,此时DS18B20处于等待状态 ;接下来判断DS18B20是否有响应(即DS18B20是否回送“存在脉冲”,也即DS18B20的数据线是否变低),若有响应则应维持60240微妙 CLR C ORL C,DAT JC INT ;若DS18B20无响应(即未准备好,也即C=1),重新初始化;若有响应(即C=0),顺序往下执行 MOV R0,#60 LOOP1: ORL C,DAT JC LP ;响应是否结束,如结束则数据线应为高电平,就转LP ;否则继续查询响应是否结束 DJNZ R0,LOOP1 ;60已减完,响应仍未结束,重新开始 SJMP INT LP: MOV R0,#120 ;响应已结束,再维持约240微秒 DJNZ R0,$ RET ;返回 ;写入一个字节的子程序,要写的字节内容存在A中 (先写字节的低位) WRITE: MOV R3,#8 ;共需写入8个位(一个字节) WR_BIT: SETB DAT ;高电平 MOV R4,#7 CLR C ;本语句可以不写(因为C中原内容被覆盖掉了) RRC A ;先移低位 CLR DAT ;主机先将DS18B20数据线DAT拉低 DJNZ R4,$ ;低电平持续时间14us(应该在15us左右) SETB DAT ;释放数据线,结合下一条语句,本语句可有可无 MOV DAT,C ;写入一位 MOV R4,#15 DJNZ R4,$ ;写入一位的保持时间在15us-30us左右 DJNZ R3,WR_BIT ;继续写下一位,直到8位写完为止 SETB DAT ;释放数据线 RET ;返回 ;读一个字节的子程序 (先读字节低位),读出的一个字节存入A中 READ: MOV R6,#8 ;共需读出8个位(一个字节) RD_BIT: CLR DAT ;主机先将DS18B20数据线DAT拉低(与写入的时序同) MOV R4,#7 SETB DAT ;释放数据线 DJNZ R4,$ ;上拉电阻将DS18B20数据线DAT拉为高电平,时间应该在15us左右,此时口线改为输入 CLR C ;本语句同样可以不写 MOV C,DAT ;读取一位数据 RRC A MOV R5,#15 DJNZ R5,$ ;读完一位需保持时间15us-30us左右 DJNZ R6,RD_BIT ;继续读下一位,直到8位读完为止 SETB DAT ;释放数据线 RET ;返回 ;显示程序 DISP: MOV A,TEMP_H ;取高字节的低3位 ;取低字节的高4位 ANL A,#07H MOV 50H,A MOV A,TEMP_L ;取低字节的高4位 ANL A,#0F0H ORL A,50H ;进行或逻辑组成一字节,存放在A SWAP A ;高低4位互换 MOV B,#10 DIV AB ;除之前,A中放被除数,除之后,A中放商,B中放余数 MOV AA,A ;AA存放要显示温度的十位(十进制数) MOV BB,B ;BB存放要显示温度的个位(十进制数) MOV A,TEMP_L ;再将低字节的低4位取出 ANL A,#0FH MOV B,#10 MUL AB MOV B,#16 DIV AB MOV CC,A ;CC中存放要显示小数点后一位(十进制数)温度 MOV A,B MOV B,#10 MUL AB MOV B,#16 DIV AB MOV DD,A ;DD中存放要显示小数点后第二位(十进制数)温度 ;以下要注意R0和R1的取值对显示效果的影响 ;MOV R0,#1 NOP NOP NOP ; MOV DPTR,#TAB ;查表 NOP MOV R2,#10 LOOP_DEL:LCALL DEL_1MS DJNZ R2,LOOP_DEL LCALL LCD_INIT1 MOV R1,#5 LCALL LCD_WCMD MOV R3,AA MOV A,R3 MOV DPTR,#NUM1 MOVC A,A+DPTR LCALL LCD_WDATA MOV R3,BB MOV A,R3 MOV DPTR,#NUM1 MOVC A,A+DPTR LCALL LCD_WDATA MOV R3,#10 MOV A,R3 MOV DPTR,#NUM1 MOVC A,A+DPTR LCALL LCD_WDATA MOV R3,CC MOV A,R3 MOV DPTR,#NUM1 MOVC A,A+DPTR LCALL LCD_WDATA MOV R3,DD MOV A,R3 MOV DPTR,#NUM1 MOVC A,A+DPTR LCALL LCD_WDATA MOV R6,#4 MOV R7,#50 LOOP2:LCALL DEL_1MS DJNZ R7,LOOP2 DJNZ R6,LOOP2 RET ; SJMP $ LCD_INIT:MOV R1,#0 LCALL LCD_WCMD LCALL DEL_1MS MOV R1,#1 LCALL LCD_WCMD LCALL DEL_1MS MOV R1,#2 LCALL LCD_WCMD LCALL DEL_1MS MOV R1,#3 LCALL LCD_WCMD LCALL DEL_1MS RET LCD_INIT1:;MOV R1,#0 ;LCALL LCD_WCMD ; LCALL DEL_1MS MOV R1,#1 LCALL LCD_WCMD LCALL DEL_1MS MOV R1,#2 LCALL LCD_WCMD LCALL DEL_1MS MOV R1,#3 LCALL LCD_WCMD LCALL DEL_1MS RET LCD_WCMD:MOV A,R1 MOV DPTR,#CMD MOVC A,A+DPTR LCALL LCD_BZ CLR RS CLR RW CLR EP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP MOV NUM,A NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP SETB EP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP CLR EP RETLCD_WDATA:LCALL LCD_BZ SETB RS CLR RW CLR EP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP MOV NUM,A NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP SETB EP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP CLR EP RET LCD_BZ:CLR RS SETB RW SETB EP NOP NOP NOP NOP NOP NOP NOP NOP JNB P0.7,RETU CLR EP LJMP LCD_BZ RETU:CLR EP RET ;延时1ms的子程序 D1MS: MOV R7,#80 DJNZ R7,$ RET CMD: DB 01H,38H,0FH,00H,80H,89H NUM1: DB '0','1','2','3','4','5','6','7','8','9','.' TEMP: DB 'T','E','M','P','_','N','O','W',':' ;* ;延时500us的子程序 DELAY: MOV R7,#1 DL2: MOV R6,#10 DL1: MOV R5,#200 DL0: DJNZ R5,DL0 DJNZ R6,DL1 DJNZ R7,DL2 RET DEL_1MS:MOV R4,#20 DEL:MOV R5,#50 DJNZ R5,$ DJNZ R4,DEL RET END附录2如果你需要更多的帮助,请到我的百度空间联系我