音频信号分析仪毕业设计论文资料-论文
音频信号分析仪

音频信号分析仪本系统基于离散傅立叶变换原理,以单片机和FGPA为控制核心,在FPGA内部完成了2048点浮点型FFT,能准确判断频率成分在20Hz~10kHz、幅值范围在0.1mV~10V的输入信号的功率谱及其总功率,频率分辨力最高可达10Hz。
利用相关原理准确检测信号的周期性并测量其周期,达到了较高的性能指标。
AbstractThe system,mainly controlled by the Single-Chip Microcomputer and FPGA,is based on discrete Fourier transform theory.This design ,which implements 2048 floating point FFT algorithm in FPGA,can accurately detect the power spectrum and the total power of the input signal whose frequency components raging from 20Hz to 10kHz,amplitude raging from 0.1mV to 10V. Frequency resolution reaches up to 10 ing correlation theory ,the system detects the periodicity of the input signal and measures the period of the periodic signal.一、方案论证与选择题目要求设计制作一台可分析音频信号频率成分并可测量正弦信号失真度的仪器。
该仪器能够检测的输入信号的范围(峰峰值)为100mV 5V,可进一步扩展输入信号的动态范围。
对输入信号进行频率和功率的检测,其中对信号频率的分辨力为100Hz,可扩展至20Hz。
音频信号分析仪毕业论文

