基于DS18B20的温度检测系统课程设计.docx

上传人:b****6 文档编号:15506724 上传时间:2023-07-05 格式:DOCX 页数:20 大小:633.39KB
下载 相关 举报
基于DS18B20的温度检测系统课程设计.docx_第1页
第1页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第2页
第2页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第3页
第3页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第4页
第4页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第5页
第5页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第6页
第6页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第7页
第7页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第8页
第8页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第9页
第9页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第10页
第10页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第11页
第11页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第12页
第12页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第13页
第13页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第14页
第14页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第15页
第15页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第16页
第16页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第17页
第17页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第18页
第18页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第19页
第19页 / 共20页
基于DS18B20的温度检测系统课程设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于DS18B20的温度检测系统课程设计.docx

《基于DS18B20的温度检测系统课程设计.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度检测系统课程设计.docx(20页珍藏版)》请在冰点文库上搜索。

基于DS18B20的温度检测系统课程设计.docx

基于DS18B20的温度检测系统课程设计

《测控系统原理与设计》课程设计报告

 

课题:

温度检测系统

 

班级物理系电三学号0941732509417322

学生姓名罗柱、李亚成

指导教师朱高峰

 

2012年4月

一、绪论

1课题要求

本设计要求系统测量的温度的点数为4个,测量精度为0.5℃,测温范围为-20℃~+80℃。

采用液晶显示温度值和路数,显示格式为:

温度的符号位,整数部分,小数部分,最后一位显示℃。

显示数据每一秒刷新一次。

二、总体方案设计

2.1方案介绍

本该方案使用了AT89C51单片机作为控制核心,以智能温度传感器DS18B20为温度测量元件,采用多个温度传感器对各点温度进行检测,通过4×4键盘模块对正常温度进行设置显示电路采用128×64LCD模块,使用LM386作为报警电路中的功率放大器。

如图2.1为系统总体框图。

 

图2.1基于数字温度传感器测量系统框图

本课题采用数字温度传感器DS18B20作为测为测温元件,它具有如下特点:

(1)只要求一个端口即可实现通信。

(2)在DS18B20中的每个器件上都有独一无二的序列号。

(3)实际应用中不需要外部任何元器件即可实现测温。

(4)测量温度范围在-55C到+125C之间。

(5)数字温度计的分辨率用户可以从9位到12位选择。

(6)内部有温度上、下限告警设置。

三、硬件电路设计

3.1测温电路

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出北侧温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

DS18B20的性能特点如下:

①独特的单线接口仅需要一个端口引脚进行通信;

②多个DS18B20可以并联在惟一的三线上,实现多点组网功能;

③无须外部器件;

④可通过数据线供电,电压范围为3.0~5.5V;

⑤零待机功能;

⑥温度以9或12位数字量读出;

⑦用户可定义的非易失性温度报警设置;

⑧报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;

⑨负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;

DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图3.1所示。

图3.1DS18B20内部结构图

64位ROM的位结构如图3.2所示。

开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。

非易失性温度报警器触发器TH和TL,可通过软件写入户报警上下限。

图3.264位ROM结构图

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可擦除的EERAM。

高速暂存RAM的结构为8字节的存储器,结构如图3.3所示。

头2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。

第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。

DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。

该字节各位的定义如图3.4所示。

低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要改动,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。

图3.3高速暂存RAM结构图

图3.4配置寄存器

表1DS18B20分辨率的定义规定

由表1可见,DS18B20温度转换的时间比较长,而且设定的分辨率越高,所需要的温度转换时间越长。

因此,在实际应用中要将分辨率和转换时间权衡考虑。

高速暂存RAM的第6,7,8字节保存未用,表现为逻辑1。

第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。

当DS18B20接收温度转换命令后,开始启动转换。

转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。

单片机可以通过单线接口读出数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。

温度值格式如图3.5所示。

图3.5温度数据值格式

当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码转换为原码,再计算十进制。

表2是一部分温度值对应的二进制温度数据。

表2DS18B20温度与测得值对应表

在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。

主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到ROM数据是否正确。

DS18B20的测温原理如图3.6所示。

图中第温度系数晶振的震荡频率受温度的影响很小,用于产生固定频率的脉冲送给减法计数器1;高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入.图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数震荡器产生的时钟脉冲计数,进而完成温度测量。

计数门的开启时间由高温度系数震荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1,温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

减法计数器1所对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置值将被重新装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。

图3.6中的斜率累加器用于补偿和修正测温过程中的非线形性,其输出用于减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被预测值。

另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要,系统对DS18B20的各种操作必须按协议进行。

操作协议为:

初始化DS18B20→发ROM功能命令→发存储器操作命令→处理数据。

图3.6DS18B20测温原理图

DS18B20与单片机的接口电路

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。

另一种是寄生电源供电方式,如图3.7所示.单片机端口接单线总线,为为保证有效DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。

图3.7DS18B20采用寄生电源的电路图

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。

采用寄生电源供电方式时VDD和GND端均接地。

由于单线制只有一根线,因此发送接口必须是三态的。

3.2键盘电路设计

3.2.1行列式键盘与单片机接口电路

根据本设计需要,本系统采用了4×4键盘实现对温度值和功能键的设定。

行列式键盘与单片机的接口电路如图3.8所示,H0-H3为行线,接单片机P2口的高4位,L0-L3为列线,接单片机P2口的低4位。

初始化时键盘行线为高电平,列线为低电平。

图3.84×4键盘结构

3.2.2键盘面板

键盘面板如图3.9所示,本系统使用的键盘有10数字键,5个功能按键。

在系统启动时,先按“设置”键,然后按相应的数字键,按“左移”或者“右移”键改变其他温度的值。

按“确认”键之后系统正式启动。

系统在运行过程

之中可以通过按“重新设置”键,对温度重新进行设置。

 

图3.9键盘面板

3.3显示电路设计

3.3.1LCD引脚分布及功能

12864液晶显示屏共有20个引脚,其引脚名称及引脚编号的对应关系如图3.10所示:

图3.1012864液晶显示模块引脚分布

3.3.2单片机与图形液晶的接口电路

LCD与单片机的接口电路如图3.11所示

图3.11LCD与单片机的接口电路

3.4报警电路设计

本系统设计中有报警器,使用LM386作为报警器的功率放大器,如图3.12所示。

LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点。

LM386的输入端接单片机的引脚P3.4,输出端接扬声器。

当实际温度超过设置的温度值时,单片机引脚输出一定频率的信号,信号经过音频功放放大后,发出报警声。

四、软件设计

4.1主程序

主程序先对系统资源进行初始化,调用LCD显示子程序,显示启动画面。

然后进入键盘设置界面。

当设置键按下后,开始设置各点的温度,设置完之后,如果确认键按下,则系统开始工作。

首先调用DS18B20初始化子程序,再发送ROM命令,读取DS18B20转换的温度值。

当读取的温度大于设置的温度值时,报警器开始报警,LCD显示温度的实际值、设置值、路数、状态。

接下来对第二、三、四路温度进行采集,处理,显示。

主程序流程如图4.1所示:

 

4.1主程序流程图

4.2子程序

4.2.1DS18B20程序流程设计

片机对DS18B20的控制方法,设计出如下程序流程:

 

图4.2写命令子程序流程图图4.3DS18B20复位子程序流程图

图4.4DS18B20读温度子程序流程图

4.2.2显示程序流程

显示是实现人机对话的重要部分,在这里选用12864LCD显示器可实现对汉字、字符和图片的显示,LCD的引脚功能在上面已经做了说明,下面是其相关指令的介绍。

 

根据上面指令结合系统要实行的功能,其显示子程序流程如图4.5所示。

 

图4.5显示子程序流程图

4.2.3键盘程序流程

键盘中断程序是用来设在系统起动时各环境温度的极值,其程序流程图如图4.6所示:

图4.6键盘程序流程

