ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:53.52KB ,
资源ID:10630929      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10630929.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的音乐节拍灯光显示系统.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

基于单片机的音乐节拍灯光显示系统.doc

1、基于单片机的音乐灯光节拍显示系统论文 2009-05-20 16:31:00 阅读 487 评论 2 字号:大中小 订阅 基于单片机的音乐灯光节拍显示系统摘要:本文通过使用单片机和数字信号处理技术,实现了单片机控制的音乐节拍显示系统。本系统分为,声音采集单元,声音处理单元和显示单元。其中声音采集单元包括声音接收和 A/D 转换系统。声音接收单元接收到的音频模拟信号,经过 A/D 转换为数字信号,送给下一级处理单元处理。声音处理单元采用 C52 单片机进行 FFT 处理。显示单元接收处理后的信号, 控制 5 组共 35 个小灯泡进行显示。 软件方面使用单片机进行 DFT,进而判断出该时间段音频信

2、号的主谱,从而控制灯泡的颜色和亮度跟随着音乐节拍和强弱的变化而做出相应的实时变化,实现音乐的频谱分析并加以灯光显示。关键词:单片机;数字信号处理;傅里叶变换;源程序;仿真与调试Music Based on Single-Chip Light Display SystemMa XianAbstrac: In this paper, through the use of single-chip and digital signal processing technology, the realization of a single-chip microcomputer to control the

3、 beat of the music display system. The system is divided into voice acquisition unit, the voice processing unit and display unit. Voice acquisition unit which includes the voices of receiving and A / D conversion system. Sound receiver unit to receive the audio analog signal, after A / D conversion

4、for digital signal processing unit to the next level of processing. Voice processing unit C52 single-chip microcomputer used for FFT processing. Display unit after receiving the signal, control a total of 5 groups for 35 shows a small light bulb. Software for the use of single-chip DFT, and then det

5、ermine the time period of the main audio signal spectrum, so as to control the color and brightness of light bulbs with the music beats and the strength to make the corresponding changes in real-time changes in the realization of the music spectrum analysis and light show.Keywords: SCM; Digital Proc

6、essing Technology; Fourier Transform Protel schematic; Simulation 前言本系统仅是对设计思想的简单验证,仅仅是一个模型,不能直接投入使用。但是本系统的成功说明这种设计是可以实现的,并且只要对软硬件进行适当的修改可以应用于很多领域。譬如,可以设计 LED显示屏、LED 灯光装饰系列产品等。LED 显示屏系列可以有: LED 可变信息标志、 LED 可变限速标志、LED 车道控制器、交通信号灯、费额显示牌、倒记时牌、雨棚信号灯、及各种系列的室内外 LED 显示屏。LED 灯光装饰系列可以有:应用于酒吧、舞厅、夜总会、俱乐部、休闲中心等

7、娱乐场所的 LED彩显幕墙、LED 彩显天花、LED 彩显地面、建筑物外墙(或轮廓)的夜景灯光装饰和外墙显示屏等。下面就以酒吧 显示屏幕为例分析如何将本系统进行改进后应用于实际。1 系统的应用与发展1.1 系统的发展前景当显示部分用全彩 LED 来代替单色的 LED 时,用单片机控制的全彩 LED 显示屏幕将会成为目前高档 DISCO 酒吧、舞台等夜场最先进的背景灯光产品。由于它应用了单片机技术和数字信号处理技术,所以既不同于普通的灯光装饰,也不同于传统的激光舞台灯。它的出现对夜场传统的灯光装饰提出了极大的挑战,同时也使夜场的灯光装饰步入了一个完全崭新的时代。通过适当的控制,它能根据音乐的旋律

8、、节奏而产生明暗及色彩的变化并能形成各种动态画面效果,烘托出一种梦幻密离、炫目神秘、华丽斑斓的背景灯光。从而迎合了高档的 DISCO 酒吧、舞台等夜场对灯光背景的特殊要求,将成为目前夜场装饰的最新亮点。 单片机控制的全彩 LED 彩显屏的优势有: 1、 变化多端的色彩,256 级灰度、1670 多万种颜色任由你凃鸭; 2、 真正音乐控制、通过麦克风可根据 DJ 打碟的现场音乐控制 LED 彩显墙的变化,与音乐实现无缝连接、让声与光容于一体; 3、精心设计的控制软件,友善的操作界面,加上多窗口多页面显示、快捷键操作,让 DJ 轻松调配声与光,展现奇妙的梦幻般变化;这样的应用系统与时代的发展相适应

