📄 tem_meature.c
字号:
//====================================================================================
//文 件 名: Tem_Meature.c
//功能描述: 温度测量驱动程序
//维护记录: 2006-6-27 v1.0 by hongyan.Feng
//====================================================================================
#include "SPCE061A.h"
extern unsigned int ADGet(void); //申明热敏电阻上分到电压的A/D转换函数
unsigned int TADData,TCounter;
float V[125]={1.576304,1.558983,1.541521,1.523924,1.506198,1.488351,1.470389,1.452319,1.434150,1.415889,
1.397544,1.379122,1.360632,1.342083,1.323481,1.304837,1.286158,1.267453,1.248731,1.230000,
1.230000,1.211269,1.192547,1.173842,1.155163,1.136519,1.117917,1.099368,1.080878,1.062456,
1.044111,1.025850,1.007681,0.989611,0.971650,0.953802,0.936076,0.918479,0.901017,0.883696,
0.866524,0.849505,0.832646,0.815952,0.799428,0.783080,0.766911,0.750927,0.735131,0.719528,
0.704121,0.688913,0.673907,0.659107,0.644514,0.630131,0.615961,0.602004,0.588263,0.574738,
0.561431,0.548342,0.535473,0.522823,0.510392,0.498181,0.486190,0.474417,0.462862,0.451525,
0.440405,0.429499,0.418808,0.408329,0.398061,0.388003,0.378152,0.368507,0.359066,0.349826,
0.340785,0.331941,0.323291,0.314834,0.306566,0.298485,0.290588,0.282873,0.275336,0.267976,
0.260789,0.253772,0.246923,0.240239,0.233717,0.227353,0.221146,0.215092,0.209187,0.203431,
0.197819,0.192348,0.187016,0.181821,0.176758,0.171826,0.167021,0.162341,0.157783,0.153345,
0.149023,0.144815,0.140719,0.136734,0.132852,0.129076,0.125401,0.121825,0.118346,0.114962,
0.111669,0.10847,0.105353,0.1023233,0.099378}; //用来存放0~125摄氏度对应热敏电阻分到的标定电压值
//====================================================================================
//语法格式: void Temp_Init(void)
//功能描述: 温度测量初始化
//入口参数: 无
//出口参数: 无
//维护记录: 2006年6月27 by hongyan.Feng
//====================================================================================
void Temp_Init(void)
{
*P_IOA_Dir &= 0xfffe; //初始化IOA0(LINE1)为悬浮输入口
*P_IOA_Attrib |= 0x0001;
*P_IOA_Data &= 0xfffe;
}
//====================================================================================
//语法格式: unsigned int Temp_Measure(void)
//功能描述: 温度测量,测量得到的数据存放在iTemp中,并语音播放这个数据
//入口参数: 无
//出口参数: 温度值
//维护记录: 2006年6月27 by hongyan.Feng
//====================================================================================
unsigned int Temp_Measure(void)
{
unsigned int x,iTemp,Flag; //ADData用来存放A/D转换的数据,x用来循环,iTemp用来存放温度值
float iADData; //iADData用来存放转换后的电压数据
iADData = 0.0000; //初始化为0
Flag = 1;
Temp_Init(); //端口初始化
*P_INT_Ctrl = 0x0010;
__asm("int irq");
while(Flag)
{
if(TCounter==10)
{
__asm("int off");
TADData = TADData/10; //取10次测量数据的平均值
iADData = iADData+TADData*3.3/0x03ff;//把A/D转换后数据计算成电压,并进行累加
for(x=0;x<125;x++) //查表,根据测量到的电压计算温度值
{
if(iADData<V[x]&&iADData>V[x+1])
iTemp = x; //保存温度值
*P_Watchdog_Clear = 0x0001;
}
TCounter = 0;
TADData = 0;
Flag = 0;
}
*P_Watchdog_Clear = 0x0001; //清看门狗
}
return iTemp; //返回温度值
}
//====================================================================================
//语法格式: void Delay(unsigned int i)
//功能描述: 延时函数
//入口参数: i延时时间
//出口参数: 无
//维护记录: 2006年6月27 by hongyan.Feng
//====================================================================================
void Delay(unsigned int i)
{
int m,n;
for(m=0;m<i;m++)
for(n=0;n<0x03ff;n++)
*P_Watchdog_Clear = 0x0001;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -