温度课程设计报告书温度传感器.doc

上传人:土8路 文档编号:10049410 上传时间:2021-04-14 格式:DOC 页数:19 大小:135KB
返回 下载 相关 举报
温度课程设计报告书温度传感器.doc_第1页
第1页 / 共19页
温度课程设计报告书温度传感器.doc_第2页
第2页 / 共19页
温度课程设计报告书温度传感器.doc_第3页
第3页 / 共19页
温度课程设计报告书温度传感器.doc_第4页
第4页 / 共19页
温度课程设计报告书温度传感器.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《温度课程设计报告书温度传感器.doc》由会员分享,可在线阅读,更多相关《温度课程设计报告书温度传感器.doc(19页珍藏版)》请在三一文库上搜索。

1、传感器技术课程设计 分数: 题目: 温度传感器 完成人: 时间: 二一一年六月 目录一 封面2 内容1. 技术指标.32. 设计方案及其比较.3 2.1 方案一.3 2.2 方案二.3 2.3 方案比较.33. 实现方案.4 3.1 组成.4 3.2 关于DS18B20的详细介绍.4 3.3 工作原理图.7 3.4 电路程序.84. 调试过程及结论.18 5. 心得体会.18 6. 参考文献.191.技术指标 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;测温范围为-55-+125,测量分辨率为0.0625;工作电源: 35V;适

2、配各种单片机或系统机;在使用中不需要任何外围元件;内含寄生电源。2.设计方案及其比较 2.1 方案一 采用热敏电阻,热敏电阻精度,重复性,可靠性较差,对于检测1摄氏度的信号是不适用的,也不能满足测量范围。在温度测量系统中,也采用单片温度传感器,比如ADS90,LM35等。但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使测温系统的硬件结构较复杂。另外,这种测温系统难以实现多点测温,也要用到复杂的算法,一定程度导航也增加了软件实现的难度。 2.2 方案二 采用单总线数字温度传感器DS18B20温度测量温度,直接输出数据信号。便于单片机处理及控制,节省硬件电路。而且该芯片的

3、物理化学性很稳定,此元件线形性能好,在0-100摄氏度时,最大线形偏差小于1摄氏度。DS18B20最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度装置,它直接输出温度的数字信号到微控制器。每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。这样一条总线上可挂接多个DS18B20传感器,实现多点温度测量,轻松的组建传感网络。 2.3 方案比较 综上所述,选择方案二3. 实现方案 3.1 组成 采用AT89S52单片机作为控制核心对温度传感器DS18B20控制,按照系统设计的要求,系统由3个模块组成:主控制器,测温电路

4、和显示电路。 3.2 关于DS18B20的详细介绍 1 论述 DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。 2 DS18B20的内部结构 DS18B20内部结构

5、如图1,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入输出端;GND为电源地;VDD为外接供电电源输入端。ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8X5X41)。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。3 DS18B20工作原理控制DS18B20指令:33H-读ROM 55H-匹配ROM F0H-搜索ROM

6、CCH-跳过ROM ECH-告警搜索命令44H-温度转换 BEH-读暂存器 4EH-写暂存器 48H-复制暂存器 B8H-重调E2PROM B4H-读供电方式4 DS18B20工作流程(1) 初始化 数据线置高电平1;延时;数据线拉到低电平0;延时750us; 数据线拉到高电平1;延时等待;将数据线再次拉到高电平后结束。(2)写数据数据线置低电平0;延时15us;发送数据;延时45us; 数据线拉到高电平1;重复上述步骤,最后将数据线拉到1。(3)读数据数据线置高电平1;延时;将数据线拉低到0;延时; 数据线拉到高电平1,延时;读数据线的状态并处理,延时,重复-。 图1 写时序 读时序 3.3

7、 工作原理图 3.4 电路程序#include #include #define uchar unsigned char#define uint unsigned intsbit led0=P10;sbit led1=P11;sbit led2=P12;sbit led3=P13;sbit DQ = P22; /数据口define interfacesbit dula = P26; /数码管段选sbit wela = P27; /数码管位选sbit beep=P23;uint warn_11=340;uint warn_12=300;uint temp; /温度值 variable of te