9、,若与各项先进技术的发展保持同步,将来会有更大的发展前景。1.2 系统的应用在自动化技术控制系统中,单片机的使用实现音乐灯光控制的自动化、智能化,再不需要人为干预的情况下自动用灯光的变换调剂出更好的音乐感觉,实现声光一体化。 随着单片机技术的日益成熟,单片机的发展趋势将是向大容量、高性能化,外围电路内装化等方面发展。对于单片机控制实现的音乐节拍显示器随着单片机的发展其性能也要求越来越高,效果也需要越来越好。可以采用双 CPU 结构的单片机,以提高处理能力,增加显示与音乐的同步性能;通过串口驱动显示电路,减少占用的 I/O 口;外围电路内装化,降低功耗;采用大存储量的单片机和高采样速率的 A/D

10、 转换器增加处理的点数,以提高处理精度。随着单片机技术的日趋成熟,有可能采用含有内置 A/D 转换器的单片机。由于单片机的存储空间有限,限制了采样的点数,这样处理后显示的精度就不是很高。这要求在以后的发展中采用存储容量更大的单片机来完成系统,这样对单片机也提出了更高更新的要求。由于输入的音频信号一般为模拟形式的,首先要通过 A/D 转换器进行模数转换和采样,所以转换器的速度和采样频率都会影响显示的精度。显示是要对一段时间内信号进行傅立叶变换提取频率和最大幅度,所以傅立叶变换的时间也会影响显示的实时性。要求傅立叶变换和单片机对信号的处理都要相当快。对傅立叶变换的算法也提出了新的更高的要求,需要开

11、发新的更快的算法。2 音乐灯光节拍的设计2.1 音乐灯光节拍显示系统的原理设计2.1.1 需求分析设计一个系统时,首先要了解它的市场需求,确定有没有必要做这样的系统;其次要了解这种系统的现状,最近的科研成果等以保证自己设计的系统具有实用性和超前性,这些在前面第一章的绪论中已经给出了详细地介绍,这里不再累述。2.1.2 系统功能的分析对于任何一个系统我们首先都要先知道它的目的和用途。音乐灯光节拍显示,顾名思义就是说要求外部灯光随着音乐的节拍有节奏的显示。对于这样的应用系统本设计分为三部分:输入部分、单片机的处理和输出显示部分。输入部分是指音乐从外部输入到单片机的过程。单片机的处理是指单片机内的

12、CPU 对输入的数据进行适当的处理给输出显示部分提供必要的数据或是显示所需的依据。输出显示部分是指外部灯光随音乐节拍的闪烁,这种闪烁或是动态的或是静态的,或是彩色的或是单色的都是由设计者决定的。下面我分别对这三个部分进行具体的设计:2.1.3 输入部分的设计由于单片机只能处理离散的数字信号,而现实生活中更多的是模拟信号尤其是音乐信号多为200Hz 15KHz 的模拟信号,这就是对系统的实用性提出的要求。为了解决这样的问题,在系统的输入部分要实现对模拟信号的离散化。这对于目前越来越成熟的模数转换技术实现起来是轻而易举的。也就是说我们要通过模数转换器(ADC)将输入的模拟音乐信号数字化,然后再送入

13、单片机。而目前的模数转换器无论是种类还是数量都已经相当多,从技术上讲也已经相当成熟。目前所用的模数转换器从转换输出的有效位数来说有 4 位、8 位、10 位、12 位 14 位等,从原理上分有直接 A/D 转换器和间接 A/D 转换器。在直接型 A/D 转换器中,输入的模拟电压被直接转换成数字代码,不经任何中间变量;在间接型 A/D 转换器中,首先把输入的模拟电压转换成某种中间变量,然后再把这个中间变量转换成数字代码输出。每一种转换器又都有若干不同的种类。但是 A/D 转换器有它的技术指标,主要有:转换时间和转换速率、分辨率、转换精度。转换时间是指 A/D 完成一次转换所需要的时间,转换时间的

