ImageVerifierCode 换一换
格式:DOC , 页数:18 ,大小:404KB ,
资源ID:7246440      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7246440.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机温度计.doc)为本站会员(ysd1539)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

基于单片机温度计.doc

1、1单片机温度计学院 机械学院 班级 11 机自创新 1 班 姓名 安祥乐 学号 1110100221 2摘要 31、引言 32 设计内容及性能指标 43 系统方案比较、设计与论证 43.1 主控制器模块 43.2 温度测量 43.3 设置温度 53.3 显示模块 53.4 电源选取 64 系统器件选择 65 硬件实现及单元电路设计 75.1 主控制模块 75.2 显示模块电路 75.3 数码管显示驱动电路 8图 6 驱动电路 .85.4 温度传感器(DS18B20)电路 85.4.1 DS18B20 基本介绍 .85.4.2 DS18B20 控制方法 .95.4.3 DS18B20 供电方式

2、.96 系统软件设计 106.1 程序结构分析 106.2 系统程序流图 106.2.1 DS18B20 初始化程序流程图 .116.2.2 读温度子程序流程图 127 系统的安装与调试 127.1 安装步骤 127.2 电路的调试 12结 论 13参考文献 13附录 1 整体电路原理图 .13附录 2 部分源程序 .143单片机温度计摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于 STC89C52单片机的温度检测系统,详细描述了利用温度传感器 DS18B20 开发测温系统的过程,重点对传感器在单片机下的硬件

3、连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度控制,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20 与STC89C52 结合实现最简温度控制系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度的控制,有广泛的应用前景。关键词:单片机;温度显示;STC89C52;DS18B20;1、引言随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如

4、何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器模拟集成温度传感器智能集成温度传感器。目前的智能温度传感器(亦称数字温度传感器)是在 20 世纪 90 年代中

5、期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器 DS18B20 的结构特征及控制方法,并对以此传感器,STC89C52 单片机为控制器构成的数字4温度控制装置的工作原理及程序设计作了详细的介绍。其具有读数方便,方便控制,输出

6、温度采用数字显示,主要用于对温度控制要求比较准确的场所,或科研实验室使用。该设计控制器使用 STC89C52 单片机,测温传感器使用DALLAS 公司 DS18B20,用数码管来实现温度显示。2 设计内容及性能指标本设计主要是介绍了单片机控制下的温度系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:单片机实时检测温度传感器 DS18B20 的状态,并将 DS18820 得到的数据进行处理。上电后数码管显示当前的环境温度。3 系统方案比较、设计与论证该系统主要由温度测量和温度设置及系统状态显示三部分电路组成,下面介绍实现此系统功能的方案。3.1 主控制器模块方

7、案 1:采用可编程逻辑器件 CPLD 作为控制器。CPLD 可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO 资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑我们放弃了此方案。方案 2:采用 STC89C52 单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富

8、、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。STC89C52 单片机具有功能强大的位操作指令,I/O 口均可按位寻址,程序空间多达 8K,对于本设计也绰绰有余,更可贵的是STC89C52 单片机价格非常低廉。3.2 温度测量方案 1:采用数字温度芯片 DS18B20 测量实际温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在-55125 摄氏度时,最大线形偏差小于 1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,5由数字温度计 DS18B20 和微控制器 STC89

9、C52 构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用 51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多 DS18B20 控制工作,还可以与 PC 机通信上传数据,另外 STC89C52 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。方案 2:采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成(如下图) ,热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将

10、参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有 A/D 通道的单片机,在将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到 A/D 转换电路,感温电路比较麻烦。图 1 热电偶电路图从以上两种方案,容易看出方案二的测温装置可测温度范围宽、体积小,但是线性误差较大。方案一的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计

11、采用了方案一。3.3 设置温度方案 1:采用键盘输入设置温度,键盘则可以用 4 个按键,一个复位键,一个功能设定键,一个加减一个减键。四个键比较常用,而且用到的接口得到了极好的利用,仅需要 4 个接口。方案 2:可采用 4*4 矩阵键盘,该键盘需要 8 个接口,而我们不需这么多键。综上所述,我们选择第一种方案。63.3 显示模块方案 1:用数码管进行显示。数码管由于显示速度快,使用简单,显示效果简洁明了而得到了广泛应用。方案 2:用 LCD 液晶进行显示。LCD 由于其显示清晰,显示内容丰富、清晰,显示信息量大,使用方便,显示快速而得到了广泛的应用。单对于此系统我们不需要显示丰富的内容,而且

12、LCD 液晶价格贵,因此我们选择了此方案。综上所述我们选择方案 13.4 电源选取由于本系统采用电池供电,我们考虑了如下几种方案为系统供电。方案 1:采用 5V 蓄电池为系统供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。但是蓄电池的体积过于庞大,在小型电动车上使用极为不方便。因此我们放弃了此方案。方案 2:采用 USB 电源 5V 做电源供电,经过实验验证系统工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。综上所述采用方案 24 系统器件选择1.温度传感器的选择由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且

