DSP课程设计报告
DSP课程设计报告

DSP课程设计报告专业:姓名:学号:任课教师:年月日一、实验内容编写程序,产生正弦波二、实验目的学会用ccs集成开发软件,在开发环境下完成工程项目创建,程序编辑,编译,链接,调试和数据分析。
三、实验设备(1)DSP实验箱(2)装有ccs2000软件的电脑(3)DSP硬件仿真器四、实验程序代码正弦波形的汇编程序.title "sinx.asm".mmregs.def _c_int00.ref d_xs,d_sinx,d_xc,d_cosxsin_x: .usect "sin_x",360STACK: .usect "STACK",10k_theta .set 286PA0 .set 0_c_int00: .textSTM #STACK+10,SPSTM #0,AR1STM k_theta,AR0STM #sin_x,AR7STM #90,BRCRPTB loop1-1LDM AR1,ALD #d_xs,DPSTL A,@d_xsSTL A,@d_xcCALL sin_startCALL cos_startLD #d_sinx,DPLD @d_sinx,16,AMPYA @d_cosxSTH B,1,*AR7+MAR *AR1+0loop1: STM #sin_x+89,AR6STM #88,BRCRPTB loop2-1STL A,*AR7+loop2: STM #179,BRCSTM #sin_x,AR6RPTB loop3-1LD *AR6+,ANEG ASTL A,*AR7+loop3: NOPend: B endsin_start:.def sin_startd_coef_s .usect "coef_s",4.datatable_s: .word 01C7H.word 030BH.word 0666H.word 1556Hd_xs .usect "sin_vars",1d_squr_xs .usect "sin_vars",1d_temp_s .usect "sin_vars",1d_sinx .usect "sin_vars",1c_1_s .usect "sin_vars",1.textSSBX FRCTSTM #d_coef_s,AR4 RPT #3MVPD #table_s,*AR4+ STM #d_coef_s,AR2 STM #d_xs,AR3STM #c_1_s,AR5ST #7FFFH,c_1_sSQUR *AR3+,AST A,*AR3||LD *AR5,BMASR *AR3+,*AR2+,B,A MPYA ASTH A,*AR3MASR *AR3-,*AR2+,B,A MPYA *AR3+ST B,*AR3||LD *AR5,BMASR *AR3-,*AR2+,B,A MPYA *AR3+||LD *AR5,BMASR *AR3-,*AR2+,B,A MPYA d_xsSTH B,d_sinxRETcos_start:.def cos_startd_coef_c .usect "coef_c",4.datatable_c: .word 0249H.word 0444H.word 0AABH.word 4000Hd_xc .usect "cos_vars",1d_squr_xc .usect "cos_vars",1d_temp_c .usect "cos_vars",1d_cosx .usect "cos_vars",1c_1_c .usect "cos_vars",1.textSSBX FRCTSTM #d_coef_c,AR4 RPT #3MVPD #table_c,*AR4+ STM #d_coef_c,AR2 STM #d_xc,AR3STM #c_1_c,AR5ST #7FFFH,c_1_cSQUR *AR3+,AST A,*AR3||LD *AR5,BMASR *AR3+,*AR2+,B,A MPYA ASTH A,*AR3MASR *AR3-,*AR2+,B,A MPYA *AR3+ST B,*AR3||LD *AR5,BMASR *AR3-,*AR2+,B,A SFTA A,-1,ANEG AMPYA *AR3+MAR *AR3+RETDSTH B,*AR3RET.end正弦波形的链接程序MEMORY{PAGE 0:EPROM: org=0E000H,len=1000HVECS: org=0FF80H,len=0080HPAGE 1:SPRAM: org=0060H,len=0020HDARAM1: org=0080H,len=0010HDARAM2: org=0090H,len=0010HDARAM3: org=0200H,len=0200H}SECTIONS{ .text :> EPROM PAGE 0.data :> EPROM PAGE 0STACK :> SPRAM PAGE 1sin_vars :> DARAM1 PAGE 1coef_s :> DARAM1 PAGE 1cos_vars :> DARAM1 PAGE 1coef_c :> DARAM2 PAGE 1sin_x : align(512){}> DARAM3 PAGE 1.vetors :> VECS PAGE 0}复位向量文件vectors.asm.title "vectors.asm".ref _c_int00.sect ".vectors"B _c_int00.end五、实验步骤CCS软件的基本操作:(1)建立工程:点击菜单project-new,在弹出的窗口中输入工程名,后缀是.pjt;(2)建立文件:点击菜单file-new-source file,建立汇编语言文件和链接命令文件;(3)将文件加入工程:点击菜单project-add files to project,选择要加入的文件添加到工程;(4)工程的汇编链接:点击菜单project-rebuild all,若汇编链接成功会生成.out文件;(5)装载可执行程序:点击菜单file-lode program,装载.out文件;(6)执行程序:点击菜单debug-run;(7)观察结果。
dsp综合设计课程设计报告

