dsp课程设计正文_第1页
dsp课程设计正文_第2页
dsp课程设计正文_第3页
dsp课程设计正文_第4页
dsp课程设计正文_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第1章 绪论1.1课题研究的背景在高度发展的当今社会中,科学技术的突飞猛进和生产过程的高度自动化已成为人所共知的必然趋势,而它们的共同要求是必须建立在有着不断发展与提高的信息工业基础上。人们只有从外界获取大量准确、可靠的信息经过一系列的科学分析、处理、加工与判断,进而认识和掌握自然界与科学技术中的各种现象与其相关的变化规律,并通过相应的系统和方法实现科学实验研究与生产过程的高度自动化。换言之,生产过程的自动化面临的第一个问题就是必须根据从各种传感器得到的数据来检测、监视现场,以保证现场设备的正常工作。所以对现场进行数据采集是重要的前期基础工作,然后再对现场数据进行传输和相应的处理工作,以满足

2、不同的需要。数据采集系统是一种应用极为广泛的模拟量测量设备,其基本任务是把信号送入计算机或相应的信号处理系统,根据不同的需要进行相应的计算和处理。它将模拟量采集、转换成数字量后,再经过计算机处理得出所需的数据。同时,还可以用计算机将得到的数据进行储存、显示和打印,以实现对某些物理量的监视,其中一部分数据还将被用作生产过程中的反馈控制量。数据处理在整个科研工作中是个重要的必不可少的环节,数据处理系统工作的质量和速度如何,对整个科研工作的影响也是很大的。因此研究一种质量性能高的通用数据采集平台具有很大的意义。从广泛的意义上来讲,数据采集与处理的主要包括以下几个方面:(1)数据的采集:主要是解决非电

3、量转换为电量的问题以及多路复用、数据的模拟形式和数字形式之间的转换问题。(2)数据的记录:数据的存储是非常重要的问题。(3)数据处理:包括预处理、数据检验和数据分析等步骤。随着科学技术的飞速发展,对数据处理的实时性要求也愈来愈迫切。显然,不论在哪个应用领域中,数据处理越及时则经济效益就越大。例如在实时监控系统中,必然要求对测量数据实时处理。又如在新型飞机试飞中如能实现对某些关键数据的实时处理和监测,就能在这些数据发生异常变化时及时发现并采取措施,以避免机毁人亡的重大事故发生。可见,实时处理数据意义是很大的。由于电子计算机技术的蓬勃发展,为提高数据处理的实时性提供了广阔的前景。2断资源限制,可扩

4、展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。而现代工业生产和科学研究的发展要求数据采集卡具有更好的数据采集、处理能力,传统的 CPU 已经不能满足这一要求。1.2 国内外研究现状数据采集与处理一直是生产实践研究与应用领域的一个热点和难点。随着微电子制造工艺水平的飞速提高及数据分析理论的进一步完善与成熟,目前国内外对数据采集系统的高性能方面的研究上取得了很大的成就。就 A/D 转换的精度、速度和通道数来说,采样通道从单通道发展到双通道、多通道,采样频率、分辨率、精度逐步提高,为分析功能的加强提供了前提条件2。而在数据分析的微处理器上,最初的数据采集系统以 8

5、 位单片机为核心,随着微电子技术的不断发展,新兴单片机的不断问世,十六位、三十二位单片机也为数据采集系统研制厂家所采用,近来采用具有 DSP 功能的数据采集系统也己投入市场。同时,通用 PC 机的 CPU 用于数据处理也较为常见。总之,伴随着高性能微处理器的采用和用户技术要求的不断提高,数据采集系统的功能也越来越完善。数据采集系统的发展主要体现在以下几个趋势:首先,在专业测控方面,基于 PC 计算机的数据采集系统越来越成熟和智能化。在过去的二十年中,开放式架构 PC 机的处理能力平均每十八个月就增强一倍为了充分利用处理器速度的发展,现代开放式测量平台结合了高速总线接口,如 PCI和 PXI/C

6、ompact PCI,以便获得性能的进一步提升。计算机的性能提升和由此引起的基于计算机的测量技术的创新,正在持续不断地模糊着传统仪器和基于计算机的测量仪器之间的界线。其次,在通用测控方面,采用嵌入式微处理器的方案也由早期的采用 A/D 器件和标准单片机组成应用系统发展到在单芯片上实现完整的数据采集与分析,即目前极为热门的 SOC (System On Chip)3。通常在一块芯片上会集成一个,可以采样多路模拟信号的 A/D 转换子系统和一个硬 CPU 核(比如增强型 80_52 内核),而且其CPU 的运算处理速度和性能也较早期的标准 CPU 内核提高了数倍,而且有着极低的功耗。这种单芯片解决

