《测控系统综合训练课程设计-基于AT89C52单片机的温度测量.doc》由会员分享,可在线阅读,更多相关《测控系统综合训练课程设计-基于AT89C52单片机的温度测量.doc(24页珍藏版)》请在三一文库上搜索。
1、 基于基于 AT89C52AT89C52 单片机的温度测量单片机的温度测量 学院名称: 电气信息工程学院 专 业: 测控技术与仪器 班 级: 08 测控 2 班 姓 名: 学 号: 指导教师: 2011 年 12 月 J JI IA AN NG GS SU U T TE EA AC CH HE ER RS S U UN NI IV VE ER RS SI IT TY Y O OF F T TE EC CH HN NO OL LO OG GY Y 测测 控控 系系 统统综综 合合 训训 练练 课课 程程 设设 计计 综合实训论文 第 2 页 共 24 页 2 摘摘 要要 随着时代的进步和发展,单
2、片机技术已经普及到我们生活、工作、科 研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于 89S51 单片机的测温系统,详细描述了利用数字温度传感器 DS18B20 开发 测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各 模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系 统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报 警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、 功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可 以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。 DS18B20 与
3、 AT89C51 结合实现最简温度检测系统,该系统结构简单,抗干 扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 综合实训论文 第 3 页 共 24 页 3 目目 录录 1 引言引言.3 2 数字温度计的总体方案设计及论证数字温度计的总体方案设计及论证4 3 系统器件的具体选择系统器件的具体选择.5 3.1 单片机的选择单片机的选择.5 3.2 温度传感器的选择温度传感器的选择6 3.2.1 DS18B20 的简单介绍的简单介绍.7 3.2.2 DS18B20 的外形和内部结构的外形和内部结构.7 3.2.3 DS18B20 的测温原理的测温原理.8 3.2.4 DS18B2
4、的外部电路图的外部电路图.9 4 硬件电路的总体设计硬件电路的总体设计.10 5软件软件 总体设计总体设计.11 6调试调试.14 6.1软件调试软件调试.14 6.2系统调试系统调试.15 总结总结.15 参考文献参考文献.16 附件一源程序附件一源程序.16 附件二附件二 PROTEUS 仿真完成图仿真完成图22 附件三附件三 元器件清单元器件清单.23 综合实训论文 第 4 页 共 24 页 4 1 1 引言引言 信息科学和微电子技术的飞速发展给控制领域带来了巨大的飞跃,控制技术更加 趋向自动化和智能化,为无数的使用者带来了方便。在控制领域里,温度是一个常见 的名词,然而它所带来的技术问
5、题和所起的作用却是非同一般的。在控制领域中,对 温度的控制有着举足轻重的作用。例如陶瓷的烧烤,只有控制住温度的适度,才能制 作出一件完美的艺术品,否则只是一件废品;还有如酿酒的过程,也需要对温度进行 控制。可见,在生活的许多方方面面都有着对温度进行感知和控制的需要。 温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代 工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。 在人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪里,从事什么工 作,无时无刻不在与温度打着交道。在冶金、钢铁、石化、水泥、玻璃、医药等等行 业,可以说几乎 80%的工业部门
6、都不得不考虑着温度的因素。温度对于工业如此重要, 由此推进了温度传感器的发展。 测量温度的基本方法是使用温度计直接读取温度。最常见到的测量温度的工具是 各种各样的温度计,例如,水银玻璃温度计,酒精温度计,热电偶或热电阻温度计等。 它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。 而在传统的模拟信号温度测量系统中,测温电路的电磁环境非常恶劣,各种干扰信号 较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度,不能满足数字化 时代的需求。利用单片机和温度传感器构成的电子式智能温度计精度高、抗干扰能力 强,可扩展性强、集成方便得到了广泛的应用。而且可以直接测量温度,
7、得到温度的 数字值,既简单方便,又直观准确,新型数字温度传感器是温度计设计的最有效方案。 本课题就是一个对温度进行检测,采集和显示的温度检测系统。它以单片机 (AT89S51)为主要控制器件,DS18B20 为温度传感器,并通过 LCD 液晶 1602 直接显示 所测温度的新型数字温度计。由于本人所学知识有限,设计过程中难免会出现错误, 还请各位老师指正。 综合实训论文 第 5 页 共 24 页 5 2 2 数字温度计的总体方案设计及论证数字温度计的总体方案设计及论证 根据系统设计的功能,本时钟温度系统的设计必须采用单片机软件系统实现,用 单片机的自动控制能力来测量、显示温度数值。 初步确定设
8、计系统由单片机主控模块、测温模块、显示模块、报警模块共 4 个模 块组成,电路系统框图如图 1.1 所示。 对于单片机的选择,如果用8051系列,由于它没有内部RAM,系统又需要一定的内 存存储数据。AT89S52是一个低功耗、高性能CMOS 8位的单片机,片内含8k Bytes ISP 的可反复擦写1000次的Flash只读程序存储器,兼容标准MCS-51指令系统及80C51引脚 结构,功能强大的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。而 AT89S52与AT89C51相比,外型管脚完全相同,AT89C51的HEX程序无须任何转换可直接 在AT89S52运行,且AT8
9、9S52比AT89C51新增了一些功能,相比较后,在本设计中选用 AT89S52更能很好的实现温度计控制功能。 测温电路可以使用热敏电阻之类的器件,利用其感温效应,将被测温度变化的电 压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据处理。但是这种感温 电路比较复杂,且采用热敏电阻精度低,重复性、可靠性都比较差。 如果采用温度传感器 DS18B20 可以减少外部硬件电路,而且可以很容易直接读取 被测温度值,进而转换,还可以在高温报警,且成本低、易使用,可以很好的满足设 计要求。所以本文采用传感器 DS18B20 代替传统的测温电路。 温度的显示可以采用 LED 数码管来显示,LED
10、 亮度高、醒目,但是电路复杂, 占用资源多且信息量小。而采用液晶显示器有明显的优点:工作电流比 LED 小几个 综合实训论文 第 6 页 共 24 页 6 数量级,功耗低;尺寸小,厚度约为 LED 的 1/3;字迹清晰、美观、使人舒服;寿 命长,使用方便,可得性强。故本设计采用 LCD 来显示温度。 3 3 系统器件的具体选择系统器件的具体选择 3.13.1 单片机的选择单片机的选择 本次设计采用的是单片机 AT89C52。 AT89C52 是一个低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写 的 Flash 只读程序存储器和 256 bytes 的随机存取数据
11、存储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通 用 8 位中央处理器和 Flash 存储单元,AT89C52 单片机在电子行业中有着广泛的应用。 图 3.1 PDIP 封装的 AT89C52 引脚图 AT89C52 为 8 位通用微处理器 ,采用工业标准的 C51 内核,在内部功能及管 脚排布上与通用的 8xc52 相同,其主要用于会聚调整时的功能控制。 功能包括对会聚主 IC 内部寄存器、数据 RAM 及外部接口等功能部件的初始化, 会聚调整控制,会聚测试图控制,红外遥控信号IR 的接收解码及与主板 CPU 通 信等。
12、综合实训论文 第 7 页 共 24 页 7 主主要要管管脚脚有:XTAL1(19 脚)和 XTAL2(18 脚)为振荡器输入输出端口,外 接 12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。 VCC(40 脚)和 VSS(20 脚)为供电端口,分别接 +5V 电源的正负端。 P0P3 为 可编程通用 I/O 脚,其功能用途由软件定义,在本设计中, P0 端口(3239 脚) 被定义为 N1 功能控制端口,分别与 N1 的相应功能管脚相连接, 13 脚定义为 IR 输入端,10 脚和 11 脚定义为 I2C 总线控制端口,分别连接 N1 的 SDAS(18
13、脚) 和 SCLS(19 脚)端口,12 脚、27 脚及 28 脚定义为握手信号功能端口,连接主 板 CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。 3.23.2 温度传感器的选择温度传感器的选择 3.2.13.2.1 DS18B20DS18B20 的简单介绍的简单介绍 DS18B20 温度传感器是一种改进型智能温度传感器,与传统的热敏电阻等测温元件 相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 912 位的数 字值读数方式。DS18B20 的性能特点如下: 独特的单线接口仅需要一个端口引脚进行通信; 多个 DS18B20 可以并联在惟一的三线上,实
14、现多点组网功能; 无须外部器件; 可通过数据线供电,电压范围为 3.05.5; 零待机功耗; 温度以或位数字; 用户可定义报警设置; 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 负电压特性,电极接反时,温度计不会因发热而烧毁,只是不能正常工作。 3.2.23.2.2 DS18B20DS18B20 的外形和内部结构的外形和内部结构 DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的 温度报警触发器 TH 和 TL、配置寄存器。 DS18B20 的管脚排列、各种封装形式如图 3.3 所示,DQ 为数据输入/输出引脚。 开漏单总线接口引脚。当被用
15、着在寄生电源下,也可以向器件提供电源;GND 为地信号; VDD 为可选择的 VDD 引脚。当工作于寄生电源时,此引脚必须接地。 综合实训论文 第 8 页 共 24 页 8 图 3.2 外部封装形式 图 3.3 DS18B20 的电路 DS18B20 采用 3 脚 PR35 封装或 8 脚 SOIC 封装,其内部结构框图如图 3-4 所示。 I/O C 64 位 ROM 和 单 线 接 口 高 速 缓 存 存储器与控制逻 辑 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生器 Vdd 图 3-4 DS18B20 内部结构 64 位 ROM 的结构开始 8 位是产
16、品类型的编号,接着是每个器件的惟一的序号,共 有 48 位,最后 8 位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进 行通信的原因。温度报警触发器 TH 和 TL,可通过软件写入户报警上下限。 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性的可电 擦除的 EERAM。高速暂存 RAM 的结构为 9 字节的存储器,结构如图 3-8 所示。头 2 个字 节包含测得的温度信息,第 3 和第 4 字节 TH 和 TL 的拷贝,是易失的,每次上电复位 时被刷新。第 5 个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。 综合
17、实训论文 第 9 页 共 24 页 9 DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图 3-8 所示。低 5 位一直为 1,TM 是工作模式位,用于设置 DS18B20 在工作模式还是在测 试模式,DS18B20 出厂时该位被设置为 0,用户要去改动,R1 和 R0 决定温度转换的精 度位数,来设置分辨率。 3.2.33.2.3 DS18B20DS18B20 的测温原理的测温原理 DS18B20 的温度值的位数因分辨率不同而不同,温度转换时的最大延时为 750ms。 DS18B20 测温原理如图 3.5 所示。图中低温度系数晶振的振荡频率受温度影响很小,用
18、 于产生固定频率的脉冲信号送给计数器 1。高温度系数晶振随温度变化其振荡率明显改 变,所产生的信号作为计数器 2 的脉冲输入。计数器 1 和温度寄存器被预置在55 所对应的一个基数值。计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当 计数器 1 的预置值减到 0 时,温度寄存器的值将加 1,计数器 1 的预置将重新被装入, 计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图 中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器 1 的预 置值。 图 3.5
19、DS18B20 测温原理 综合实训论文 第 10 页 共 24 页 10 3.2.43.2.4 DS18B2DS18B2 的外部电路图的外部电路图 根据设计要求,传感器的硬件电路图如图 3.6 所示。 图 3.6 DS18B20 外部电路图 3.33.3 显示及报警模块选择显示及报警模块选择 在本设计中温度测量范围为0125,精度为0.5,因此只需要液晶 SMC1602A就可以完成相关的显示功能,报警器可以用有源蜂鸣器配合三极管来代 替,本设计则直接使用LED发光二极管带代替。 4 4 硬件电路的总体设计硬件电路的总体设计 温度计电路设计原理图如图4.1所示,控制器使用单片机AT89C2052
20、,温度计传 感器使用DS18B20,用液晶实现温度显示。 本温度计大体分三个工作过程。首先,由DS18820温度传感器芯片测量当前的 温度,并将结果送入单片机。然后,通过89C2052单片机芯片对送来的测量温度读 数进行计算和转换,井将此结果送入液晶显示模块。最后,SMC1602A芯片将送来 的值显示于显示屏上。 由图4.1可看到,本电路主要由DSl8820温度传感器芯片、SMCl602A液晶显示 模块芯片和89C2052单片机芯片组成。其中,DSI8B20温度传感器芯片采用“一线 制”与单片机相连,它独立地完成温度测量以及将温度测量结果送到单片机的工 作。 综合实训论文 第 11 页 共 2
21、4 页 11 图4.1 温度计电路设计仿真图 5 5软件软件 总体设计总体设计 系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子 程序、显示数据刷新子程序。 综合实训论文 第 12 页 共 24 页 12 主程序的主要功能是负责温度的实时显 示、读出并处理 DS18B20 的测量温度值。温 度测量每 1s 一次。 图 5.1 DS18B20 温度计主程序流程图 读出温度子程序的主要功能是读出 RAM 中 的 9 字节。在读出时须进行 CRC 校验,校验有 错时不进行温度数据的改写。 图 5.2 读出温度子程序流程图 综合实训论文 第 13 页 共 24 页 13 计算温度
22、子程序将 RAM 中读取值进 行 BCD 码的转换运算,并进行温度值 正 负的判定。 图 5.3 计算温度子程序 显示数据刷新子程序主要是对显示缓冲器中的显 示数据进行刷新操作,当最高数据显示位为零时, 将符号显示位移入下一位 综合实训论文 第 14 页 共 24 页 14 图 5.4 显示数据刷新子程序流程图 图5.5警模块子程序流程图 6 6调试调试 6.16.1软件调试软件调试 根据流程图编写程序软件。本次设计系统的调试以程序的调试为主。 程序的调试我们采用eil C51Keil C51 软件是众多单片机应用开发的优秀软 件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C
23、语言的程序设计, 界面友好,易学易用。 综合实训论文 第 15 页 共 24 页 15 6.26.2系统调试系统调试 软硬件分别调试完成以后,将程序下载入单片机中,电路板接上电源,电源指示 灯亮,按下开关按钮,LCD 显示当前温度。用手去碰触温度传感器,温度显示值出现变 化,显示当前手的温度值。 当温度高于我们所设定的最高温度37度时,警报红灯亮。 完成了我们预期的要求。 总结总结 本次综合实训是针对 MCS-51 系列的单片机芯片 STC89C52 来设计一个数字温度计, 该设计充分利用了温度传感器 DS18B20 功能强大的优点,如 DS18B20 可以直接读出被 测温度值,进行转换;而且
24、采用三线制与单片机相连,减少了外部的硬件电路,具有 低成本和易使用的特点,大大简化了硬件电路,也使得该数字温度计不仅具有结构简 单、成本低廉、精确度较高、反应速度较快、数字化显示和不易损坏等特点,而且性 能稳定,适用范围广,因此特别适用于对测温要求比较准确的场所。 在这次设计中,熟悉了制作一个产品的总体流程,能熟练使用一些必要的设计工 具和仿真工具等。通过选认元件,连线,调试检测等过程,锻炼自己的理论联系实际 的能力和实际操作能力,从而综合性地巩固所学的知识,为将来的工作做一次实战演 习。 经过将近 4 周的综合实训,终于完成了我的数字温度计的设计,虽然没有完全达 到设计要求,但从心底里说,还
25、是高兴的, 从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际, 把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写 与读的过程中才能提高,这就是我在这次实训中的最大收获。 综合实训论文 第 16 页 共 24 页 16 参考文献参考文献 1 余泽辉等基于单片机的数字温度计的研究与设计仪器仪表用户,2004,14 (2):911 2 张红润 张亚凡单片机原理及应用北京:清华大学出版社,2005 3 张元良 王建军.单片机开发技术实例教程.北京:机械工业出版社,2010.8 4 雷伏容 张小林 崔浩.51单片机常用模块设计查询手册.北京:清华大学出版社
26、,2010 5 凌玉华.单片机原理及应用系统设计.长沙:中南大学出版社,2006.4 6 皮大能 南光群 刘金华.单片机课程设计指导书.北京:北京理工大学出版社,2010 7 付佳才.单片机控制工程实践技术.北京:化学工业出版社,2004 附件一源程序附件一源程序 #include #include #include #define uchar unsigned char #defineuint unsigned int sbit DQ =P20; sbit RS =P35; sbit RW =P36; sbit E =P37; uchar temp_data_l,temp_data_h; u
27、char code LCDData10=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39; uchar code ditab16=0x30,0x31,0x31,0x32,0x33,0x33,0x34,0x34,0x35,0x36,0x36,0x37,0x38,0 x38,0x39,0x39; uchar code table216=0x74,0x65,0x6D,0x70,0x65,0x72,0x61,0x74,0x75,0x72,0x65,0x20,0x6 9,0x53,0x20,0x3A; uchar display7=0x00,0x00,0
28、x00,0x2E,0x00,0xDF,0x43; /延时 void delay(uint N) uint i; for(i=0;ii; temp=temp write_bit(temp); delay(5); void read_T(void) ds18b20_init(); write_byte(0xcc); write_byte(0x44); delay(500); ds18b20_init(); write_byte(0xcc); write_byte(0xBE); temp_data_l=read_byte(); temp_data_h=read_byte(); void check_
29、busy(void) while(1) P1=0xFF; E=0; _nop_(); RS=0; _nop_(); _nop_(); 综合实训论文 第 19 页 共 24 页 19 RW=1; _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); if (P1 E=0; void write_command(uchar tempdata) E=0; _nop_(); _nop_(); RS=0; _nop_(); _nop_(); RW=0; P1=tempdata; _nop_(); _nop_(); E=1; _nop_();
30、 _nop_(); E=0; _nop_(); check_busy(); void write_data(uchar tempdata) E=0; _nop_(); _nop_(); RS=1; _nop_(); _nop_(); RW=0; 综合实训论文 第 20 页 共 24 页 20 P1=tempdata; _nop_(); _nop_(); E=1; _nop_(); _nop_(); E=0; _nop_(); check_busy(); void convert_T() uchar temp; if(temp_data_h if(temp_data_l=0xFF) temp_d
31、ata_l=temp_data_l+0x01; temp_data_h=temp_data_h; temp_data_h=temp_data_h+0x01; else temp_data_l=temp_data_l+0x01; temp_data_h=temp_data_h; display4=ditabtemp_data_l temp=(temp_data_l display0=LCDDatatemp/100; display1=LCDData(temp%100)/10; display2=LCDData(temp%100)%10; void init() 综合实训论文 第 21 页 共 2
32、4 页 21 write_command(0x01); write_command(0x38); write_command(0x0C); write_command(0x06); void display_T(void) uchar i; write_command(0x80); for(i=0;i16;i+) write_data(table2i); write_command(0xC0); for(i=0;i7;i+) write_data(displayi); void main(void) init(); while(1) read_T(); convert_T(); display_T(); 综合实训论文 第 22 页 共 24 页 22 附件二附件二 PROTEUSPROTEUS 仿真完成图仿真完成图 综合实训论文 第 23 页 共 24 页 23 附件三附件三 元器件清单元器件清单 综合实训论文 第 24 页 共 24 页 24 STC89C51 1个 温度传感器DS18B20 1个 插针 1排 LCD1602 1个 40脚插座 1个 发光二极管 红绿各一个 12MHZ晶振 1个 电容 30PF 2个 22UF 1个 电阻 10K 2个 滑动变阻器 10K 1个 杜邦线 若干