dsp综合设计课程设计报告一、教学目标本课程的教学目标是使学生掌握DSP(数字信号处理器)综合设计的基本理论和实践技能。
通过本课程的学习,学生应能够:1.知识目标:理解DSP的基本概念、原理和应用;熟悉DSP芯片的内部结构和编程方法;掌握DSP算法的设计和实现。
2.技能目标:能够使用DSP芯片进行数字信号处理的设计和实现;具备DSP程序的编写和调试能力;能够进行DSP系统的故障诊断和优化。
3.情感态度价值观目标:培养学生对DSP技术的兴趣和热情,提高学生的问题解决能力和创新意识,使学生认识到DSP技术在现代社会中的重要性和应用价值。
二、教学内容本课程的教学内容主要包括DSP的基本理论、DSP芯片的内部结构和工作原理、DSP程序的设计和调试方法、DSP应用系统的设计和实现等。
具体包括以下几个部分:1.DSP的基本概念和原理:数字信号处理的基本概念、算法和特点;DSP芯片的分类和特点。
2.DSP芯片的内部结构:了解DSP芯片的内部结构和工作原理,包括CPU、内存、接口、外设等部分。
3.DSP程序的设计和调试:学习DSP程序的设计方法,包括算法描述、程序编写和调试技巧。
4.DSP应用系统的设计和实现:掌握DSP应用系统的设计方法,包括系统架构、硬件选型、软件开发和系统测试等。
三、教学方法为了实现本课程的教学目标,我们将采用多种教学方法,包括讲授法、案例分析法、实验法等。
具体方法如下:1.讲授法:通过教师的讲解,使学生掌握DSP的基本理论和原理,引导学生理解DSP技术的核心概念。
2.案例分析法:通过分析具体的DSP应用案例,使学生了解DSP技术的实际应用,培养学生的实际操作能力。
3.实验法:通过实验操作,使学生熟悉DSP芯片的使用方法和编程技巧,提高学生的实践能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选择一本合适的教材,作为学生学习的基础资料,提供系统的DSP知识。
dsp课程设计实验报告

DSP课程设计实验语音信号的频谱分析:要求首先画出语音信号的时域波形, 然后对语音信号进行频谱分析。
在MATLAB中, 可以利用函数fft对信号进行快速傅立叶变换, 得到信号的频谱特性, 从而加深对频谱特性的理解。
其程序为:>> [y,fs,bits]=wavread('I:\xp.wav',[1024 5120]);>> sound(y,fs,bits);>> Y=fft(y,4096);>> subplot(221);plot(y);title('原始信号波形');>> subplot(212);plot(abs(Y));title('原始信号频谱');程序运行结果为:设计数字滤波器和画出频率响应:根据语音信号的特点给出有关滤波器的性能指标:低通滤波器性能指标, =1000Hz, =1200Hz, =100dB, =1dB;高通滤波器性能指标, =4800Hz, =5000Hz, =100dB, =1dB;带通滤波器性能指标, =1200Hz, =3000Hz, =1000Hz, =3200Hz, =100dB, =1dB;要求学生首先用窗函数法设计上面要求的三种滤波器, 在MATLAB中, 可以利用函数firl 设计FIR滤波器;然后再用双线性变换法设计上面要求的三种滤波器, 在MA TLAB中, 可以利用函数butte、cheby1和ellip设计IIR滤波器;最后, 利用MATLAB中的函数freqz画出各种滤波器的频率响应, 这里以低通滤波器为例来说明设计过程。
低通:用窗函数法设计的低通滤波器的程序如下:>> fp=1000;fc=1200;As=100;Ap=1;fs=22050;>> wc=2*fc/fs;wp=2*fp/fs;>> N=ceil((As-7.95)/(14.36*(wc-wp)/2))+1;>> beta=0.1102*(As-8.7);>> Win=Kaiser(N+1,beta);>>b=firl(N,wc,Win);>>freqz(b,1,512,fs);程序运行结果:这里选用凯泽窗设计, 滤波器的幅度和相位响应满足设计指标, 但滤波器长度(N=708)太长, 实现起来很困难, 主要原因是滤波器指标太苛刻, 因此, 一般不用窗函数法设计这种类型的滤波器。
基于dsp课程设计报告

