电子体温计在使用时开机后,首先要听到滴的一声,然后将体温计的探头插入需要测量地方。如果是进行口腔测量,要将探头置于口腔舌根下,可测得口腔的温度。
如果是进行腋窝处测量,要将探头置于腋窝中心处进行测量。进入的深度不可以超过电子体温计中长的1/2。电子体温计能快速准确的测量人体体温,与传统的水银体温计相比,具有读数方便、测量时间短、测量精度高的优点。尤其是电子体温计不含水银,对人体及周围环境无害,特别适用于家庭、医院等场合使用。

电子体温计由温度传感器,液晶显示器,纽扣电池,专用集成电路及其他电子元器件组成。电子体温计利用某些物质的物理参数,如电阻、电压、电流等,与环境温度之间存在的确定关系,将体温以数字的形式显示出来。其不足之处在于示值准确度受电子元件及电池供电状况等因素影响,不如玻璃体温计。利用了半导体电阻随温度变化而变化的特征。
电子温度计准吗
目前临床上最常使用的温度计除了水银温度计外,就是电子温度计。通常情况下电子温度计只要没有损坏,测量的数值是比较准确的。目前所使用的电子温度计主要是额温枪和耳温枪两种,通常认为耳温枪比额温枪测量的结果要更准确。
电子温度计多少度算发烧
电子温度计的温度是参考人体的腋温37.3度以上就算是发热,37.3度到38度是低热,38度到39度是中等度发热,超过39度就是高热。但是由于电子温度计,它本身受仪器的准确性影响,还有就是周围环境的影响。因此,如果要准确的测量体温,还是建议测量腋温。
现在已设计好基于DS18B20体温计的电路图,请高人指导,如何进行程序编写及软件仿真,来达到0.1的精度。
1,电桥的电阻值与后级采样差分输入电压范围和你的测温范围有关。具体计算可根据欧姆定律来计算,输出结果为 k(放大倍数)*差分电压。
2,电路以及参数确定后,温度多少,你的采样电压就是多少,只跟温度有关,与你软件量程设置无关。
3,转换关系是指你的采样电压和你计算出最后的温度的关系,也可根据欧姆定律反向计算出电阻值后按照PT100的温度表检索温度,或者采取校准的方式来实现。
回答帮助了你的话记得采纳答案撒。
#include<reg51.h>
#include<intrins.h>
#define Uchar unsigned char
sbit DQ=P2^0; //DS18B20数据端
sbit RLED=P2^1;//红色,代表正温度
sbit GLED=P2^2;//绿色,代表负温度
sbit Q1=P2^4; //数码管位选端1
sbit Q2=P2^5; //数码管位选端2
sbit Q3=P2^6; //数码管位选端3
sbit Q4=P2^7; //数码管位选端4
bit minus_flag; //负温度标记
Uchar Temperature,High,Low;
Uchar code Table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF}; //0-9,-
void Delay(Uchar time)
{
while(time--);
}
//***************************************
//函数名称:Ds18b20_Init
//创建日期:2012.2.20
//函数功能:对DS18B20进行初始化
//输入参数:void
//输出参数:void
//返 回 值:void
//**************************************
void Ds18b20_Init(void)
{
Uchar x; //可以不使用x
DQ = 1; //总线初始化状态
Delay(20);//延时一段时间
DQ = 0; //单片机将总线拉低
Delay(250); //延时约500us
DQ = 1; //上升沿
Delay(30); //延时约60us
x = DQ; //x=0则初始化成功,x=1则初始化失败
while(x);
}
//***************************************
//函数名称:Write_Ds18b20
//创建日期:2012.2.20
//函数功能:向DS18B20写入数据
//输入参数:dat
//输出参数:void
//返 回 值:void
//说 明:
//修*改*历*史*
//**************************************
void Write_Ds18b20(Uchar dat)
{
Uchar k;
for(k=0; k<8; k++) //循环8次写一个字节
{
DQ = 1; //总线初始化
_nop_();
DQ = 0;
Delay(5);
DQ = dat&0x01;
Delay(30);
DQ = 1;
dat>>=1; //数据右移一位
}
}
//***************************************
//函数名称:Read_Ds18b20
//创建日期:2012.2.20
//函数功能:从DS18B20读出数据
//输入参数:void
//输出参数:temp
//返 回 值:temp
//说 明:
//修*改*历*史*
//**************************************
Uchar Read_Ds18b20(void)
{
Uchar temp,q;
for(q=0; q<8; q++)
{
DQ = 1; //总线初始化
_nop_();
DQ = 0; //拉低总线
Delay(2);
DQ = 1;//释放总线
Delay(5);
if(DQ)

{
temp|=0x80;//temp高位置1
}
temp>>=1;
Delay(30);
}
return (temp);
}
//***************************************
//函数名称:Temp_Exchange
//创建日期:2012.2.20
//函数功能:温度转换
//输入参数:void
//输出参数:void
//返 回 值:void
//说 明:
//修*改*历*史*
//**************************************
void Temp_Exchange(Uchar H_data,Uchar L_data)
{
if(H_data>>3) //计算负温度
{
minus_flag = 1;
GLED = 0;//绿色LED点亮
Temperature=((~((H_data*256)|L_data))+1)*0.0625*10; //精确到0.1
}
else //计算正温度
{
minus_flag = 0;
RLED = 0;//红色LED点亮
Temperature = ((H_data*256)|L_data)*0.0625*10;//精确到0.1
}
}
//***************************************
//函数名称:LED_Display
//创建日期:2012.2.20
//函数功能:数码管显示
//输入参数:void
//输出参数:void
//返 回 值:void
//说 明:
//修*改*历*史*
//**************************************
void LED_Display(void)
{
P0 = Table[10]; //符号位
if(minus_flag)//显示-
{
Q1 = 0;
Delay(10);
Q1 = 1;
}
else //不显示-
{
Q1 = 1;
Delay(10);
}
P0 = Table[Temperature/100]; //十位
Q2 = 0;
Delay(10);
Q2 = 1;
P0 = Table[Temperature%100/10]-0x80;//个位(带小数点)
Q3 = 0;
Delay(10);
Q3 = 1;
P0 = Table[Temperature%10]; //小数位
Q4 = 0;
Delay(10);
Q4 = 1;
}
//***************************************
//函数名称:main
//创建日期:2012.2.20
//函数功能:程序执行入口
//输入参数:void
//输出参数:void
//返 回 值:void
//说 明:
//修*改*历*史*
//**************************************
void main(void)
{
while(1)
{
Ds18b20_Init(); //对DS18B20进行初始化
Write_Ds18b20(0xCC);//跳过ROM序列号
Write_Ds18b20(0x44);//温度转换
Ds18b20_Init(); //对DS18B20进行初始化
Write_Ds18b20(0xCC); //跳过ROM序列号
Write_Ds18b20(0xBE); //读取暂存数据
Low=Read_Ds18b20(); //读取温度低位

High=Read_Ds18b20(); //读取温度高位
Temp_Exchange(High,Low); //温度转换
LED_Display(); //温度显示
}
}