7、方案降低了系统的成本和设计的复杂性。此外,为了解决 SOC 方案中数据处理性能的不足,采用 DSP 作为数据采集系统的 CPU 的研究与应用目前也逐渐引起业内重视。但是这类产品目前仅仅处于发展的初级阶段,在精度、速度或其它性能指标上并不能很好的满足要求。因此,国内外以 DSP 作为数据采集系统的采样控制和分析运算的研究与应用正在展开。1.3 课题研究的内容通过对基于TMS320VC5416的信号采集处理与控制系统的设计掌握PCB设计软件AltiumDesigner的使用方法,以及卷积、FFT、FIR滤波器等数字信号处理算法并熟悉TI的DSP集成开发环境CCS的使用,掌握基于DSP的系统设计流程

8、。数据采集(Data acquisition)由RTU或PLC进行,包括读取传感器数据,依SCADA需求通信传送设备的状态报告。数据有特定的格式,控制室中的操作员可以用HMI了解系统状态,并决定是否要调整RTU(或PLC)的控制,或是暂停正常的控制,进行特殊的处理。数据也会传送到历史记录器(Operational historian),一般会是架构在商用的数据库管理系统上,以便追踪趋势并进行分析。控制系统意味着通过它可以按照所希望的方式保持和改变机器、机构或其他设备内任何感兴趣或可变的量。控制系统同时是为了使被控制对象达到预定的理想状态而实施的。控制系统使被控制对象趋于某种需要的稳定状态。例如

9、,假设有一个汽车的驱动系统,汽车的速度是其加速器位置的函数。通过控制加速器踏板的压力可以保持所希望的速度(或可以达到所希望的速度变化)。这个汽车驱动系统(加速器、汽化器和发动机车辆)便组成一个控制系统。第2章 系统方案设计及论证2.1现场处理器的选择随着信息社会的不断发展,对数据采集的实时性和精度提出了更高的要求,传统的单片机显然不能满足要求。TI公司推出的系列DSP一改传统的冯。诺依曼结构,采用先进的哈弗总线结构。将程序和数据放在不同的存储空间内,每个存储空间都可以独立访问,而且程序总线和数据总线分开,从而使数据的吞吐率提高了一倍。作为TI公司的TM320F2812具有很高的性价比,广泛应用

10、于工业控制,特别是应用于处理速度,处理精度方面要求较高的领域。TMS320F2812的主要性能6如下:(1)TMS320F2812芯片采用了高性能的CMOS技术,其主频最高可以达到150MHz,时钟周期为6.67ns。当内核电压为1.8V时,主频为135MHz;当内核电压为1.9V时,主频为150MHz。(2)支持JTGA在线仿真接口。(3)高性能的32位中央处理器。采用哈佛总线结构模式,具有快速的中断响应和中断处理能力,具有同一的寄存器编程模式,并且编程可兼容C/C+语言以及汇编语言。(4) TMS320F2812片内含有128K16位的Flash,分为4个8K16位和6个16K16位的存储

11、段;而TMS320F2812片内含有128K16位的ROM。(5)时钟和系统控制:内含看门狗定时器模块;具有片内振荡器;支持动态锁相环倍频。(6)3个外部中断模块,外部中断模块PIE可以支持96个外部中断,当前仅用了45个外部中断。(7)128位安全密匙:可以保护Flash/ROM、OTP ROM和L0、L1 SARAM;防止系统中的软件程序被修改或读取。(8)先进的仿真模式:具有实时分析以及设置断点的功能;支持硬件仿真。(9)低功耗模式和节能模式:支持IDEL、STANDBY、HALT模式,即支持空闲模式、等待模式以及挂起模式;可以独立禁止/使能各个外设的时钟。(10) 双向的10位串行数模

12、转换器,采样速率可以达到166KHz,精度达到210即1024;(11)带有功能强大的事件管理器:3个通用定时器、3个全比较单元、3个单比较单元、PWM脉宽调制电路、事件管理器模块中断控制电路、4个捕获单元以及QEP正交编码脉冲电路;(12) 带有串行通讯接口模块(SCI)、串行外设接口模块(SPI)、数字I/O端口模块、CAN控制器模块,便于与外部设备通讯;2.2处理器间的通信在现场总线的设计过程中,我们考虑过用RS一485的基于R线构建分布式控制系统。但是较之目前许多RS一485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性。首先,CAN控制器工