14、倒数是转换速率。分辨率习惯用输出的二进制位数或 BCD 码位数表示。转换精度是指一个实际的 A/D 转换器于一个理想的 A/D 转换器在量化之上的差值。由于 A/D 转换器的种类很多,不同的 A/D 转换器的各种指标、性能和总体的性价比都不一样,因此对于输入部分的关键是如何选择合适的 A/D 转换器使输入单片机的信号的各个性能都达到要求。这部分内容将在下面器件的选择部分进行讲解。2.1.4 单片机的处理输入到单片机内的数据首先被存储在单片机的数据存储区内。由于显示部分要求灯光随音乐节拍进行,而音乐属于音频信号,音乐的节拍和音频信号的频率所对应,因此要想实现显示与节拍统一,就要对输入的离散化的数

15、字信号进行数字信号处理,与音频信号频率有关的数字信号处理技术目前最常用的是离散傅立叶变换。离散博里叶变换(Discrete Fourier Transform,简称 DFT),其实质是有限长序列傅里叶变换的有限点离散采样,从而开辟了频域离散化的道路,使数字信号处理可以在频域采用数字运算的方法进行,这样就大大增加了数字信号处理的灵活性。更重要的是 DFT 有多种快速算法,统称为快速傅里叶变换(Fast Fourier Transform),从而使信号的实时处理和设备的简化得以实现。因此,采用时域离散系统代替传统的连续时间系统。在单片机处理部分要完成的任务就是对存储区内的数字信号进行离散傅立叶变换

16、(DFT),并在变换后选择最大幅度所对应的离散的 K 值(根据采样频率得每一个 K 值都与一个模拟频率相对应),将最大幅度值和频率通过单片机的 I/O 口输出以控制显示。对于 DFT 也有许多要注意的问题,譬如进行 DFT 的点数,软件实现 DFT 时的代码及其优化问题等。由于 DFT 的运算量很大,点数的选择很重要,这又涉及到与所选的单片机的各种性能之间能不能实现很好的结合的问题。对于这些将在下面的软件设计中结合硬件进行具体分析。2.1.5 输出显示部分对输出显示部分的设计思想比较简单直接,这便于实现。考虑到实际的音乐信号的频率范围为200Hz 15KHz,通过 A/D 转换器的采样及经过

17、DFT 后,模拟的频率就会与数字频率 K 相对应,即 K 有一定的取值范围(其中 K 的最大值也就是所进行的 DFT 的点数)。本文设计的系统是通过用不同颜色的二极管组成一个 57 的点阵实现的。用 7 种不同颜色的二极管来代表不同的频率,这通过将数字频率 K值等分为 7 份实现,每一段 K 值用一种颜色的二极管代表。每种颜色的二极管有 5 个用来表示幅度的大小,通过将幅度等分为不同的 5 段实现。由于单片机输出的信号幅度最大为 5V,故当幅度为 01V 时,所对应频率的二极管亮一个;为 1 2V 时,亮两个二极管;为 23V 时,亮三个二极管;为 34V 时,亮四个二极管;为 45V 时,亮

18、五个二极管。当然这种设计对于精度的要求是比较低的,如果想提高精度可以通过增加点阵的大小了实现即将频率和幅度划分得更细,但这样会增加硬件电路的复杂程度,这个问题可以通过采用集成化的液晶点阵显示屏来解决,对此的具体讨论会在设计方案的改进部分给出。以上是本课题的总体思路,下面将具体介绍基于的单片机的音乐灯光节拍显示系统的设计。2.2 音乐灯光节拍显示系统的硬件设计单片机应用系统是指以单片机为核心,配以一定的外围电路和软件,能实现某种或几种功能的应用系统。通常由软件和硬件两部分组成。对于本文课题音乐灯光节拍显示是一种基于单片机的应用系统,故它也应该有两部分组成即硬件部分和软件部分。所以对这个系统的设计

19、就可分为两部分:软件设计和硬件设计。这两部分是紧密相连不可分割的,下面先分析硬件电路的设计:2.2.1 硬件电路的设计1)器件的选择。首先要先选定单片机的类型。对于不同的单片机它们各方面的性能是不同的,譬如CPU 的处理能力和速度,内部存储器的大小,I/O 口的多少,定时器的多少,体积重量的差别,抗干扰能力的强弱,价格的不同,灵活性可靠性等多方面的不同。因此,要根据所设计系统的具体要求来选择性能价格比最高的单片机型号。本文所设计的音乐灯光节拍显示系统是一小型的应用系统,它对存储容量和处理速度的要求都不是很高,所以选用常用的 8 位微处理器 8051 就可以了。而 8051 的运算能力和控制方面

