?? tem_meature.c
字號(hào):
//====================================================================================
//文 件 名: Tem_Meature.c
//功能描述: 溫度測(cè)量驅(qū)動(dòng)程序
//維護(hù)記錄: 2006-6-27 v1.0 by hongyan.Feng
//====================================================================================
#include "SPCE061A.h"
extern unsigned int ADGet(void); //申明熱敏電阻上分到電壓的A/D轉(zhuǎn)換函數(shù)
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}; //用來(lái)存放0~125攝氏度對(duì)應(yīng)熱敏電阻分到的標(biāo)定電壓值
//====================================================================================
//語(yǔ)法格式: void Temp_Init(void)
//功能描述: 溫度測(cè)量初始化
//入口參數(shù): 無(wú)
//出口參數(shù): 無(wú)
//維護(hù)記錄: 2006年6月27 by hongyan.Feng
//====================================================================================
void Temp_Init(void)
{
*P_IOA_Dir &= 0xfffe; //初始化IOA0(LINE1)為懸浮輸入口
*P_IOA_Attrib |= 0x0001;
*P_IOA_Data &= 0xfffe;
}
//====================================================================================
//語(yǔ)法格式: unsigned int Temp_Measure(void)
//功能描述: 溫度測(cè)量,測(cè)量得到的數(shù)據(jù)存放在iTemp中,并語(yǔ)音播放這個(gè)數(shù)據(jù)
//入口參數(shù): 無(wú)
//出口參數(shù): 溫度值
//維護(hù)記錄: 2006年6月27 by hongyan.Feng
//====================================================================================
unsigned int Temp_Measure(void)
{
unsigned int x,iTemp,Flag; //ADData用來(lái)存放A/D轉(zhuǎn)換的數(shù)據(jù),x用來(lái)循環(huán),iTemp用來(lái)存放溫度值
float iADData; //iADData用來(lái)存放轉(zhuǎn)換后的電壓數(shù)據(jù)
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次測(cè)量數(shù)據(jù)的平均值
iADData = iADData+TADData*3.3/0x03ff;//把A/D轉(zhuǎn)換后數(shù)據(jù)計(jì)算成電壓,并進(jìn)行累加
for(x=0;x<125;x++) //查表,根據(jù)測(cè)量到的電壓計(jì)算溫度值
{
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; //返回溫度值
}
//====================================================================================
//語(yǔ)法格式: void Delay(unsigned int i)
//功能描述: 延時(shí)函數(shù)
//入口參數(shù): i延時(shí)時(shí)間
//出口參數(shù): 無(wú)
//維護(hù)記錄: 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;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -