1、/这样做是为了减少单片机的负担 权值要取得合适 k为权值 k太大滤波效果不好 k太小的话跟不上int filter_lst_1(int NEW_data, int OLD_data, char k) /一阶惯性滤波int result = 0; /返回的结果int count_erro; /两次变化的差值 这个值要和阀值进行比较/调整一阶滤波系数 权值的大小变化if(flag_P_Z =1)if(NEW_data - OLD_data) =0) else if(NEW_data - OLD_data) 0) else if(NEW_data - OLD_data) SET_filter_lst
2、_1_erro)filter_lst_1_count +=2 ; if(filter_lst_1_count = 4) /一阶滤波计算器的最大值要好好研究 一般最大为10k += 20; /系数增量 一般为10-30 这个也要好好的研究一下if(k = 255)k=255;filter_lst_1_count = 0; /计算器清零if(1!=flag) /如果两次变化的方向不一致就认为是偶然现象filter_lst_1_count = 0;k = 0;/一阶滤波if(NEW_data OLD_data)result = NEW_data - OLD_data;result = result * k;result = result + 128;result = result / 256;result = result + OLD_data; else result = OLD_data;return result;