温度课程设计报告书温度传感器.docx
- 文档编号:10011372
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:14
- 大小:113.89KB
温度课程设计报告书温度传感器.docx
《温度课程设计报告书温度传感器.docx》由会员分享,可在线阅读,更多相关《温度课程设计报告书温度传感器.docx(14页珍藏版)》请在冰豆网上搜索。
温度课程设计报告书温度传感器
传感器技术课程设计
分数:
题目:
温度传感器
完成人:
时间:
二○一一年六月
目录
一.封面
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】李广第《单片机基础》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 课程设计 报告书 温度传感器