原创 匠人DIY旋转时钟全程实播(连载23:温度处理源程序)

2008-3-5 23:06 3124 10 10 分类: MCU/ 嵌入式

相关连接:jhinfo.gif [匠人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
//
// 版权所有:程序匠人(引用者请保留原作者姓名)
//
//--------------------------------------------------------


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条