8、mperature/不带小数点unsigned char code table = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/带小数点unsigned char code table1 = 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/*精确延时函数*/void delay(unsigned char i) while(-i); /*此延时函数针对的是12Mhz的晶振delay(0):延时518us 误差:518-2*

9、256=6delay(1):延时7us (原帖写5us是错的)delay(10):延时25us 误差:25-20=5delay(20):延时45us 误差:45-40=5delay(100):延时205us 误差:205-200=5delay(200):延时405us 误差:405-400=5*/*DS18B20*/void Init_Ds18b20(void) /DS18B20初始化send reset and initialization commandDQ = 1; /DQ复位,不要也可行。delay(1); /稍做延时DQ = 0; /单片机拉低总线delay(250); /精确延时,

10、维持至少480usDQ = 1; /释放总线,即拉高了总线delay(100); /此处延时有足够,确保能让DS18B20发出存在脉冲。uchar Read_One_Byte() /读取一个字节的数据read a byte date /读数据时,数据以字节的最低有效位先从总线移出uchar i = 0;uchar dat = 0;for(i=8;i0;i-) DQ = 0; /将总线拉低,要在1us之后释放总线 /单片机要在此下降沿后的15us内读数据才会有效。 _nop_(); /至少维持了1us,表示读时序开始 dat = 1; /让从总线上读到的位数据,依次从高位移动到低位。 DQ =

11、1; /释放总线,此后DS18B20会控制总线,把数据传输到总线上 delay(1); /延时7us,此处参照推荐的读时序图,尽量把控制器采样时间放到读时序后的15us内的最后部分 if(DQ=1) /控制器进行采样 dat |= 0x80; /若总线为1,即DQ为1,那就把dat的最高位置1;若为0,则不进行处理,保持为0 delay(10); /此延时不能少,确保读时序的长度60us。return (dat);void Write_One_Byte(uchar dat)uchar i = 0;for(i=8;i0;i-) DQ = 0; /拉低总线 _nop_(); /至少维持了1us,表

12、示写时序(包括写0时序或写1时序)开始 DQ = dat&0x01; /从字节的最低位开始传输 /指令dat的最低位赋予给总线,必须在拉低总线后的15us内, /因为15us后DS18B20会对总线采样。 delay(10); /必须让写时序持续至少60us DQ = 1; /写完后,必须释放总线, dat = 1; delay(1);uint Get_Tmp() /获取温度get the temperaturefloat tt;uchar a,b;Init_Ds18b20(); /初始化Write_One_Byte(0xcc); /忽略ROM指令Write_One_Byte(0x44); /

13、温度转换指令Init_Ds18b20(); /初始化Write_One_Byte(0xcc); /忽略ROM指令Write_One_Byte(0xbe); /读暂存器指令a = Read_One_Byte(); /读取到的第一个字节为温度LSBb = Read_One_Byte(); /读取到的第一个字节为温度MSBtemp = b; /先把高八位有效数据赋于temptemp warn_12)&(t=warn_11)warn(40,0x01);void main()while(1) Display(Get_Tmp(); 4. 调试过程及结论 首先确定所写程序与单片机各个模块相吻合,因为所用的单

14、片机不同I/O口不同,显示元件不同,程序也不同,每块程序要根据DS18B20的工作要求而实现相应的功能,比如程序初始化模块,读模块,写模块,都要仔细考虑,仔细调试,通过系统的分析和总结,得出温室大气温度信号的采集传感器件所需的测量程小,精确度不高,抗干扰性较强,经济性较好的结论.并以此为依据,选用DS18B20数字温度传感器为温度采集器件,进行了温度采集系统的硬件和软件设计,实现了采集系统分布式采集温度信号的功能.同时,通过串行总线完成了采集系统与上位计算机的连接,实现了采集系统的网络化监控功能。5. 心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的

15、重要环节,是对学生实际工作能力的具体训练和考察过程。课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。通过这次课程设计,我在多方面都有所提高。 回顾起此次课程设计,我感慨颇多,从选题到定稿,从理论到实践,在整整两星期的时间里,可以说是苦多余甜,但是学到很多东西。这次学习不仅巩固了以前所学过的知识,而且学到了很多在书本上没有的知识。通过这次课程设计,我得到了一些工程项目知识,懂得

16、了理论与实际想结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立的思考的能力。在设计的过程中,经常会遇到问题,可以说困难充充,这毕竟是第一次做,难免会遇到各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的只是理解不够深刻,掌握不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 在设计中遇到了很多编程方面的调试问题,问了很多同学关于程序的问题,所以在同学的帮助下,终于迎刃而解。在此对帮助我的同学们表示衷心的感谢!6. 参考文献 【1】郭天祥 51单片机C语言教程【2】刘建亭 毛善坤 DS18B20工作原理及基于C语言的接口设计【3】李广第 单片机基础

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1