20、的能力也是很强的,能够满足处理 DFT 的所需。其次是选择 A/D 转换器的类型。在输入部分的设计一节中,已经说明 A/D 转换器的种类相当丰富,要选好 A/D 转换器,对本文所设计的系统来说相当重要。整个系统的精度主要有单片机的处理速度和 A/D转换器决定。对于不同原理实现的 A/D 转换器其转换时间是大不相同的。总的来说,积分型、电荷平衡型和跟踪比较型 A/D 转换器的转换速率较慢,转换时间从几毫秒到几十毫秒不等,只能构成低速 A/D 转换器。一般适用于对温度、压力、流量等缓变参量的检测与控制。逐次比较型的 A/D 转换器的转换时间从几 us 到100us,属于中速 A/D 转换器。转换时

21、间最短的 A/D 转换器是那些用双极型或 CMOS 工艺制成全并行型、串并行型和电压转移函数型的 A/D 转换器。根据什么来选择不同转换时间的 A/D 转换器呢?首先 A/D 转换器的转换时间相当于对模拟信号的采样频率,这就要求它能够满足奈奎斯特准则,即采样频率要大于输入模拟信号最高频率的两倍。由于通常的音乐频率范围为 200Hz15KHz,其最高频率(fm )为 15KHz,(2.2.1)由(2.2.1)可得采样频率( )应大于等于 30KHz,(2.2.2)由(2.2.2)得 A/D 转换器的转换时间应该小于等于 33us,但是考虑到单片机的处理速度、系统的精度要求没有必要对 A/D 转换

22、器的转换时间有这么高的要求,而且 一般音乐频率也不会很高。另外对A/D 转换器转换精度的要求也不很高,综合考虑本系统选用 ADC0809 进行模拟。ADC0809 是一种逐次逼近式 8 路模拟输入、 8 位数字量输出的 A/D 转换器。它可对 05V 的模拟信号进行转换,完成一次转换需要 100us,即转换速率为 10 千次/秒。根据采样定理得一个周期的信号才能采 10 个点,也就是说ADC0809 最高也只能处理 1KHz 的信号(这就要求注意对音乐芯片的选择)。对于这样的转换时间对输入信号的最高频率是有一定限制的,如果输入信号的频率过高就会产生失真和较大的延时,但在初步的实验中采用 ADC

23、0809 进行仿真还是比较合适的。对于它产生的失真和延时可以作为一个改进的方向。接下来是显示电路器件的选择。 这一部分根据所设计的方案是比较简单的,只需要选择不同颜色的 7 种二极管,每种各 5 个就可以了。由于参考工作电压为 5V,二极管功率要求尽量小一些。最后是一些外围辅助电路器件的选择。对于单片机应用系统外围电路也是很重要的,应该适当考虑对它的选择与设计。ADC0809 有 8 个输入通道,它通常需要通过地址锁存器 74LS373 与 8051 相接,但是由于本文设计的系统只需要一个输入,就不需要地址锁存器了,且由于 ADC0809 的输出具有 TTL 三态锁存缓冲器可以直接连到 805

24、1 的数据总线上。对于显示电路由于单片机的输出电压不能直接驱动二极管所以要通过三极管对输出电压进行放大后来驱动,需要选择合适的三极管。2)硬件电路的连接。器件选择好后就要进行电路的连接。ADC0809 的 8 位数字量输出直接和 8051的 P0 口相接,ADC0809 的三根地址线 A、B、C 与 P0 口的低三位相连。 8051 的 WR 和 P2.7 引脚通过或非门与 ADC0809 的 START 和 ALE 引脚相连。8051 的 RD 和 P2.7 引脚也通过一或非门与 ADC0809的 OE 引脚相连。ADC0809 的 EOC 引脚通过一非门与 8051 的 INT1(P3.3

25、)引脚相连。8051 的 ALE 引脚通过两个 D 触发器与 0809 的 CLK 引脚相连,提供 0809 工作时的时钟频率。8051 的 P1 口用来驱动显示电路,为了节约单片机的 I/O 口我通过一译码器(74138 )实现频率行的选择。P1.0,P1.1,P1.2 分别于74138 的三个输入端连接,选 741388 个输出端中的 7 个作为点阵行驱动口线,剩余的 5 个 P1 口用作幅度选择的口线。这样单片机就有更多的 I/O 口线去干其它的事情。对于连接以后的硬件总体电路原理图,见附录 1。2.2.2 软件部分的设计对于一个单片机应用系统只有硬件没有软件的驱动,硬件是不能工作的;同

