|
相关连接: [匠人DIY旋转时钟 系列文章 (连载中…)]
//-------------------------------------------------------- // 项目: // 模块:温度处理 // 说明: // 设计:程序匠人(版权所有,引用者请保留原作者姓名) //-------------------------------------------------------- /* 版本说明: temperature.c 2008-2-10 15:36
*/ //--------------------------------------------------------
//-------------------------------------------------------- //插入文件包 //-------------------------------------------------------- #i nclude "common.h" //--------------------------------------------------------
//-------------------------------------------------------- //温度-电阻表 //-------------------------------------------------------- const tU08 RT_TAB[]= { 237, //地址=0,温度=-10℃ 236, //地址=1,温度=-9℃ 235, //地址=2,温度=-8℃ 234, //地址=3,温度=-7℃ 233, //地址=4,温度=-6℃ 232, //地址=5,温度=-5℃ 231, //地址=6,温度=-4℃ 230, //地址=7,温度=-3℃ 228, //地址=8,温度=-2℃ 227, //地址=9,温度=-1℃ 226, //地址=10,温度=0℃ 224, //地址=11,温度=1℃ 223, //地址=12,温度=2℃ 221, //地址=13,温度=3℃ 220, //地址=14,温度=4℃ 218, //地址=15,温度=5℃ 217, //地址=16,温度=6℃ 215, //地址=17,温度=7℃ 214, //地址=18,温度=8℃ 212, //地址=19,温度=9℃ 210, //地址=20,温度=10℃ 208, //地址=21,温度=11℃ 207, //地址=22,温度=12℃ 204, //地址=23,温度=13℃ 202, //地址=24,温度=14℃ 200, //地址=25,温度=15℃ 198, //地址=26,温度=16℃ 196, //地址=27,温度=17℃ 194, //地址=28,温度=18℃ 192, //地址=29,温度=19℃ 190, //地址=30,温度=20℃ 188, //地址=31,温度=21℃ 185, //地址=32,温度=22℃ 183, //地址=33,温度=23℃ 181, //地址=34,温度=24℃ 179, //地址=35,温度=25℃ 176, //地址=36,温度=26℃ 174, //地址=37,温度=27℃ 171, //地址=38,温度=28℃ 169, //地址=39,温度=29℃ 166, //地址=40,温度=30℃ 164, //地址=41,温度=31℃ 161, //地址=42,温度=32℃ 159, //地址=43,温度=33℃ 156, //地址=44,温度=34℃ 154, //地址=45,温度=35℃ 151, //地址=46,温度=36℃ 149, //地址=47,温度=37℃ 146, //地址=48,温度=38℃ 144, //地址=49,温度=39℃ 141, //地址=50,温度=40℃ 139, //地址=51,温度=41℃ 136, //地址=52,温度=42℃ 134, //地址=53,温度=43℃ 131, //地址=54,温度=44℃ 129, //地址=55,温度=45℃ 126, //地址=56,温度=46℃ 124, //地址=57,温度=47℃ 121, //地址=58,温度=48℃ 119, //地址=59,温度=49℃ 116, //地址=60,温度=50℃ 114, //地址=61,温度=51℃ 111, //地址=62,温度=52℃ 109, //地址=63,温度=53℃ 107, //地址=64,温度=54℃ 104, //地址=65,温度=55℃ 102, //地址=66,温度=56℃ 100, //地址=67,温度=57℃ 98, //地址=68,温度=58℃ 96, //地址=69,温度=59℃ 93, //地址=70,温度=60℃ 91, //地址=71,温度=61℃ 89, //地址=72,温度=62℃ 87, //地址=73,温度=63℃ 85, //地址=74,温度=64℃ 83, //地址=75,温度=65℃ 81, //地址=76,温度=66℃ 79, //地址=77,温度=67℃ 77, //地址=78,温度=68℃ 75, //地址=79,温度=69℃ 74, //地址=80,温度=70℃ 72, //地址=81,温度=71℃ 70, //地址=82,温度=72℃ 68, //地址=83,温度=73℃ 67, //地址=84,温度=74℃ 65, //地址=85,温度=75℃ 63, //地址=86,温度=76℃ 62, //地址=87,温度=77℃ 60, //地址=88,温度=78℃ 59, //地址=89,温度=79℃ 57, //地址=90,温度=80℃ 56, //地址=91,温度=81℃ 55, //地址=92,温度=82℃ 53, //地址=93,温度=83℃ 52, //地址=94,温度=84℃ 51, //地址=95,温度=85℃ 49, //地址=96,温度=86℃ 48, //地址=97,温度=87℃ 47, //地址=98,温度=88℃ 46, //地址=99,温度=89℃ 44, //地址=100,温度=90℃ 43, //地址=101,温度=91℃ 42, //地址=102,温度=92℃ 41, //地址=103,温度=93℃ 40, //地址=104,温度=94℃ 39, //地址=105,温度=95℃ 38, //地址=106,温度=96℃ 37, //地址=107,温度=97℃ 36, //地址=108,温度=98℃ 35, //地址=109,温度=99℃ };
//-------------------------------------------------------- //温度检测处理 //入口: ADR_NEW=最新AD结果 //出口: TEMP=当前温度 // TEMP_LSPJ=24小时历史平均温度 // TEMP_LS_QUEUE[]=温度历史纪录队列 //-------------------------------------------------------- void temp_cnt(void) { tU08 i ; tU16 sum;
TEMP_SCAN_EN_FLAG = 0 ; //温度检测使能标志=0(0=禁止,1=使能)
//查表求温度(结果=i: 0=故障,110=故障,1~109=(实际温度-10)) for ( i=0; i<110 ; i++ ) { if ( ADR_NEW >= RT_TAB[i] ) break; //如果最新AD结果>=查表结果,跳出 }
//温度滤波处理 if ( i>0 && i<110 ) { TEMP = filter1(i ,TEMP_LB_QUEUE , TEMP_LB_QUEUE_SUM ); //单字节递推中位值平均滤波,结果->TEMP } else { TEMP_ERR_FLAG = 1 ; //温度检测故障标志=1 }
//更新温度历史纪录队列,和24小时历史平均温度 if ( TEMP_LS_NEW_FLAG ) { TEMP_LS_NEW_FLAG = 0 ; //温度历史纪录队列更新使能标志=0(0=禁止,1=使能) sum=TEMP; for(i=TEMP_LS_QUEUE_SUM-1; i!=0; i--) { TEMP_LS_QUEUE[i] = TEMP_LS_QUEUE[i-1] ; //队列更新 sum = sum + TEMP_LS_QUEUE[i] ; //追加到和值 } TEMP_LS_QUEUE[0] = TEMP ; //新采样值入队列
sum = sum + TEMP_LS_QUEUE_SUM/2 ; //说明:+n/2的目的是为了四舍五入 sum = sum / TEMP_LS_QUEUE_SUM ; //平均值=(和值+TEMP_LS_QUEUE_SUM/2)/队列长度 TEMP_LSPJ = (tU08) sum ; //24小时历史平均温度
}
}
//-------------------------------------------------------- // // THE END // // 版权所有:程序匠人(引用者请保留原作者姓名) // //--------------------------------------------------------
|