电子体温计.docx
《电子体温计.docx》由会员分享,可在线阅读,更多相关《电子体温计.docx(26页珍藏版)》请在冰点文库上搜索。
![电子体温计.docx](https://file1.bingdoc.com/fileroot1/2023-6/12/17bf2195-1ac5-4fa7-8bda-ea272831634a/17bf2195-1ac5-4fa7-8bda-ea272831634a1.gif)
电子体温计
课程设计说明书
设计题目:
电子体温计设计
专业:
机械电子工程
班级:
学号:
姓名:
指导教师:
二〇一三年十一月
任务分配
总体方案设计:
软件系统设计:
硬件系统设计:
绘图:
软件编程:
附上整体效果图【图片】
“更新域”,然后“更新整个目录”。
打印前,不要忘记把上面“Abstract”这一行后加一空行
绪论
体温测量的历史,最早出现在16世纪。
当时空气热膨胀是Saatorio主要根据的原理,制出了第一支体温计,用于测量口腔温度体。
到20世纪初,才开始设计采用水银来制作体温计,至今水银体温计在家庭等处,得到了广泛的应用。
埃布斯坦在1928年发表的报告中指出,水银温度计当时除测量口腔及腋下的温度外,还可以用来测量颈部、外耳,大腿根部及尿温。
水银体温计的原理就是玻璃球内积存的水银温度和被测量皮肤的温度相等。
由于水银体温计精度很高、使用方便、并且易于携带,因而很多人喜欢采用水银体温计。
再加上体温计测温方法及其结构都已完全成熟,并没太多的改进余地,人们对水银体温计的研究热情逐渐降低,到现在水银体温计几乎已经没有什么发展的余地。
再加上由于测量体温用水银体温计很不方便,如果打破摔坏体温计,水银的污染也很严重等,为了准确测量人体的局部温度,促使人们不得不开发了多种多样的测温方式和测温器件设备。
现在其它不同种类的电子仪器测量体温也日益普及,已有许多医院采用了电子体温计来测量体温。
这一事实至少说明了,电子测温仪器的性能与水银温度计的性能已经很接近了。
因此,鉴于传统的水银体温计多种因素,诸如汞的污染及其携带不方便易破碎,尤其是测量时间过长等缺点,本课题为解决此问题设计出一种数字式电子体温计。
它在稳定性及响应时间上比传统的水银体温计有着显著的优势,精度要求也能和传统的水银体温计相媲美。
单片机智能化仪表在测量仪表的方面,有着很大的发展趋势。
它给日常生活带来多方面的进步,其中数字温度计就是一个典型的例子,家庭、医院等随处可见,为了能更加满足人们的需要,数字体温计正在不断的进行更新换代。
现在所使用的温度计还有很多是水银、酒精或煤油。
温度计的分辨力都是为1~℃。
这些普通水银温度计的刻度间隔通常都很密集,读数比较困难,分辨的不准确,而且他们有着比较大的热容量,需要很长时间达到热平衡,因此温度数值很难读准,使用非常不方便。
本设计所介绍的电子体温计,主要用于家庭等普通环境。
与传统的水银温度计相比,电子体温计易于读数,广泛的测温范围,测温精度比较高等优点,其输出温度采用数字显示。
现在温度计发展非常迅速,从最原始的玻璃管温度计发展到了现在的热电偶温度计、热电阻温度计、集成的半导体数字温度计等。
在电子式温度计中,最重要组成部分就是传感器。
温度计的测量范围、精度、控制范围和用途取决于传感器的精度、灵敏度等等。
现在的温度传感器被广泛的应用,目前已经研制出各种各样的新型温度传感器,从而现在温度监控系统的功能日趋强大。
第一章任务要求
该系统的用于体温检测,能准确快速地测量人体体温,并且需要实时的显示当前的温度。
与传统的水银玻璃体温计相比,电子体温计具有方便的读数,高精度的测量,测量时间比较短,能记忆并有与其它体温计不同的蜂鸣提示的优点。
测温范围32°C~43°C,误差在±°C以内,当温度超过°C时,可以报警,采用LED数码管直读显示。
并且能够实时的宽范围的温度检测,能清楚的显示与读出数据。
第二章设计思路
本研究旨在设计一个电子体温计,主要控制器采用单片机STC89C52,传感器采用美国DALLAS半导体公司生产的DS18B20智能型传感器。
该传感器检查的温度是32°C~43°C之间,检查的分辨率为±°C。
当温度出现不同寻常的时候,不在设置范围内时,可以报警,且是通过蜂鸣器。
研究工作总体包括以下多个方面:
了解电子体温计的工作原理,典型结构,发展历史及国内外的研究和发展的现状;研究电子体温计的两个最主要的核心模块:
DS18B20传感器控制和STC89C52单片机主控制器。
第三章系统设计
为满足系统的三个需求:
(1)实时的温度检测。
(2)数据能清楚的显示与读出。
(3)温度变化的曲线能够实时的描绘出来。
整个电子体温计系统应该设计必须含有以下几个模块:
a.温度采集模块。
b.显示模块。
c.串口通信接口。
d.核心系统模块。
图电子体温计系统框图
第四章方案设计与论证
方案一:
本电路设计的电子温度计,如图,热敏电阻器件在测温电路中的感温效应。
随被测温变化,采集的电压或电流,进行模数转换后,再用单片机进行加工处理采样的数据,就可以通过显示电路显示出来。
但是热敏电阻测量体温有许多问题,存在测量时间较长等问题。
图基于热敏电阻的电子体温计系统框图
方案二:
红外体温计是非接触式的,算是高端的技术,最近几年才发展起来的。
主要是靠红外传感器感应接收人体辐射的红外线,通过模数转换后,用单片机处理采样的数据,显示电路就可以显示出来数据。
但是这个方案制作成本费用高,耗时比较长,主要是体现在硬件电路与软件程序复杂。
方案三:
数字温度计采用单片机的温度传感器设计,各种各样的精度高的温度计不断出现,不断发展。
数字温度检测要求必须满足的条件是检测的精度高于控制的精确度,否则无法控制的体温计测量精度的要求。
所以电子体温检测的一项重要的性能参数其中有一项就是测量精度。
因此数字体温检测追求的一个目标就是高精度。
检测手段不断的现代化,现在检测能达到的很高的灵敏度、精度及测量范围等。
同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的技术支持。
目前市场上出现了很多传感器,很多高精度的传感器已经出现,而且精度越来越高。
DS18B20将会不断的完善,从而测量的更加精确、更加简单,更加人性化,更满足系统设计的需求。
传统的传感器热电阻、热电偶等,只有通过外部硬件的支持,测出的电压,才会转换成对应的温度值。
比如说模数转换是不可少的,还有其他的等等一些硬件电路,比较复杂。
有如下缺点:
软件调试复杂;硬件电路复杂;制作成本高。
本电子体温计采用DS18B20作为检测元件,DS18B20是一种改进型智能温度传感器,最高分辨率可达°C,测温范围为-55~125°C。
其中在32ºC~45ºC的范围内的测量精度为±ºC,此传感器可适用于体温检测。
它具有小型化、性能高、耗能低、抗干扰能力强、易配微处理器等。
并且DS18B20采用单片机与三线制相连,可以直接读出被测的温度值,而且减少了外部的硬件电路设计,具有低成本和易使用的特点。
综上所述,决定采取DS18B20作电子体温计为选择方案。
方案确定
根据以上需求分析,本次设计采用方案三来设计电子体温计。
第五章硬件电路设计
传感器电路
美国DALLAS半导体公司设计生产一种DS18B20温度传感器,并且DS18B20是一种智能化的温度传感器。
新出来的,比较流行的温度传感器,是与平常传统的热敏电阻等测量温度的元件相比较,它提供9位(二进制)温度读数,并且可以指示器件的温度,而且能够直接读出被测的温度数值。
DS18B20的性能和特点如以下几点,都是很好的优点:
其一是多个DS18B20可以并联在唯一一个单独的三线上,并且能够实现多点组网功能;其二是独特单独的单线接口仅仅需要一个端口引脚就可以进行通信;其三是用户可以自己定义的非易失性温度报警的设置;不需要外部的外围器件;其余的是可以通过数据线供电,电压范围为是在~;当待机的时候,功耗为零;温度以9~12位的数字两读出;负电压特性,当电源极性接反的时候,温度计不会因发热而烧毁,只是不能正常工作。
报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。
DS18B20四个比较重要的主要的数据部件
(1)ROM能够用64位进行光刻,并且出厂前已经光刻好了光刻ROM中的64位序列码,因此它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
产品类型标号是在开始8位(28H),接着的DS18B20自身的序列码是48位的,56位校验码是在最后8位。
(2)DS18B20中有个温度传感器,并且该传感器是用来测量人体体温的。
每一个DSl820中,包括独一无二的序列码,序列码是64位长的。
DSl820内部的ROM(只读存贮器)就是用来装填该序号值的。
产品类型编码是在前面的8位(DSl820编码均为10H)。
接着是每个器件唯一的序列码,在中间的48位,最后面的8位是前面56位的CRC(循环冗余校验)码,而循环冗余校验码的公式是(CRC=X8+X5+X4+1)。
每一个DS18B20都各不相同,主要体现是在光刻ROM的作用,这样就可以实现多个DS18B20挂接在一根总线上。
图为DS18B20的实物图。
图不锈钢封装防水型DS18b20温度探头
图DS18B20内部结构图
图DS18B20电路图
数字温度传感器DS18B20介绍
DS18B20的主要特性:
(1)适应更加宽广的电压范围,电压范围:
~,并且采用数据线供电,与此同时也可以采用寄生电源方式;
(2)DS18B20还具有的很多强大的功能,其中一项就是支持多点的组网功能,在唯一单独的三线上,就可以让多个DS18B20功能并联,实现组网多点测量体温;
(3)具有很独特的单线接口方式,需要一条口线即可让DS18B20在与微处理器连接,并且能够实现微处理器与DS18B20的双向通讯;
(4)不需要用其他的任何外围的元器件DS18B20就可以使用,一只三极管的集成电路包含了全部传感元件及转换电路;
(5)温范围-55℃~+125℃,在-10~+85℃的时侯精度是±℃左右;
(6)有9~12位的分辨率是可以用来编写程序的,对应的可分辨温度依次分别为℃、℃、℃和℃,测量温度可实现精度高;
(7)温度转换为数字,且条件是在9位分辨率时,最多花费,而在12位分辨率时,把温度值转换为数字,速度更快,最多在750ms内;
(8)测量结果可以输出直接明确的数字的温度信号,通过串行,CPU接受"一线总线",同时可以传送CRC校验码,拥有极强的抗干扰纠错能力;
(9)负压特性:
当接反电源极性的时候,芯片不会发热,因而更加不会被烧毁,但之后不能正常工作。
封装管脚图
单片机电路
STC89C52是一种CMOS8位微小型控制器,其性能高、功耗低,并且具有可编程Flash存储器,数据容量是8K。
在单芯片上,STC89C52为众多嵌入式控制系统应用提供有效、灵活的解决方案主要其原因就是拥有可编程Flash和灵活的8位CPU。
具有以下标准功能:
512bitRAM,8kbitFlash,32位I/O口线,看门狗的定时器,内置4KBEEPROM,MAX810复位电路,单个6向量2级中断结构,三个16位计数器/定时器,全双工串口。
另外静态逻辑操作是STC89X52降至0Hz,并且支持2种软件,与此同时,还可选择节电模式。
当CPU停止工作,就是属于空闲模式。
此时允许RAM、串口、计数器/定时器、中断时候继续工作。
保存RAM内容,可以在掉电保护方式下,并且可以把振荡器冻结了,单片机停止一切工作,直到下一个硬件复位或中断为止。
最高运作频率35Mhz,6T/12T可选。
STC单片机引脚说明:
图STC89S52管脚图
(1)GND:
接地
(2)VCC:
电源电压
(3)RST:
重新设置。
当振荡器复位器件时,要保证持续RST脚两个机器周期的高电平时间。
(4)/EA/VPP:
在此时间段外部程序的存储器(0000H-FFFFH),就必须是在/EA保持持续电平低时,不管是否有内部的程序存储器。
/EA将内部锁定为恢复设置,此时应当注意加密方式1;当/EA端保持电平高的时候,在FLASH可以编写程序的期间。
此间的内部的程序存储器,施加12V编程电源在这个引脚上,也可以用于(VPP)。
(5)XTAL1:
输入内部时钟的工作电路以及输入反向振荡的放大器。
(6)XTAL2:
为反向振荡器的输出。
(7)P0口:
总线复用口是P0口,而且是数据/地址合起来的,也即是一个8位开路漏级双向I/O口。
作为输出口用时,每管脚可吸收8TTL门电流。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
当P0口的管脚第一次写1时,被定义为高阻态输入。
当FIASH进行校验时,P0外部必须被拉高,是由于P0输出原码,在FIASH编程时,P0口作为原码输入口。
(8)P1口:
把1写在P1口管脚之后,高电平就会在内部产生,并且可以用作输入。
4TTL的门电流能够被P1口缓冲器可以能够吸收或输出,主要原因是P1口内部带一个可以提供上拉电阻的8位双向I/O口。
电流在内部被上拉,当下拉为低电平在P1口被外部产生的时候,电流将会被输出。
地址接收是当P1口作为第八位,并且在FLASH编程和校验的时侯。
(9)P2口:
4个TTL的门电流可以在P2口的缓冲器可吸收或输出,P2口内部带一个8位双向I/O口,并且是可以上拉电阻的。
并因当P2口的管脚被外部拉低,这个是作为输入的时侯来的,将输出电流。
这是由于内部上拉的缘故。
P2口在FLASH编程和校验时接收控制信号和高八位地址信号。
P2口当用在16位地址外部数据存储器,并且进行存取或外部程序存储器的时候,P2口输出地址的高八位。
管脚内部有上拉电阻拉高,主要是当P2口被写“1”时,并且把P2口当作为输入。
它优势有利用内部上拉,并且在给出地址“1”的时侯,当进行读写外部八位地址数据存储器的时候,P2口输出其特殊功能寄存器的内容。
(10)P3口:
P3口内部的管脚是8个带上拉电阻的双向I/O口,可吸收或输出4个TTL门电流。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
当P3口写入“1”后,用作输入,与此同时,并且内部电平上拉为高电平。
AT89C51的某些特殊功能口可以采用P3口来实现,如下表1所示:
表P3特殊功能口①
管脚
备选功能
RXD
串行输入口
TXD
串行输出口
/INT0
外部的中断0
/INT1
外部的中断1
T0
外部的输入记时器0
T1
外部的输入记时器1
/WR
写选通的外部数据存储器
/RD
读选通的外部数据存储器
P3口同时为闪烁编程和编程校验,且可以接收一部分控制信号。
(11)/PSEN:
外部程序存储器之中有选通信号在。
在由外部程序存储器工作时候,取指期间,两次/PSEN有效,且在每个机器周期中。
但两次有效的/PSEN信号将不出现在访问外部数据存储器时。
(12)ALE
感器技术[M].西南交通大学出版社,2003
[4]黄继昌.传感器工作原理及应用实例[M].人民邮电出版社,1998
[5]陈杰.传感器与检测技术[M].高等教育出版社,2002
[6]金发庆.传感器技术与应用(第二版)[M].北京:
机械工业出版社,2006
[7]沙占友,马洪涛,安国臣,孟志永.新型智能温度传感器的与原理及应用,电子测量与仪器学报第16卷增刊.:
144-146
[8]沙占友.智能化温度测试系统的优化设计.电子测量与仪器学报第16卷增刊.:
125-127
[9]高吉祥.数字电子技术[M].电子工业出版社,2003
[10]沈任元,吴勇.数字电子技术[M].北京:
机械工业出版社,2005
[11]康华光.电子技术基础模拟部分[M].高等教育出版社,1988
[12]卜益民.模拟电子技术[M].北京:
邮电大学出版社,2005
[13]王港元.电工电子实践指导[M].南昌:
江西科学技术出版社,2005
[14]谢自美.电子线路设计[M].武汉:
华中科技大学出版社,2000
[15]冯璐.免疫金渗滤法定量检测研究[M].河北工业大学,2008
[16]金毅.温度的测量史[M].教学仪器与实验,2011年27卷8期
[17]张晔等.DS18820的液体温度测量系统设计[M].测试技术学报,2010年24卷6期
附录
#include<>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<>
unsignedcharflag_get=0;
sbitDQ=P3^3;//ds18b20端口
unsignedcharTemperatureFlag=0;
/******************************************************************/
/*函数声明*/
/******************************************************************/
unsignedintReadTemperature(void);
voidInit_DS18B20(void);
unsignedcharReadOneChar(void);
voidWriteOneChar(unsignedchardat);
voiddelay(unsignedinti);
voidReadToData();
voidputchar(unsignedcharbuff);
voidDisplay();
/*------------------------------------------------
延时子程序
------------------------------------------------*/
voiddelay(unsignedintcnt)
{
EA=0;//总中断打开
cnt=cnt*2;
while(--cnt);
EA=1;
}
/******************************************************************/
/*串口初始化函数*/
/******************************************************************/
voidUARTinit(void)
{
SCON=0x50;/*SCON:
模式1,8-bitUART,使能接收*/
TMOD|=0x20;/*TMOD:
timer1,mode2,8-bitreload*/
TH1=0xFD;/*TH1:
reloadvaluefor9600baud@*/
TR1=1;/*TR1:
timer1run*/
TI=1;
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
P3=0XFF;
UARTinit();
InitLcd();//初始化LCD
DelayMs(15);//延时保证信号稳定
while
(1)
{
ReadToData();
Display();
}
}
/******************************************************************/
/*初始化*/
/******************************************************************/
voidInit_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ复位
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(10);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay(5);
}
/******************************************************************/
/*读一个字节*/
/******************************************************************/
unsignedcharReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay(5);
}
return(dat);
}
/******************************************************************/
/*写一个字节*/
/******************************************************************/
voidWriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(5);
}
/******************************************************************/
/*读取温度*/
/******************************************************************/
unsignedintReadTemperature(void)
{
unsignedchara=0;
unsignedintb=0;
unsignedintt=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0x44);//启动温度转换
delay(200);//用显示代替显示
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度
a=ReadOneChar();//低位
b=ReadOneChar();//高位
b<<=8;
t=a+b;
return(t);
}
/******************************************************************/
/*读取到显存*/
/******************************************************************/
void