?? daq._c
字號(hào):
//完成溫度的采集
#include "iom128v.h"
#include "eeprom.h"
#include "MyMacro.h"
extern float Temperature;
extern unsigned int SavedNum;
extern unsigned char MCUState;
extern unsigned char TimeScale;
extern void Refresh_Temp(void);
extern void Delay(unsigned int);
extern void EnableWatchDog(void);
extern void ClearWatchDog(void);
unsigned int EEPROM_addr=4;
float Pt1000[81]={
185.2, //-200 73.15K
228.3, //-190
271.0, //-180
313.4, //-170
355.4, //-160
397.2, //-150
438.8, //-140
480.0, //-130
521.1, //-120
561.9, //-110
602.6, //-100
643.0, //-90
683.3, //-80
723.3, //-70
763.3, //-60
803.1, //-50
842.7, //-40
882.2, //-30
921.6, //-20
960.9, //-10
1000.0, //0 273.15K
1039.0, //10
1077.9, //20
1116.7, //30
1155.4, //40
1194.0, //50
1232.4, //60
1270.8, //70
1309.0, //80
1347.1, //90
1385.1, //100
1422.9, //110
1460.7, //120
1498.3, //130
1535.8, //140
1573.3, //150
1610.5, //160
1647.7, //170
1684.8, //180
1721.7, //190
1758.6, //200
1795.3, //210
1831.9, //220
1868.4, //230
1904.7, //240
1941.0, //250
1977.1, //260
2013.1, //270
2049.0, //280
2084.8, //290
2120.5, //300
2156.1, //310
2191.5, //320
2226.8, //330
2262.1, //340
2297.2, //350
2332.1, //360
2367.0, //370
2401.8, //380
2436.4, //390
2470.9, //400
2505.3, //410
2539.6, //420
2573.8, //430
2607.8, //440
2641.8, //450
2675.6, //460
2709.3, //470
2742.9, //480
2776.4, //490
2809.8, //500
2843.0, //510
2876.2, //520
2909.2, //530
2942.1, //540
2974.9, //550
3007.5, //560
3040.1, //570
3072.5, //580
3104.9, //590
3137.1, //600 873.15K
};
void GetTemp()
{
unsigned char i=0;
float Pt=0;
/*在此添加通過(guò)AD從TWI獲得電壓值并轉(zhuǎn)化為電阻值Pt的代碼*/
//查表獲得對(duì)應(yīng)絕對(duì)溫度的代碼,并存入 Temperature
for(i=0;i<=79;i++)
{
if(Pt1000[i]<=Pt&&Pt1000[i+1]>=Pt)
{
Temperature=73.15+i*10+10*(Pt-Pt1000[i])/(Pt1000[i+1]-Pt1000[i]);
break;
}
}
}
//對(duì)eeprom.h的使用,要寫(xiě)入多個(gè)字節(jié)使用EEPROM_WRITE(addr, src),
//讀出多個(gè)字節(jié)用EEPROM_READ(addr, dst),其中,addr自己指定,src是要寫(xiě)入的數(shù)組或變量
void SaveTemp(void)
{
//根據(jù)TimeScale 將溫度值 Temperature送入ROMData[]并把SavedNum+1
//如果TimeScale==0,則不保存,如果不為零則保存
//實(shí)現(xiàn)EEPROM的存儲(chǔ)
if(TimeScale!=0)
{
EEPROM_WRITE(EEPROM_addr,Temperature);
SavedNum++;
EEPROM_WRITE(0,SavedNum);
EEPROM_addr+=4;
}
}
//WORKING狀態(tài)下的 工作模式函數(shù),外部中斷繼續(xù)有效,并使用看門(mén)狗防止程序跑飛
void LCD_mode(void)
{
unsigned char i=0;
EnableWatchDog();
while(MCUState==WORKING)
{
Delay(1000); //每過(guò)1S采集一次溫度,并在LCD上刷新一次顯示
ClearWatchDog();
GetTemp();
Refresh_Temp();
i++;
if(i==TimeScale)
{ SaveTemp(); i=0;}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -