{$cfg_webname}
主页 > 电子信息 > 电子 >

红外线测温仪的设计(论文)

来源:wenku168.com  资料编号:WK1682573 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9AWK1682573
资料介绍

随着“信息时代”的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此,了解并掌握传感器的基本结构、工作原理及特性是非常重要的。
为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合传感器技术而开发设计了红外抄表系统。文中把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度,以及实现红外数据传输的过程。(毕业设计网 )

本设计应用性比较强,只要对电路部分稍加改装,就可以实现抄读其它的数字仪表设备:如数字电度表,数字水表等等。设计后的系统具有操作方便,控制灵活等优点。
其主要功能和指标如下:
1、利用温度传感器(DS18B20)测量某一点环境温度;
2、测量范围为-55℃~+99℃,精度为±0.5℃;
3、用4位数码管进行显示实际温度值显示;
4、手持端通过红外发射管发射测温信号;
5、测温端通过红外发射管发送到手持端;
6、手持端可以随时查看指定待测物体的温度值。
设计的核心是环境温度的测量以及红外数据的发射和接收,和温度的显示。文中对每个部分功能、实现过程作了详细地介绍。

1  方案选择
该系统主要由温度测量和数据采集和发送三部分组成。下面列举两种实现方案:
方案一:温度检测可以使用低温热偶或铂电阻,数据采集部分则使用带有A/D通道的单片机。考虑到一般的A/D输入通道都只能接收大信号,所以还要设计相应的放大电路。而模拟信号在长距离传输过程中,抗电磁干扰是令人伤脑筋的问题。此方案的软件简单,但硬件复杂,且检测点数追加时,各敏感元件参数的不一致性,都将会导致误差的产生,难以完全清除,而且成本会有较大增长幅度。
方案二:使用单片机和数字式单总线温度传感器构成。其具有下列特点:①具有高的测量精度和分辨率,测量范围大;②抗干扰能力强,稳定性好;③信号易于处理、传送和自动控制;④便于动态及多路测量,读数直观;⑤安装方便,维护简单,工作可靠性高。单总线温度传感器可以采用DALLAS公司生产的DS18B20系列,这类温度传感器直接输出数字信号,且多路温度传感器可以挂在1条总线上,共同占用单片机的1个I/O口即可实现。在提升单片机I/O口驱动能力的前提下,理论上可以任意扩充检测的温度点数。
比较两个方案后可以发现,方案二更适合于用作本系统的实施方案。尽管方案二不需要A/D,但考虑到系统扩充等因素,单片机可以选用AT98C2051。(毕业设计网 )

附  录(一)
测温部分程序:
#include <AT89X51.H>
#include <intrins.h>
typedef unsigned char byte;
typedef unsigned int word;
sbit DQ=P3^4;  //DS18B20 数据线
byte BE=0x42,cc=0;
unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7,
                                 0xef,0xdf,0xbf,0x7f};
unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f,
                                    0x66,0x6d,0x7d,0x07,
                                    0x7f,0x6f,0x77,0x7c,
                                    0x39,0x5e,0x79,0x71,0x00,0x40};
unsigned char code dotcode[]={0,3,6,9,12,16,19,22,
                                25,28,31,34,38,41,44,48,
                                50,53,56,59,63,66,69,72,
                                75,78,81,84,88,91,94,97};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
                               0x66,0x6d,0x7d,0x07,
          0x7f,0x6f,0xbf,0x86,
          0xdb,0xcf,0xe6,0xed,
          0xfd,0x87,0xff,0xef,
0x00,0x40};
unsigned char displaycount;
unsigned char displaybuf[8]={16,16,16,16,16,16,16,16};
unsigned char timecount;
unsigned char readdata[8];
bit sflag;
void ss_send(void)  //////串口发送数据
{byte i;
TI=0;
SBUF=BE;
while(TI==0);
for(i=0;i<4;i++)
{

推荐资料