基于dsp课程设计报告一、教学目标本课程的教学目标分为三个维度:知识目标、技能目标和情感态度价值观目标。
1.知识目标:通过本课程的学习,学生需要掌握DSP(数字信号处理器)的基本概念、原理和应用。
具体包括:了解DSP的发展历程和分类;理解DSP的基本结构和主要性能指标;掌握DSP的编程方法和应用领域。
2.技能目标:培养学生具备使用DSP进行数字信号处理的能力。
具体包括:学会使用DSP开发环境和工具;掌握DSP编程语言和算法;能够独立完成DSP项目的开发和调试。
3.情感态度价值观目标:激发学生对DSP技术的兴趣和好奇心,培养学生的创新意识和团队合作精神。
使学生认识到DSP技术在现代社会中的重要性和广泛应用,树立正确的技术观和价值观。
二、教学内容本课程的教学内容分为五个部分:DSP基础知识、DSP原理与结构、DSP编程方法、DSP应用案例和DSP项目实践。
1.DSP基础知识:介绍DSP的发展历程、分类和主要性能指标。
2.DSP原理与结构:讲解DSP的基本原理、结构和主要组成部分,如运算器、存储器、输入输出接口等。
3.DSP编程方法:学习DSP编程语言、算法和开发环境,掌握基本的编程技巧。
4.DSP应用案例:分析典型的DSP应用场景,如音频处理、图像处理、通信系统等。
5.DSP项目实践:分组进行项目实践,培养学生独立完成DSP项目的能力。
三、教学方法本课程采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等,以激发学生的学习兴趣和主动性。
1.讲授法:用于传授基本知识和理论,引导学生掌握DSP的基本概念和原理。
2.讨论法:鼓励学生针对案例进行分析讨论,培养学生的思考能力和团队协作精神。
3.案例分析法:通过分析实际应用案例,使学生更好地理解DSP技术的应用和价值。
4.实验法:让学生动手进行实验,培养实际操作能力和创新思维。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的教材,如《数字信号处理器原理与应用》等。
dsp交通等课程设计报告

dsp交通等课程设计报告一、课程目标知识目标:1. 让学生理解交通信号灯的基本原理,掌握数字信号处理(DSP)技术在交通控制中的应用。
2. 使学生掌握交通流量的基本概念,学会分析交通数据,并运用DSP技术进行优化处理。
3. 帮助学生了解我国交通法规及交通信号控制的相关知识。
技能目标:1. 培养学生运用DSP技术进行交通信号灯控制程序编写的能力。
2. 培养学生运用数据分析方法,对交通流量进行有效监控和优化调整的能力。
3. 提高学生的实践操作能力,学会使用相关软件和硬件进行交通信号控制系统的设计和调试。
情感态度价值观目标:1. 培养学生关注社会交通问题,树立解决实际问题的责任感和使命感。
2. 激发学生对数字信号处理技术的兴趣,提高学生主动学习的积极性。
3. 培养学生的团队协作意识,学会与他人共同探讨、解决问题。
本课程针对年级特点,结合实际交通问题,以数字信号处理技术为载体,旨在提高学生的理论知识水平、实践操作能力以及解决实际问题的能力。
课程目标具体、可衡量,为后续教学设计和评估提供明确方向。
二、教学内容本章节教学内容主要包括以下三个方面:1. 交通信号灯原理及DSP技术基础- 教材章节:第一章 交通信号灯原理;第二章 DSP技术概述- 内容安排:介绍交通信号灯的基本原理、功能及分类;讲解DSP技术的基本概念、发展历程及其在交通控制领域的应用。
2. 交通流量分析及DSP技术应用- 教材章节:第三章 交通流量分析;第四章 DSP技术在交通控制中的应用- 内容安排:分析交通流量的基本特性,讲解数据采集、处理和优化方法;探讨DSP技术在交通信号控制、拥堵缓解等方面的应用实例。
3. 交通信号控制系统设计与实践- 教材章节:第五章 交通信号控制系统设计;第六章 实践操作- 内容安排:介绍交通信号控制系统的设计原理、硬件和软件选型;指导学生进行交通信号控制程序编写,开展实践操作,培养实际动手能力。
教学内容安排和进度:本章节共计12课时,分配如下:- 第1-4课时:交通信号灯原理及DSP技术基础- 第5-8课时:交通流量分析及DSP技术应用- 第9-12课时:交通信号控制系统设计与实践教学内容具有科学性和系统性,结合教材章节和实际案例,旨在帮助学生掌握交通信号控制相关知识,提高实践操作能力。
dsp课程设计报告方波

