C简单低通滤波器

/*

    Low Pass Filter
    Ruler    :    AD_Val  =  (ADCR + (2^k-1)*older ADCR) / 2^k;
    K = 1    :    AD_Val  =  (ADCR + older ADCR) / 2;
    K = 2    :    AD_Val  =  (ADCR + 3 * older ADCR) / 4;
    K = 3    :    AD_Val  =  (ADCR + 7 * older ADCR) / 8;

    AD_Filter    = (2^k)*Older ADCR,        AD_Shift = Older ADCR.

*/

#define    K    3    //    1 ~ 4

static    WORD    AD_Val;
static    WORD    AD_Shift, AD_Filter;
static    void    Get_AD_By_K (void)
{
    AD_Val        =    (ADCRH << 8) | ADCRL;    //    Get 12 Bit of ADC
    AD_Val        >>=    4;                        //

    AD_Shift    = AD_Filter >> K;   // K为常量1,2,3,4
    
    AD_Filter    -=    AD_Shift;                //    Low Pass Filter
    AD_Filter    +=    AD_Val;                    //

    AD_Shift    = AD_Filter >> K;   // K为常量1,2,3,4

    AD_Val        =    AD_Shift;                //    Get new 12 Bit of ADC
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值