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

上传人:b****7 文档编号:10011372 上传时间:2023-02-07 格式:DOCX 页数:14 大小:113.89KB
下载 相关 举报
温度课程设计报告书温度传感器.docx_第1页
第1页 / 共14页
温度课程设计报告书温度传感器.docx_第2页
第2页 / 共14页
温度课程设计报告书温度传感器.docx_第3页
第3页 / 共14页
温度课程设计报告书温度传感器.docx_第4页
第4页 / 共14页
温度课程设计报告书温度传感器.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

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

《温度课程设计报告书温度传感器.docx》由会员分享,可在线阅读,更多相关《温度课程设计报告书温度传感器.docx(14页珍藏版)》请在冰豆网上搜索。

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

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

 

传感器技术课程设计

 

分数:

 

题目:

温度传感器

完成人:

时间:

二○一一年六月

 

目录

一.封面

2.内容

1.技术指标.........................3

2.设计方案及其比较.................3

2.1方案一........................3

2.2方案二.......................3

2.3方案比较......................3

3.实现方案.........................4

3.1组成..........................4

3.2关于DS18B20的详细介绍.............4

3.3工作原理图.....................7

3.4电路程序.......................8

4.调试过程及结论..................18

5.心得体会........................18

6.参考文献........................19

1.技术指标

①独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;

②测温范围为-55℃-+125℃,测量分辨率为0.0625℃;

③工作电源:

3~5V;

④适配各种单片机或系统机;

⑤在使用中不需要任何外围元件;

⑥内含寄生电源。

2.设计方案及其比较

2.1方案一

采用热敏电阻,热敏电阻精度,重复性,可靠性较差,对于检测1摄氏度的信号是不适用的,也不能满足测量范围。

在温度测量系统中,也采用单片温度传感器,比如ADS90,LM35等。

但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使测温系统的硬件结构较复杂。

另外,这种测温系统难以实现多点测温,也要用到复杂的算法,一定程度导航也增加了软件实现的难度。

2.2方案二

采用单总线数字温度传感器DS18B20温度测量温度,直接输出数据信号。

便于单片机处理及控制,节省硬件电路。

而且该芯片的物理化学性很稳定,此元件线形性能好,在0-100摄氏度时,最大线形偏差小于1摄氏度。

DS18B20最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度装置,它直接输出温度的数字信号到微控制器。

每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。

这样一条总线上可挂接多个DS18B20传感器,实现多点温度测量,轻松的组建传感网络。

2.3方案比较

综上所述,选择方案二

3.实现方案

3.1组成采用AT89S52单片机作为控制核心对温度传感器DS18B20控制,按照系统设计的要求,系统由3个模块组成:

主控制器,测温电路和显示电路。

3.2关于DS18B20的详细介绍

1论述

DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

以上特点使DS18B20非常适用于远距离多点温度检测系统。

2DS18B20的内部结构

DS18B20内部结构如图1,主要由4部分组成:

64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

DS18B20的管脚排列如图2所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端。

ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。

64位ROM的排的循环冗余校验码(CRC=X8+X5+X4+1)。

ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

3DS18B20工作原理

控制DS18B20指令:

33H-读ROM55H-匹配ROMF0H-搜索ROMCCH-跳过ROMECH-告警搜索命令

44H-温度转换BEH-读暂存器4EH-写暂存器48H-复制暂存器B8H-重调E2PROMB4H-读供电方式

4DS18B20工作流程

(1)初始化

①数据线置高电平1;

②延时;

③数据线拉到低电平0;

④延时750us;

⑤数据线拉到高电平1;

⑥延时等待;将数据线再次拉到高电平后结束。

(2)写数据

①数据线置低电平0;

②延时15us;

③发送数据;

④延时45us;

⑤数据线拉到高电平1;

⑥重复上述步骤,最后将数据线拉到1。

(3)读数据

①数据线置高电平1;

②延时;

③将数据线拉低到0;

④延时;

⑤数据线拉到高电平1,延时;

⑥读数据线的状态并处理,延时,重复①-⑤。

图1

写时序

读时序

3.3工作原理图

3.4电路程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitled0=P1^0;

sbitled1=P1^1;

sbitled2=P1^2;

sbitled3=P1^3;

sbitDQ=P2^2;//数据口defineinterface

sbitdula=P2^6;//数码管段选

sbitwela=P2^7;//数码管位选

sbitbeep=P2^3;

uintwarn_11=340;

uintwarn_12=300;

 

uinttemp;//温度值variableoftemperature

//不带小数点

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//带小数点

unsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

 

/*************精确延时函数*****************/

voiddelay(unsignedchari)

{

while(--i);

}

/******************************************

此延时函数针对的是12Mhz的晶振

delay(0):

延时518us误差:

518-2*256=6

delay

(1):

延时7us(原帖写"5us"是错的)

delay(10):

延时25us误差:

25-20=5

delay(20):

延时45us误差:

45-40=5

delay(100):

延时205us误差:

205-200=5

delay(200):

延时405us误差:

405-400=5

*******************************************/

/*****************DS18B20******************/

voidInit_Ds18b20(void)//DS18B20初始化sendresetandinitializationcommand

{

DQ=1;//DQ复位,不要也可行。

delay

(1);//稍做延时

DQ=0;//单片机拉低总线

delay(250);//精确延时,维持至少480us

DQ=1;//释放总线,即拉高了总线

delay(100);//此处延时有足够,确保能让DS18B20发出存在脉冲。

}

ucharRead_One_Byte()//读取一个字节的数据readabytedate