13、作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS一485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差。其次,CAN总线通过CAN控制器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬

14、浮状态。这就保证不会出现象在RS一485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS一485所无法比拟的。另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前CAN

15、总线应用于众多领域,具有强劲的市场竞争力的重要原因。由于本系统只是整个现场主控制系统中的一个子系统,需要与主系统其他子系统进行通信,并且相互能够进行实时的数据传输和处理。而CAN具有独特的设计思想,良好功能特性和极高的可靠性,现场抗干扰能力强,结构简单,只有两根线与外部相连,通信方式灵活,可以点对点、点对多点及全局广播方式发送和接收数据等等优点ll,我们选择使用DsP本身就具有的cAN总线控制器模块来完成于其它子系统的通信。2.3 PC与DSP通信接口 串行接口是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距

16、离通信,但传送速度较慢一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。现已确定下位机选用TI公司的TMS320F2812 DSP芯片,数据经DSP采集后,要实时将现场信息传输到PC机进行实时监控。DSP的与数据传输相关的外设有SCI、SPI、CAN。现已将CAN总线用于各个DSP间的通信,SPI为一种同步串行外设接口,使用较少。SCI接口可以工作在全双工工作模式,并且经接口芯片转换后可变成R

17、S-232或RS-485电平标准,进而与PC机的串口相连。是一种较为实用的方案。2.4 系统控制控制系统有几种分类方法1、按控制原理的不同,自动控制系统分为开环控制系统和闭环控制系统。开环控制系统在开环控制系统中,系统输出只受输入的控制,控制精度和抑制干扰的特性都比较差。开环控制系统中,基于按时序进行逻辑控制的称为顺序控制系统;由顺序控制装置、检测元件、执行机构和被控工业对象所组成。主要应用于机械、化工、物料装卸运输等过程的控制以及机械手和生产自动线。闭环控制系统闭环控制系统是建立在反馈原理基础之上的,利用输出量同期望值的偏差对系统进行控制,可获得比较好的控制性能。闭环控制系统又称反馈控制系统

18、。2、按给定信号分类,自动控制系统可分为恒值控制系统、随动控制系统和程序控制系统。恒值控制系统给定值不变,要求系统输出量以一定的精度接近给定希望值的系统。如生产过程中的温度、压力、流量、液位高度、电动机转速等自动控制系统属于恒值系统。随动控制系统 给定值按未知时间函数变化,要求输出跟随给定值的变化。如天线系统。第3章 硬件电路设计系统底层电路的功能主要包括:电源电路设计,复位电路及JTAG下载口电路的设计,通讯接口电路设计,CAN总线接口电路设计,RS232接口电路设计,DlD/0接口模块。下面对电路分模块进行详细说明。3.1 硬件总体结构图3.1 硬件总体结构3.2 电源模块设计图3.2 电

19、源电路3.3 时钟模块设计图3.3 时钟模块3.4 存储器模块设计图3.4 存储器模块第4章 软件设计4.1 概述 本系统设计的主要任务包括DSP硬件系统设计和软件系统设计。其中硬件设计要求设计一个精简的能独立运行的DSP系统,包括绘制系统的原理图和PCB版图;软件设计要求编写基于所设计的硬件系统的CCS程序使其能够完成数据采集处理和控制等功能。利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在DSP中采集信号,并且对信号进行频谱分析,滤波等。通过键盘选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD上显示。主要功能如下:一、对外部输入的模拟信号采集到D

20、SP内存,会用CCS软件显示采集的数据波形。二、对采集的数据进行如下算法分析:1、频谱分析:使用fft算法计算信号的频率。2、对信号进行IIR滤波或FIR滤波,并且计算滤波前后信号的频率。三、外部键盘选择算法功能,并且将结果在LCD上显示。4.2 主程序方案主程序调用了6个子程序,分别是LCD显示控制、外部中断2服务函数、求最大值和次大值函数、FIR滤波器设计函数、卷积程序,FFT算法程序19。求最大值和次大值函数:实现对数据的选值,选出最大值和次大值。外部中断2服务函数:DSP的中断服务,DSP芯片运行时需要设置中断点。LCD显示控制:向液晶显示器的显示送数,控制系统的显示部分。FIR滤波器