4.5 周期计算12
4 系统调试12
5.1总硬件焊接图12
5.2电压跟随电路7
5.3程控放大电路8
5.4峰值检测电路8
5.5电压抬升电路18
5.6液晶屏显示图13
5.7测试结果14
5 总结15
参考文献15
附录1:元器件明细表和仪器设备清单15
附录2:FFT程序15
附录3:周期计算程序17
音频信号分析仪利用频谱分析原理来分析被测信号的频率、频谱及波形。常用的频谱分析方法有:扫频法、数字滤波法、FFT法。这里提出一种基于FFT方法的音频信号分析仪设计方案,通过快速傅里叶变换(FFT)把被测的音频信号由时域信号转换为频域信号,将其分解成分立的频率分量,在此基础上对其进行各种分析,达到与传统频谱分析仪同样效果。该系统设计可应用于音频制作、信号分析等领域,具有一定的科学价值和实用价值。
音频信号分析仪
指导老师:邓晶
年纪专业:11信息工程
成员: 丽梅(1128401039)
东飞(1128401014)
罗兰(1128401128)
日期:2014年6月
摘 要:本音频信号分析仪基于快速傅里叶变换的原理,以32位CPU STM32构成的最小系统为控制核心,由电压跟随、程控放大、峰值检测、抗混叠滤波等模块组成。本音频信号分析仪由STM32控制,通过AD转换,对音频信号进行采样,把连续信号离散化,然后通过FFT运算,对音频信号各个频率分量以及功率等指标进行分析和处理,然后通过高分辨率的LCD对信号的频谱进行显示。该系统能够精确测量的音频信号频率围为50Hz-10KHz,其幅度围为5mVpp-5Vpp,分辨力为50Hz。
关键词:FFT 嵌入式系统 前级信号处理 功率谱
[论文]语音信号分析课程设计报告-语音信号处理系统设计
![[论文]语音信号分析课程设计报告-语音信号处理系统设计](https://img.taocdn.com/s3/m/13cd14ca02020740bf1e9bbf.png)
信号与线性系统课程设计报告课题三语音信号处理系统设计班级:姓名:学号:成绩:指导教师:日期:目录摘要---------------------------------------------------------------------------------------------- 2关键词 ------------------------------------------------------------------------------------------- 2 1课程设计的目的、意义----------------------------------------------------------------- 3 2设计任务及技术指标 -------------------------------------------------------------------- 3 3 设计方案论证 ----------------------------------------------------------------------------- 3 3.1 设计理论依据----------------------------------------------------------------------------------- 33.1.1 采样定理 -------------------------------------------------------------------------------- 33.1.2 采样频率 -------------------------------------------------------------------------------- 33.1.3 采样位数与采样频率 ---------------------------------------------------------------- 4 3.2 语音信号的分析及处理方法 --------------------------------------------------------------- 43.2.1 语音的录入与打开 ------------------------------------------------------------------- 43.2.2 时域信号的FFT分析 ---------------------------------------------------------------- 43.2.3 滤波器设计 ----------------------------------------------------------------------------- 53.2.4 IIR滤波器与FIR滤波器的性能比较---------------------------------------------- 73.2.5语音信号特征参数提取-------------------------------------------------------------- 74 设计内容------------------------------------------------------------------------------------ 8 4.1语音信号分析 ----------------------------------------------------------------------------------- 84.1.1 原始语音信号分析 ------------------------------------------------------------------- 84.1.2对原始信号重采样并回放----------------------------------------------------------- 94.1.3对原始信号加入干扰噪声并分析----------------------------------------------- 114.1.4滤波器设计及其特性分析--------------------------------------------------------- 124.1.5对带噪信号滤波并分析------------------------------------------------------------ 13 4.2 图形用户界面--------------------------------------------------------------------------------- 154.2.1图形用户界面概念 ------------------------------------------------------------------ 154.2.2图形用户界面设计 ------------------------------------------------------------------ 154.2.3图形用户界面制作 ------------------------------------------------------------------ 154.2.4图形用户界面的设计程序--------------------------------------------------------- 16 4.3 对语音信号部分时域参数计算 ---------------------------------------------------------- 234.3.1对语音信号进行分帧 --------------------------------------------------------------- 234.3.2计算语音信号的短时能量--------------------------------------------------------- 244.3.3计算语音信号的短时平均过零率----------------------------------------------- 254.3.4计算语音信号的短时自相关函数----------------------------------------------- 265 实验结果与分析 ------------------------------------------------------------------------- 276 总结----------------------------------------------------------------------------------------- 28参考文献 -------------------------------------------------------------------------------------- 28课题三语音信号处理系统设计摘要:数字信号处理是将信号以数字方式表示并处理的理论和技术。
基于声卡的音频信号分析仪的设计

基于声卡的音频信号分析仪的设计————————————————————————————————作者:————————————————————————————————日期:2an基于声卡的音频信号分析仪的设计摘要本文主要介绍如何用普通的计算机声卡代替商用数据采集卡,利用声卡的DSP技术和LabVIEW的多线程技术实现音频信号的数据采集,开发基于PC机声卡的虚拟音频信号分析仪.该系统能够正确采集声卡设计频率范围内的信号,实现音频信号时域分析和频谱分析功能.关键词声卡数据采集信号分析LabVIEW- I -A general audio classifier based on human perception motivated modelAbstractThe audio channel conveys rich clues for content—based multimedia indexing。
Interesting audio analysis includes, besides widely known speech recognition and speaker identification problems,speech/music segmentation, speaker gender detection,special effect recognition such as gun shots or car pursuit, and so on。
All these problems can be considered as an audio classification problem which needs to generate a label from low audio signal analysis。
While most audio analysis techniques in the literature are problem specific,we propose in this paper a general framework for audio classification。
多媒体音频信号分析与处理论文素材

多媒体音频信号分析与处理论文素材多媒体音频信号分析与处理多媒体音频信号分析与处理是近年来受到广泛研究和应用的领域之一。
音频信号处理是指对音频信号进行采集、变换、分析和处理的过程,旨在提取音频中的有用信息,改善音质并满足特定的应用需求。
本文将介绍多媒体音频信号的特点、分析方法以及常见的音频处理技术。
一、多媒体音频信号的特点多媒体音频信号是指通过麦克风等设备采集的声音信号,其特点在于具有时域和频域两个方面的特征。
在时域上,音频信号可表示为一个连续的波形,用于描述声音的变化过程;在频域上,音频信号可通过傅里叶变换将时域波形转换为频谱图,用于表示声音在不同频率上的能量分布。
同时,音频信号还具有高度的时变性和非线性特性,这使得音频信号的分析和处理更加复杂。
二、音频信号分析方法为了从音频信号中提取有用信息,需要对其进行分析。
常见的音频信号分析方法包括时域分析和频域分析。
1. 时域分析时域分析是通过对音频信号的波形进行观察和分析来了解音频信号的特征。
常用的时域分析方法包括:(1)波形显示:将音频信号的波形通过图像显示出来,直观地展示声音的振幅和波动情况;(2)能量分析:通过计算音频信号的能量,分析音频信号的强弱;(3)自相关分析:通过计算音频信号与其自身的相关性,了解音频信号的周期性和重复性。
2. 频域分析频域分析是通过将音频信号转换为频谱图,进而观察和分析音频信号的频率成分。
常用的频域分析方法包括:(1)傅里叶变换:将音频信号从时域转换为频域,得到音频信号的频谱图;(2)谱分析:通过对音频信号频谱图的分析,了解音频信号在不同频率上的能量分布;(3)频谱修复:通过基于频域的滤波技术,对音频信号的频率成分进行调整和修复。
三、音频信号处理技术音频信号处理技术旨在改善音频的音质和实现特定的应用需求。
常见的音频处理技术包括去噪、音频增强和音频编码等。
1. 去噪音频信号通常会受到环境噪声的干扰,影响音频的清晰度和可听性。
音频信号分析仪_范文

题目:音频信号分析仪(A题)作者:信鹏皓张玉霞邓杰辅导教师:王淑娟老师一、总体方案设计1.1 主处理器选择根据题目要求,需分析音频信号频率成分并可测量正弦信号失真度,很显然需要研究信号的频域特性。
在进行频域分析之前,必须使用AD采集一段离散的信号序列作为频域分析的原始数据,离散傅里叶变换(DF T)是分析离散周期序列的主要手段。
因此,可以采用数据采集及处理的方法分析信号的频率成分。
由于DF T计算过程需要完成大量的乘法和加法操作,而且随着采样点数的增加成指数性增长,尽管可以通过快速傅里叶变换(F F T)减少计算量,但其复杂程度对于普通微处理而言仍然相当可观。
因此本设计的关键是选择合适的微处理器作为系统的控制和处理芯片。
普通单片机、ARM、DS P都可完成此功能,其各项功能比较如表一所示。
表一三种微处理器的比较从上表可以看出,普通单片机最大缺点是其运行速度慢,完成FF T计算需花费较长时间;而DS P的开发周期较长,价格较贵。
因此,最终选择各项指标都比较均衡的ARM作为系统的主处理器。
1.2 总体方案设计选择ARM为主处理器后,设计系统总体框图如图1所示。
其中,程控放大器能够根据输入信号的幅值动态调节放大倍数以次提高系统灵敏度;滞回比较和过零比较电路用于将被测信号整形为标准的脉冲信号,用于主控器测量频率或周期。
图1 系统总体框图二、理论分析与计算2.1 放大器的设计(1) 输入信号先经过跟随放大器以保证输入阻抗50欧姆。
(2) 为了对不同幅值的信号进行功率测量分析,对信号进行不同倍数的放大。
我们利用模拟开关把运算放大器的放大倍数设计为150倍,15倍和1倍三档。
其放大倍数利用软件来控制。
(3) 为了对不同幅值的信号进行频率测量分析,将通过跟随放大器的输出信号放大一定的倍数,再经过一系列整形得到ARM 需要的信号。
2.2 周期性测量方法利用ARM 对整形后的波形信号进行计时采样,通过定时100毫秒ARM 捕捉到的上升沿个数即可测得此信号的频率,取频率的倒数就是周期。
基于DSP的音频信号分析仪的设计毕业论文基于TMS320C5402的音频信号分析仪的设计及实现

目录前言 (1)第一章系统描述 (3)§1.1 系统方案选择 (3)§1.1.1 系统总体方案选择 (3)§1.1.2 各模块的方案选择 (6)§1.2 总体方案描述 (6)第二章信号频谱分析仪的硬件设计 (7)§2.1 DSP芯片 (8)§2.1.1 DSP芯片特点 (8)§2.1.2 电路设计时应注意的问题 (10)§2.2 串行口McBSP (11)§2.2.1 McBSP简介 (11)§2.2.2 McBSP的作用 (12)§2.3 主机接口HPI (13)§2.3.1 主机接口的传统解决方案 (13)§2.3.2 HPI的简介 (14)§2.3.3 HPI作用 (15)第三章信号频谱分析仪的外设 (17)§3.1 89c51芯片 (17)§3.1.1 89c51简介 (17)§3.1.2 89c51的控制作用 (20)§3.2 A/D转换电路 (21)§3.3 串口描述 (22)第四章信号频谱分析仪设计的算法 (25)§4.1 FFT算法简介 (25)§4.2 快速傅里叶变换的原理 (25)§4.3 功率谱测量方法 (28)§4.4 采样参数的选择 (29)第五章系统软件设计 (31)§5.1 DSP程序设计 (31)§5.1.1 芯片选择 (31)§5.1.2FFT算法设计 (31)§5.2 单片机程序设计 (32)第六章系统调试 (34)§6.1 Keil调试程序 (34)§6.1.1 Keill 软件简介 (34)§6.1.2 Keil C51开发系统基本知识 (35)§6.1.3 Keil C51软件的使用方法 (35)§6.2 集成开发环境CCS (36)§6.2.1 CCS概述 (36)§6.2.2 用CCS制作下载程序文件 (37)§6.3 调试环境与测试结果 (42)§6.3.1 DSP程序转化为单片机程序 (42)§6.3.2 运行结果 (43)结论 (44)参考文献 (45)致谢 (46)附录 (47)附录1 DSK5402开发板 (47)附录2 DSP开发板原理图 (48)外文资料翻译 (49)基于TMS320C5402的音频信号分析仪的设计及实现摘要随着DSP技术的普及,DSP已越来越广泛地被应用于各个领域,例如:语音处理、图像处理、模式识别及工业控制等,并且日益显示出其巨大的优越性。
音频信号分析仪毕业设计论文

音频信号分析仪(A题)摘要:本音频信号分析仪由32位MCU为主控制器,通过AD转换,对音频信号进行采样,把连续信号离散化,然后通过FFT快速傅氏变换运算,在时域和频域对音频信号各个频率分量以及功率等指标进行分析和处理,然后通过高分辨率的LCD对信号的频谱进行显示。
该系统能够精确测量的音频信号频率范围为20Hz-10KHz,其幅度范围为5mVpp-5Vpp,分辨力分为20Hz和100Hz两档。
测量功率精确度高达1%,并且能够准确的测量周期信号的周期,是理想的音频信号分析仪的解决方案。
关键词:FFT MCU 频谱功率目录1 系统方案论证与比较1.1 引言1.2 采样方法比较与选择方案一、用DDS芯片配合FIFO对信号进行采集,通过DDS集成芯片产生一个频率稳定度和精度相当高的信号作为FIFO的时钟,然后由FIFO对A/D转换的结果进行采集和存储,最后送MCU处理。
方案二、直接由32位MCU的定时中断进行信号的采集,然后对信号分析。
由于32位MCU -LPC2148是60M的单指令周期处理器,所以其定时精确度为16.7ns,已经远远可以实现我们的40.96KHz的采样率,而且控制方便成本便宜,所以我们选择由MCU直接采样。
1.3 处理器的比较与选择由于快速傅立叶变换FFT算法设计大量的浮点运算,由于一个浮点占用四个字节,所以要占用大量的内存,同时浮点运算时间很慢,所以采用普通的8位MCU 一般难以在一定的时间内完成运算,所以综合内存的大小以及运算速度,我们采用Philips 的32位的单片机LPC2148,它拥有32K的RAM,并且时钟频率高达60M,所以对于浮点运算不论是在速度上还是在内存上都能够很快的处理。
1.4 周期性判别与测量方法比较与选择对于普通的音频信号,频率分量一般较多,它不具有周期性。
测量周期可以在时域测量也可以在频域测量,但是由于频域测量周期性要求某些频率点具有由规律的零点或接近零点出现,所以对于较为复杂的,频率分量较多且功率分布较均匀且低信号就无法正确的分析其周期性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
音频信号分析仪(A题)摘要:本音频信号分析仪由32位MCU为主控制器,通过AD转换,对音频信号进行采样,把连续信号离散化,然后通过FFT快速傅氏变换运算,在时域和频域对音频信号各个频率分量以及功率等指标进行分析和处理,然后通过高分辨率的LCD对信号的频谱进行显示。
该系统能够精确测量的音频信号频率范围为20Hz-10KHz,其幅度范围为5mVpp-5Vpp,分辨力分为20Hz和100Hz两档。
测量功率精确度高达1%,并且能够准确的测量周期信号的周期,是理想的音频信号分析仪的解决方案。
关键词:FFT MCU 频谱功率目录1 系统方案论证与比较** 引言** 采样方法比较与选择方案一、用DDS芯片配合FIFO对信号进行采集,通过DDS 集成芯片产生一个频率稳定度和精度相当高的信号作为FIFO 的时钟,然后由FIFO对A/D转换的结果进行采集和存储,最后送MCU处理。
方案二、直接由32位MCU的定时中断进行信号的采集,然后对信号分析。
由于32位MCU -LPC2148是60M的单指令周期处理器,所以其定时精确度为16.7ns,已经远远可以实现我们的40.96KHz的采样率,而且控制方便成本便宜,所以我们选择由MCU直接采样。
** 处理器的比较与选择由于快速傅立叶变换FFT算法设计大量的浮点运算,由于一个浮点占用四个字节,所以要占用大量的内存,同时浮点运算时间很慢,所以采用普通的8位MCU一般难以在一定的时间内完成运算,所以综合内存的大小以及运算速度,我们采用Philips 的32位的单片机LPC2148,它拥有32K的RAM,并且时钟频率高达60M,所以对于浮点运算不论是在速度上还是在内存上都能够很快的处理。
** 周期性判别与测量方法比较与选择对于普通的音频信号,频率分量一般较多,它不具有周期性。
测量周期可以在时域测量也可以在频域测量,但是由于频域测量周期性要求某些频率点具有由规律的零点或接近零点出现,所以对于较为复杂的,频率分量较多且功率分布较均匀且低信号就无法正确的分析其周期性。
而在时域分析信号,我们可以先对信号进行处理,然后假定具有周期性,然后测出频率,把采样的信号进行周期均值法和定点分析法的分析后即可以判别出其周期性。
综上,我们选择信号在时域进行周期性分析和周期性测量。
对于一般的音频信号,其时域变化是不规则的,所以没有周期性。
而对于单频信号或者由多个具有最小公倍数的频率组合的多频信号具有周期性。
这样我们可以在频域对信号的频谱进行定量分析,从而得出其周期性。
而我们通过先假设信号是周期的,然后算出频率值,然后在用此频率对信号进行采样,采取连续两个周期的信号,对其值进行逐次比较和平均比较,若相差太远,则认为不是周期信号,若相差不远(约5%),则可以认为是周期信号。
** 系统总体设计音频信号经过一个由运放和电阻组成的50 Ohm阻抗匹配网络后,经由量程控制模块进行处理,若是一般的100mV-5V 的电压,我们选择直通,也就是说信号没有衰减或者放大,但是若信号太小,12位的A/D转换器在2.5V参考电压的条件下的最小分辨力为1mV左右,所以如果选择直通的话其离散化处理的误差将会很大,所以若是采集到信号后发现其值太小,在20mV-250mV之间的话,我们可以将其认定为小信号,从而选择信号经过20倍增益的放大器后再进行A/D采样。
经过12位A/D转换器ADS7819转换后的数字信号经由32位MCU进行FFT 变换和处理,分析其频谱特性和各个频率点的功率值,然后将这些值送由Atmega16进行显示。
信号由32 位MCU分析后判断其周期性,然后由Atmegal6进行测量,然后进行显示。
图1-1 总体设计框架图2 各单元电路设计** 前级阻抗匹配和放大电路设计图2-1 阻抗匹配和放大电路信号输入后通过R5,R6两个100Ohm的电阻和一个高精度仪表运放AD620实现跟随作用,由于理想运放的输入阻抗为无穷大,所以输入阻抗即为:R5//R6=50Ohm,阻抗匹配后的通过继电器控制是对信号直接送给AD转换还是放大20倍后再进行AD转换。
在这道题目里,需要检测各频率分量及其功率,并且要测量正弦信号的失真度,这就要求在对小信号进行放大时,要尽可能少的引入信号的放大失真。
正弦信号的理论计算失真度为零,对引入的信号失真非常灵敏,所以对信号的放大,运放的选择是个重点。
我们选择的运放是TI公司的低噪声、低失真的仪表放大器INA217,其失真度在频率为1KHz,增益为20dB(100倍放大)时仅为0.004%,其内部原理图如图2-2所示。
其中放大器A1的输出电压计算公式为OUT1=1+(R1/RG )*VIN+同理, OUT2=1+(R2/RG )*VIN--R3、R4、R5、R6及A3构成减法器,最后得到输出公式VOUT=(VIN2-VIN1)*[1+(R1+R2)/RG]R1=R2=5K,取RG=526,从而放大倍数为20。
** AD 转换及控制模块电路设计采用12位AD 转换器ADS7819进行转换,将转换的数据送32位控制器进行处理。
** 功率谱测量功率谱测量主要通过对音频信号进行离散化处理,通过FFT 运算,求出信号各个离散频率点的功率值,然后得到离散化的功率谱。
由于题目要求频率分辨力为100Hz 和20Hz 两个档,这说明在进行FFT 运算前必须通过调整采样频率(fK)和采样的点数(N),使其基波频率f 为100Hz 和20Hz 。
根据频率分辨率与采样频率和采样点数的关系:f=fk/N;可以得知, fk=N*f ;又根据采样定理,采样频率fk 必须不小于信号频率fm 的2倍,即:fk>=2fm;图2-2 INA217内部原理图图2-3 AD 转换及控制模块电路设计题目要求的最大频率为10KHz,所以采样频率必须大于20KHz,考虑到FFT运算在2的次数的点数时的效率较高,所以我们在20Hz档时选择40.96KHz采样率,采集2048个点,而在100档时我们选择51.2KHz采样率,采集512个点。
通过FFT 分析出不同的频率点对应的功率后,就可以画出其功率谱,并可以在频域计算其总功率。
3 软件设计主控制芯片为LPC2148,测量周期为Atmega16实现,由于处理器速度较快,所以采用c语言编程方便简单.软件流程图如下:主流程图周期性分析和测量流程图图3-1 程序流程图4 系统测试** 总功率测量(室温条件下)表4-1 总功率测量结果(室温条件下)输入信号频率幅度测量时域总功率(w)测量频域总功率(w)理论值估算误差正弦波100Hz 1 Vpp ** 0.129 0.125 1.2% 1KH 1 Vpp 0.126 ** 0.125 1.3%音频信号20Hz-10KHz 20mVpp-5Vpp 0.783 0.761 X 《5%1.803 1.777 X 《5%结果分析:由于实验室提供的能够模仿音频信号的且能方便测量的信号只有正弦信号,所以我们用一款比较差点的信号发生器产生信号,然后进行测量,发现误差不达,在+-5%以内。
我们以音频信号进行测量,由于其实际值无法测量,所以我们只能根据时域和频域以及估计其误差,都在5%以内。
4.2单个频率分量测量(室温条件下)表4-2 单个频率分量测量结果(室温条件下)输入信号频率幅度最大功率频点最大功率频点功率次大功率频点次大功率频点功率正弦波500Hz 100mVpp 500Hz ** 520Hz **正弦波5KHz 1Vpp 5KHz 120mw 5.02KHz **音频信号20Hz-10K X 880Hz 23mw 600Hz 4.3mw结果分析:我们首先以理论上单一频率的正弦波为输入信号,在理想状况下,其频谱只在正弦波频率上有值,而由于有干扰,所以在其他频点也有很小的功率。
音频信号由于有多个频点,所以没有一定的规律性。
由于音频信号波动较大,没有一定的规律,且实验室没有专门配置测量仪器,所以我们只好以正弦波和三角波作为信号进行定量分析测量,以及对音频信号进行定性的分析和测量。
我们发现其数字和用电脑模拟的结果符合得很近。
5 结论由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。
参考文献:[1] ALAN V.OPPENHEIM.信号与系统.西安:西安交通大学出版社,1997年[2]元秋奇.数字图像处理学.北京:电子工业出版社,2000年[3] 吴运昌.模拟电子线路基础.广州:华南理工大学出版社,2004年[4] 阎石.数字电子技术基础.北京:高等教育出版社,1997年[5] 张晓丽等.数据结构与算法.北京:机械工业出版社,2002年[6] 马忠梅等.ARM&Linux嵌入式系统教程.北京:北京航空航天大学出版社,2004年[7] 李建忠.单片机原理及应用.西安:西安电子科技大学,2002年附录:附1:元器件明细表:1、LPC21482、ATMEGA163、AD6204、ADS78195、液晶320*240附2:仪器设备清单1、低频信号发生器2、数字万用表3、失真度测量仪4、数字示波器5、稳压电源附3:电路图图纸电源系统前级放大和AD转换Atmega16控制板附4:程序清单/*///////////////////////////////////////////////////////////////////////////////////////////////// FFT转换函数,dataR:实部,datai:虚部,////////////////////////////////////////////////////////////////////////////////////////////////*/ void FFT(float *dataR,float *dataI,int n){int i,L,j,k,b,p,xx,qq;int x[11]={0};float TR,TI,temp;float QQ;//////////////////////////////////位倒置//////////////////////////////////////////////////// for(i=0;i<count[n];i++){ xx=0;for(j=0;j<n;j++)x[j]=0;for(j=0;j<n;j++){x[j]=(i/count[j])&0x01;}for(j=0;j<n;j++){xx=xx+x[j]*count[n-j-1];}dataI[xx]=dataR[i];}for(i=0;i<count[n];i++){ dataR[i]=dataI[i];dataI[i]=0;}////////////////////////////////////蝶形运算////////////////////////////////////////for(L=1;L<=n;L++){b=1; i=L-1;while(i>0){ b=b*2;i--;}for(j=0;j<=b-1;j++){ p=1; i=n-L;while(i>0){ p=p*2; i--;}p=p*j;for(k=j;k<count[n];k=k+2*b){TR=dataR[k];TI=dataI[k];temp=dataR[k+b];QQ=2*pi*p/count[n];qq=p*count[11-n];dataR[k]=dataR[k]+dataR[k+b]*cos_tab[qq]+dataI[k+b]*sin_tab[qq];dataI[k]=dataI[k]-dataR[k+b]*sin_tab[qq]+dataI[k+b]*cos_tab[qq];dataR[k+b]=TR-dataR[k+b]*cos_tab[qq]-dataI[k+b]*sin_tab[qq]; //查表运算dataI[k+b]=TI+temp*sin_tab[qq]-dataI[k+b]*cos_tab[qq];}}}for(i=0;i<count[n];i++){w[i]=sqrt(dataR[i]*dataR[i]+dataI[i]*dataI[i]);w[i]=w[i]/count[n-1];}w[0]=w[0]/2;}///////////////////////////回放数据/////////////////////////void viewdata(void){unsigned int key,page,i;page=0;LCD_PenColor=0x1F; //红色LCD_WriteChineseString(font5,2,40,0);LCD_PenColor=0xFC; //蓝色while(1){key=getkey();if(key!=0xFF){if(key==4) {SystemState=fft_mode;return;} //返回if(key==2) {LCD_ClearScreen();LCD_WriteChineseString(font3,2,10,0);LCD_WriteChineseString(font4,2,60,0);i=page*4+1;p3510(Re[i],0,15); print3510(Im[i]*mode,50,15);p3510(Re[i+1],0,26); print3510(Im[i+1]*mode,50,25);p3510(Re[i+2],0,38); print3510(Im[i+2]*mode,50,35);p3510(Re[i+3],0,50); print3510(Im[i+3]*mode,50,50);if(page>0) page--;delay_nms(8000000);} //上翻页if(key==1) {LCD_ClearScreen();LCD_WriteChineseString(font3,2,10,0);LCD_WriteChineseString(font4,2,60,0);i=page*4+1;p3510(Re[i],0,15); print3510(Im[i]*mode,50,15);p3510(Re[i+1],0,26); print3510(Im[i+1]*mode,50,25);p3510(Re[i+2],0,38); print3510(Im[i+2]*mode,50,35);p3510(Re[i+3],0,50); print3510(Im[i+3]*mode,50,50);page++;if(page>=SampleNum/4) page=0;delay_nms(8000000);} //下翻页}}}////////////////////////////失真度计算///////////////////////void distortion(void){LCD_ClearScreen();LCD_WriteChineseString(font6,3,10,20);unsigned int key;int fr;while(1){////////////获取频率////////////////////log_2_N=11;SampleNum=SampleTab[log_2_N];reset_timer(0);init_timer0(40960);New_Flag=0;enable_timer(0);////////////////////等待采样完成///////////////////////////while(!FFT_Flag);disable_timer(0); //关定时器0//////////////////////FFT运算/////////////////////////////////FFT(Re,Im,log_2_N);////////////////频域功率////////////////////////////////////for(i=1;i<SampleNum/2;i++) {Re[i]=Re[i]*Re[i];Re[i]=Re[i]/2;}////////////////////总功率/////////////////////////////////Fp=0;for(i=1;i<SampleNum/2;i++) Fp+=Re[i];sort(&Re[1],&Im[1],SampleNum/2-1);fr=1000000/fre;if(Tflag) {LCD_WriteChineseString(font7,1,50,20);LCD_WriteEnglishString(" ",0,38);print3510(fr,10,38);LCD_WriteEnglishString("US",58,38);}else{LCD_WriteEnglishString(" ",0,38);LCD_WriteChineseString(font8,1,50,20);}////////////////////按键扫描/////////////////////////////key=getkey();if(key!=0xFF){if(key==1) {SystemState=fft_mode;mode=20;break;} //返回if(key==2) {SystemState=fft_mode;mode=100;break;} //返回}}}/////////////////按键扫描//////////////////////////////unsigned char getkey(void){if(IO1PIN_bit.P1_21==0) {delay_nms(200000);if(IO1PIN_bit.P1_21==0) return 1;}if(IO1PIN_bit.P1_22==0) {delay_nms(2000000);if(IO1PIN_bit.P1_22==0) return 2;}if(IO1PIN_bit.P1_23==0) {delay_nms(2000000);if(IO1PIN_bit.P1_23==0) return 3;}if(IO1PIN_bit.P1_24==0) {delay_nms(2000000);if(IO1PIN_bit.P1_24==0) return 4;}return 0xFF;}//////////////////排序处理//////////////////////////////void sort(float *a,float *b,int n) //a为待排序的量,b为起位置{int i,j,temp;for(i=0;i<n;i++) b[i]=i+1;for(j=0;j<=n-1;j++){for (i=0;i<n-j;i++)if (a[i]<a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;temp=b[i];b[i]=b[i+1];b[i+1]=temp;}}}//////////////////////显示///////////////////void p3510(int v,int x,int y){int x0;x0=v*157;x0=x0/100000000;LCD_WriteEnglishChar(x0+'0',x,y); x0=v*157;x0=x0/100;x0+=1000000;print3510(x0,x+6,y);LCD_WriteEnglishChar('.',x+6,y); }。