13、硬件电路复杂,制作成本相对较高。这里采用 DALLAS 公司的数字温度传感器 DS18B20 作为测温元件。图 2 外部封装形式 图 3 传感器电路图75 硬件实现及单元电路设计5.1 主控制模块主 控 制 最 系 统 电 路 如 图 4 所 示 。图 4 单片主控电路5.2 显示模块电路显示采用四位数码管显示,当位选打开时,送入相应的段码,则相应的数码管打开,关掉位选,打开另一个位选,送入相应的段码,则数码管打开,而每次打开关掉相应的位选时,时间间隔低于 20ms,从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。显示电路如图 58图 5 数码管显示5.3 数码管显示驱动电路三极管 9

14、012 来驱动 4 位数码管,不仅简单,而且价格便宜。图 6 驱动电路5.4 温度传感器(DS18B20)电路5.4.1 DS18B20 基本介绍DS18B20 是美国 DALLAS 半导体公司推出的第一片支持“一线总线”接口的9温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号处理器处理。DS18B20 进行精确的温度转换,I/O 线必须保证在温度转换期间提供足够的能量,由于每个 DS18B20 在温度转换期间工作电流达到 1mA,当几个温度传感器挂在同一根 I/O 线上进行多点测温时,只靠 4.7K 上拉电阻就无法提供足够的能量,会造

15、成无法转换温度或温度误差极大。因此,下图电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源 VCC 必须保证在 5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。图 7 温度传感器电路引脚图5.4.2 DS18B20 控制方法DS18B20 有六条控制命令:温度转换 44H 启动 DS18B20 进行温度转换 读暂存器 BEH 读暂存器 9 个字节内容 写暂存器 4EH 将数据写入暂存器的 TH、TL 字节 复制暂存器 48H 把暂存器的 TH、TL 字节写到 E2RAM 中 重新调 E2RAM B8H 把 E2RAM 中的 TH、TL 字节

16、写到暂存器 TH、TL 字节 读电源供电方式 B4H 启动 DS18B20 发送电源供电方式的信号给主 CPU 105.4.3 DS18B20 供电方式DS18B20 可以采用两种方式供电,一种是采用电源供电方式,此时 DS18B20的 1 脚接地,2 脚作为信号线,3 脚接电源。另一种是寄生电源供电方式,如图3.1 所示单片机端口接单线总线,为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个三极管来完成对总线的上拉。本设计采用电源供电方式, P2.2 口接单线总线为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个上拉电阻和 STC89C52 的 P2.2 来完

17、成对总线的上拉。当 DS18B20 处于写存储器操作和温度 A/D 变换操作时,总线上必须有强的上拉,上拉开启时间最大为 10 s。采用寄生电源供电方式是 VDD 和 GND 端均接地。由于单线制只有一根线,因此发送接收口必须是三状态的。主机控制 DS18B20 完成温度转换必须经过 3 个步骤: 初始化。 ROM 操作指令。 存储器操作指令。6 系统软件设计6.1 程序结构分析主 程 序 调 用 了 3 个 子 程 序 , 分 别 是 数 码 管 显 示 程 序 、 温 度 信 号 处 理 程 序 。温 度 信 号 处 理 程 序 : 对 温 度 芯 片 送 过 来 的 数 据 进 行 处

18、理 , 进 行 判 断 和 显 示 。 数码 管 显 示 程 序 : 向 数 码 管 的 显 示 送 数 , 控 制 系 统 的 显 示 部 分 。 按 键 设 定 程 序 :可 以 精 确 到 0.1 度 。6.2 系统程序流图主 程 序 的 主 要 功 能 是 负 责 温 度 的 实 时 显 示 、 读 出 并 处 理 DS18B20 的 测 量 的 当前 温 度 值 , 温 度 测 量 每 1s 进 行 一 次 。 这 样 可 以 在 一 秒 之 内 测 量 一 次 被 测 温 度 ,主程序的主要功能是负责温度的实时显示,读出并处理 DS18B20 的当前温度值,其 程 序 流 程 见

19、图 9 所 示 。通过调用读温度子程序把存入内存储中的整数部分与小数部分开分存放在不的的两个单元中,然后通过调用显示子程序显示出来。11图 9 DS18B20 温 度 流 程 图6.2.1 DS18B20初始化程序流程图在 DS18B20 工作之前需要进行初始化,流程图如下:发复位命令发跳过 ROM 命令初始化成功结束调用显示子程序初始化1s 到?初次上电发温度转换开始命令读出温度值温度计算处理显示数据刷新12图10 初始化程序流程图6.2.2 读温度子程序流程图读温度子程序的主要功能是从DS18B20中读出温度数据,移入温度暂存器保存。其程序流程图如下:发复位命令发跳过 ROM 命令发读取温

20、度命令移入温度暂存器结束图11 温度子程序流程图 7 系统的安装与调试7.1 安装步骤1.检查元件的好坏按电路图买好元件后首先检查买回元件的好坏,按各元件的检测方法分别进行检测,一定要仔细认真。而且要认真核对原理图是否一致,在检查好后才可上件、焊件,防止出现错误焊件后不便改正。2.放置、焊接各元件按原理图的位置放置各元件,在放置过程中要先放置、焊接较低的元件,后焊较高的和要求较高的元件。特别是容易损坏的元件要后焊,在焊集成芯片时连续焊接时间不要超过 10s,注意芯片的安装方向。7.2 电路的调试首先烧入显示程序,看显示正不正常。在调试程序时,发现有的指令用的不正确,导致电路功能不能完全实现,另