21、设计函数:实现FIR滤波。卷积程序:将数据进行卷积计算,然后把数据传出。FFT算法程序:实现FFT的算法。将各个功能程序以子程序的形式写好,当写主程序的时候,只需要调用子程序,然后在寄存器的分配上作一下调整,消除寄存器冲突和I/O冲突即可。程序应该尽可能多的使用调用指令代替跳转指令。因为跳转指令使得程序难以看懂各程序段之间的结构关系。而调用指令则不同,调用指令使得程序结构清晰,无论是修改还是维护都比较方便。将功能程序段写成子程序的形式,除了方便调用之外,还有一个好处那就是以后写程序的时候如果要用到,就可以直接调用这个单元功能模块17。主程序流程图如图4.1所示。图4.1 主程序流程图第5章 系

22、统实物调试5.1 采集的数据及其FFT计算结果图5.1 FFT计算结果可见所采集的信号中仅含有多种频率分量,直流、低频和高频。5.2 叠加波形与滤波后波形比较 图5.2 叠加波形与滤波后波形比较可见滤波后信号中的高频分量得到了较大的衰减,滤波后波形变得平滑。5.3 滤波前后信号的频谱图比较图5.3 滤波比较由滤波前后高低频分量的相对大小再次证明低通滤波器对高频分量的衰减作用较强。第6章 结论DSP作为嵌入式处理器家族的一大类,其结构特点决定了它尤其适合做数字信号处理的应用,而学好数字信号处理对日后的信息处理的深入学习和应用有着重要意义,因而学好DSP技术也就有着深远的意义。通过此次课程设计我学

23、习了一个实际的电子系统的完整的设计流程,同时对ccs的使用更加熟悉了。在此次课程设计中我负责的是代码的编写和软件的仿真。从刚一开始拿到这个DSP课程设计,心中充满了困惑和激动。困惑是因为自己读书不用功,没有把老师给的东西好好消化。等到了要课程设计的时候才发现自己学的东西是多么的肤浅。激动是因为这是一个前所未有的设计。以前从来没有过这样的经历。是那么的神秘而又是那么的让人着迷。这个不是其余的课程设计能够比的。一开始组里要求我搞代码和仿真,心里真的没底。主要对这个课题真的不是很清楚,赵思聪同学负责采集资料,沈斌卓同学负责调bug。仿真我们是这样分的,我和赵思聪同学一起负责仿真。这也让我心中稍得安慰

24、。我想说的是任何东西都要归根于基础的,就像万丈高楼不能没有地基一样。我们也不能没有DSP的基础,所以一开始,我每天都拿着课本看,把老师讲的重点和基础都深入的研究了,在这里我要特别感谢赵思聪同学的帮助,没有他的资料,我真的不知道从何下手。DSP的结构比单片机要复杂的多,相应的寄存器也就较多,而很多情况下编写DSP程序都需要操作和配置寄存器,这既要求对冯诺依曼体系结构的处理器的共性有一定了解,同时也要针对DSP的特点来进行,这还得归功于我那几天看的课本。代码写完了,但不知道仿真怎么搞,不过还好仿真时两个人搞的。一开始中搞不对,不是卡这儿就是卡在那儿了。没办法,只能叫沈斌卓同学了,他在调bug方面还

25、是挺牛逼的,最终两个人的事情的三个人搞定了。当然要想做的好,做的成功老师的功劳是不可少的,还好林老师人好。我们中间好几次都卡住了,只能厚着脸皮去找老师(次数太多了)。心中不由的肃穆起来,突然对老师这个职业更加尊重了。其实这次课程设计一方面锻炼了我们的团队合作能力,另一方面锻炼我们的人际交往能力。马上要毕业的我们,将来怎么面临工作的挑战?我心中仍旧是一片混乱。但是有了这次的课程设计,我得到了锻炼,使我知道了,有时候人际交往和团队合作比专业知识更重要。在此次课程设计中我也遇到了很多问题,首先是绘制PCB版图时的布局和布线问题,这是一个需要经验和技巧的问题,尤其是Flash器件与DSP的连线较多而D

