基于单片机的数字温度计设计.doc_第1页
基于单片机的数字温度计设计.doc_第2页
基于单片机的数字温度计设计.doc_第3页
基于单片机的数字温度计设计.doc_第4页
基于单片机的数字温度计设计.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 页 共 ii 页 基于单片机的数字温度计设计基于单片机的数字温度计设计 摘摘 要要 随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个 领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于单片机的测温系统, 详细描述了利用数字温度传感器 ds18b20 开发测温系统的过程,重点对传感器在单 片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电 路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要 任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、 体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可 以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。ds18b20 与 at89s52 结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于 恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:关键词:单片机;温度检测;at89s52;ds18b20; abstract along with the progress and development of the ages, single slice the machine technique has already make widely available the life is to us,work,research,each realm, have already become the technique of a kind of comparison maturity. this paper mainly describes a temperature measurement system based on ds18b20, detailed describing the development process use digital temperature sensor, the paper introduces the hardware connectivity and software programming of the ds18b20 based on the single-chip, and give the software flow chart of each module, as well as introduced each circuit of the system. system can easily to collect and display the temperature, it can also arbitrary set alarm temperature according to the actual need, it is used convenience, it has high precision, wide range ,high sensitivity, small size, and low power dissipation, the device is especially applied to measure temperature in peoples daily lives ,industrial and agricultural production, and also easily as a temperature processing module embed in the other system, turn into as a complementary expansion. key words : single chip ;temperature measurement;at89s52; ds18b20 第 i 页 共 ii 页 目目 录录 引言1 1 系统方案比较 1.1 方案一1 1.2 方案二2 2 主要器件介绍 2.1 单片机 3 2.1.1 at89s52 系列单片机简介 3 2.1.2 主要性能 3 2.1.3 引脚说明 4 2.2 温度传感器7 2.2.1 ds18b20 简介 7 2.2.2 ds18b20 内部结构与原理 7 2.2.3 ds18b20 使用的注意事项 12 2.3 显示和报警 12 2.3.1 数码管的结构和原理 12 2.3.2 蜂鸣器的结构和原理 13 3 硬件电路设计 3.1 控制电路模块 15 3.2 显示电路模块 15 3.3 温度检测电路模块 16 3.4 报警电路模块 17 4 软件设计 4.1 主程序模块 17 4.2 各控制模 17 4.1.1 温度检测模块 17 4.1.2 报警模块 18 5 结论 19 谢辞 20 参考文献 20 附录 21 桂林电子科技大学本科课程设计(论文)报告用纸 第 0 页 共 26 页 引言 随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有 了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础 的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处 理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术, 在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生 活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也 离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。 测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段: 传统的分立式温度传感器 模拟集成温度传感器 智能集成温度传感器。 目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的, 它是微电子技术、计算机技术和自动测试技术(ate)的结晶,特点是能输出温度数 据及相关的温度控制量,适配各种微控制器(mcu)。社会的发展使人们对传感器的 要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式, 从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、 高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的 方向迅速发展,本文将介绍智能集成温度传感器ds18b20的结构特征及控制方法, 并对以此传感器,89s51单片机为控制器构成的数字温度测量装置的工作原理及程 序设计作了详细的介绍。与传统的温度计相比,其具有读数方便,测温范围广,测 温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实 验室使用。该设计控制器使用atmel公司的at89s52单片机,测温传感器使用dallas 公司ds18b20,用液晶来实现温度显示。 1 系统方案论证与比较 概系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下 面将列出两种在日常生活中和工农业生产中经常用到的实现方案。 1.1 方案一 采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊 接在一起的异金属导线所组成(热电偶的构成如图 2.1),热电偶产生的热电势由 两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度 第 1 页 共 26 页 并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有a/d 通道的 单片机,在将随被测温度变化的电压或电流采集过来,进行a/d 转换后,就可以用 单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优 点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来 自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到a/d 转换电路, 感温电路比较麻烦。 图 1.1热电偶电路图 系统主要包括对a/d0809 的数据采集,自动手动工作方式检测,温度的显示等, 这几项功能的信号通过输入输出电路经单片机处理。此外还有复位电路,晶振电路, 启动电路等。故现场输入硬件有手动复位键、a/d 转换芯片,处理芯片为51 芯片, 执行机构有4 位数码管、报警器等。系统框图如图 2.2所示: 图 1.2热电偶温差电路测温系统框图 1.2 方案二 采用数字温度芯片ds18b20 测量温度,输出信号全数字化。便于单片机处理及 控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能 用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。ds18b20 的最大特点之一采用了单总线的数据传输,由数字温度计 ds18b20和微控制器at89s52构成的温度测量装置,它直接输出温度的数字信号,可直 接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机 控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而 且体积小,硬件实现简单,安装方便。既可以单独对多ds18b20 第 2 页 共 26 页 控制工作,还可以与pc 机通信上传数据,另外at89s52 在工业控制上也有着 广泛的应用,编程技术及外围功能电路的配合使用都很成熟。 该系统利用at89s52芯片控制温度传感器ds18b20进行实时温度检测并显示,能 够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非 常强,它可以在设计中加入时钟芯片ds1302以获取时间数据,在数据处理同时显示 时间,并可以利用at24c16芯片作为存储器件,以此来对某些时间点的温度数据进 行存储,利用键盘来进行调时和温度查询,获得的数据可以通过max232芯片与计算 机的rs232接口进行串口通信,方便的采集和整理时间温度数据。 系统框图如图 2.3所示 图 2.3 ds18b20温度测温系统框图 从以上两种方案,容易看出方案一的测温装置可测温度范围宽、体积小,但是 线性误差较大。方案二的测温装置电路简单、精确度较高、实现方便、软件设计也 比较简单,故本次设计采用了方案二。 2 主要器件介绍 2.1 单片机 2.1.1 简介 at89s52 是一种低功耗、高性能 cmos 8 位微控制器,具有 8k 在系统可编程 flash 存储器。使用 atmel 公司高密度非易失性存储器技术制造,与工业 80c51 产品指令和引脚完全兼容。片上 flash 允许程序存储器在系统可编程,亦适于常规 编程器。在单芯片上,拥有灵巧的 8 位 cpu 和在系统可编程 flash,使得 at89s52 在众多嵌入式控制应用系统中得到广泛应用。 2.1.2 主要性能 1、与 mcs-51 单片机产品兼容; 第 3 页 共 26 页 2、8k 字节在系统可编程 flash 存储器; 3、1000 次擦写周期; 4、全静态操作: 0hz-33mhz; 5、三级加密程序存储器; 6、32 个可编程 i/o 口线; 7、三个 16 位定时器/计数器; 8、六个中断源; 9、全双工 uart 串行通道; 10、低功耗空闲和掉电模式; 11、掉电后中断可唤醒; 12、看门狗定时器; 13、双数据指针; 14、掉电标识符 。 2.1.3 引脚说明 at89s52 是一种低功耗、高性能 cmos8 位微控制器,具有 8k 在系统可编 程 flash 存储器。使用 atmel 公司高密度非 易失性存储器技术制造,与工业 80c51 产品指令和引脚完 全兼容。片上 flash 允许程序存储器在系统可编程, 亦适于 常规编程器。在单芯片上,拥有灵巧的8 位 cpu 和在系统 可编程 flash,使得 at89s52 为众多嵌入式控制应用系统提 供高灵活、超有效的解决 方案。 at89s52 具有以下标准功能: 8k 字节 flash,256 字节 ram, 32 位 i/o 口线,看门狗定时器, 2 个数据指针,三个 16 位 定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口, 片内晶振及时钟电路。另外, at89s52 可降至 0hz 静态逻 辑操作,支持 2 种软件可选择节电模式。空闲模式下, cpu 停止工作,允许 ram、定时器/计数器、串口、中断继续工 作。掉电保护 方式下,ram 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一 个中断或硬件复位为止。 at89s52 单片机的引脚图如图 3.1 所示。 第 4 页 共 26 页 图 3.1at89s52 引脚图 dip 封装 p p0 0 口口:p0 口是一个 8 位漏极开路的双向 i/o 口。作为输出口,每位能驱 动 8 个 ttl 逻 辑电平。对 p0 端口写“1”时,引脚用作高阻抗输入。 当访 问外部程序和数据存储器时, p0 口也被作为低 8 位地址/数据复用。在这种模 式下, p0 不具有内部上拉电阻。 在 flash 编程时,p0 口也用来接收指令字 节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。 p p1 1 口口:p1 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p1 输出缓 冲器能驱动 4 个 ttl 逻辑电平。对 p1 端口写“1”时,内部上拉电阻把端口 拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于 内部电阻的原因,将输出电流( iil) 。 此外,p1.0 和 p1.1 分别作定时器 /计数器 2 的外部计数输入( p1.0/t2) 和定时器/计数器 2 的触发输入( p1.1/t2ex) 。 在 flash 编程和校验时, p1 口接收低 8 位地址字节。 引脚号第二功能: p1.0 t2(定时器/计数器 t2 的外部计数输入),时钟输出 p1.1 t2ex(定时器/计数器 t2 的捕捉/重载触发信号和方向控制) p1.5 mosi(在系统编程用) p1.6 miso(在系统编程用) p1.7 sck(在系统编程用) p2p2 口:口:p2 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p2 输出缓冲器能 驱动 4 个 ttl 逻辑电平。对 p2 端口写“1”时,内部上拉电阻把端口拉高,此时 可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原 因,将输出电流( iil) 。 在访问外部程序存储器或用 16 位地址读取外部数据 存储器(例如执行 movx dptr) 时,p2 口送出高八位地址。在这种应用中, p2 口使用很强的内部上拉发送 1。在使用 8 位地址(如 movx ri)访问外部 数据存储器时, p2 口输出 p2 锁存器的内容。 在 flash 编程和校验时, p2 口 也接收高 8 位地址字节和一些控制信号。 第 5 页 共 26 页 p p3 3 口口:p3 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p3 输出缓 冲器能驱动 4 个 ttl 逻辑电平。对 p3 端口写“1”时,内部上拉电阻把端口 拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于 内部电阻的原因,将输出电流( iil) 。 p3 口亦作为 at89s52 特殊功能(第二 功能)使用,如下表所示。 在 flash 编程和校验时, p3 口也接收一些控制信 号。 端口引脚 第二功能: p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 into(外中断 0) p3.3 int1(外中断 1) p3.4 to(定时/计数器 0) p3.5 t1(定时/计数器 1) p3.6 wr(外部数据存储器写选通 ) p3.7 rd(外部数据存储器读选通 ) 此外,p3 口还接收一些用于 flash 闪存编程和程序校验的控制信号。 r rs st t:复位输入。当振荡器工作时, rst 引脚出现两个机器周期以上高电平 将是单片机复位。 a al le e/ /p pr ro og g:当访问外部程序存储器或数据存储器时, ale(地址锁存允许) 输出脉冲用于锁存地址的低 8 位字节。一般情况下, ale 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是: 每当访问外部数据存储器时将跳过一个ale 脉冲。对 flash 存储器编程期间, 该引脚还用于输入编程脉冲( prog) 。如有必要,可通过对特殊功能寄存器 (sfr)区中的 8eh 单元的 d0 位置位,可禁止 ale 操作。该位置位后,只有一 条 movx 和 movc 指令才能将 ale 激活。此外,该引脚会被微弱拉高,单片机执 行外部程序时,应设置 ale 禁止位无效。 p ps se en n:程序储存允许( psen)输出是外部程序存储器的读选通信号,当 at89s52 由外部程序存储器取指令(或数据)时,每个机器周期两次psen 有 效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次psen 信号。 e ea a/ /v vp pp p:外部访问允许,欲使 cpu 仅访问外部程序存储器(地址为 0000h-ffffh) ,ea 端必须保持低电平(接地)。需注意的是:如果加密位 lb1 被编程,复位时内部会锁存 ea 端状态。如 ea 端为高电平(接 vcc 端) ,cpu 则执行内部程序存储器的指令。 flash 存储器编程时,该引脚加上 +12v 的编 程允许电源 vpp,当然这必须是该器件是使用 12v 编程电压 vpp。 x xt ta al l1 1:振荡器反相放大器和内部时钟发生电路的输入端。 第 6 页 共 26 页 x xt ta al l2 2:振荡器反相放大器的输出端。 2.2 温度传感器 由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度, 需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用 dallas公司的数字温度传感器ds18b20作为测温元件。 2.2.1 ds18b20 简单介绍: dallas 最新单线数字温度传感器ds18b20是一种新型的“一线器件”,其体积 更小、更适用于多种场合、且适用电压更宽、更经济。dallas 半导体公司的数字 化温度传感器ds18b20是世界上第一片支持“一线总线”接口的温度传感器。温度 测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达 0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在eeprom 中,掉电 后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以 在远端引入,也可以采用寄生电源方式产生;多个ds18b20可以并联到3 根或2 根 线上,cpu只需一根端口线就能与诸多ds18b20 通信,占用微处理器的端口较少, 可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在 一根通信线,可以挂很多这样的数字温度计,十分方便。 2.2.2 ds18b20内部结构与原理 图为 ds1820 的内部框图,它主要包括寄生电源、温度传感器、64 位激光 rom 单线接口、存放中间数据的高速暂存器(内含便笺式 ram) ,用于存储用户设定的 温度上下限值的 th 和 tl 触发器存储与控制逻辑、8 位循环冗余校验码(crc)发 生器等七部分。 ds18b20采用脚pr35 封装或脚soic封装,其内部结构框图如图3.2所示 第 7 页 共 26 页 图 3.2 ds18b20 内部结构框图 64 b 闪速 rom 的结构如下: 开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48 位,最 后位是前面56 位的crc 检验码,这也是多个ds18b20 可以采用一线进行通信的 原因。温度报警触发器和,可通过软件写入户报警上下限。主机操作rom 的命令有五种,如表所列 指 令说 明 读rom(33h)读ds1820的序列号 匹配rom(55h)继读完64位序列号的一个命令,用 于多个ds1820时定位 跳过rom(cch)此命令执行后的存储器操作将针对 在线的所有ds1820 搜rom(f0h)识别总线上各器件的编码,为操作 各器件作好准备 报警搜索(ech)仅温度越限的器件对此命令作出响 应 ds18b20 温度传感器的内部存储器还包括一个高速暂存和一个非易失性 的可电擦除的eeram。高速暂存ram 的结构为字节的存储器,结构如下图所示。 第 8 页 共 26 页 高速暂存ram结构图 前个字节包含测得的温度信息,第和第字节和的拷贝,是易失 的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度 值的数字转换分辨率。ds18b20 工作时寄存器中的分辨率转换为相应精度的温度数 值。 温 度 低 位 温 度 高 位 thtl配 置 保 留 保 留 保 留 8 位 cr c lsb msb 当 ds18b20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1,2 字节。单片机 可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以 0.062 5 /lsb 形式表示。温度值格式如下: 这是 12 位转化后得到的 12 位数据,存储在 18b20 的两个 8 比特的 ram 中,二 进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的 数值乘于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需 要取反加 1 再乘于 0.0625 即可得到实际温度。图中,s 表示位。对应的温度计算: 第 9 页 共 26 页 当符号位 s=0 时,表示测得的温度植为正值,直接将二进制位转换为十进制;当 s=1 时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。例如 +125的数字输出为 07d0h,+25.0625的数字输出为 0191h,-25.0625的数字 输出为 ff6fh,-55的数字输出为 fc90h。 ds18b20 温度传感器主要用于对温度进行测量,数据可用 16 位符号扩展的二 进制补码读数形式提供,并以 0.0625lsb 形式表示。表 2 是部分温度值对应的 二进制温度表示数据。 部分温度值 ds18b20 完成温度转换后,就把测得的温度值与 ram 中的 th、tl 字节内容作 比较,若 tth 或 t unsigned char displaybit=0xc0,0xf9,0xa4,0xb0, 第 21 页 共 26 页 0x99,0x92,0x82,0xf8,0x80,0x90; unsigned char displaybit1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; unsigned char code displaycode=0xf7,0xfb,0xfd; unsigned char dispbuf=0,0,0; unsigned char discount=0;/用与数码管显示 unsigned char count=0; /用于中断函数中记数 unsigned int cn; /同上 unsigned int wenduzhi; sbit fmq=p33; sbit dq=p10; bit t_1ms=0; bit t_03s=0; bit flag=0;/温度标识为 1 时是负温度 /*延时函数*/ void delay(unsigned int t) while(-t ) ;/时间为 2*t+3us /*/ /*复位*/ bit reset()/复位 0 或 1; dq=1; delay(9); dq=0; delay(80); dq=1; delay(14); return dq;/返回 0 时说明初始化成功 /*/ /*读时序*/ unsigned char readdata(void)/读数据 unsigned char i; 第 22 页 共 26 页 unsigned char temp=0x00; dq=0; delay(2); for(i=8;i0;-i) temp=1; /把数据一位一位的读移到 temp 上 dq=0; dq=1; if(dq) temp=temp|0x80;/从低位开始读,一位一位的读出 delay(4); return(temp); /*/ /*写时序*/ void writedata(unsigned char command) unsigned char i; dq

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论