我們可以用數(shù)字濾波方法的C語言程序代碼子函數(shù),來完成軟件濾波功能。我們假定,從8位AD中讀取數(shù)據(jù),如果是更高位的AD可以定義數(shù)據(jù)類型為int,子程序定義為get_ad()。
(1)算術(shù)平均濾波程序,調(diào)用讀取數(shù)據(jù)予函數(shù)get_ad()。
(2)判斷濾波程序,調(diào)用讀取數(shù)據(jù)子程序get_ad()。
(3)滑動平均濾波法C語言程序,調(diào)用讀取數(shù)據(jù)子程序get_ad()。
(4)中值平均濾波法C語言程序,調(diào)用讀取數(shù)據(jù)子函數(shù)get_ad()。
(5)中位值濾波法,N值可根據(jù)實(shí)際情況調(diào)整,排序采用冒泡法。
本實(shí)例主要介紹的是應(yīng)用單片機(jī)實(shí)現(xiàn)軟件濾波的方法和程序,對于滑動平均濾波法對周期性干擾有良好的抑制作用,平滑度高,靈敏度低,但對于偶然出現(xiàn)的脈沖干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差。因此不宜用于脈沖干擾比較嚴(yán)重的場合,而更適用于高頻振蕩系統(tǒng)。
算術(shù)平均濾波不能將明顯的脈沖干擾消除,只能將其影響減弱,從而使平均濾波的輸出值更接近真實(shí)值。程序判斷濾波法,能有效克服因偶然因素引起的脈沖干擾缺點(diǎn),但是無法抑制那種周期性的干擾,并且平滑度差。