dsp课程设计报告方波一、教学目标本课程的教学目标是使学生掌握方波信号的性质、产生方法和应用,能够运用数字信号处理理论分析和设计方波信号处理电路,培养学生的理论联系实际的能力和创新意识。
具体分解为以下三个目标:1.知识目标:(1)掌握方波信号的定义、特点和分类。
(2)了解方波信号产生的方法,能够运用相关算法生成方波信号。
(3)熟悉方波信号在数字信号处理中的应用领域,如通信、雷达、音频处理等。
2.技能目标:(1)能够运用数学方法分析方波信号的波形、频率、幅值等参数。
(2)掌握至少一种编程语言,能够实现方波信号的生成和处理算法。
(3)具备一定的实验操作能力,能够通过实验验证方波信号处理的理论。
3.情感态度价值观目标:(1)培养学生对数字信号处理的兴趣,增强学习的主动性。
(2)培养学生团队合作精神,提高沟通与协作能力。
(3)培养学生关注国家发展战略,认识数字信号处理在科技前沿和国家经济建设中的重要地位。
二、教学内容本课程的教学内容主要包括以下几个部分:1.方波信号的基本概念:介绍方波信号的定义、特点和分类,使学生了解方波信号在数字信号处理中的重要性。
2.方波信号的产生方法:讲解方波信号产生的原理,介绍常见的方波信号生成算法,如查表法、计数器法等。
3.方波信号的处理方法:分析方波信号的处理方法,如滤波、采样、量化等,使学生掌握方波信号处理的基本技巧。
4.方波信号处理的应用:介绍方波信号在通信、雷达、音频处理等领域的应用,提高学生的实践能力。
5.实验与实践:安排一定数量的实验,使学生在实践中掌握方波信号处理的理论,培养学生的动手能力。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解方波信号的基本概念、产生方法、处理方法和应用,引导学生掌握课程的核心知识。
2.讨论法:学生分组讨论方波信号处理的问题,培养学生的思考能力和团队合作精神。
3.案例分析法:分析实际案例,使学生了解方波信号处理在实际工程中的应用,提高学生的实践能力。
DSP技术课程设计实验报告

实验设计报告实验项目名称:基于DSP的数字滤波器设计与仿真目录一、课程设计的目的和要求 (3)二、系统功能介绍及总体设计方案 (3)1、系统功能介绍 (3)2、总体设计方案流程图 (3)三、主要内容和步骤 (4)1、滤波器原理 (4)2、DSP 实现FIR滤波的关键技术 (4)3.操作步骤 (6)四、详细设计 (7)1、MATLAB程序流程图 (7)2、CCS汇编程序流程图 (8)五、实验过程 (8)1.汇编语言 (8)2.C语言 (13)六、结论与体会 (18)七、参考文献 (19)八、附件:源程序清单 (19)汇编程序清单: (19)C程序清单 (21)一、课程设计的目的和要求通过课程设计,加深对DSP芯片TMS320C54x的结构、工作原理的理解,获得DSP应用技术的实际训练,掌握设计较复杂DSP系统的基本方法。
通过使用汇编语言编写具有完整功能的图形处理程序或信息系统,使学生加深对所学知识的理解,进一步巩固汇编语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的汇编语言程序,从而具备解决综合性实际问题的能力。
二、系统功能介绍及总体设计方案1、系统功能介绍一个实际的应用系统中,总存在各种干扰。
数字滤波器在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像信号等各种信号处理中都有广泛的应用,数字滤波器也是使用最为广泛的信号处理算法之一。
在本设计中,使用MATLAB模拟产生合成信号,然后利用CCS进行滤波。
设定模拟信号的采样频率为32000Hz,。
设计一个FIR低通滤波器,其参数为:滤波器名称: FIR低通滤波器采样频率: Fs=40000Hz通带: 4000Hz~4500Hz过渡带: 2500Hz~3000Hz,3500Hz~4000Hz带内波动: 0.5dB阻带衰减: 50dB滤波器级数: N=154滤波器系数:由MATLAB根据前述参数求得。
2、总体设计方案流程图三、主要内容和步骤1、滤波器原理对于一个FIR 滤波器系统,它的冲击响应总是又限长的,其系统函数可记为:其中N-1是FIR 的滤波器的阶数,为延时结,为端口信号函数。
DSP课设报告