26、样只有软件没有硬件,工作也是无法完成的,软件和硬件是紧密相连的,二者缺一不可。首先是要使 ADC0809 工作。ADC0809 由两种工作方式,一种是查询方式,一种是中断控制法。查询法是在单片机把启动命令送到 ADC 之后,CPU 对 ADC 的状态一直进行查询,以检查 ADC 变换是否已经结束,如查询到变换已结束,则读入转换完毕的数据。中断控制法是在启动信号送到 ADC 之后,单片机执行别的程序。当 ADC 转换结束并向单片机发出中断请求信号时,单片机响应此中断请求,进入中断服务程序,读入转换数据,并进行必要的数据处理,然后返回到原程序。本设计采用的是中断控制法,这种方法不需要单片机进行转换

27、时间的管理,CPU 效率高,适用于转换时间较长的 ADC0809。在所设计的系统中把 ADC0809 作为外部数据存储器,给定通道 0 的地址0x7FF8,通过地址来控制是对哪一通道进行转换。确定 ADC0809 的工作方式后开始设计软件部分的工作流程。在主程序中首先进行初始化,确定外部中断为低优先级,时钟中断为高优先级;开中断;对定时器0 进行工作方式、初始值的设定;启动 ADC0809 开始工作。这时 8051 开始等待或去做其它的事情,在这里由于单片机的任务是单一的所以就用空循环语句让单片机等待中断的发生,然后进中断子程序进行处理。外部中断子程序的功能是当 ADC0809 转换完成向 8

28、051 发出中断请求,读取 ADC0809 通道 0 的转换结果并把结果存储到 8051 的外部数据存储器内,等待 CPU 的处理。时钟中断子程序是在定时时间到后对数据进行处理,它是整个程序的核心,其中包括最重要的部分DFT。由于 DFT 的运算量很大,运算时间很长,故在降低精度的情况下进行 16 点 DFT,又因为ADC0809 的转换时间大约是 100us,因此将时钟 0 的初始值设为 0xF9C0,实现 1600us 的定时,在这段时间内单片机大约采样 16 点(实际上小于 16)。通过信号产生子程序将采软件部分工作流程图图 2-1 系统流程图取到的信号补足 16 点,并产生进行 DFT

29、 所需的信号的虚部。由于 DFT 技术已经很成熟,而它也有专门的快速算法 FFT,所以对于 DFT 部分采用已有的程序。利用已有的 DFT 程序最后输出的是每一点所对应的实部和虚部的幅度值,而最终要用到的是信号幅度值,所以通过另一子程序来产生各个数字频率值 K 所对应的幅度,并取出最大幅度和它所对应的频率值 K。最后通过显示子程序将幅度值和频率值所代表的信息显示出来。2.3 傅立叶变换的原理与算法2.3.1 DFT 的定义设 x(n)是一个长度为 M 的有限长序列,则定义 x(n)的 N 点离散傅里叶变换为, (2.3.1)X(k)的离散傅里叶逆变换 IDFT(Inverse Discrete

30、 Fourier Transform,简称 IDFT)为, (2.3.2)式中, ,N 称为 DFT 变换区间长度,NM。通常称(2.3.1)式和(2.3.2)式为离散傅里叶变换对。下面证明 IDFTX(k)的唯一性。把(2.3.1)式代入(2.3.2)式,有由于 所以,在变换区间上满足下式:由此可见,(2.3.2)式定义的离散傅里叶逆变换是唯一的。x(n)的离散傅里叶变换结果与变换区间长度 N 的取值有关。下面介绍 DFT 的物理意义。由19 可得,序列 x(n)的 n 点 DFT 是 z 变换在单位圆上的 n 点等间隔采样。X(k)为 x(n)的傅里叶变换 X(ejw)在区间0,2上的 N