26、SP的所有数据线和地址线分布又较为分散,所以也就多画了几遍,争取精益求精还是能够画好的。还有创建CCS工程后cmd文件和中断向量表的详细配置,这两个文件的修改需要清楚DSP的结构以及存储器映射情况,通过阅读几本参考书和其他一些资料,自己已经基本明白了他们的作用和配置。当然这些问题都有一定的难度,但是想办法解决它们的过程也就是学习和进步的过程。通过此次课程设计我对TMS320C54x系列DSP的硬件结构有了较为深刻的认识,真正的了解了DSP课程设计不同于以往的课程设计(c语言和单片机),它在数据处理和预算速率方面是单片机所不能及的。此次课程设计持续时间虽然不长,但是自己在设计过程中却学到了不少的

27、知识和技能,包括从查阅和参考的各种资料中也学到了DSP的硬件和软件设计技巧,以及CCS的使用和常见问题的排除和程序的调试组装等等。在此,我要感谢系里面能够给我这一次锻炼的机会,同时也要感谢指导老师的悉心教导和组员的积极配合。这次课程设计对于即将毕业的我们来说是获益匪浅的,我期待下一次的挑战。 参考文献1张雄伟,曹铁勇DSP芯片的原理与开发应用(第2版) 电子工业出版社,20002 戴明桢,周建江. TMS320C54x DSP结构、原理及应用(第2版) 北京航空航天大学出版社,2007.附录A:TMS320VC5416最小系统图A:最小系统图 板上包括了支持TMS320VC5416独立运行的时