目录绪论 (2)DSP的特点 (2)第一章设计任务和设备 (3)1.1 设计技术指标要求 (3)1.2 设计内容 (3)1.3 设计所需设备 (4)1.4设计说明 (4)第二章硬件设计 (4)2.1 F2812介绍 (5)2,2 TDS2812EVMV板介绍 (6)2.3 F2812 GPIO (6)2.4 用DSP的GPIO口扩展LED灯的动态显示硬件设计 (7)第三章软件设计 (7)3.1软件系统分析 (7)3.2 程序流程图 (8)第四章心得体会 (8)参考文献 (13)程序清单 (13)绪论DSP一方面是Digital Signal Processing的缩写,意思是数字信号处理,就是指数字信号理论研究。
DSP另一方面是Digital Signal Processor,意思是数字信号处理器,就是用来完成数字信号处理的器件。
最初的DSP器件只是被设计成用以完成复杂数字信号处理的算法。
自从DSP芯片诞生以来,DSP芯片得到了飞速的发展。
DSP芯片高速发展,一方面得益于集成电路的发展,另一方面也得益于巨大的市场。
在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。
目前,DSP芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。
DSP的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比微控制器做得更好而且价格更便宜,许多家电用第二代DSP来控制大功率电机就是一个很好的例子。
汽车、个人通信装置、家用电器以及数以百万计的工厂使用DSP系统。
数码相机、IP电话和手持电子设备的热销带来了对DSP芯片的巨大需求。
而手机、PDA、MP3播放器以及手提电脑等则是设备个性化的典型代表,这些设备的发展水平取决于DSP的发展。
新的形势下,DSP面临的要求是处理速度更高,功能更多更全,功耗更低,存储器用量更少。
此次设计中,通过对TMS320CF2812的控制以及对其引脚GPIO功能的设计,在实验板上实现4位LED显示流水灯。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据采集处理和控制系统设计一课程设计要求1.基本DSP硬件系统设计要求①基本DSP硬件系统以TMS320C54x系列为核心处理器,包括最小系统、存储器扩展、显示器、键盘、AD、DA等电路模块;②硬件设计画出主要芯片及电路模块之间的连接即可,重点考查电路模块方案设计与系统地址分配;③设计方案以电路示意图为主,辅以必要的文字说明。
2.基本软件设计要求①看懂所给例程,画出例程输出波形示意图;②修改例程程序,使之输出其它波形,如方波、三角波、锯齿波等均可;③设计方案以程序实现为主,辅以必要的文字说明。
3.课程设计报告要求①硬件系统设计:设计思路、设计系统功能、主要芯片选型及使用方法、设计方案说明、电路示意图②软件系统设计:示例程序功能解读及输出波形示意图、设计软件功能、设计思路、实现源码(带程序注释)③报告总结二系统分析利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。
在DSP 中采集信号,并且对信号进行频谱分析,滤波等。
通过键盘或者串口命令选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD 上显示。
主要功能如下:(1)对外部输入的模拟信号采集到DSP 内存,会用CCS 软件显示采集的数据波形。
(2)对采集的数据进行如下算法分析:①频谱分析:使用fft 算法计算信号的频率。
②对信号进行IIR 滤波或FIR 滤波,并且计算滤波前后信号的频率。
③外部键盘或者从计算机来的串口命令选择算法功能,并且将结果在LCD 上显示。
绘制出DSP系统的功能框图、使用AD(Altium Designer)绘制出系统的原理图和PCB 版图。
在 DSP 中采集信号,用CCS 软件显示采集的数据波形,以及对采集的数据进行算法分析。
三硬件设计3.1 硬件总体结构CLKSTMS32054X11CONTROL1MX16BIT FLASH2016D[15..0]A[19..0]XDS510 JTAGRESETPower (73HD3XX)16WE OECE复位电路3.2 DSP 模块设计3.3 电源模块设计将5V电源电压转换为3.3V和1.6V电源3.4 时钟模块设计此处由外部晶振提供时钟信号3.5 存储器模块设计DSP上只有一个读写控制信号引脚,而FLASH有两个引脚,将读、写分开,故在OE上接一个非门电路,实现高时读,低时写。
FLASH上的地址线和数据线与DSP上的地址线、数据线相连3.6 JATG模块设计3.7 TMS320VC5416 最小系统 PCB 版图板上包括了支持TMS320VC5416独立运行的时钟电路、复位电路、Flash模块、JTAG仿真接口电路以及电源模块等。
为节省空间和材料,部分器件放在了反面。
四软件设计4.1正弦波信号发生器所给例程输出波形为正弦波,波形如下图所示:4.2三角波(方波)信号发生器******************************************************************** ****************三角波信号发生程序(括号内为方波)****************** ********************************************************************.mmregs.def startk1 .usect "k",1outdata1 .set 0800h(0800h)outdata2 .set 09ffh(0fffh)outdata3 .set 0affh(0fffh)outdata4 .set 0bffh(0fffh)outdata5 .set 0cffh(0fffh)outdata6 .set 0dffh(0fffh)outdata7 .set 0effh(0fffh)outdata8 .set 0fffh(0fffh)outdata9 .set 1000h(0fffh)outdata10 .set 0fffh(0fffh)outdata11 .set 0effh(0fffh)outdata12 .set 0dffh(0fffh)outdata13 .set 0cffh(0fffh)outdata14 .set 0bffh(0fffh)outdata15 .set 0affh(0fffh)outdata16 .set 09ffh(0fffh)outdata17 .set 08ffh(0800h)outdata18 .set 07ffh(0000h)—outdata19 .set 06ffh(0000h)outdata20 .set 05ffh(0000h)outdata21 .set 04ffh(0000h)outdata22 .set 03ffh(0000h)outdata23 .set 02ffh(0000h)outdata24 .set 01ffh(0000h)outdata25 .set 00ffh(0000h)outdata26 .set 01ffh(0000h)outdata27 .set 02ffh(0000h)outdata28 .set 03ffh(0000h)outdata29 .set 04ffh(0000h)outdata30 .set 05ffh(0000h)outdata31 .set 06ffh(0000h)outdata32 .set 07ffh(0000h)//定义输出数据.textstart:stm 2000h,sp//置堆栈指针stm #k1,ar2//将操作数#k1装入ar2st #outdata1,*ar2//将数据送到*ar2nopnopbegin:st #outdata1,*ar2portw *ar2,0bfffh//将*ar2内容从D/A转换器输出rpt #7fffh//等待一段时间nopst #outdata2,*ar2portw *ar2,0bfffhrpt #7fffhnopst #outdata3,*ar2portw *ar2,0bfffhrpt #7fffhst #outdata4,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata5,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata6,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata7,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata8,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata9,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata10,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata11,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata12,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata13,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata14,*ar2portw *ar2,0bfffh rpt #7fffhst #outdata15,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata16,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata17,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata18,*ar2 portw *ar2,0bfffh rpt #7fffhnopst #outdata19,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata20,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata21,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata22,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata23,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata24,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata25,*ar2portw *ar2,0bfffh rpt #7fffhst #outdata26,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata27,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata28,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata29,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata30,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata31,*ar2portw *ar2,0bfffh rpt #7fffhnopst #outdata32,*ar2portw *ar2,0bfffh rpt #7fffhnopb begin//循环输出32个数据.end//代码段结束4.3 本系统软件总体流程—4.4 核心模块及实现代码FFT算法程序:void kfft(double pr[Length],double pi[Length],int n,int k,double fr[Length],double fi[Length],int l,int il){int it,m,is,i,j,nv,l0;double p,q,s,vr,vi,poddr,poddi;for (it=0; it<=n-1; it++){ m=it; is=0;for (i=0; i<=k-1; i++){ j=m/2; is=2*is+(m-2*j); m=j;}fr[it]=pr[is]; fi[it]=pi[is];}pr[0]=1.0; pi[0]=0.0;p=6.283185306/(1.0*n);pr[1]=cos(p); pi[1]=-sin(p);if (l!=0) pi[1]=-pi[1];for (i=2; i<=n-1; i++)—{ p=pr[i-1]*pr[1]; q=pi[i-1]*pi[1];s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);pr[i]=p-q; pi[i]=s-p-q;}for (it=0; it<=n-2; it=it+2){ vr=fr[it]; vi=fi[it];fr[it]=vr+fr[it+1]; fi[it]=vi+fi[it+1];fr[it+1]=vr-fr[it+1]; fi[it+1]=vi-fi[it+1];}m=n/2; nv=2;for (l0=k-2; l0>=0; l0--){ m=m/2; nv=2*nv;for (it=0; it<=(m-1)*nv; it=it+nv)for (j=0; j<=(nv/2)-1; j++){ p=pr[m*j]*fr[it+j+nv/2];q=pi[m*j]*fi[it+j+nv/2];s=pr[m*j]+pi[m*j];s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);poddr=p-q; poddi=s-p-q;fr[it+j+nv/2]=fr[it+j]-poddr;fi[it+j+nv/2]=fi[it+j]-poddi;fr[it+j]=fr[it+j]+poddr;fi[it+j]=fi[it+j]+poddi;}}if (l!=0)for (i=0; i<=n-1; i++){ fr[i]=fr[i]/(1.0*n);fi[i]=fi[i]/(1.0*n);}if (il!=0)for (i=0; i<=n-1; i++){ pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);if (fabs(fr[i])<0.000001*fabs(fi[i])){ if ((fi[i]*fr[i])>0) pi[i]=90.0;else pi[i]=-90.0;}elsepi[i]=atan(fi[i]/fr[i])*360.0/6.283185306;}}卷积程序:void Convolveok( //卷积函数double *x, // 原始输入数据—double *h, // 冲击响应double *y, // 卷积输出结果UINT16 Leng, // 序列长度UINT16 h_Len){UINT16 m,p,j;double r,rm;double xmean = 0.0;double xmid[100];for(m=0;m<h_Len;m++){xmid[m] = 0.0;}for (m=0; m<Leng; m++){xmean = x[m] + xmean;}xmean = 1.0*xmean/Length;for (m=0; m<Leng; m++){x[m] = x[m] - xmean;}for (m=0; m<Leng; m++){for (p=0; p<h_Len; p++){xmid[h_Len-p-1] = xmid[h_Len-p-2];}xmid[0] = x[m];r = 0.0;rm= 0.0;for (j=0; j<h_Len; j++){r = xmid[j] * h[j];rm = rm + r;}y[m] = rm;}}求最大值和次大值函数:void max(){ int k1,k2; //k1 最大值,k2 次最大值—int r;for(r=0;r<16;r++){if(pr[k1]<pr[r]){k1=r;}}for(r=20;r<64;r++){if(pr[k2]<pr[r]){k2=r;}}f0=250000.0/256*k1;f1=250000.0/256*k2;fc=(f0+f1)/2;}归一化函数:void avg(){ int j;sum= 0.0;for(j=0;j<256;j++){sum+=(data_buff[j]/256.0);}for(j=0;j<256;j++){pr[j]=data_buff[j]-sum;pi[j]=0.0;}}FIR滤波器设计函数:void firdes(double npass)//求h(n){int t;for (t=0; t<FLen; t++){h[t]=sin((t-(FLen-1)/2.0)*npass*3.1415926)/(3.1415926*(t-(FLen-1) /2.0));}if (t == ((FLen-1)/2)) h[t]=npass;}外部中断2服务函数:void interrupt ExtInt2(void){int i1,j;*(unsigned int*)IFR=0xFFFF; //清除所有中断标志data_buff[i1] = port8002 & 0x00ff;i1++;if(i1 == 256){avg();kfft(pr,pi,256,8,fr,fi,0,1);max();npass=fc/250000.0;firdes(npass);Convolveok(data_buff,h,y,256,51);for(j=0;j<256;j++){yr[j]=y[j];yi[j]=0.0;}kfft(yr,yi,256,8,Yr,Yi,0,1);flag=1;i1 = 0;}4.5 程序运行效果①采集的数据及其FFT计算结果②51阶滤波器H(n)波形③滤波前后信号频谱图:由滤波前后高低频分量的相对大小证明低通滤波器对高频分量的衰减作用比较强,但没有完全滤出去④采集数据波形与滤波后波形比较由图可见滤波后信号中的高频分量得到了较大的衰减,滤波后波形变得平滑。