31、 点等间隔采样。这就是 DFT 的物理意义。2.3.2 DFT 的隐含周期前面定义的 DFT 变换对中,x(n)与 X(k)均为有限长序列,但由于 的周期性,使(2.3.1)式和(2.3.2)式中的 X(k)隐含周期性,且周期均为 N。对任意整数 m,总有所以(2.3.1)式中, 满足:(2.3.3)同理可证明(2.3.2)式中,x(n+mN)=x(n)实际上,任何周期为 的周期序列 都可以看作长度为 的有限长序列 的周期延拓序列,而 则是 的一个周期,即(2.3.4)(2.3.5)一般定义周期序列 中从 到 的第一个周期为 的主值区间,而主值区间上的序列称为 的主值序列。因此 和 的关系可叙

32、述为: 是 的周期延拓序列; 是 的主值序列。如果 的长度为 ,且 ,则可写出 的离散傅里叶级数表示式(2.3.6)(2.3.7)式中, 为 的主值序列。将(2.3.6)式和(2.3.7)式与 DFT 定义(2.3.1)式和(2.3.2)式相比较可知,有限长序列 x(n)的离散傅里叶变换 X(k),正好是 x(n)的周期延拓序列 x(n)n 的离散傅里叶级数系数 的主值序列,即 。2.3.3 离散傅里叶变换的基本性质1.线性性质 如果 x1(n)和 x2(n)是两个有限长序列,长度分别为 N1 和 N2,而式中,a 、b 为常数,取 N=maxN1,N2,若 yn=ax1(n)+bx2(n),

33、则 y(n)的 N 点 DFT 为, (2.3.8)其中 和 分别为 和 的 点 DFT。2.循环移位性质1)序列的循环移位 设 x(n)为有限长序列,长度为 N,则 x(n)的循环移位定义为(2.3.9)(2.3.9)式表明,将 x(n)以 N 为周期进行周期延拓得到 ,在将 左移 m 位得到 的主值序列则得到有限长序列 x(n)的循环移位序列 y(n)。循环移位的实质是将 x(n)左移 m 位,而移出主值区间(0nN-1)的序列值又一次从右侧进入主值区。“ 循环移位” 就是由此而来的。2)时域循环移位定理 设 x(n)是长度为 N 的有限长序列,y(n)为 x(n)的循环移位,即(2.3.

34、10)则 (2.3.11)其中 , 。3)频域循环移位定理 如果, 则 (2.3.12)3.循环卷积定理 有限长序列 x1(n)与 x2(n),长度分别为 N1 和 N2,N=maxN1,N2 。x1(n)和x2( n)的 点 DFT 分别为:如果 则 或(2.3.13)一般称(2.3.13)所表示的运算为 x1(n)与 x2(n)的循环卷积。2.3.4 用 DFT 对连续信号进行谱分析工程实际中,经常遇到的连续信号 xa(t),其频谱函数 xa(j)也是连续函数。为了利用 DFT 对 xa(t)进行频谱分析,先对 xa(t)进行时域采样,得到 x(n)=xa(nT),再对 x(n)进行 DF

35、T,得到的 X(K)则是 x(n)的傅里叶变换 X(ejw)在频率区间0,2 上的 N 点等间隔采样。这里 x(n)和 X(K)均为有限长序列。然而,由傅里叶变换理论知道,若信号持续时间有限长,则其频谱无限宽;若信号的频谱有限宽,则其持续时间无限长。所以严格地讲,持续时间有限的带限信号是不存在的。因此,按采样定理采样时,上述两种情况下的采样序列 x(n)=xa(nT)均应为无限长,不满足 DFT 的变换条件。实际上对频谱很宽的信号,为防止时域采样后产生频谱混叠失真,可用预滤波法滤除幅度较小的高频成分,使连续信号的带宽小于折叠频率。对于持续时间很长的信号,采样点数太多以致无法存贮和计算,只好截取

36、有限点进行 DFT。由上述可见,用 DFT 对连续信号进行谱分析必然是近似的,其近似程度与信号带宽、采样频率和截取长度有关。实际上从工程角度看,滤除幅度很小的高频成分和截去幅度很小的部分时间信号是允许的。2.3.5 DFT 的算法DFT 是信号分析与处理中的一种重要变换。因直接计算 DFT 的计算量与变换区间长度 的平方成正比,当 N 较大时,计算量太大,所以在快速傅里叶变换(简称 FFT)出现以前,直接用 DFT 算法进行谱分析和信号的实时处理是不切实际的。直到 1965 年发现了 DFT 的一种快速算法以后,情况才发生了根本的变化。自从 1965 年图基 (J w. Tuky)和库利(TW

37、. Coody) 在计算机数学(Math Computation,voI 19, 1965)杂志上发表了著名曲机器计算傅里叶级数的一种算法论文后,桑德(G Sand)图基等快速算法相继出现,又经人们进行改进,很快形成一套高效运算方法,这就是现在的快速傅里叶变换,简称 FFT(Fast Fourier Transform)。这种算法使 DFT 的运算效率提高 12 个数量级,为数字信号处理技术应用于各种信号的实时处理创造了良好的条件大大推动了数字信号处理技术的发展。人类的求知欲和科学的发展是永无止境的。多年来,人们继续寻求更快、更灵活的好算法。l984 年,法国的杜哈梅尔(PDohamel)和霍