28、钟电路、复位电路、Flash模块、JTAG仿真接口电路以及电源模块等。所有的器件都放在了正面,电源、复位按键和JTAG接口放在了板子边缘方便连接和调试。28 附录B:源代码FFT算法程序:void kfft(double prLength,double piLength,int n,int k,double frLength,double fiLength,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

29、+) j=m/2; is=2*is+(m-2*j); m=j; frit=pris; fiit=piis; pr0=1.0; pi0=0.0; p=6.283185306/(1.0*n); pr1=cos(p); pi1=-sin(p); if (l!=0) pi1=-pi1; for (i=2; i=n-1; i+) p=pri-1*pr1; q=pii-1*pi1; s=(pri-1+pii-1)*(pr1+pi1); pri=p-q; pii=s-p-q; for (it=0; it=0; l0-) m=m/2; nv=2*nv; for (it=0; it=(m-1)*nv; it=i

30、t+nv) for (j=0; j=(nv/2)-1; j+) p=prm*j*frit+j+nv/2; q=pim*j*fiit+j+nv/2; s=prm*j+pim*j; s=s*(frit+j+nv/2+fiit+j+nv/2); poddr=p-q; poddi=s-p-q; frit+j+nv/2=frit+j-poddr; fiit+j+nv/2=fiit+j-poddi; frit+j=frit+j+poddr; fiit+j=fiit+j+poddi; if (l!=0) for (i=0; i=n-1; i+) fri=fri/(1.0*n); fii=fii/(1.0*n

31、); if (il!=0) for (i=0; i=n-1; i+) pri=sqrt(fri*fri+fii*fii); if (fabs(fri)0) pii=90.0; else pii=-90.0; else pii=atan(fii/fri)*360.0/6.283185306; 卷积程序:void convolve(double *Input,double *Impulse,double *Output,uint length1,uint length2) int p,j,k; for (k=0; klength2; k+) /仅计算256点有效for (p=0; plength1

32、; p+) midlength1-p-1=midlength1-p-2;/移位操作 mid0 = Inputk;for (j=0; jlength1; j+)/MAC运算 Outputk+=midj * Impulsej;FIR滤波器设计函数:void firdes(double npass) /npass归一化的截止频率参数int t;for (t=0; tFLen; t+) ht=sin(t-(FLen-1)/2.0)*2*npass*3.1415926)/(3.1415926*(t-(FLen-1)/2.0); if (t = (FLen-1)/2) ht=npass;求最大值和次大值函

33、数:int m1=0;int m2=0;int fmax,smax;void findmax(double *p) /使用全局变量保存频谱最大点与次大点对应的K值 int i; double max=p5; /因存在直流分量,避开几个点防止干扰 for(i=5;imax) max=pi+1; m1=i+1; pm1=0; /清零最大值以便求次大值 max=p5; for(i=5;imax) max=pi+1; m2=i+1; if(m1m2) fmax=m1;smax=m2; else fmax=m2;smax=m1;外部中断2服务函数:interrupt void ExtInt2() /中断

34、2中断子程序,负责数据采集和处理 *(unsigned int*)IFR=0xFFFF; /清除中断标志 data_buffi = port8002 & 0x00ff;/读取AD采样值 i+; if(i=256&flag=1) /flag控制当显示数据刷新后再处理 i = 0; /在此设断点,观察采集进来的信号 for(k=0;kLength;k+) realk=data_buffk; /解决格式不兼容问题 imgk=0.0; FMagk=0.0; kfft(real,img,256,8,Freal,Fimg,0,1);/求输入信号的频谱 for(k=0;kLength;k+) /至此已经完成

35、的FFT变换工作 FMagk=sqrt(Frealk*Frealk+Fimgk*Fimgk); findmax(FMag); freq1=(250.0*smax)/256; /信号频率=DFT分辨率*K freq2=(250.0*fmax)/256; convolve(data,h,y,51,256); /卷积滤波 for(k=0;kLength;k+) youtk=yk; /解决格式不兼容问题 imgk=0.0; /必须重新初始化 yFMagk=0.0; kfft(yout,img,256,8,yFreal,yFimg,0,1); for(k=0;kLength;k+)/至此已经完成的FFT

36、变换工作 yFMagk=sqrt(yFrealk*yFrealk+yFimgk*yFimgk); findmax(FMag); yfreq=(250.0*fmax)/256; k=0; /此处设置断点 flag=0; return;LCD显示控制文件lcd.c#include DspRegDefine.h /VC5402 寄存器定义#define uint unsigned int #define uchar unsigned char#define CLEAR 0x0001 /清除显示#define RESAC 0x0002 /位址歸位#define SETPOINT 0x0006 /進入點

37、設定,DDRAM 位址計數器(AC)加1#define CURSOR 0x000F /整體顯示,游標顯示,游標位置反白#define MCURSOR 0x0014 /游標向右移動,AC=AC+1#define FUCSET 0x0030 /功能設定,控制界面,基本指令集,默认设置#define CGRAMAC 0x0040 /設定CGRAM 位址 #define DDRAMAC 0x0080 /設定DDRAM 位址uint ioport port8006; /液晶串行数据端口uint ioport port8007;uchar first16 = 1 fft2 fir3 iir ; uchar

38、 second16= 低频: KHZ;uchar third16 = 高频: KHZ;uchar fourth16 =滤波: KHZ;uchar number11 = 0123456789.; extern double freq1,freq2,yfreq; void Delay(uint numbers) uint i,j; for(i=0;i300;i+) for(j=0;jnumbers;j+);void SendByte(uchar dat) uchar i; uint temp; for(i=0;i8;i+) temp = port8007; /读IO 8007 SCLK=0; if

39、(dat & 0x0080) port8006 = 0; /写IO 8006 SID=1,发送数据1 MSB先发送 else temp = port8006; /读IO 8006 SID=0,发送数据0 MSB先发送 port8007 = 0; /写IO 8007 SCLK=1; dat = dat1; /数据左移,移位到dat.7 temp = port8007 ; /读IO 8007 SCLK=0; void SendCMD(uchar dat) SendByte(0x00F8); /11111,00,0 RW=0,RS=0 同步标志 SendByte(dat & 0x00F0); /高四

40、位 SendByte(dat & 0x000F)4); /低四位 void SendDat(uchar dat) SendByte(0x00FA); /11111,01,0 RW=0,RS=1 SendByte(dat & 0x00F0); /高四位 SendByte(dat & 0x000F)4); /低四位 void Initlcm() SendCMD(FUCSET); /功能設定,8BIT 并口,基本指令集 Delay(1); SendCMD(FUCSET); /功能設定,8BIT 并口,基本指令集 Delay(1); SendCMD(CURSOR); /整體顯示,游標顯示,游標位置反白

41、 Delay(1); SendCMD(CLEAR); /清除显示 Delay(1); /需要50ms延时 SendCMD(SETPOINT); /進入點設定,游標右移,DDRAM 位址計數器(AC)加1 Delay(1);void display() /显示基本框架 uint i; Delay(500); SendCMD(0x0080); /第一行 Delay(1); for(i =0;i16;i+) SendDat(firsti); Delay(1); SendCMD(0x0090); /第二行 Delay(1); for(i =0;i16;i+) SendDat(secondi); Delay(1); SendCMD(0x0088); /第三行 Delay(1); for(i =0;i16;i+) SendDat(thirdi); Delay(1); SendCMD(0x0098); /第四行 Delay(1); for(i =0;i16;i+) SendDat(fourthi); Delay(1); / SendCMD(CLEA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论