相关连接: [匠人DIY旋转时钟 系列文章 (连载中…)]
//--------------------------------------------------------
// 项目:
// 模块:温度处理
// 说明:
// 设计:程序匠人(版权所有,引用者请保留原作者姓名)
//--------------------------------------------------------
/*
版本说明:
temperature.c 2008-2-10 15:36
*/
//--------------------------------------------------------
//--------------------------------------------------------
//插入文件包
//--------------------------------------------------------
#include "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 ) 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 = TEMP_LS_QUEUE[i-1] ; //队列更新
sum = sum + TEMP_LS_QUEUE ; //追加到和值
}
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
//
// 版权所有:程序匠人(引用者请保留原作者姓名)
//
//--------------------------------------------------------
文章评论(0条评论)
登录后参与讨论