相关连接: [匠人DIY旋转时钟 系列文章 (连载中…)]
//--------------------------------------------------------
// 项目:
// 模块:滤波处理
// 说明:
// 设计:程序匠人(版权所有,引用者请保留原作者姓名)
//--------------------------------------------------------
/*
版本说明:
filter.c 2008-2-10 15:36
*/
//--------------------------------------------------------
//--------------------------------------------------------
//插入文件包
//--------------------------------------------------------
#include "common.h"
//--------------------------------------------------------
//--------------------------------------------------------
//单字节递推中位值平均滤波
//功能: 1.将新采样值压入队列
// 2.将队列中数据减去最大值和最小值,然后求平均值(小数四舍五入)
//入口: NEW_DATA =新采样值
// QUEUE =队列
// n =队列长度
//出口: =滤波结果(平均值)
//--------------------------------------------------------
tU08 filter1(tU08 NEW_DATA,tU08 QUEUE[],tU08 n) {
tU08 max;
tU08 min;
tU16 sum;
tU08 i;
QUEUE[0]=NEW_DATA; //新采样值入队列
max=QUEUE[0];
min=QUEUE[0];
sum=QUEUE[0];
for(i=n-1;i!=0;i--)
{
if ( QUEUE > max ) max = QUEUE; //比较并更新最大值
else if ( QUEUE < min ) min = QUEUE; //比较并更新最小值
sum = sum + QUEUE; //追加到和值
QUEUE = QUEUE[i-1]; //队列更新
}
i = n - 2;
sum = sum - max - min + i/2;
sum = sum / i; //平均值=(和值-最大值-最小值+n/2)/(队列长度-2)
//说明:+(n-2)/2的目的是为了四舍五入
return ((tU08) sum) ;
}
//--------------------------------------------------------
//
// THE END
//
// 版权所有:程序匠人(引用者请保留原作者姓名)
//
//--------------------------------------------------------
xucun915_925777961 2008-6-20 17:41
程序匠人 2008-3-6 23:06
用户554377 2008-3-6 22:24
用户66328 2007-4-25 21:44
用户1053025 2007-4-24 10:50
好文章!
用户7564 2007-4-22 10:38
我的问题是:
1.如何将模拟信号转化为允许的 0~5 V 的电压,有没有现成的芯片或板子.
2.以上用到的传感器有没有直接输出数字信号的.
恳请高手给予指点,谢谢.
另:我是学软件的 ,对硬件尤其是电路几乎是一无所知.