五、系统仿真调试

5.1程序加载

5.1.1程序编译

(1)启动KEIL,选择Project->NewProject,在弹出的对话框中输入工程的名字,点击保存;选择ATMEL公司的AT89C51单片机。

图5.3系统电路原理图

(2)在SourceGroup1上点击右键,选择“AddFilestoGroupSourceGroup1”,把所有的源文件加进来。

(3)点击Project->Buildtarget或者使用快捷键F9,编译工程。

当OutputWindows中提示“0Error”时,则程序编译成功,生成可执行文件1.HEX。

5.1.2程序加载

在编辑环境中双击AT89C51,在弹出的对话框中将编译生成可执行文件1.HEX加载进芯片中,设单片机的时钟工作频率为12MHZ。

5.4系统仿真图

(1)系统仿真图如下:

5.3系统仿真图

(2)温度值的设定

设置温度时,先点“设置”键,然后点击键盘上的按键输入温度;如果温度设置完毕,点击“确认键”,则系统启动成功并开始对各个环境的温度进行测量。

在设置过程之中可以通过“左移”或者“右移”按键对各个温度值进行设定,如图5.4和图5.5所示。

图5.4设置温度图5.5设置各个环境的温度

(3)系统运行

系统运行之后,DS18B20开始对环境进行测量,将环境的实际的温度显示在液晶屏上,同时液晶显示屏还显示环境温度的路数、事先设置的温度值和状态。

当实际温度值低于或者等于设置温度值时,将显示“正常”,否则将显示“报警”,同时报警器开始报警。

在系统运行过程之中,如果需要重新对温度值进行设定,则点击“重新设置”按键,重新设置各个环境温度的正常值的极值。

在PROTEUS仿真过程之中,可以通过调节DS18B20的面板上的“↑”或者“↓”。

图5.6第1路仿真结果图5.7第2路仿真结果

图5.8第3路仿真结果图5.9第4路仿真结果

附录

部分系统程序如下所示:

(1)LCD图片显示子程序

voidDisp_Img(unsignedcharcode*img)

{unsignedcharj,k;

for(k=0;k<8;k++)

{left();

Delay(10);

write_com(Page_Add+k);

write_com(Col_Add+0);

for(j=0;j<64;j++)

{write_data(img[k*128+j]);

}

right()

write_com(Page_Add+k);

write_com(Col_Add+0);

for(j=0;j<64;j++)

{write_data(img[k*128+64+j]);

}

}

}

(2)LCD写16*16汉字子程序

voidDisp_Chinese(unsignedcharpag,unsignedcharcol,charcode*hzk)

{

unsignedcharj=0,i=0;

for(j=0;j<2;j++)

{

write_com(Page_Add+pag+j);

write_com(Col_Add+col);

for(i=0;i<16;i++)

{

write_data(hzk[16*j+i]);

}}}

voidmain(void)

{uchari;

P2=0XF0;

IT0=1;

TMOD=0x01;

TH0=0xff;

TL0=0xff;

ET0=1;

PT0=1;

EA=1;

Init_lcd();

Clr_Scr();

Display_ini();

delay(1500);

EX0=1;

out:

Clr_Scr();

display1();

delay(1000);

while(!

flag2)

{

KeyInput();

}

flag2=0;

Clr_Scr();

while

(1)

{

if(flag4==1)

gotonext;

}

elseif(zhen_temp[1]==num[1])

{

if(zhen_temp[2]>num[2])

flag7=1;

elseif(zhen_temp[2]

{

flag7=0;

gotonext;

}

elseif(zhen_temp[2]==num[2])

{

if(xiaoshu_temp[0]>num[3])

flag7=1;

else

{

flag7=0;

gotonext;

}}}}}

flag5=0;

ds18b20_writecommand(0x44);

delay(250);

match_rom(ds18b20_num2);

ds18b20_writecommand(0xbe);

for(i=0;i<2;i++)

{

temp[i]=Ds18b20_Readdata();

}

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2