//读数据时,数据以字节的最低有效位先从总线移出

{

uchari=0;

uchardat=0;

for(i=8;i>0;i--)

{

DQ=0;//将总线拉低,要在1us之后释放总线

//单片机要在此下降沿后的15us内读数据才会有效。

_nop_();//至少维持了1us,表示读时序开始

dat>>=1;//让从总线上读到的位数据,依次从高位移动到低位。

DQ=1;//释放总线,此后DS18B20会控制总线,把数据传输到总线上

delay

(1);//延时7us,此处参照推荐的读时序图,尽量把控制器采样时间放到读时序后的15us内的最后部分

if(DQ==1)//控制器进行采样

{

dat|=0x80;//若总线为1,即DQ为1,那就把dat的最高位置1;若为0,则不进行处理,保持为0

}

delay(10);//此延时不能少,确保读时序的长度60us。

}

return(dat);

}

voidWrite_One_Byte(uchardat)

{

uchari=0;

for(i=8;i>0;i--)

{

DQ=0;//拉低总线

_nop_();//至少维持了1us,表示写时序(包括写0时序或写1时序)开始

DQ=dat&0x01;//从字节的最低位开始传输

//指令dat的最低位赋予给总线,必须在拉低总线后的15us内,

//因为15us后DS18B20会对总线采样。

delay(10);//必须让写时序持续至少60us

DQ=1;//写完后,必须释放总线,

dat>>=1;

delay

(1);

}

}

 

uintGet_Tmp()//获取温度getthetemperature

{

floattt;

uchara,b;

Init_Ds18b20();//初始化

Write_One_Byte(0xcc);//忽略ROM指令

Write_One_Byte(0x44);//温度转换指令

Init_Ds18b20();//初始化

Write_One_Byte(0xcc);//忽略ROM指令

Write_One_Byte(0xbe);//读暂存器指令

a=Read_One_Byte();//读取到的第一个字节为温度LSB

b=Read_One_Byte();//读取到的第一个字节为温度MSB

temp=b;//先把高八位有效数据赋于temp

temp<<=8;//把以上8位数据从temp低八位移到高八位

temp=temp|a;//两字节合成一个整型变量

tt=temp*0.0625;//得到真实十进制温度值

//因为DS18B20可以精确到0.0625度

//所以读回数据的最低位代表的是0.0625度

temp=tt*10+0.5;//放大十倍

//这样做的目的将小数点后第一位也转换为可显示数字

//同时进行一个四舍五入操作。

returntemp;

}

 

/****************数码码动态显示函数**************/

voidDisplay(uinttemp)//显示程序

{

ucharA1,A2,A3;

A1=temp/100;//百位

A2=temp%100/10;//十位

A3=temp%10;//个位

dula=0;

P0=table[A1];//显示百位

dula=1;//打开段选,对应74573的锁存位,高电平不锁存

dula=0;

wela=0;

P0=0xfe;

wela=1;//打开位选

wela=0;

delay(0);

dula=0;

P0=table1[A2];//显示十位,使用的是有小数点的数组(因为temp值扩大了10倍,虽然是十位,实际为个位)

dula=1;

dula=0;

wela=0;

P0=0xfd;

wela=1;

wela=0;

delay(0);

P0=table[A3];//显示个位

dula=1;

dula=0;

P0=0xfb;

wela=1;

wela=0;

delay(0);

}

voidwarn(uints,ucharled)

{

uchari;

i=s;

beep=0;

P1=~(led);

delay(100);

beep=1;

P1=0xff;

i=s;

delay(100);

}

voiddeal(uintt)

{

if((t>warn_12)&&(t<=warn_11))

{

warn(40,0x01);}

}

voidmain()

{

while

(1)

{

Display(Get_Tmp());}

}

4.调试过程及结论

首先确定所写程序与单片机各个模块相吻合,因为所用的单片机不同I/O口不同,显示元件不同,程序也不同,每块程序要根据DS18B20的工作要求而实现相应的功能,比如程序初始化模块,读模块,写模块,都要仔细考虑,仔细调试,通过系统的分析和总结,得出温室大气温度信号的采集传感器件所需的测量程小,精确度不高,抗干扰性较强,经济性较好的结论.并以此为依据,选用DS18B20数字温度传感器为温度采集器件,进行了温度采集系统的硬件和软件设计,实现了采集系统分布式采集温度信号的功能.同时,通过串行总线完成了采集系统与上位计算机的连接,实现了采集系统的网络化监控功能。

5.心得体会

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。

”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。

我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。

通过这次课程设计,我在多方面都有所提高。

回顾起此次课程设计,我感慨颇多,从选题到定稿,从理论到实践,在整整两星期的时间里,可以说是苦多余甜,但是学到很多东西。

这次学习不仅巩固了以前所学过的知识,而且学到了很多在书本上没有的知识。

通过这次课程设计,我得到了一些工程项目知识,懂得了理论与实际想结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立的思考的能力。

在设计的过程中,经常会遇到问题,可以说困难充充,这毕竟是第一次做,难免会遇到各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的只是理解不够深刻,掌握不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。

在设计中遇到了很多编程方面的调试问题,问了很多同学关于程序的问题,所以在同学的帮助下,终于迎刃而解。

在此对帮助我的同学们表示衷心的感谢!

6.参考文献

【1】郭天祥《51单片机C语言教程》

【2】刘建亭毛善坤《DS18B20工作原理及基于C语言的接口设计》

【3】李广第《单片机基础》

 

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

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1