2019年 10月 25日 星期五
您的位置: 威廉希尔主页 > 单片机技术 >

基于单片机和C语言对数字滤波系统的设计

来源:未知     作者:威廉希尔     发布时间:2019-10-25 13:26         

  。数据采集技术广泛引用在各个领域。比如摄像头,麦克风,都是数据采集工具。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。在互联网行业快速发展的今天,数据采集已经被广泛应用于互联网及分布式领域,数据采集领域已经发生了重要的变化。

  而在数据采集中存在着各种噪声。滤除噪声的方法有很多种,既有数字滤波器,也有模拟滤波器。这里我们采用了基于单片机和C语言来设计并开发数字滤波系统。

  我们针对于单片机数据采集系统中经常出现的随机干扰,通过手动输入来模拟数据采集过程,验证了几种使用较为普遍的克服随机干扰的单片机数字滤波算法,并给出了相应的C程序,尤其对中位值滤波和中位值平均滤波算法程序进行了改进。同时也对这几种滤波算法进行了比较,并指出了每一种算法的具体适用范围和注意事项。另外我们使用了 proteus进行仿真验证这几种滤波方法。另外我们还使用了AD和DA来采集及输出数据。

  这里有很多种数字滤波方法,我们见选用其中几种来进行设计,如中值滤波、算术平均滤波、加权平均滤波等等。所以下面我将详细介绍它们。

  中位值滤波是先对某一参数连续采样N次(一般N取奇数),然后把N次采样值按从小到大排列,取中间值为本次采样值。

  该滤波方法实际上是一种排序方法,我在此采用的是冒泡法排序。由于在冒泡法排序中,每出现一次前者数据大于后者数据,就要进行二者数据的交换。

  位值滤波能有效地克服偶然因素引起的波动或采样器不稳定引起的误码等脉冲干扰。对温度、液位等缓慢变化的被测参数采用此算法能收到良好的滤波效果,但对于流量、压力等快速变化的数据,不宜采用中位值滤波。

  算术平均滤波法适用于对一般的具有随机干扰的信号进行滤波。这种信号的特点是信号本身在某一数值范围附近上下波动,如测量流量、液位时经常遇到这种情况。算术平均滤波法是要按输入的N 个采样数据,寻找这样一个Y,使得Y 与各个采样值之间的偏差的平方和最小。

  算术平均滤波适用于对一般具有随机干扰的信号进行滤波。这种信号的特点是有一个平均值,信号在某一数值范围附近做上下波动,在这种情况下仅取一个采样值做依据显然是不准确的。算术平均滤波对信号的平滑程序完全取决于N,当N较大时,平滑度高,但灵敏度低;当N较小时,平滑度低,但灵敏度高,应视具体情况选取N,以便既少占用计算时间,又达到最好的效果。

  在算术平均滤波和移动平均滤波中,N次采样值在输出结果中的权重是均等的,取1/N。用这样的滤波算法,对于时变信号会引入滞后,N值越大,滞后越严重。为了增加新采样数据在移动平均中的权重,以提高系统对当前采样值中所受干扰的灵敏度,可采用加权平均滤波,它是移动平均滤波算法的改进。

  加权平均滤波是对连续N次采样值分别乘上不同的加权系统之后再求累加和,加权系统一般先小后大,以突出后面若干采样的效果,加强系统对参数变化趋势的辨识。各个加权系统均为小于1的小数,且满足总和等于1的约束条件。这样,加权运算之后的累加和即为有效采样值。

  为方便计算,可取各加权系数均为整数,且总和为256,加权运算后的累加和除以256,即舍去低字节后便是有效采样值。具体的样例子程序如下:

  它相当于是“中位值滤波法”和“算术平均滤波法”的结合。它连续采样N个数据,然后去掉一个最大值和一个最小值,最后计算N-2个数据的算术平均值。一般N值的选取:3-14。

  这种滤波方法兼容了移动平均滤波算法和中位值滤波算法的优点,所以无论对缓慢变化的信号,还是对快速变化的信号,都能取得较好的滤波效果。

  限幅滤波的基本原理是把两次相邻时刻(n和n-1)的采样值Yn和Yn-1相减,求出其差值,以绝对值表示,然后将这个差值与两次采样允许的最大偏差值ΔY比较,如果两次采样值的差值超过了允许的最大偏差值ΔY,则认为发生了随机干扰,并认为最后一次采样值Yn非法,应予剔除。剔除Yn后,可用Yn-1代替Yn;若未超过允许的最大偏差值范围,则认为本次采样值有效。可用如下公式表示:

  该算法主要用于处理变化比较缓慢的数据,如温度、物体的等。使用时关键在于最大偏差值的Δy的选择,通常可根据经验获得,也可按照输出参数可能的最大变化速度Vmax及采样周期T来决定ΔY的值,即ΔY=VmaxT。

  中国硬件创新大赛网络培训会—技术培训篇如果你就干这行,毫无疑问你不能错过这次直播;如果不是,可能你不一定喜欢单片机,也不

  由于需要用到液晶屏(320*240)显示图片,而且图片的数量比较多(好几百张),并且图片要求保存到1....

  1、 SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL; 2、 MCO[2:0]可以提供...

  ADS 是个集成开发,主要包括编译器、链接器、调试器、C 和 C++库等,是 ARM 公司推出的新一代 ARM 集成...

  定时器T1定时4ms,我不太清楚为什么在赋值的时候不能重新赋值4000,而是368。我实物调试了一下,4000电机会控制了速度...

  请问谁用过DRV8825/24 做过步进电机驱动么? 可否发一份测试程序参考一下? 谢谢...

  请教各位,,51的串口如何才能接收大量的数据,在接收sim800发送过来的短信时,,至少要接收300-400字节,,,一次接收...

  我在用c语言编写lcd显示的简易计算器,现在遇到一个问题,除法运算时怎样编写可以实现结果保留两位小数呢?大神们给个...

  6V的电磁阀单片机如何控制, 现用2只I/O的和2只NPN,两只PNP形成H桥. 但是有没有更简单的办** 请高手指点一...

  请教大神,在使用STC8单片机控制1621B驱动液晶时,液晶不显示,程序及原理图如下 #include #include #define...

  谁有比较实用的单片机裸编程序架构或者思想,或者推荐书籍资料,在此感激不尽????? 我先说说我的思,抛砖引玉...

  想要实现单片机定时器的短暂延时,我们可以通过函数设计的方式来实现,在C文件中通过使用带_NOP_()....

  要用C语言开发PIC单片机和模拟仿真调试程序,必须有相应的编译器,PICC与PICC18的C编译器是....

  微控制单元MCU,也叫单片微型计算机,简称单片机,它把CPU做缩减,并将内存、计数器、LCD驱动电....

  RS232串行接口属于个人计算机(PC)及电信应用领域中最为成功的串行数据标准。它被定义为一种在低速....

  不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和....

  外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对的干扰,以8051单片机为例最....

  嵌入式系统是一个大类,单片机是其中一个重要的子类。嵌入式系统像是一个完整的计算机,而单片机更像是一个....

  IO口是芯片内部CPU和外设之间沟通的桥梁,也是其他模块(如I2C通讯、SPI通讯)的基础。

  uC/OS-II具有免费、使用简单、可靠性高、实时性好等优点,但也有移植困难、缺乏必要的技术支持等缺....

  我是电子制好者,最近从网上看到这款单片机驱动的发光二极管做的数码管时钟,以下是作者的介绍“以前做....

  单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器)....

  由于MODEM 是将数据通过公用电话网进行远程发送和传输的桥梁,这里先将MODEM 的功能及用法做一....

  当按键开关闭合或者断开时各有一段电平不稳定的时期,按键开关在闭合时不会马上就稳定的接通,在断开时也不....

  机控制系统通常要用到A/D转换。根据输出的信号格式,比较常用的A/D转换方式可分为并行A/D和串行A....

  SPCE061A单片机通过串行口与指纹识别模块OM—20通信。SPCE061A单片机内部有一个标准全....

  提到单片机很多人都很觉得不陌生,大街小巷电子产品都用到。近几年随着嵌入式的发展,做单片机的一帮家....

  嵌入式开发的门槛相对较高,对程序员的要求一般都是对底层感兴趣,学习能力、动手能力要强,对问题能够从全....

  软件世界中有各种各样的编程语言,每年还会有新的语言出现,最近发布的编程语言就有Scala、Kotli....

  单片机:通常具备片内flash存储器,固件程序通常存储在该区域,若固件较大则需要通过外部电设计外部....

  这是一个周期是10ms,即频率是 100Hz的波形,但是每个周期内,高低电平脉冲宽度各不相同,这就是....

  死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能,按键....

  单片机(Microcontroller)一般都有内部ROM/EEPROM/FLASH供用户存放程序。....

  以上程序使用PIC12C508 单片机 ,内部4MHz时钟,4脚输入50HZ脉冲信号,7,6,3脚(....

  1 工作方式0 定时器/计数器T0工作在方式0时,16位计数器只用了13位,即TH0的高8位和....

  单片机进入空闲模式的时候,除了cpu处于休眠状态外,其余的硬件全部处于活动状态,芯片中未涉及的数据存....

  1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专....

  写寄存器的时候,如果我们要把01写到一个地址是0000的寄存器地址里,点一下“写入”,就会出现发送指....

  若同时按下两个以上的按钮,则对应的发光二极管发亮。例如按下SB1和SB3,则对应的输出端口P1.4和....

  时间片轮询法,在很多书籍中有提到,而且有很多时候都是与操作系统一起出现,也就是说很多时候是操作系统中....

  CPU,它的名字没有改,还是叫CPU(Central Processing Unit)。它是单片机的....

  各种逻辑芯片的晶振引脚可以等效为电容三点式振荡器。晶振引脚的内部通常是一个反相器,或者是奇数个反相器....

  单片机系统硬件抗干扰常用方法实践影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气....

  AD精度指的是AD实际转换的结果和理想的计算结果之间的误差,也叫做积分非线性误差,符号是(INL) ....

  1.1读状态:输入:RS = L,RW =H,E = H输出D0~D7 1.2写指令:输入:R....

  常用来保存单片机或其他处理器的目标程序代码。它保 存物理程序存储区中的目标代码映象。一般的编程器都支....

  AD精度指的是AD实际转换的结果和理想的计算结果之间的误差,也叫做积分非线性误差,符号是(INL) ....

  单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可....

  C 语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使 用的一种计算机语言。缺点是占用....

  虽然Java是物联网开发中使用最多的语言,但是Java和Python在物联网开发的不同子域中紧随其后....

  物联网时代的到来,不管是从行业应用,还是智能硬件的爆发,亦或是大数据等等嵌入式技术都得到了史无前例的....

  本系统由单片机STC89C54RD 控制,将被测电阻通过测量电,将电阻的变化转变为电压和电流的变化....

  TMR1为16位宽,附带一个可编程的预分频器和一个可选的低频时基振荡器,适合与CPP模块配合使用来实....

  在单片机嵌入式的编程过程中程序的好坏往往是由细节决定的,一个程序写的是否详细、灵活,是与日积月累的知....

  随着单片机技术的不断发展,以单片机C语言为主流的高级语言也不断被更多的单片机爱好者和工程师所喜爱。使....

  8259A是一种中断控制芯片,在单片机系统中一般用来扩展单片机的中断,pc机中也有这个芯片,

  单片机系统里常用的8255芯片是一个典型的可编程通用并行接口芯片,用来扩展单片机的端口,它具有3个8....

  8253是在单片机系统常用的定时/计数器接口芯片,他能扩展几个定时/计数器,而不占用单片机的cpu时....

  max232是一种把电脑的串行口rs232信号电平(-10 ,+10v)转换为单片机所用到的TTL信....

  当你有了学习单片机的愿望,接下来的问题就是从何学起,如何学? 对于在校学生有老师指导,开始时的迷茫会....

  51系列单片机8031、8051及89c51/89s51均采用40Pin封装的双列直接DIP结构。上....

  我们可能听过C语言中的传值和传指针,在其他语言中,也有传引用一说,那么他们到底有什么区别呢?如果你还....

  如果你想学单片机,请在学习单片机之前,请做好如下准备工作: 一、硬件准备: 本人推荐给大家的学习....

  目前使用单片机微控制器作为核心的电子产品数不胜数,只要是能够给大家带来便利,或者乐趣,或者解决问题的....

  我认为单片机产品在现在和可预见的未来其市场潜力还是很巨大的,就以目前的情况看基本上所见到的家电产品都....

      威廉希尔