基于DS18B20温度测量系统设计

上传人:ji****72 文档编号:27032129 上传时间:2018-01-05 格式:DOCX 页数:19 大小:2.57MB
返回 下载 相关 举报
基于DS18B20温度测量系统设计_第1页
第1页 / 共19页
基于DS18B20温度测量系统设计_第2页
第2页 / 共19页
基于DS18B20温度测量系统设计_第3页
第3页 / 共19页
基于DS18B20温度测量系统设计_第4页
第4页 / 共19页
基于DS18B20温度测量系统设计_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《基于DS18B20温度测量系统设计》由会员分享,可在线阅读,更多相关《基于DS18B20温度测量系统设计(19页珍藏版)》请在金锄头文库上搜索。

1、 题目:基于 DS18B20 温度测量系统设计 学 院 信息科学与工程学院 专 业 自动化 年 级 2010 级 学 号 1015322043 姓 名 邹涛 指导老师 黄彩虹 2014 年 5 月1摘 要在工农业生产和科学研究中,温度的测量和控制有着非常重要和广泛的应用。温度测量系统的传统方法是使用模拟温度传感器和信号处理电路相组合 ,其缺点是易受干扰且精度不高。目前国际上新型温度传感器正向数字式、智能化、网络化的方向飞速发展 ,本文介绍的测温系统就是使用了可编程数字温度传感器 DS18B20 。 DS18B20 将温度传感、 A /D 转换、寄存器、接口电路集成于一个芯片中,且具有直接数字输

2、出功能 ,将其与 STC12C5A08S2 单片机结合实现测温系统 ,能使系统成本低、抗干扰能力强 ,易于使用。本文主要是介绍了 DS18B20 温度传感器的特性和优点,与单片机STC12C5A08S2 的连接的电路图,并编写程序实现温度的读写后在数码管上显示实时温度示数。系统主板主要是由电源电路,传感器输入电路,单片机模块,数码管显示模块组成。关键词:DS18B20;STC12C5A08S2;温度检测;单片机2目录摘要 .1第一章 基于 DS18B20 温度测量系统设计 .62.1 设计任务及要求 .62.2 总方案设计 .62.3 硬件电路分析 .82.3.1 电源模块 .82.3.2 传

3、感器输入模块 .82.3.3 STC12C5A08S2 单片机模块 .92.3.4 数码管显示模块 .202.4 调试与结果分析 .112.5 总结 .11参考文献 .12附录3第一章 基于 DS18B20温度测量系统设计 一.设计任务及要求1.设计任务:本次仪器仪表课程设计将实现一个温度测量系统的设计,传感器采用 DS18B20,并且可以实时显示温度。 2.设计要求:本次设计要求在现有的 PCB 板上进行硬件的焊接、原理的分析及软件的编程设计。围绕检测技术、单片机技术、计算机控制技术等,进行仪器仪表综合课程设计。二 数字温度传感器 DS18B20 介绍2.1 DS18B20 简介DS18B2

4、0 是美国 DALLAS 半导体公司推出的一种智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。可以分别在 93.75ms 和 750 ms 内完成 9 位和 12 位的数字量,并且从 DS18B20 读出的信息或写入 DS18B20 的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的 DS18B20 供电,而无需额外电源。因而使用 DS18B20 可使系统结构更趋简单,可靠性更高。2.2 DS18B2 主要特点(1)独特的单线接口方式:DS18B20 与微处理器连接时仅需要一条