38、尔曼(HHo11mann)提出的分裂基快速算法,使运算效率进一步提高。下面主要讨论基 2FFT 算法。2.3.5.1 时域抽取法基 2FFT 基本原理FFT 算法基本上分为两大类:时域抽取法 FFT( Decimation-In-Time FFT,简称 DITFFT)和频域抽取法 FFT(Decimation-In-Frquency FFT,简称 DIFFFT)。下面介绍 DIFFFT 算法。设序列 x(n)的长度为 N,且满足 N=2M,M 为自然数按 的奇偶把 x(n)分解为两个 N/2 点的序列则 的 DFT 为= 由于 所以其中 和 分别为 和 的 点 DFT,即由于 和 均以 为周期

39、,且 ,所以 又可表示为这样,就将 点 DFT 分解为两个 N/2 点的 DFT 和以上两式的运算。2.3.5.2 DITFFT 的运算规律及编程思想为了最终写出 DITFFT 运算程序或设计出硬件实现电路,下面介绍它的运算规律。1)原位计算 由19中的图 4.2.4 可以看出,DITFFT 的运算过程很有规律。N=2M 点的 FFT 共进行 M 级运算,每级由 N/2 个蝶形运算组成。同一级中,每个蝶形的两个输入数据只对计算本蝶形有用,而且每个蝶形的输入、输出数据结点又同在一条水平线上,这就意味着计算完一个蝶形后,所得输出数据可立即存入原输入数据所占用的存贮单元。这样,经过 M 级运算后,原

40、来存放输入序列数据的 N 个存贮单元中便依次存 X(K)的 N 个值。这种利用同一存贮单元存贮蝶形计算输入、输出数据的方法称为原位(址)计算。原位计算可节省大量内存,从而使设备成本降低。2)旋转因子的变化规律 如上所述,N 点 DITFFT 运算流图中,每级都有 N/2 个蝶形。每个蝶形都要乘以因子 WPN,称其为旋转因子, p 称为旋转因子的指数。但各级的旋转因子和循环方式都有所不同。为了编写计算程序,应先找出旋转因子与运算级数的关系。用 L 表示从左到右的运算级数(L=0,1.M) 。观察19 中图 4.2.4 不难发现,第 级共有 2L-1 个不同的旋转因子。时的各级旋转因子表示如下:L

41、=1 时, , L=2 时, L=3 时, , 对 的一般情况,第 L 级的旋转因子为, 由于 所以 ,这样,就可按以上两式确定第 L 级运算的旋转因子。3)蝶形运算规律 设序列 x(n)经时域抽选(倒序) 后,存入数组 X 中。如果蝶形运算的两个输入数据相距 B 个点,应用原位计算,则蝶形运算可表示成如下形式:式中 ; 下标 L 表示第 L 级运算,XL(J)则表示第 L 级运算后数组元素 X(J)的值。如果是实数运算完成上述蝶形运算,可按下面的算法进行。设 4)编程思想及程序框图 仔细观察19 图 4.2.4,还可归纳出一些对编程序有用的运算规律:第 级中,每个蝶形的两个输入数据相距 B=

42、2L-1 个点;同一旋转因子对应着间隔为 2L 点的 2M-L 个蝶形。总结上述运算规律,便可采用下述运算方法。先从输入端(第 1 级)开始,逐级进行,共进行 级运算。在进行第上级运算时,依次求出 2L-1 个不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有2M-L 个蝶形。这样,我们可用三重循环程序实现 D1TFFT 运算,程序框图如图 2.2 所示。另外,DITFFT 算法的输出 X(K )为自然顺序,但为了适应原位计算,其输入序列不是按x(n )的自然顺序排序,这种经过 M-1 次偶奇抽选后的排图 2-2 DIT_FFT 运算和程序框图序称为序列 x(n)的倒序(倒位)。因此,在

