当前位置:文档之家› 基于C单片机的数字滤波要点

基于C单片机的数字滤波要点

湖北师范学院教育信息与技术学院2010级信息工程专业综合课程社稷(一)HUBEI NORMAL UNIVERSITY综合课程设计(一)Integrated Curriculum Design(1)任务分工:尤杉:整体系统设计及编程调试。

柯俊:进行资料的查询。

钱德超:辅助编程,及proteus电路图的绘制。

陈小浩:完成word文档的编辑。

摘要 (I)1 绪论 (1)1.1仿真软件介绍 (2)1.2数字滤波器介绍 (2)2 单片机和AD/DA相关知识 (4)2.1 51单片机相关知识 (4)2.2 AD转换器相关知识 (5)2.3 DA转换器相关知识 (6)3 数字滤波器设计 .................................. 错误!未定义书签。

3数字滤波器系统设计 (7)3.1 数字滤波器理论分析设计 (7)3.2 单片机电路 (9)3.3 数据采集电路............................... 错误!未定义书签。

3.4 数模转换输出电路 (10)3.5 数字电压表系统电路原理图 (11)4 程序设计 (11)4.1程序流程图 (11)4.2 AD转换器程序.............................. 错误!未定义书签。

4.3 程序代码 (12)6 心得与体会 (20)参考文献 (21)1 绪论1.1仿真软件介绍现代工业控制系统中,电路系统越来越复杂,因而带来的相互干扰也越来越强烈,模拟滤波电路已经不能满足要求,数字滤波应运而生。

数字滤波器的实现过程的实现过程是把输入的模拟信号数字化,也就是由采样器对输入的模拟信号进行周期性的采样,并对每个样本进行量化和编码,即模数转换。

从ADC输出的数字信号送入到数字信号处理器进行处理变化,处理器输出的数字信号再通过数模转换为模拟信号,这个过程要用到DAC来转换实现模拟信号的输出。

1.2数字滤波器介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

(2)支持主流单片机系统的仿真。

目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

(3)提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。

(4)具有强大的原理图绘制功能。

可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。

还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。

配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。

在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

PROTEUS 是单片机课堂教学的先进助手。

PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。

前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。

这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、毕业设计是学生走向就业的重要实践环节。

由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。

2 单片机和AD/DA相关知识2.1 51单片机相关知识51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。

该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。

单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。

51系列单片机内包含以下几个部件:一个8位CPU;一个片内振荡器及时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O口线;两个16位定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套中断结构。

51系列单片机如下图:图1 51单片机引脚图ADC0808是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式AD转换器。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

(1)主要特性:1)8路输入通道,8位A/D转换器,即分辨率为8位。

2)具有转换起停控制端。

3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。

(2)内部结构ADC0808是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。

图2 ADC0808引脚根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。

主要性能如下:(1)分辨率为8位;(2)电流稳定时间1us;(3)可单缓冲、双缓冲或直接数字输入;(4)只需在满量程下调整其线性度;(5)单一电源供电(+5V~+15V);(6)低功耗,20mW。

DAC0832引脚功能电路应用原理图DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。

所以这个芯片的应用很广泛,关于DAC0832应用的一些重要资料见下图: D/A转换结果采用电流形式输出。

若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。

运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。

DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。

图2 ADC0809引脚图2 ADC0809引脚图3 DAC0832引脚3数字滤波器系统设计3.1 数字滤波器理论分析设计数字滤波方法有很多种,如中值滤波、算术平均滤波、加权平均滤波,限幅滤波等等。

本次课程设计我选用的是限幅滤波方法和中位值滤波法限幅滤波的基本原理是把两次相邻时刻(n和n-1)的采样值Yn和Yn-1相减,求出其差值,以绝对值表示,然后将这个差值与两次采样允许的最大偏差值ΔY比较,如果两次采样值的差值超过了允许的最大偏差值ΔY,则认为发生了随机干扰,并认为最后一次采样值Yn非法,应予剔除。

剔除Yn后,可用Yn-1代替Yn;若未超过允许的最大偏差值范围,则认为本次采样值有效。

可用如下公式表示:|Yn-Yn-1|≤ΔY;则Yn有效|Yn-Yn-1|>ΔY;则Yn-1有效此算法的样例子程序如下:#define A 11 //A值可根据实际情况调整char data; //上一次的数据char filter_1(){char datanew; //新数据变量datanew=get_data(); //获得新数据//滤波算法uchar filter1(){uchar new_value,value;value=get_data(N-2); //把第十个值给valuenew_value = get_data(N-1); // 第十一个值给new_valueif ( ( new_value - value > A ) || ( value - new_value > A ) ) //如果差值大于0.002return value;return new_value;//中位值滤波算法void filter2(){int count,i,j; //定义存储数据的数组uchar temp; //定义存储数据的数组for(count=0;count<N;count++) //获取数据{buf[count]=get_data(count);}for(j=0;j<N-1;j++) //用冒泡法对数据进行排序,当然最好用其他排序方法{for(i=0;i<N-j;i++)if(buf[i]>buf[i+1]){temp=buf[i];buf[i]=buf[i+1];buf[i+1]=temp;}}res=buf[(N-1)/2]; //11个数排序后取中间的数值}该算法主要用于处理变化比较缓慢的数据,如温度、物体的位置等。

使用时关键在于最大偏差值的Δy的选择,通常可根据经验获得,也可按照输出参数可能的最大变化速度Vmax及采样周期T来决定ΔY的值,即ΔY=VmaxT。

3.2 整体框架整体框架图如下:3.1单片机最小系统如下:图4 单片机最小系统使用51系列单片机——AT89C51,利用这个单片机进行编程,实现对输入信号的滤波。

我使用了P0口作为接受AD转换的结果的端口,而P1口则输出数据到DA转换器。

另外还利用了P2作为控制端口,P2.0-P2.2用来控制AD转换器,而P1.0-P1.3外接四个开关,用来实现滤波方式的选择。

3.3数据采集电路由于ADC0809是带地址锁存的模数转换器件,ADDA、ADDB、ADDC为模拟通道选择,编码为000~111分别选中IN0~IN7。

ALE为地址锁存信号,其上升沿锁存ADDA、ADDB、ADDC的信号,译码后控制模拟开关,接通八路模拟输入中相应的一路。

CLK为输入时钟,为AD转换器提供转换的时钟信号,典型工作频率为500KHz-600kHZ。

START为AD转换启动信号,正脉冲启动ADDA~ADDC选中的一路模拟信号开始转换。

相关主题