欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于温度传感器的数字温度计的设计毕业论文.doc

    • 资源ID:3940698       资源大小:237.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于温度传感器的数字温度计的设计毕业论文.doc

    毕业设计论文基于温度传感器的数字温度计 摘 要温度控制系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用 ,但由于继电器动作频繁 ,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行范围的温度检测。本文主要介绍了一个基于89C51单片机和DS18B20的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,适合于我们日常生活和工、农业生产中的温度测量。关键词:AT89C51单片机、温度传感器DS18B20 AbstractTemperature control system is widely applied in various fields of social life, such as household appliances, automobiles, materials, power electronics, the commonly used control circuit according to the applications and the required performance indicators is different, in the industrial enterprise, how to improve the performance of the temperature control object has been control personnel and the on-site technical personnel to solve the problem. This kind of control object inertia big, serious lag phenomenon, there are many uncertain factors, it is difficult to establish accurate mathematical model, which can lead to poor performance control system, and even control instability, out of control phenomenon. The traditional relay thermal control circuit is simple and practical, but because the relay action is frequent, it may affect by bad contact of the normal work. Control field is a large number of traditional PID control method, but model of PID control object is difficult to establish, and when the disturbance factors is not clear, inconvenient parameter adjustment is still a common problem. With digital temperature sensor DS18B20, because of its internal integration A/D converter, make the circuit structure more simple, and reduce the precision of temperature measurement conversion loss, make more accurate temperature measurement. Digital temperature sensor DS18B20 a pin can only communicate with MCU, greatly reducing the wiring trouble, this is more extensibility. Due to the miniaturization of DS18B20 chips, more can and main circuit can jump through single cable connection, therefore, can make digital temperature sensor DS18B20 a probe, into a narrow place, increases the practicability. Better combination of multiple digital temperature sensor DS18B20 is used to detect the range of temperature.This paper mainly introduces a temperature measurement system based on 89 c51 MCU and DS18b20, describes in detail using digital temperature sensor DS18b20 temperature measurement and control system in the development process, focusing on sensor under the single chip microcomputer hardware connection, software programming and the flow diagram of each module system has carried on the detailed analysis, the system can easily realize temperature acquisition and display, and can use either set the upper and lower alarm temperature, suitable for our daily life and temperature measurement in industrial and agricultural production.Keywords STC89C52 microcontroller、DS18B20 目 录 摘要.1一、工作原理 .4二、设计方案.4三、单片机.5四、温度传感器 .7五、显示模块和报警模块 .8 1、报警模块8 2、温度显示模块 .9六、C语言程序和注解9七、仿真图.15 1、整体仿真图16 2、各仿真模块17八、总结17九、参考文献18一、工作原理 采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输。该系统利用AT89C51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。 温度传感器 DS18B20 从设备环境的不同位置采集温度,单片机 AT89S51 获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备 (压缩制冷器) ,当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备 (加热器) 。 当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。 系统中将通过串口通讯连接PC机存储温度变化时的历史数据,以便观察整个温度的控制过程及监控温度的变化全过程。二、设计方案采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC 机通信上传数据,另外AT89S51 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。 本设计由DS18B20温度传感器芯片测量当前的温度并将转换后的结果送入单片机。然后通过A89C51单片机驱动LCD显示测量温度值,当达到温度上限或下限时报警。如附录中本设计硬件电路图所示,本电路主要有DS18B20温度传感器芯片,LCD1602液晶显示器,AT89C51单片机及相应外围电路组成。三、 单片机 AT89S51 是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM)32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 A TMEL 公司的 A T89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 A T89S51芯片内含有4 kB的 E2PROM ,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 024 MHz ,并且价格低廉 ,批量价在 10元以内。主要特性如下: 与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 四、温度采集模块DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围55125,可编程为912位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。综上,在本系统中我采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。温度芯片DS18B20可以并用DS18B20 最大的特点是单总线数据传输方式,DS18B20 的数据I/O 均由同一条线来完成。DS18B20 的电源供电方式有2 种: 外部供电方式和寄生电源方式。工作于寄生电源方式时, VDD 和GND 均接地, 他在需要远程温度探测和空间受限的场合特别有用, 原理是当1 W ire 总线的信号线DQ 为高电平时, 窃取信号能量给DS18B20 供电, 同时一部分能量给内部电容充电, 当DQ为低电平时释放能量为DS18B20 供电。但寄生电源方式需要强上拉电路, 软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM 时) , 同时芯片的性能也有所降低。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。因此本设计采用外部供电方式。如下图所示:DS18B204.7K DS18B20使用中的注意事项DS18B20 虽然具有测温系统简单、测温精度高等优点,但在实际应用中也应注意以下几方面的问题:DS18B20 从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。当单总线上所挂DS18B20 超过8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。五、 显示模块和报警模块1、 显示模块采用的是工业字符型液晶1602液晶,具有微功耗、体积小、显示内容丰富、超薄轻巧的特征,常用在袖珍式仪表和低功耗应用系统中。能够同时显示16x02即32个字符,(16列2行)可以显示两行,每行16个字符液晶模块(显示字符和数字)。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。特性:3.3V或5V工作电压,对比度可调;内含复位电路;提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能;有80字节显示数据存储器DDRAM;内建有192个5X7点阵的字型的字符发生器CGROM;8个可由用户自定义的5X7的字符发生器CGRAM。管脚和模型如下:2、报警模块本设计采软件处理报警,利用有源蜂鸣器进行报警输出,采用直流供电。当所测温度超过获低于所预设的温度时,数据口相应拉高电平,报警输出。(也可采用发光二级管报警电路,如过需要报警,则只需将相应位置1,当参数判断完毕后,再看报警模型单元ALARM 的内容是否与预设一样,如不一样,则发光报警)报警电路硬件连接见图六、 C语言程序和注解C语言程序#include<reg51.h> #include<intrins.h> unsigned char code digit10="0123456789" /定义字符数组显示数字unsigned char code Str="DS18B20 max:33" /说明显示的是温度和温度上限unsigned char code Error="Error!" /说明没有检测到DS18B20unsigned char code Temp="T:" /说明显示的是温度unsigned char code Cent="C min:20" /温度单位和温度下限sbit feng=P17; /蜂鸣器报警变量/ 以下是对液晶模块的操作程序sbit RS=P20; sbit RW=P21; sbit E=P22; sbit BF=P07; / 函数功能:延时1msvoid delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+); / 函数功能:延时若干毫秒 void delaynms(unsigned char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); / 函数功能:判断液晶模块的忙碌状态bit BusyTest(void) bit result; RS=0; RW=1; E=1; _nop_(); _nop_(); _nop_(); _nop_(); result=BF; /将忙碌标志电平赋给result E=0; return result; / 函数功能:将模式设置指令或显示地址写入液晶模块void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; RW=0; E=0; _nop_(); _nop_(); P0=dictate; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; / 函数功能:指定字符显示的实际地址 void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /显示位置的确定方法规定为"80H+地址码x" / 函数功能:将数据(字符的标准ASCII码)写入液晶模块 void WriteData(unsigned char y) while(BusyTest()=1); RS=1; RW=0; E=0; P0=y; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; / 函数功能:对LCD的显示模式进行初始化设置void LcdInitiate(void) delaynms(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38); /显示模式设置:16×2显示,5×7点阵,8位数据接口delaynms(5); WriteInstruction(0x38);delaynms(5); WriteInstruction(0x38); /连续三次,确保初始化成功delaynms(5); WriteInstruction(0x0c); /显示模式设置:显示开,无光标,光标不闪烁delaynms(5); WriteInstruction(0x06); /显示模式设置:光标右移,字符不移delaynms(5); WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除delaynms(5); sbit DQ=P33;unsigned char time; /设置全局变量,专门用于严格延时/ 函数功能:将DS18B20传感器初始化,读取应答信号bit Init_DS18B20(void) bit flag; /储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; for(time=0;time<2;time+) ; DQ = 0; for(time=0;time<200;time+) ; DQ = 1; for(time=0;time<10;time+); flag=DQ; for(time=0;time<200;time+) ; return (flag); /返回检测成功标志/ 函数功能:从DS18B20读取一个字节数据unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat; /储存读出的一个字节数据for (i=0;i<8;i+) DQ =1; _nop_(); DQ = 0; dat>>=1; _nop_(); DQ = 1; for(time=0;time<2;time+); if(DQ=1) dat|=0x80; /如果读到的数据是1,则将1存入dat else dat|=0x00; /如果读到的数据是0,则将0存入dat for(time=0;time<8;time+); /延时3us,两个读时序之间必须有大于1us的恢复期 return(dat); /返回读出的十进制数据/ 函数功能:向DS18B20写入一个字节数据WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i<8; i+) DQ =1; _nop_(); DQ=0; DQ=dat&0x01; /利用与运算取出要写的某位二进制数据, /并将其送到数据线上等待DS18B20采样 for(time=0;time<10;time+);/延时约30us,DS18B20在拉低后的约1560us期间从数据线上采样 DQ=1; for(time=0;time<1;time+);/延时3us,两个写时序间至少需要1us的恢复期 dat>>=1; /将dat中的各二进制位数据右移1位 for(time=0;time<4;time+); / 函数功能:显示没有检测到DS18B20void display_error(void) unsigned char i; WriteAddress(0x00); /写显示地址,将在第1行第1列开始显示 i = 0; while(Errori != '0') /只要没有写到结束标志,就继续写WriteData(Errori); i+; delaynms(100); while(1) ; /进入死循环,等待查明原因 / 函数功能:显示说明信息void display_explain(void) unsigned char i; WriteAddress(0x00); /写显示地址,将在第1行第1列开始显示 i = 0; while(Stri != '0') WriteData(Stri);i+; delaynms(100); / 函数功能:显示温度符号void display_symbol(void) unsigned char i; WriteAddress(0x40); /写显示地址,将在第2行第1列开始显示 i = 0; while(Tempi != '0') /只要没有写到结束标志,就继续写WriteData(Tempi); i+; delaynms(50); /函数功能:显示温度的小数点void display_dot(void) WriteAddress(0x45); /写显示地址,将在第2行第6列开始显示 WriteData('.'); /将小数点的字符常量写入LCD delaynms(50); /函数功能:显示温度的单位(Cent)void display_cent(void) unsigned char i; WriteAddress(0x48); /写显示地址,将在第2行第8列开始显示 i = 0; while(Centi != '0') WriteData(Centi); i+; delaynms(50); / 函数功能:显示温度的整数部分void display_temp1(unsigned char x) unsigned char j,k,l; /j,k,l分别储存温度的百位、十位和个位j=x/100; /取百位k=(x%100)/10; /取十位l=x%10; /取个位 WriteAddress(0x42); /写显示地址,将在第2行第3列开始显示WriteData(digitj); /将百位数字的字符常量写入LCDWriteData(digitk); /将十位数字的字符常量写入LCDWriteData(digitl); /将个位数字的字符常量写入LCDdelaynms(50); /函数功能:显示温度的小数数部分 void display_temp2(unsigned char x) WriteAddress(0x46); /写显示地址,将在第2行第7列开始显示WriteData(digitx); /将小数部分的第一位数字字符常量写入LCDdelaynms(50); /函数功能:做好读温度的准备void ReadyReadTemp(void) Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换 for(time=0;time<100;time+) ;Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器,前两个分别是温度的低位和高位/函数功能:主函数 void main(void) unsigned char TL; /储存暂存器的温度低位 unsigned char TH; /储存暂存器的温度高位 unsigned char TN; /储存温度的整数部分 unsigned char TD; /储存温度的小数部分 LcdInitiate(); /将液晶初始化 delaynms(5); feng=1; if(Init_DS18B20()=1) display_error(); display_explain(); display_symbol(); /显示温度说明 display_dot(); /显示温度的小数点 display_cent(); /显示温度的单位 while(1) /不断检测并显示温度 ReadyReadTemp(); /读温度准备 TL=ReadOneChar(); /先读的是温度值低位TH=ReadOneChar(); /接着读的是温度值高位TN=TH*16+TL/16; /实际温度值=(TH*256+TL)/16,即:TH*16+TL/16 /这样得出的是温度的整数部分,小数部分被丢弃了 TD=(TL%16)*10/16; /计算温度的小数部分,将余数乘以10再除以16取整, /这样得到的是温度小数部分的第一位数字(保留1位小数) display_temp1(TN); /显示温度的整数部分 display_temp2(TD); /显示温度的小数部分 delaynms(10); if(TN>=33|TN<=

    注意事项

    本文(基于温度传感器的数字温度计的设计毕业论文.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开