43、运算之前应先对序列 x(n)进行倒序。程序框图中的倒序框就是完成这一功能的。下面介绍倒序算法。5)序列的倒序 D1TFFT 算法的输入序列的排序看起来似乎很乱,但仔细分析就会发现这种倒序是很有规律的。由于 N=2M,所以顺序数可用 M 位二进制数表示。M 次偶奇时域抽选过程如图 2.3 所示。第一次按最低位 n0 的 0 和 1 将 x(n)分解为偶奇两组,第二次又按次低位 n1 的 0、l 值分别对偶奇组分解;依次类推,第 M 次按 nM-1 位分解,最后所得二进制倒序数如图 2.3 所示。表 2.1 列出了 N=8 时以二进制数表示的顺序数和倒序数,由表显而易见,只要将顺序数(n2n1n0

44、)的二进制位倒置,则得对应的二进制倒序值(n0n1n2)。按这一律,用硬件电路和汇编语言程序产生倒序数很容易。但用高级语言程序实现时,直接倒置二进制数值是不行的,因此必须找出产生倒序数的十进制运算规律。由表 2.1 可见,自然顺序数I 增加 l,是在顺序数的二进制数最低位加 1,向左进位。而倒序数则是在 位二进制数最高位加 1,逢 2向右进位。例如,在( 000)最高位加 1,则得(100),而(100) 最高位为 1,所以最高位加 1 要向次高位进位,其实质是将最高位变为 0,再在次高位加 1。用这种算法,可以从当前任一例序值求得下一个倒序图 2-3 形成倒序的树状图为了叙述方便,用 J 表

45、示当前倒序数的十进制数值。对于 N=2M,M 位二进制数最高位的权值为N/2,且从左向右二进制位的权值依次为 N/4,N/8,2,1 。因此,最高位加 1 相当于十进制运算J+N/2。如果最高位是 0(JN/2),则要将最高位变成 0(J#include #include #include #define IN0 XBYTE0x7FF8;#define PI 3.1415926;typedef unsigned char uchar;uchar I=0;uchar j=0;uchar M=4; /进行 16 点 DFTuchar N=16;float MAX; /取 DFT_FFT 变换中幅度

46、的最大值uchar K; /最大值所对应的 K 即频率uchar xdata *ad_adr;uchar flag=0;static float xdata ar16; /* 1.6ms 内对通道 0 的采样数据的存储区 static float xdata ai16; static float xdata hk16; sbit p1_0=P10; sbit p1_1=P11; sbit p1_2=P12; sbit p1_3=P13; sbit p1_4=P14; sbit p1_5=P15; sbit p1_6=P16; sbit p1_7=P17;sbit p3_0=P30;sbit p

47、3_1=P31;void sig_G(float Ar,float Ai);void DFT_FFT(float AR,float AI,uchar m,uchar n);void fp_G (float aR,float aI,uchar n);void display(float max,uchar k);void main(void)IT1=0; /* 驱动 0809 利用中断进行采样,采样时间(即采样点数)有定时器 T0 决定EX1=1;TMOD=0x11; / *定时器 0 计时方式 1 TH0=0xF9;TL0=0xC0; ET0=1; /*定时器 0 开中断TR0=1;EA=1;

48、 /*CPU 开中断ad_adr=*ad_adr=j;while(1)if(flag=1)DFT_FFT(ar,ai,M,N);fp_G(ar,ai,N);display(MAX,K);flag=0;EX1=1;TR0=1;else if(flag=0);/*外部中断子程序 *即*读取 0809 转换结果*void int_serv(void) interrupt 2p3_0=0; /*测试中端信号产生arI=*ad_adr;I+;*ad_adr=j;p3_0=1; /*确定终端产生/*时钟 0 中断子程序*void time0_int(void) interrupt 1flag=1; /*置标志位p3_1=0;TR0=0;EX1=0;sig_G(ar,ai);p3_1=1;/*适合 DFT 的信号产生子程序*void sig_G(float Ar,float Ai)uchar n;for(n=I;n=k)j=j-k;k=(int)k/2;j=j+k;for(i=1;iMAX)MAX=hki;K=i;/*显示子程序*

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报