




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGEPAGE22湖北师范学院教育信息与技术学院2010级信息工程专业综合课程社稷(一)HUBEI综合课程设计(一)IntegratedCurriculumDesign(1)所在院系教育信息与技术学院专业名称信息工程班级1005题目基于单片机的数字滤波器指导教师成员完成时间2013.1.7任务分工:尤杉:整体系统设计及编程调试。柯俊:进行资料的查询。钱德超:辅助编程,及proteus电路图的绘制。陈小浩:完成word文档的编辑。摘要 ITOC\o"1-2"\h\z\u1绪论 11.1仿真软件介绍 11.2数字滤波器介绍 12单片机和AD/DA相关知识 32.151单片机相关知识 32.2AD转换器相关知识 42.3DA转换器相关知识 53数字滤波器设计 63数字滤波器系统设计 63.1数字滤波器理论分析设计 63.2单片机电路 73.3数据采集电路 83.4数模转换输出电路 93.5数字电压表系统电路原理图 104程序设计 104.1程序流程图 114.2AD转换器程序 124.3程序代码 136心得与体会 20参考文献 211绪论1.1仿真软件介绍现代工业控制系统中,电路系统越来越复杂,因而带来的相互干扰也越来越强烈,模拟滤波电路已经不能满足要求,数字滤波应运而生。数字滤波器的实现过程的实现过程是把输入的模拟信号数字化,也就是由采样器对输入的模拟信号进行周期性的采样,并对每个样本进行量化和编码,即模数转换。从ADC输出的数字信号送入到数字信号处理器进行处理变化,处理器输出的数字信号再通过数模转换为模拟信号,这个过程要用到DAC来转换实现模拟信号的输出。1.2数字滤波器介绍ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。(4)具有强大的原理图绘制功能。可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。PROTEUS是单片机课堂教学的先进助手。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。2单片机和AD/DA相关知识2.151单片机相关知识51单片机是对目前所有兼容intel8031指令系统的单片机的统称。该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。51系列单片机内包含以下几个部件:一个8位CPU;一个片内振荡器及时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O口线;两个16位定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套中断结构。51系列单片机如下图:图151单片机引脚图2.2AD转换器相关知识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转换器、逐次逼近寄存器、逻辑控制和定时电路组成。图2ADC0808引脚2.3DA转换器相关知识根据对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电路或微机电路连接。图2ADC0809引脚图2ADC0809引脚图3DAC0832引脚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有效此算法的样例子程序如下:#defineA11
//A值可根据实际情况调整chardata;
//上一次的数据charfilter_1(){chardatanew;
//新数据变量datanew=get_data();
//获得新数据//滤波算法ucharfilter1(){ucharnew_value,value;value=get_data(N-2);//把第十个值给valuenew_value=get_data(N-1); //第十一个值给 new_valueif((new_value-value>A)||(value-new_value>A))//如果差值大于0.002returnvalue;returnnew_value;//中位值滤波算法voidfilter2(){intcount,i,j; //定义存储数据的数组uchartemp;//定义存储数据的数组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选中的一路模拟信号开始转换。OE为输出允许信号,高电平时候打开三态输出缓存器,是转换后的数字量从D0~D7输出。EOC为转换结束信号,启动转换后EOC变为低电平,转换完成后EOC编程高电平。图5ADC模数转换3.4数模转换输出电路这里我用了DA0832来进行数模转换。DA0832的引脚图如下图所示:图6DAC数模转换DA0832有三种数模转换方法,直通方式、单缓冲方式、双缓冲方式,因为单片机输出后可以直接进行数模转换,所以这里我采用了不需要单片机控制的最为简单的直通方式,但是DA0832若用于直通方式。若用于直通方式下,则GND均接地,而VCC和ILE则接正电源。VREF是参考电源。IOUT1、IOUT2是两个输出端。DA0832输出的是电流,要利用运算放大器转换成电压信号。3.5数字电压表系统电路原理图如下是此次设计仿真的数字滤波器电路总原理图。此图总共分为三个部分,分别是采用电路ADC,处理分析部分单片机,调理信号输出部分DAC。图8数字滤波器设计总原理图4程序设计4.1程序流程图开始开始结束初始化AD采样量化单片机处理DA转换输出图9程序流程图4.2程序代码#include<reg51.h>#defineucharunsignedchar#defineA0.002#defineN11sbitcon1=P1^0; //滤波方法选择sbitcon2=P1^1;sbitkey=P1^4;//控制是否滤波sbitled=P1^5;sbitOE=P3^0;sbitSTART=P3^1;sbitEOC=P3^2;sbitCLOCK=P3^4;uchara;ucharres;ucharbuf[N]={0};voidADC0808(); //模数转换函数声明voidchange(); //数值更新函数声明ucharget_data(n);ucharfilter1();//限幅滤波函数声明voidfilter2();// 中值滤波函数声明voiddelay(ucharz);voidinint();voidmain() //主函数 { while(1) { inint(); ADC0808(); P2=res; } }voidADC0808(){START=0;START=1;START=0; led=0; EOC=~EOC; //取反负跳变进入外部中断 delay(1); if(key==0) {if(con1==0) //选择限幅滤波res=filter1(); if(con2==0) //选择中值滤波filter2(); } elseres=a;} voidchange(){uchari;for(i=0;i<N-1;i++)buf[i]=buf[i+1]; buf[N-1]=a;}ucharget_data(n) //数据更新{change();returnbuf[n];}//限幅滤波ucharfilter1(){ucharnew_value,value;value=get_data(N-2);//把第十个值给valuenew_value=get_data(N-1); //第十一个值给 new_valueif((new_value-value>A)||(value-new_value>A))returnvalue;returnnew_value;}//中值滤波法voidfilter2(){intcount,i,j; //定义存储数据的数组uchartemp;//定义存储数据的数组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个数排序后取中间的数值}voidexter0()interrupt0{led=1;P0=0xff;//P0端口作为输入预先置1OE=1;//使能输出置1a=P0;OE=0;//使能输出关闭 } voidtimer0()interrupt1 //产生500KhZ提供给ADC0808{ TH0=(65536-2)/256; TL0=(65536-2)%256; CLOCK=~CLOCK; }voidtimer1()interrupt3 //采样频率20HZ{ TH1=(65536-50000)/256;TL1=(65536-50000)%256;a=P0; } voidinint(){TMOD=0x11; //设置定时器工作方式 TH0=(65536-2)/256; //装初值 TL0=(65536-2)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0中断 ET1=1;//开定时器1,启动定时器1 TR1=1; EX0=1;//开外部中断IT0=1; //外部中断触发方式} voiddelay(ucharz) //延时函数{ucharx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}5仿真及结果分析通过正确的编写程序和不断调试发现,比较理想的滤波效果是中位值滤波,先幅滤波效果不太理想,下面给出两种滤波图型:限幅滤波中位值滤波:当噪声信号的频率为1,幅度为4时,有效信号频率为5,幅度为1事,出现严重失真,图形如下:当噪声信号的频率为50,幅度为1时,有效信号频率为5,幅度为2,滤波比较理想,图形如下:结果分析:限幅滤波的效果是和A值有关的,一般情况下,A值越小,则代表允许的噪声要越小,限幅滤波很适用于使幅值突变的噪声。限幅滤波适用于变化缓慢的场合,比如主要用于处理变化比较缓慢的数据,如温度、物体的位置等。使用时关键在于最大偏差值的Δy的选择,通常可根据经验获得。而且通过仿真过程中不断修改A的值,滤波效果会明显发生变化,通过改变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告场地服务合同范本
- 工程机器转让合同范本
- 辽宁省葫芦岛市2025届九年级上学期期末数学试卷(含答案)
- 物流房租门面合同范本
- 私营公司工程合同范本
- 酒店管理转让合同范本
- 锅炉安装合同范本
- 第08讲 一元一次不等式(组)的解法及其应用(4考点+19题型)2025年中考数学一轮复习讲练测(广东专用)
- 2025典当行借款合同书
- 预应力混凝土结构课程设计知到课后答案智慧树章节测试答案2025年春青岛理工大学
- 2025年中国工业X射线检测设备行业市场集中度、企业竞争格局分析报告-智研咨询发布
- 职工维权知识培训课件
- 2024银行春招招聘解析试题及答案
- 2025陕西核工业工程勘察院有限公司招聘21人笔试参考题库附带答案详解
- 2024中国核工业集团公司招聘(300人)笔试参考题库附带答案详解
- 第15课《青春之光》课件-2024-2025学年统编版语文七年级下册
- 初中网络安全教育
- 浙江省杭州市金丽衢十二校2024-2025学年高三下学期(3月)第二次联考数学试题 含解析
- 直流斩波电路-升压斩波电路(电力电子技术课件)
- 2024年上海杨浦区社区工作者笔试真题
- 2025年1月浙江省高考物理试卷(含答案)
评论
0/150
提交评论