21、外软件程序中的延时有的过长、有的过短。类似的现象还有很多就不一一列举了。13结 论本温度计,通过单片机实时检测温度传感器 DS18B20的状态,并将 DS18820得到的数据进行处理。上电后数码管显示当前的环境温度。由于采用了3节干电池供电使系统的抗干扰性得到加强。在软件上,充分利用了 STC89C52的系统资源,系统运行流畅。本设计结构简单,调试方便,系统反映快速灵活,经实验测试,该温度计系统设计方案正确、可行,各项指标稳定、可靠。参考文献1 曹巧媛主编. 单片机原理及应用(第二版). 北京:电子工业出版社,20022 全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编

22、(2001), 北京:北京理工大学出版社,20033 何力民编. 单片机高级教程. 北京:北京航空大学出版社,20004 金发庆等编. 传感器技术与应用.北京机械工业出版社,20025 刘坤、宋戈、赵洪波、张宪栋编51 单片机 C 语言应用开发技术大全,北京:人民邮电出版社,20086 谭浩强著C 程序设计北京:清华大学出版社,2007;7 王忠飞,胥芳MCS-51 单片机原理及嵌入式系统应用M西安:西安电子科技大学出版社,2007P268-2738 Peter Van Der Linden 著,徐波译.C 专家编程,人民邮电出版社,2003附录 1 整体电路原理图14附录 2 部分源程序#i

23、nclude /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义 变量范围 0255#define uint unsigned int /无符号整型 宏定义 变量范围 065535/数码管段选定义 0 1 2 3 4 5 67 8 9uchar code smg_du=0x14,0x77,0x4c,0x45,0x27,0x85,0x84,0x57,0x04,0x05,/ A B C D E F 不显示0x06,0xa4,0x9c,0x64,0x8c,0x8e,0xff; /断码/数码管位选定义sbit smg_we1 = P20; /数码管位选定义

24、sbit smg_we2 = P22;sbit smg_we3 = P24;sbit smg_we4 = P26;uchar dis_smg8 = 0x14,0x77,0x4c,0x45,0x27,0x85,0x84;uchar smg_i = 3; /显示数码管的个位数sbit dq = P33; /18b20 IO 口的定义bit flag_wd_z_f; /正负温度int temperature ; /*1ms 延时函数*/void delay_1ms(uint q)uint i,j;for(i=0;i= smg_i)i = 0;P0 = 0xff; /消隐 smg_we_switch(

25、i); /位选P0 = dis_smgi; /段选 /*18b20 初始化函数*/void init_18b20()bit q;dq = 1; /把总线拿高delay_uint(1); /15usdq = 0; /给复位脉冲delay_uint(80); /750usdq = 1; /把总线拿高 等待delay_uint(10); /110usq = dq; /读取 18b20 初始化信号delay_uint(20); /200usdq = 1; /把总线拿高 释放总线/*写 18b20 内的数据 */void write_18b20(uchar dat)uchar i;for(i=0;i=

26、1;/*读取 18b20 内的数据 */uchar read_18b20()uchar i,value;for(i=0;i= 1; /读数据是低位开始dq = 1; /释放总线if(dq = 1) /开始读写数据 value |= 0x80;delay_uint(5); /60us 读一个时间隙最少要保持 60us 的时间return value; /返回数据/*读取温度的值 读出来的是小数*/uint read_temp()uint value;uchar low; /在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到 18b20 的时序init_18b20(); /初始化

27、 18b20write_18b20(0xcc); /跳过 64 位 ROMwrite_18b20(0x44); /启动一次温度转换命令delay_uint(50); /500usinit_18b20(); /初始化 18b20EA = 0;write_18b20(0xcc); /跳过 64 位 ROMwrite_18b20(0xbe); /发出读取暂存器命令low = read_18b20(); /读温度低字节value = read_18b20(); /读温度高字节EA = 1;value = 1000)smg_i = 4; dis_smg0 = smg_dutemperature % 10

28、; /取温度的小数显示dis_smg1 = smg_dutemperature / 10 % 10 /取温度的个位显示dis_smg2 = smg_dutemperature / 100 % 10 ; /取温度的十位显示dis_smg3 = smg_dutemperature / 1000 % 10 ; /取温度的十位显示else smg_i = 3;dis_smg0 = smg_dutemperature % 10; /取温度的小数显示dis_smg1 = smg_dutemperature / 10 % 10 /取温度的个位显示dis_smg2 = smg_dutemperature / 100 % 10 ; /取温度的十位显示delay_1ms(300);/*定时器 0 中断服务程序 */void time0_int() interrupt 1TH0 = 0xf8;TL0 = 0x30; /2msdisplay(); /数码管显示函数

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报