5、口线即可实现微处理器与 DS18B20 的双向通讯。(2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围:+3.0 +5.5 V。(4)测温范围:-55 +125 。固有测温分辨率为 0.5 。(5)通过编程可实现 912 位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。4(7)支持多点组网功能,多个 DS18B20 可以并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。TO92 封装的 DS18B20 的引脚排列见下图(底视图),其引脚功能描述见表 1.1。图 DS18B20 底视图表 1.1 DS18B20 详

6、细引脚功能描述序号 名称 引脚功能描述1 GND 地信号2 DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3 VDD 可选择的 VDD 引脚。 当工作于寄生电源时, 此引脚必须接地。5二 总方案设计硬件的总体结构图:图1 硬件总体结构图pcb:6图2.2 PCB 电路图三 硬件电路分析73.1 电源模块图2.3 电源电路3.2 传感器输入模块电路使用一片 CD4051 作为模拟开关,构建输入信号的切换电路。通过设置单片机 P1.4P1.6引脚的高低电平,选择输入的模拟信号。第 2 片 CD4051 可以改变 OP07 的反馈电阻及负端接地电阻,通过设

7、置单片机的 p3.7,p3.6 引脚电平状况,来选择信号的放大倍数。地址端C B A输入线路 放大倍数0 0 0 X0 100 1 0 X2 10 1 1 X3 50当 P3.7=0, P3.6=0, 运放 OP07的周边电路等效为下图, 可计算得到其放大倍数为10。放大倍数的计算,由于 OP07为负反馈,其放大倍数为 1+80.6/910。8CD4051-2的 A 脚和 B 脚为1,其等效运放原理图如下图,其放大倍数为1+87.8/1.849.7。总的原理图如图所示:图2.4 传感器信号输入电路3.3 STC12C5A08S2单片机模块新一代宏晶芯片 STC12C5A08S2具有 1 个时钟

8、/机器周期,高速、高可靠,2 路 PWM,8 路 10 位高速 A/D 转换,25 万次/秒 1T 8051 带总线,管脚直接兼容传统 89C52,可省复位电路 ,36-44 个 I/O,内部 R/C 时钟的新一代宏晶芯片,加密性强,解密难度高。本实验中,管脚 P2.0连接 DS18B20传感器作为温度信号的输入引脚,而用P2.4,P2.5,P2.6,P2.7作为数码管的位选引脚,P0.0-P0.7作为数码管的数字控制引脚,实现温度的实时显示。9图2.5 STC12CA08S2管脚电路2.3.4 数码管显示模块此次的显示电路是单片机外接 4 位共阳数码管, 利用 51 单片机的 P0 口输出段

9、码 (接八段显示数据),低电平有效。P2 口输出位码,P2 口高四位低电平选通对应位。其电路原理图如下所示。图2.6 数码管显示原理图 102.4 调试与结果分析1.程序方面自己以前做过 ds18b20,有些影响。时间比较紧张,主要是借鉴了同组同学的。2.硬件方面焊接还是比较顺利的,焊接完后一次就成功了。最后显示结果还是比较准确的。第 5 章 总结DS18B20 以前在学习 51 单片机的时候有用过,不过时间有点久了,记得不是太清楚,通过这次课程设计是我了解了 DS18B20 的相关特性与原理,做出来的东西干嘛也慢好用的, 我们专业学的这些东西还是满实际,也很实用,虽然以后不在这个领域工作,但

10、是很多东西还是值得借鉴的,做一个东西,还怎么样来设计,第一步干嘛第二步干嘛,首先有一个大概的框架再去做就会清晰很多。就不会那么盲目。最后还是感谢老师那么多年的教导。老师是一个认真负责的人,对我们也很好。不管是学习还是生活上,都给了我们很多指导。 参考文献111单片机原理及应用 张毅刚 彭善元编 著高等教育出版社2DS18B20 及高精度温度测量的实现J 贾振国 电子工业出版社附 录1.系统实物图2.单片机源程序#include #include intrins.h#define uchar unsigned char#define uint unsigned intsbit DQ = P20;

11、sbit smg1 =P24;sbit smg2 =P25;sbit smg3 =P26;sbit smg4 =P27;uchar code smg_du=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;int temp,tempH,tempL;int readtemperature(); /读温度uchar init_DS18B20(); /初始化void write_byte(char dat); /写字节uchar read_byte(); /读字节void display(int temp); /数码管显示void send(int

12、temp); /把数据发送到rs232串口void delay600us(void);12void delay80us(void);void delay750us(void);void delay(uchar t);void send(int temp);void init_com();void main()while(1)temp=readtemperature();display(temp);send(temp); /* 读温度函数*/int readtemperature()uchar a=0;uint b=0;uint t=0;init_DS18B20();write_byte(0xC

13、C); / 跳过读序号列号的操作write_byte(0x44); / 启动温度转换delay750us();init_DS18B20();write_byte(0xCC); /跳过读序号列号的操作 write_byte(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=read_byte(); /低位13b=read_byte(); /高位b0; i-)DQ = 0;14DQ = datdelay(70);DQ = 1;dat=1;delay(70);/* 18b20读字节函数*/uchar read_byte()uchar i=0;uchar dat = 0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;delay(70);return(dat);/* 数码管显示函数15*/void display(int temp)tempH = temp4;tempL=tem

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号