您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机红外测温的设计与实现
基于51单片机红外测温的设计与实现摘要:随着科技的飞速发展,单片机的应用正在不断地日益广泛,同时也带动传统控制检测日新月异更新。在智能检测、控制系统中,往往使用单片机作为一个核心部件来使用,然后配合具体硬件设备,以及针对具体应用对象特点的软件结合,加以完善。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。传统的温度计多采用物理原理,根据水银等随温度升降的热胀冷缩的性质,通过读取刻度值来判断温度值,这种方法不太方便,而且耗时过长。本课题提供一种新的温度测量方案,采用具有SPI(seriesperipheralinterface串行外围接口)接口的TN系列红外温度传感器来测量温度信号,可以同时测量环境温度和目标温度,并将测量的数据送给51单片机处理,之后送数码管显示,同时利用单片机的蜂鸣器,当温度超过某一限定值时,发出警报。红外测温打破了传统的测温模式,它响应快,测量精度高,可靠性强,范围广,为非接触测量,因而不易损坏,该温度计以其准备快捷的测量功能,和清晰易懂的数字化显示方便了人们日常生活和工作以及科研领域领域的使用。本课题是“基于51单片机红外测温的设计与实现”。主要考核我们对单片机技术,编程能力等方面的情况。观察独立分析、设计单片机的能力,以及实际编程技能。关键字:红外测温;51单片机;测温探头1前言1.1选题的目的和意义体温是人体生命活动的基本特征,也是观察人体机能是否正常的重要标志之一。目前,人们使用最广泛的水银体温计是根据水银等随温度升降的热胀冷缩的性质,通过读取刻度值来判断温度值,它有诸多的缺陷:传统温度计在使用时要和被测量者接触,而且往往要等待较长的时间,以让其充分受热,当测量结束后还要将水银重新甩入水银泡中,由于水银泡是由很薄的玻璃制成的,极易破碎,而且其中的水银蒸汽对人体有极强的毒害作用,因此普通的温度计有非常严重的安全隐患。红外测温为测量人体温度提供了快速,非接触测量手段,可广泛,有效的用于密集人群的体温测量。而且可以以数字的方式显示出测量结果,使测量过程变得直观,而且耗时短,往往在几秒钟之内就能测得结果,而且寿命长,是较为理想的测温仪器。红外测温的设计,其内容包含了电子技术,检测技术,单片机等多方面的内容,红外测温技术是一门很实用和前沿的技术,做此课题,有利于理论联系实际,更好的掌握这一方面的知识体系,是对学习内容的升华,特别是对单片机控制技术知识的深入理解,对于自身综合素质与工程能力的培养也有重要意义。2设计任务和要求2.2设计任务和要求2.2.1设计任务利用单片机作为控制板,控制红外测温模组实现温度测量,并能实现温度的现实,完成一个完整的智能化红外温度计的设计。2.2.2设计要求1.通过I/O口控制启动测温,并能显示温度值:2.可以测量目标温度和环境温度:3.测量结果表示的精度为个位十位。测量结果表示精度,并非是测量精度,测量精度以传感器的性能决定。3概述3.1红外测温概况3.1.1红外测温的基础理论红外线是电磁波谱的一个部分,这一波段位于可见光和微波之间,根据普朗克辐射定理,凡是绝对温度大于零度的物体都能辐射电磁能,物体的辐射强度与温度表面的辐射能力有关,辐射的光谱分布也与物体温度密切相关。在电磁波谱中,我们把人眼可直接感知的0.4~0.75微米破段称为可见光波段,而把波长从0.75至1000微米的电磁波称为红外波段,红外波段的短波段与可见光红光相邻,长波端与微波相接。可见光辐射主要来自高温辐射源,如太阳,高温燃烧气体,灼热金属等,而任何低温,室温或加热后的物体都有红外辐射。1.生物波谱生物波谱,又叫生物频谱,是生物自身发出的生物物理信息的光波或频率的综合称谓,它构成生物体周围的生物信息场。科学研究表明,生物体(包括人体)可产生温度场,电场和磁场等,统称为生物信息场,可以用物理学中的电磁波谱频率或波长,温度等物理因子来表述。生物波谱的波长覆盖范围在电磁波谱中的紫外线到弱微波之间,人体的生物波谱则主要在红外线到弱微波区域,尤其集中在红外线波段范围。因此它遵循电磁波的一切特性。生物波谱的这种物理信息的存在,变化是与生物体自身功能状态密切相关的,同样可以反应生物体的健康状态。2.红外辐射的发射及其规律先简单介绍一下黑体的红外辐射规律。所谓的黑体,简单讲就是在任何情况下对一切波长的入射辐射吸收率都等译1的物体,也就是说全吸收。显然,因为自然界中实际存在的任何物体对不同波长的入射辐射都有一定的反射(吸收率不等以1),所以,黑体知识人们抽象出来的一种理想化的物体模型。但黑体热辐射的基本规律是红外研究及应用的基础,它揭示了黑体发射的红外热辐射随温度及波长的定量关系。3.1.2红外测温的特点1.远距离和非接触测量红外测温不需要与被测物体接触,并可远距离测量,它特别适合于对高速运动物体,旋转体,带电体和高温高压下物体的温度测量。2.响应速度快红外测温不像热电偶,温度计那样,需要与被测量体接触以达到热平衡,只要接触到目标的红外辐射即可测量,其响应时间在毫秒甚至微妙数量级。3.灵敏度高因物体温度的微小变化会引起辐射功率的较大变化,容易被探测器探出,故红外测温的可测温差很小,几乎达到零点几摄氏度。4.准确度高红外测温时非接触测量,不破坏物体本身的温度分布,因而所测温度真实,准确,误差可达0.1摄氏度以下。5.测温范围广测温范围可从负几十摄氏度到正几十摄氏度。4.红外测温的原理51单片机作为整个系统的控制中心,负责控制启动温度的测量,接受测量的数据,计算温度值,并根据取得的键值控制播报显示过程;红外测温模块负责温度的测量,采集,并将采集数据通过数据端口传送到51单片机;通过启动红外测温模块,测量结束返回测量结果,待MCU运算处理得出目标温度和环境温度后将结果进行显示。该测温仪器以51单片机为控制核心,由于红外测温模块具有SPI接口,故可以直接与单片机的I/O口相连接,不需要放大信号或调理电路。4.151单片机51单片机是在一块芯片中继承了CPU,RAM,ROM,定时/计数器和多功能I/O接口等计算机所需要的基本功能部件的大规模集成电路,又称MCU。51单片机包含以下几个部件:一个8位CPU一个片内振荡器及时钟电路4KBROM程序存储器;128BRAM数据存储器可寻址64KB外部数据存储器和64KB外部程序存储器的控制电路。32条可编程的I/O线(4个8位并行I/O接口)2个16位的定时/计数器1个可编程全双工串行接口,5个中断源,2个优先级嵌套中断结构。4.2红外测温模块红外测温模块采用非接触测温手段,解决了传统测温中需要接触待测物体的问题,具有回应速度快,测量精度高,测量范围广以及可同时测量目标温度和环境温度的特点。测量回应时间大约为0.5S,而且,它具备SPI接口,可以很方便的与MCU传输数据。红外测温模块参数如表4.1所示。4.2.1红外测温模块的引脚介绍红外测温模块的引脚图如图4.5所示,其中:V为电源电压引脚VCC,VCC一般为3V到5V之间的电压,一般取VCC为3.3;D为数据接收引脚,没有数据接收时,D为高电平;C为2KHzClock输出引脚;G为接地引脚;A为测温启动信号引脚,低电平有效。4.2.2红外测温模块时序图红外测温时序图如图4.6所示,为SPI数据格式,在CLOCK的下降沿接收数据,一次温度测量需要接收5个字节的数据,这五个字节中:Item中0x4c表示测量目标温度,0x66表示测量环境温度;MSB为接收温度的高八位数据;LSB为接收温度的第八位数据;SUM为验证码,接收正确时SUM=item+MSB+LSB;;CR为结束标志,当CR为0x0Dh时表示完成一次温度数据的接收。一帧数据包括五个字节,每个字节代表含义如下:Item:”L”(4CH):代表此阵数据为目标温度“f”(66H):代表此帧数据位环境温度MSB:8bitDataMsbLSB:8bitDataLsbSum:item+MSB+LSB=SUMCR:0DH,结束码4.2.3红外测温模块温度值的计算无论测量环境温度还是目标温度,只要监测到Item为0x4cH或0x66H同时检测到CR为0x0dH,它们的温度计算方法都相同。计算公式为:温度=Temp/16-273.15(4-1)其中Temp为十进制,而测量结果为16进制,把它直接转换为十进制即可。5键盘显示电路5.1键盘显示电路本设计中采用8位数码管显示,设计中用到的硬件电路如图所示5.2模块功能及接口说明LED键盘显示模块基本特性和主要功能如下:1.LED键盘模块采用DC5V供电,也可以采用DC3.3V供电;2.8个发光二极管,可以作为显示状态信息使用3.一个电位器,可以提供0~5V的模拟电压信号或者0~3.3V的模拟电压,与模组输入的VDD有关。6接线与烧入程序6.1接线根据所编的程序接线为:V接电源VCC;D接P1.2;C(时钟)接P3.2;G接地GND;A(片选)接P1.2;蜂鸣器BEEP接P1.36.2烧入程序安装驱动XLISP,将51单片机通过USB接口接到计算机中,通过XLISP软件自动查找串口,使计算机检测到51单片机,从而进行通讯。然后将HEX文件通过XLISP软件烧入51单片机中。7程序#includereg51.h//Ctop3.2始终为3.2口sbitD=P1^1;//数据位sbitA=P1^2;//片选sbitBEEP=P1^3;//蜂鸣器unsignedcharcodeshow[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};//字符unsignedcharcodesome[]={1,2,4,8,16,32,64,128};//数码管显示的选定unsignedcharbuff[5];//定义一个数组voiddelay(unsignedint);//定义延时子程序unsignedchararray=0,b=0,dat=0,flag=0;unsignedinttemp,time=0;intetemp,otemp;main(){unsignedi,j;EA=1;EX0=1;IT0=1;//中断初始化A=1;A=0;A=1;A=0;TMOD=0x01;ET0=1;TH0=-1000/256;TL0=-1000%256;while(1)//重复显示{for(i=0;i8;i++){switch(i){case0:j=etemp/10;break;//取出环境温度的十位case1:j=etemp%10;break;//取出环境温度的个位case2:P0=0xf0;break;case3:P0=0xa9;break;//显示摄氏度的字符case4:j=otemp/10;break;//取出环境温度的十位case5:j=otemp%10;break;//取出环境温度的个位case6:P0=0xf0;break;case7:P0=0xa9;break;//显示摄氏度的字符}if(otemp30)TR0=1;//elseTR0=0;//如果目标温度大于30摄氏度蜂鸣器就响P2=~some[i];//数码管显示if(i==0||i==1||i==4||i==5)P0=show[j];//当显示温度的数值时在对应的数码管上显示对应的字符delay(100);}}}int0()interrupt0//中断程序{delay(1);if(D)dat|=0x01;//如果有数据则记录在dat中elsedat|=0x00;if(b==7)//如果8位数据完了,就将这个字节数据存在数组中{buff[array]=dat;array++;b=0;dat=0;}else{dat=(dat1);b++;}if(array==5){array=0;flag=1;}//数组满了就送显示if(flag){if(buff[0]==0x66||buff[0]==0x4c)//显示目标和环境温度{temp=buff[1];//把第一个字节送给temptemp=(temp
本文标题:基于51单片机红外测温的设计与实现
链接地址:https://www.777doc.com/doc-2567908 .html