基于单片机和MATLAB的FIR滤波器设计

摘 要: 随着社会经济的进步和科学技术的不断发展,数字滤波器的优势使其广泛应用于不同领域。但是,数字滤波器设计过程中的复杂性对其发展造成了制约。因此,笔者实现了基于单片机和 MATLAB 的滤波器的全新设计方法,并对设计后的滤波器进行仿真和实现验证。结果表明,此种方法所设计的滤波器精准、方便、可靠,能够满足人们的实际使用需求。
关键词: 单片机;MATLAB;FIR 滤波器

0 引言

数字技术不断发展的过程中,数字滤波器备受人们的重视,广泛应用于众多领域,比如自动控制、航空航天、军事等。数字滤波器的可靠性良好,具有较高的精准度和灵活性,但设计传统数字滤波器时复杂度较高,工作过程中的计算量较大,特性调整比较困难,对数字滤波器的发展有所制约。因此,本文设计了基于单片机和 MATLAB 的 FIR 滤波器。

1 数字滤波器的设计思路

滤波器设计过程中,有限冲激响应低通滤波器的采样频率、通带频率以及截止频率分别设置为 1 000 Hz、150Hz、200 Hz。数字滤波器设计过程中方法较多,本文利用MATLAB 和 高 性 能 单 片 机 AT89C52 完 成 设 计 过 程。 通 过MATLAB 的信号处理箱设计滤波器,并实现频谱分析。在单
片机中编写 C 语言,调试成功后通过 Proteus 实现单片机仿真,并观察仿真结果 。数字滤波器的实现原理如图 1 所示。

图 1 中 的 器 件 分 别 为 ADC、DAC 和 单 片 机。ADC 使上级模拟信号向数字信号转变,传送至下一级。本文利用ADC0808 数据收集器,其为 CMOS 型号单片集成电路,具备八位模拟数字转换器、微控制器逻辑单元和八通道复用器。八通道复用器能够直接访问八个模拟信号中的任意一个模拟信号 。DAC 能够通过单片机得到滤波数字信号,并将滤波数字信号转变成模拟信号,传输至下一级。利用单片机进行 信号滤波,通过 DAC 输入滤波后结果。本文利用 ATMEL 公司 8 位 FLASH 单片机系列中的 AT89C52,其属于低电压、低功耗、高性能的八位单片机。

2 基于 MATLAB 的数字滤波器设计

数字滤波器划分为有限长和无限长的冲激响应滤波器 。数字滤波器中的滤波输出、输入值没有关系,计算方法为:   
其中, u ( KT ) 指滤波器输出值, u ( KT - kt ) 指输出过去值, b i 为滤波器系数。
将MATLAB打开,新创建madl文件,添加FDAtool后进行双击,从而打开滤波器分析和设计工具。点击选项页,选择Lowpass,利用选项页选择FIR,设置Filter order为9,利用Options 选择Hamming,设置Fs为1000,设置Fe为200。点击Design Filter 控件,显示滤波器特征图,如图 2 所示。

数字滤波器的界面主要包括特性区和 Design Filter 两部分。界面上半部分指特性区,能够充分展现滤波器的特性;界面下半部分指 Design Filter,主要目的是设置滤波器参数。
第一,滤波器类型选项。其也可以称之为 ResoponseType,主要包括低通、高通、带阻、带通以及特殊 FIR 滤波器。第二,设计方法选项。其指 Design Method,主要包括最小乘方法、椭圆滤波器和窗函数法等。第三,滤波器阶数选项。其表示 Filter Order,主要目的是定义滤波器的阶数,主要包括指定介数、最小阶数。第四,Frenquency Specifications 选项。其主要功能是定义频带参数,主要包括采样频率和截止频率。使用窗函数实现滤波器设计的过程中,过滤带具备窗函数阶数积累性,只需设计通带截止频率,不需定义阻带参数。第五,Magnitude Specificationgs 选项。其能够定义幅值衰减情况。窗函数设计过程中,截止频率赋值衰减设置为 6 dB 时不需进行定义。

3 数字滤波器的仿真

通过 Simulink 中的仿真功能进行仿真,并验证实际效果。在新建文件夹中设置两个正弦信号发生模块,频率设置为 2Hz 和 300 Hz,之后添加加法模块和示波器模块,实现使滤波器仿真模型,如图 3 所示。
点击 Start 开始仿真,仿真结果如图4所示。图 4(a)是频率为 2 Hz 的波形,图4(b)是频率为 300 Hz 波形,图4(c)为两个滤波叠加后波形,图 4(d)为滤波后的波形。
本文设计的数字滤波器能够实现 300 Hz 波形的消除,并保存了频率为 2 Hz 的波形,满足设计需求。

4 结 语

通过本文分析可知,使用单片机和 MATLAB 语言能够方便、快捷设计数字滤波器。在版本不断提高的过程中,MATLAB 在数字滤波器技术中将会发挥更大作用。传统数字滤波器设计方法以模拟原型滤波器为基础,实现数字离散化。传统设计方法存在部分问题,但基于 MATLAB 语言实现滤
波器设计能够解决相应问题。其具有丰富的设计函数,能够以数字滤波器的指标为基础寻找合适的函数,并通过直接调用工具箱实现编辑。因此,本文所设计的数字滤波器能够满足实际需求。
  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电气_空空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值