数字信号处理报告
数字信号处理实验报告 3

数字信号处理实验报告姓名:班级:通信学号:实验名称:频域抽样定理验证实验类型:验证试验指导教师:实习日期:2013.频域采样定理验证实验一. 实验目的:1. 加深对离散序列频域抽样定理的理解2.了解由频谱通过IFFT 计算连续时间信号的方法3.掌握用MATLAB 语言进行频域抽样与恢复时程序的编写方法 4、用MATLAB 语言将X(k)恢复为X(z)及X(e jw )。
二. 实验原理:1、1、频域采样定理: 如果序列x(n)的长度为M ,频域抽样点数为N ,则只有当频域采样点数N ≥M 时,才有x N (n)=IDFT[X(k)]=x(n),即可由频域采样X(k)无失真的恢复原序列 x(n)。
2、用X(k)表示X(z)的内插公式:∑-=-----=10111)(1)(N k kNNzWz k X Nz X内插函数: zWzkNNN z 1k111)(-----=ϕ频域内插公式:∑-=-=10)2()()(N K j k Nk X e X πωϕω频域内插函数:e N j N N )21()2sin()2sin(1)(--=ωωωωϕ三. 实验任务与步骤:实验一:长度为26的三角形序列x(n)如图(b)所示,编写MATLAB 程序验证频域抽样定理。
实验二:已知一个时间序列的频谱为X(e jw )=2+4e -jw +6e -j2w +4e -j3w +2e -j4w分别取频域抽样点数N为3、5和10,用IPPT计算并求出其时间序列x(n),用图形显示各时间序列。
由此讨论原时域信号不失真地由频域抽样恢复的条件。
实验三:由X32(k)恢复X(z)和X(e jw)。
四.实验结论与分析:实验一:源程序:M=26;N=32;n=0:M; %产生M长三角波序列x(n)xa=0:floor(M/2);xb= ceil(M/2)-1:-1:0; xn=[xa,xb];Xk=fft(xn,512); %1024点FFT[x(n)], 用于近似序列x(n)的TFX32k=fft(xn,32); %32点FFT[x(n)]x32n=ifft(X32k); %32点IFFT[X32(k)]得到x32(n)X16k=X32k(1:2:N); %隔点抽取X32k得到X16(K)x16n=ifft(X16k,N/2); %16点IFFT[X16(k)]得到x16(n)subplot(3,2,2);stem(n,xn,'.');box ontitle('(b) 三角波序列x(n)');xlabel('n');ylabel('x(n)');axis([0,32,0,20])k=0:511;wk=2*k/512;subplot(3,2,1);plot(wk,abs(Xk));title('(a)FT[x(n)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');axis([0,1,0,200])k=0:N/2-1;subplot(3,2,3);stem(k,abs(X16k),'.');box ontitle('(c) 16点频域');xlabel('k');ylabel('|X_1_6(k)|');axis([0,8,0,200])n1=0:N/2-1;subplot(3,2,4);stem(n1,x16n,'.');box ontitle('(d) 16点IDFT[X_1_6(k)]');xlabel('n');ylabel('x_1_6(n)');axis([0,32,0,20])k=0:N-1;subplot(3,2,5);stem(k,abs(X32k),'.');box ontitle('(e) 32点频域采样');xlabel('k');ylabel('|X_3_2(k)|');axis([0,16,0,200])n1=0:N-1;subplot(3,2,6);stem(n1,x32n,'.');box ontitle('(f) 32点IDFT[X_3_2(k)]');xlabel('n');ylabel('x_3_2(n)');axis([0,32,0,20])结果如下所示:实验一分析:序列x(n)的长度M=26,由图中可以看出,当采样点数N=16<M时,x16(n)确实等于原三角序列x(n)以16为周期的周期延拓序列的主值序列。
数字信号处理实验报告

实验一 信号、系统及系统响应一、实验目的1、熟悉理想采样的性质,了解信号采样前后的频谱变化,加深对时域采样定理的理解。
2、熟悉离散信号和系统的时域特性。
3、熟悉线性卷积的计算编程方法:利用卷积的方法,观察、分析系统响应的时域特性。
4、掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对离散信号、系统及其系统响应进行频域分析。
二、 实验原理1.理想采样序列:对信号x a (t)=A e −αt sin(Ω0t )u(t)进行理想采样,可以得到一个理想的采样信号序列x a (t)=A e −αt sin(Ω0nT ),0≤n ≤50,其中A 为幅度因子,α是衰减因子,Ω0是频率,T 是采样周期。
2.对一个连续时间信号x a (t)进行理想采样可以表示为该信号与一个周期冲激脉冲的乘积,即x ̂a (t)= x a (t)M(t),其中x ̂a (t)是连续信号x a (t)的理想采样;M(t)是周期冲激M(t)=∑δ+∞−∞(t-nT)=1T ∑e jm Ωs t +∞−∞,其中T 为采样周期,Ωs =2π/T 是采样角频率。
信号理想采样的傅里叶变换为X ̂a (j Ω)=1T ∑X a +∞−∞[j(Ω−k Ωs )],由此式可知:信号理想采样后的频谱是原信号频谱的周期延拓,其延拓周期为Ωs =2π/T 。
根据时域采样定理,如果原信号是带限信号,且采样频率高于原信号最高频率分量的2倍,则采样以后不会发生频率混叠现象。
三、简明步骤产生理想采样信号序列x a (n),使A=444.128,α=50√2π,Ω0=50√2π。
(1) 首先选用采样频率为1000HZ ,T=1/1000,观察所得理想采样信号的幅频特性,在折叠频率以内和给定的理想幅频特性无明显差异,并做记录;(2) 改变采样频率为300HZ ,T=1/300,观察所得到的频谱特性曲线的变化,并做记录;(3) 进一步减小采样频率为200HZ ,T=1/200,观察频谱混淆现象是否明显存在,说明原因,并记录这时候的幅频特性曲线。
数字信号处理实验报告

数字信号处理实验报告
实验报告
实验名称:IIR数字滤波器设计及软件实现
实验目的:
1.了解数字滤波器的概念和原理;
2.学习IIR数字滤波器的设计方法;
3.实现IIR数字滤波器的软件模拟。
实验设备:
1.计算机;
2.MATLAB或其他数学软件。
实验原理:
IIR数字滤波器是一种反馈式滤波器,其输入与输出之间存在着递归关系,即当前输出值与前一时刻的输出值有关。
IIR数字滤波器的传递函数可以表示为有理函数的形式,由零点和极点所确定。
常见的IIR数字滤波器有低通滤波器、高通滤波器、带通滤波器和带阻滤波器等。
实验步骤:
1.确定滤波器的类型和参数,如滤波器的阶数、截止频率等;
2.根据所需滤波器的传递函数形式,设计其零点和极点;
3.根据设计的零点和极点,利用相应的方法计算出滤波器的系数;
4.利用得到的滤波器系数,实现IIR数字滤波器的软件模拟;
5.输入合适的信号,对其进行滤波处理,并进行结果分析。
实验结果与分析:
根据所设计的IIR数字滤波器的类型和参数,得到了相应的滤波器系数,并利用这些系数进行了滤波器的软件模拟。
将输入信号经过滤波器处理后,得到了滤波后的输出信号。
通过比较输入信号和输出信号,可以观察到滤波器对输入信号的影响,如降低噪声、增强目标信号等。
实验结论:
通过实验,我们了解了IIR数字滤波器的设计方法和实现过程,以及其在信号处理中的应用。
通过对比输入信号和输出信号,我们可以评估滤波器的性能,并据此对滤波器参数进行调整和优化。
数字信号处理报告

《数字信号处理》课程设计报告设计一信号的基本运算【一】设计目的熟悉信号的基本运算,通过仿真结果加深理解。
【二】设计内容1.现有一段以采样频率8192Hz采样得到的语音数据x(k),为了模仿出回音的效果,可以对数据进行如下处理:x(k)=x(k)+a*x(k-d),其中d为时延,a为时延信号的衰减幅度。
根据上述原理,进行仿真实验,并演示回声的效果。
(参数:时延d=0.4秒,衰减幅度a=0.5)2.对上述语音信号进行时间反转x(-k)、上采样x(2k)、下采样x(k/2)操作,并演示这些运算的效果。
【三】设计过程,调试,分析。
数字信号处理的主要研究对象是语音信号和图像信号,语音信号的研究可以从时域和频域两个方面来进行。
其中时域的分析处理有两种方法: 一种是进行语音信号分析, 这属于线性处理的范畴,主要是通过信号的加减、时移、倍乘、卷积、求相关函数等来实现;另一种是生成和变换成各种调制信号, 这属于非线性的范畴,主要是对信号平均累加器的动态范围进行压缩扩张, 用门限方法对噪声的抑制。
对频域分析处理, 即对信号的频率特性在频谱中加以分析研究, 这拓展了信号分析的范围, 是对不确定信号分析的主要方法。
在实际应用中, 信号的时域频分析经常同时进行。
1 语音信号的采集与时频分析1. 1 语音信号的采集利用 PC 机上的声卡和WINDOWS操作系统可以进行数字信号的采集。
将话筒输入计算机的语音输入插口上, 启动录音机。
按下录音按钮, 接着对话筒说话/大家好0 ,说完后停止录音, 屏幕左侧将显示所录声音的长度。
点击放音按钮,可以实现所录音的重现。
以文件名/ dajiahao0 保存入 g:\MATLAB\ work中。
可以看到, 文件存储器的后缀默认wav。
在 Matlab 软件平台下可以利用函数wavread对语音信号进行采样,得到了声音数据变量x,同时把x的采样频率Fs= 8000Hz和数据位Nbits= 8Bit放进了MATALB的工作空间。
数字信号处理实验报告

数字信号处理实验报告黎美琪通信一、实验名称:(快速傅里叶变换)的探究二、实验目的.学习理解的基本实现原理(注:算法主要有基时间抽取法和基频域抽取法,此实验讨论的是基频率抽取算法,课本上主要讲解的是基时间抽取算法).编写代码实现基频率抽取算法三、实验条件机四、实验过程(一)基础知识储备.基频率抽取( )算法基本原理:输入[]前后分解,输出[]奇偶分解。
设序列的点数为^,为整数(公式中的、定义不一样,打印后统一改正)将输入的[]按照的顺序分成前后两段:对输出的[]进行奇偶分解()、()和()之间可以用下图所示的蝶形运算符表示:的一次分解流图:的二次分解流图:最后完整的分解流图(^一共分解了三次):的运算过程规律。
)^点的共进行级运算,每级由个蝶形运算组成。
同一级中,每个蝶形的两个输入数据只对计算本蝶形有用,而且每个蝶形的输入、输出数据结点又同在一条水平线上,也就是说计算完一个蝶形后,所得输出数据可立即存入原输入数据所占用的存储单元。
这样,经过级运算后,原来存放输入序列数据的个存储单元中便依次存放()的个值。
(注:这种利用同一存储单元存储蝶形计算输入、输出数据的方法称为原位计算。
原位计算可节省大量内存,从而使设备成本降低。
))旋转因子的变化规律 :以点的为例,第一级蝶形,,,,;第二级蝶形,;第三级的蝶形,。
依次类推,对于级蝶形,旋转因子的指数为∙^(−),,,,,……,^()这样就可以算出每一级的旋转因子。
)蝶形运算两节点之间的“距离” :第一级蝶形每个蝶形运算量节点的“距离”为,第二级每个蝶形运算另节点的“距离”为,第三级蝶形每个蝶形运算量节点的“距离”为。
依次类推:对于等于的次方的,可以得到第级蝶形每个蝶形运算量节点的“距离”为的次方。
.旋转因子 的性质1) 周期性 2) 对称性mk N N mk N W W -=+2 )可约性为整数/,//n N W W n mk n N mk N =.频率抽取()基算法和时间抽取()基算法比较:两种算法是等价的,其相同之处:()与两种算法均为原位运算。
数字信号处理实验报告

一、实验目的1. 理解数字信号处理的基本概念和原理。
2. 掌握离散时间信号的基本运算和变换方法。
3. 熟悉数字滤波器的设计和实现。
4. 培养实验操作能力和数据分析能力。
二、实验原理数字信号处理(Digital Signal Processing,DSP)是利用计算机对信号进行采样、量化、处理和分析的一种技术。
本实验主要涉及以下内容:1. 离散时间信号:离散时间信号是指时间上离散的信号,通常用序列表示。
2. 离散时间系统的时域分析:分析离散时间系统的时域特性,如稳定性、因果性、线性等。
3. 离散时间信号的变换:包括离散时间傅里叶变换(DTFT)、离散傅里叶变换(DFT)和快速傅里叶变换(FFT)等。
4. 数字滤波器:设计、实现和分析数字滤波器,如低通、高通、带通、带阻滤波器等。
三、实验内容1. 离散时间信号的时域运算(1)实验目的:掌握离散时间信号的时域运算方法。
(2)实验步骤:a. 使用MATLAB生成两个离散时间信号;b. 进行时域运算,如加、减、乘、除等;c. 绘制运算结果的时域波形图。
2. 离散时间信号的变换(1)实验目的:掌握离散时间信号的变换方法。
(2)实验步骤:a. 使用MATLAB生成一个离散时间信号;b. 进行DTFT、DFT和FFT变换;c. 绘制变换结果的频域波形图。
3. 数字滤波器的设计和实现(1)实验目的:掌握数字滤波器的设计和实现方法。
(2)实验步骤:a. 设计一个低通滤波器,如巴特沃斯滤波器、切比雪夫滤波器等;b. 使用MATLAB实现滤波器;c. 使用MATLAB对滤波器进行时域和频域分析。
4. 数字滤波器的应用(1)实验目的:掌握数字滤波器的应用。
(2)实验步骤:a. 采集一段语音信号;b. 使用数字滤波器对语音信号进行降噪处理;c. 比较降噪前后的语音信号,分析滤波器的效果。
四、实验结果与分析1. 离散时间信号的时域运算实验结果显示,通过MATLAB可以方便地进行离散时间信号的时域运算,并绘制出运算结果的时域波形图。
数字信号处理实验报告

数字信号处理实验报告一、实验目的本次数字信号处理实验的主要目的是通过实际操作和观察,深入理解数字信号处理的基本概念和方法,掌握数字信号的采集、处理和分析技术,并能够运用所学知识解决实际问题。
二、实验设备与环境1、计算机一台,安装有 MATLAB 软件。
2、数据采集卡。
三、实验原理1、数字信号的表示与采样数字信号是在时间和幅度上都离散的信号,可以用数字序列来表示。
在采样过程中,根据奈奎斯特采样定理,为了能够准确地恢复原始信号,采样频率必须大于信号最高频率的两倍。
2、离散傅里叶变换(DFT)DFT 是将时域离散信号变换到频域的一种方法。
通过 DFT,可以得到信号的频谱特性,从而分析信号的频率成分。
3、数字滤波器数字滤波器是对数字信号进行滤波处理的系统,分为有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器。
FIR 滤波器具有线性相位特性,而 IIR 滤波器则在性能和实现复杂度上有一定的优势。
四、实验内容与步骤1、信号的采集与生成使用数据采集卡采集一段音频信号,或者在 MATLAB 中生成一个模拟信号,如正弦波、方波等。
2、信号的采样与重构对采集或生成的信号进行采样,然后通过插值算法重构原始信号,观察采样频率对重构信号质量的影响。
3、离散傅里叶变换对采样后的信号进行DFT 变换,得到其频谱,并分析频谱的特点。
4、数字滤波器的设计与实现(1)设计一个低通 FIR 滤波器,截止频率为给定值,观察滤波前后信号的频谱变化。
(2)设计一个高通 IIR 滤波器,截止频率为给定值,比较滤波前后信号的时域和频域特性。
五、实验结果与分析1、信号的采集与生成成功采集到一段音频信号,并在MATLAB 中生成了各种模拟信号,如正弦波、方波等。
通过观察这些信号的时域波形,对不同类型信号的特点有了直观的认识。
2、信号的采样与重构当采样频率足够高时,重构的信号能够较好地恢复原始信号的形状;当采样频率低于奈奎斯特频率时,重构信号出现了失真和混叠现象。
数字信号处理实验报告完整版[5篇模版]
![数字信号处理实验报告完整版[5篇模版]](https://img.taocdn.com/s3/m/7b21a71bb5daa58da0116c175f0e7cd184251866.png)
数字信号处理实验报告完整版[5篇模版]第一篇:数字信号处理实验报告完整版实验 1利用 T DFT 分析信号频谱一、实验目的1.加深对 DFT 原理的理解。
2.应用 DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境计算机、MATLAB 软件环境三、实验基础理论T 1.DFT 与与 T DTFT 的关系有限长序列的离散时间傅里叶变换在频率区间的N 个等间隔分布的点上的 N 个取样值可以由下式表示:212 /0()|()()0 1Nj knjNk NkX e x n e X k k Nπωωπ--====≤≤-∑由上式可知,序列的 N 点 DFT ,实际上就是序列的 DTFT 在 N 个等间隔频率点上样本。
2.利用 T DFT 求求 DTFT方法 1 1:由恢复出的方法如下:由图 2.1 所示流程可知:101()()()Nj j n kn j nNn n kX e x n e X k W eNωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑由上式可以得到:IDFT DTFT第二篇:数字信号处理实验报告JIANGSUUNIVERSITY OF TECHNOLOGY数字信号处理实验报告学院名称:电气信息工程学院专业:班级:姓名:学号:指导老师:张维玺(教授)2013年12月20日实验一离散时间信号的产生一、实验目的数字信号处理系统中的信号都是以离散时间形态存在的,所以对离散时间信号的研究是数字信号的基本所在。
而要研究离散时间信号,首先需要产生出各种离散时间信号。
使用MATLAB软件可以很方便地产生各种常见的离散时间信号,而且它还具有强大绘图功能,便于用户直观地处理输出结果。
通过本实验,学生将学习如何用MATLAB产生一些常见的离散时间信号,实现信号的卷积运算,并通过MATLAB中的绘图工具对产生的信号进行观察,加深对常用离散信号和信号卷积和运算的理解。
数字信号处理报告

目录1 设计目的 (1)2 设计内容 (1)3 简述滤波器的基本原理 (1)3.1 窗函数法 (1)3.2 等波纹法 (2)3.3 频率取样法 (2)4 程序代码功能分析 (2)5 FIR高通滤波器的设计 (3)5.1 利用fir1函数及不同窗窗函数设计高通通滤波器 (3)5.1.1 代码分析 (3)5.1.2 结果图 (3)5.1.3 结果分析 (4)5.2 利用等波纹法设计高通通滤波器 (4)5.2.1 代码分析 (4)5.2.2 结果图 (5)5.2.3 结果分析 (5)5.3 利用频率取样法设计高通通滤波器 (5)5.3.1 代码分析 (5)5.3.2 结果图 (6)5.3.3 结果分析 (6)6 利用所设计高通通滤波器对正弦信号进行处理 (6)6.1 代码分析 (6)6.2 结果图 (7)6.3 结果分析 (8)7 利用优化设计的低通滤波器处理加有噪声的音频波形 (8)7.1 代码分析 (8)7.2 结果图 (9)7.3 结果分析 (10)8 设计过程中遇到的错误及解决办法 (10)8.1 错误 (10)8.2 解决办法 (10)9 心得体会 (11)10 参考文献 (11)11 软件流程图 (11)1 设计目的1、加深对数字滤波器的常用指标理解。
2、学习数字滤波器的设计方法。
3. 掌握滤波器的原理。
2 设计内容利用窗函数法、频率取样法及等波纹方法设计FIR 高通滤波器,绘制出滤波器的特性图。
利用所设计的滤波器对多个频带叠加的正弦信号进行处理,对比滤波前后的信号时域和频域图,验证滤波器的效果。
最后对一段音乐进行采样和加噪,绘制出采样后语音信号的时域波形和频谱图,然后用滤波器对加噪后的信号进行滤波,绘制出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
FIR 高通滤波器指标:Ωp=0.8πrad ,Ωs=0.7πrad ,Ap=0.8dB ,As=40dB;3 简述滤波器的基本原理FIR 滤波器设计的任务是选择有限长度的)(k h ,使传输函数)(Ωj e H 满足一定的幅度特性和线性相位要求。
数字信号处理实验报告

数字信号处理实验报告郑州航空工业管理学院《数字信号处理》实验报告专业电子信息工程学号姓名实验一 数字滤波器的结构一、 实验目的(1) 加深对数字滤波器分类与结构的了解;(2) 明确数字滤波器的基本结构及其相互间的转换方法;(3) 掌握用MATLAB 进行数字滤波器各种结构相互间转换的子函数及程序编写方法。
二、 实验原理一个离散LSI 系统可用系统函数来表示;()()()12001212120z 11M m M m m M N N kN k k b z Y b b z b z b z H z X z a z a z a za z ----=----=++++===+++++∑∑ 也可用差分方程来表示:()()()10N Mk m k m y n a y n k b x n m ==+-=-∑∑当k a 至少有一个不为0时,则在有限z 平面上存在极点,表示一个IIR 数字滤波器;当k a 全都为0时,系统不存在极点,表示一个FIR 系统。
IIR 数字滤波器的基本结构分为直接Ⅰ型、直接Ⅱ型、级联型和并联型。
FIR 数字滤波器的基本结构分为横截型、级联型、并联型、、线性相位型和频率抽样型。
三、 实验仪器微型计算机、MATLAB四、 实验内容(1) 已知一个IIR 系统的系统函数为()1231230.10.40.40.110.30.550.2z z z H z z z z -------+-=+++ 将其从直接型转换为级联型和并联型结构,并画出各种结构的流程图。
(2) 已知一个FIR 系统的系统函数为()12340.20.8850.212+0.212+0.885H z z z z z ----=++for i=1:2:N-1Brow=r(i:1:i+1,:); %取出一对留数Arow=p(i:1:i+1,:); %取出一对对应的极点%二个留数极点转为二阶子系统分子分母系数[Brow,Arow]=residuez(Brow,Arow,[]);B(fix((i+1)/2),:)=real(Brow);%取Brow的实部,放入系数矩阵B的相应行A(fix((i+1)/2),:)=real(Arow);%取Arow的实部,放入系数矩阵A的相应行endendnum =[8 -4 11 -2];den =[1 -1.25 0.75 -0.125];[C,B,A]=dir2par(num,den)C =16B =-16.0000 20.00008.0000 0A =1.0000 -1.0000 0.50001.0000 -0.2500 0五、试验结果分析实验二 用冲激响应不变法设计IIR 数字滤波器一、 实验目的(1) 加深对冲激响应不变法设计IIR 数字滤波器的基本原理的理解;(2) 掌握用冲激响应不变法设计数字低通、带通滤波器的设计;(3) 了解MATLAB 有关冲激响应不变法的常用子函数。
数字信号处理实验报告_完整版

实验1 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境 计算机、MATLAB 软件环境 三、实验基础理论1.DFT 与DTFT 的关系有限长序列x (n )(0≤n ≤N −1)的离散时间傅里叶变换X (e jω)在频率区间(0≤ω≤2π)的N 个等间隔分布的点kω=2πk /N (0≤k ≤N −1)上的N 个取样值可以由下式表示:212/0()|()()01N jkn j Nk N k X e x n eX k k N πωωπ--====≤≤-∑由上式可知,序列x (n )的N 点DFT X k ,实际上就是x (n )序列的DTFT 在N 个等间隔频率点kω=2πk /N (0≤k ≤N −1)上样本X k 。
2.利用DFT 求DTFT方法1:由恢复出的方法如下:由图2.1所示流程可知:101()()()N j j nkn j nN n n k X e x n eX k W e N ωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑ 由上式可以得到:IDFTDTFTX (ejω)12()()()Nj k kX e X k Nωπφω==-∑ 其中为内插函数12sin(/2)()sin(/2)N j N x eN ωωφω--= 方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2π/N ,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
数字信号处理实验报告(自己的实验报告)

数字信号处理实验报告西南交通大学信息科学与技术学院姓名:伍先春学号:20092487班级:自动化1班指导老师:张翠芳实验一序列的傅立叶变换实验目的进一步加深理解DFS,DFT 算法的原理;研究补零问题;快速傅立叶变换(FFT )的应用。
实验步骤1. 复习DFS 和DFT 的定义,性质和应用;2. 熟悉MATLAB 语言的命令窗口、编程窗口和图形窗口的使用;利用提供的程序例子编写实验用程序;按实验内容上机实验,并进行实验结果分析;写出完整的实验报告,并将程序附在后面。
实验内容1. 周期方波序列的频谱试画出下面四种情况下的的幅度频谱,并分析补零后,对信号频谱的影响。
2. 有限长序列x(n)的DFT(1) 取x(n)(n=0:10)时,画出x(n)的频谱X(k) 的幅度;(2) 将(1)中的x(n)以补零的方式,使x(n)加长到(n:0~100)时,画出x(n)的频谱X(k) 的幅度;(3) 取x(n)(n:0~100)时,画出x(n)的频谱X(k) 的幅度。
利用FFT进行谱分析 已知:模拟信号以t=0.01n(n=0:N-1)进行采样,求N 点DFT 的幅值谱。
请分别画出N=45; N=50;N=55;N=60时的幅值曲线。
数字信号处理实验一1.(1) L=5;N=20;60,7)4(;60,5)3(;40,5)2(;20,5)1()](~[)(~,2,1,01)1(,01,1)(~=========±±=⎩⎨⎧-+≤≤+-+≤≤=N L N L N L N L n x DFS k X m N m n L mN L mN n mN n x )52.0cos()48.0cos()(n n n x ππ+=)8cos(5)4sin(2)(t t t x ππ+=n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);k=[-N/2:N/2];figure(1)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)'); title('DFS of SQ.wave:L=5,N=20');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');(2)L=5;N=40;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);k=[-N/2:N/2];figure(2)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)'); title('DFS of SQ.wave:L=5,N=40');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');(3)L=5;N=60;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);k=[-N/2:N/2];figure(3)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)'); title('DFS of SQ.wave:L=5,N=60');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');(4)L=7;N=60;n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);k=[-N/2:N/2];figure(4)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)'); title('DFS of SQ.wave:L=7,N=60');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');2. (1)M=10;N=10;n=1:M;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)]; figure(1)subplot(2,1,1);stem(n1,y1);xlabel('n'); title('signal x(n),0<=n<=10');axis([0,N,-2.5,2.5]);Y1=fft(y1);magY1=abs(Y1(1:1:N/2+1));k1=0:1:N/2;w1=2*pi/N*k1;subplot(2,1,2);title('Samples of DTFT Magnitude');stem(w1/pi,magY1); axis([0,1,0,10]);xlabel('frequency in pi units');(2)M=10;N=100;n=1:M;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)]; figure(2)subplot(2,1,1);stem(n1,y1);xlabel('n'); title('signal x(n),0<=n<=10');axis([0,N,-2.5,2.5]);Y1=fft(y1);magY1=abs(Y1(1:1:N/2+1));k1=0:1:N/2;w1=2*pi/N*k1;subplot(2,1,2);title('Samples of DTFT Magnitude');stem(w1/pi,magY1); axis([0,1,0,10]);xlabel('frequency in pi units');(3)M=100;N=100;n=1:M;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)]; figure(3)subplot(2,1,1);stem(n1,y1);xlabel('n'); title('signal x(n),0<=n<=100');axis([0,N,-2.5,2.5]);Y1=fft(y1);magY1=abs(Y1(1:1:N/2+1));k1=0:1:N/2;w1=2*pi/N*k1;subplot(2,1,2);title('Samples of DTFT Magnitude');stem(w1/pi,magY1); axis([0,1,0,10]);xlabel('frequency in pi units');3.figure(1)subplot(2,2,1)N=45;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);plot(q,abs(y))stem(q,abs(y))title('FFT N=45')%subplot(2,2,2)N=50;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);plot(q,abs(y))title('FFT N=50')%subplot(2,2,3)N=55;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);plot(q,abs(y))title('FFT N=55')%subplot(2,2,4)N=16;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N);plot(q,abs(y))title('FFT N=16')function[Xk]=dfs(xn,N)n=[0:1:N-1];k=[0:1:N-1];WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;实验二 用双线性变换法设计IIR 数字滤波器 一、 实验目的1. 熟悉用双线性变换法设计IIR 数字滤波器的原理与方法; 2. 掌握数字滤波器的计算机仿真方法;3.通过观察对实际心电图的滤波作用,获得数字滤波器的感性知识。
数字信号处理实验报告_五个实验

实验一 信号、系统及系统响应一、 实验目的1、熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解;2、熟悉时域离散系统的时域特性;3、利用卷积方法观察分析系统的时域特性;4、掌握序列傅立叶变换的计算机实现方法,利用序列的傅立叶变换对连续信号、离散信号及系统响应进行频域分析。
二、 实验原理及方法采样是连续信号数字处理的第一个关键环节。
对采样过程的研究不仅可以了解采样前后信号时域和频域特性发生变化以及信号信息不丢失的条件,而且可以加深对傅立叶变换、Z 变换和序列傅立叶变换之间关系式的理解。
对一个连续信号)(t x a 进行理想采样的过程可用下式表示:)()()(^t p t t x x aa其中)(^t x a 为)(t x a 的理想采样,p(t)为周期脉冲,即∑∞-∞=-=m nT t t p )()(δ)(^t x a的傅立叶变换为)]([1)(^s m a m j X T j a X Ω-Ω=Ω∑∞-∞= 上式表明^)(Ωj Xa为)(Ωj Xa的周期延拓。
其延拓周期为采样角频率(T /2π=Ω)。
只有满足采样定理时,才不会发生频率混叠失真。
在实验时可以用序列的傅立叶变换来计算^)(Ωj X a 。
公式如下:Tw jwae X j X Ω==Ω|)()(^离散信号和系统在时域均可用序列来表示。
为了在实验中观察分析各种序列的频域特性,通常对)(jw e X 在[0,2π]上进行M 点采样来观察分析。
对长度为N 的有限长序列x(n),有:n jw N n jw k ke m x eX--=∑=)()(1其中,k Mk πω2=,k=0,1,……M-1 时域离散线性非移变系统的输入/输出关系为∑∞-∞=-==m m n h m x n h n x n y )()()(*)()(上述卷积运算也可在频域实现)()()(ωωωj j j e H e X eY =三、 实验程序s=yesinput(Please Select The Step Of Experiment:\n 一.(1时域采样序列分析 s=str2num(s); close all;Xb=impseq(0,0,1); Ha=stepseq(1,1,10);Hb=impseq(0,0,3)+2.5*impseq(1,0,3)+2.2*impseq(2,0,3)+impseq(3,0,3); i=0;while(s);%时域采样序列分析 if(s==1)k=0;while(1)if(k==0)A=yesinput('please input the Amplitude:\n',...444.128,[100,1000]); a=yesinput('please input the Attenuation Coefficient:\n',...222.144,[100,600]);w=yesinput('please input the Angle Frequence(rad/s):\n',...222.144,[100,600]);endk=k+1;fs=yesinput('please input the sample frequence:\n',...1000,[100,1200]);Xa=FF(A,a,w,fs);i=i+1;string+['fs=',num2str(fs)];figure(i)DFT(Xa,50,string);1=yesinput1=str2num(1);end%系统和响应分析else if(s==2)kk=str2num(kk);while(kk)if(kk==1)m=conv(Xb,Hb);N=5;i=i+1;figure(i)string=('hb(n)');Hs=DFT(Hb,4,string);i=i+1;figure(i)string('xb(n)');DFT(Xb,2,string);string=('y(n)=xb(n)*hb(n)');else if (kk==2)m=conv(Ha,Ha);N=19;string=('y(n)=ha(n)*(ha(n)');else if (kk==3)Xc=stepseq(1,1,5);m=conv(Xc,Ha);string=('y(n)=xc(n)*ha(n)');endendendi=i+1;figure(i)DFT(m,N,string);kk=yesinputkk=str2num(kk);end卷积定理的验证else if(s==3)A=1;a=0.5;w=2,0734;fs=1;Xal=FF(A,a,w,fs);i=i+1;figure(i)string=('The xal(n)(A=1,a=0.4,T=1)'); [Xa,w]DFT(Xal,50,string);i=i+1;figure(i)string =('hb(n)');Hs=DFT(Hb,4,string);Ys=Xs.*Hs;y=conv(Xal,Hb);N=53;i=i+1;figure(i)string=('y(n)=xa(n)*hb(n)');[yy,w]=DFT(y,N,string);i=i+1;figure(i)subplot(2,2,1)plot(w/pi,abs(yy));axis([-2 2 0 2]);xlabel('w/pi');ylabel('|Ys(jw)|');title(FT[x(n)*h(n)]');subplot(2,2,3)plot(w/pi,abs(Ys));axis([-2 2 0 2]);xlabel('w/pi');ylabel('|Ys(jw)|');title('FT[xs(n)].FT[h(n)]'); end end end子函数:离散傅立叶变换及X(n),FT[x(n)]的绘图函数 function[c,l]=DFT(x,N,str) n=0:N-1; k=-200:200; w=(pi/100)*k; l=w; c=x*Xc=stepseq(1,1,5); 子函数:产生信号function c=FF(A,a,w,fs) n=o:50-1;c=A*exp((-a)*n/fs).*sin(w*n/fs).*stepseq(0,0,49); 子函数:产生脉冲信号function [x,n]=impseq(n0,n1,n2) n=[n1:n2];x=[(n-n0)==0];子函数:产生矩形框信号function [x,n]=stepseq(n0,n1,n2) n=[n1:n2];x=[(n-n0>=0)];四、 实验内容及步骤1、认真复习采样理论,离散信号与系统,线性卷积,序列的傅立叶变换及性质等有关内容,阅读本实验原理与方法。
数字信号处理实验报告

《数字信号处理》实验报告地点通信实验室学院计算机与通信工程学院专业班级通信082姓名颜晶学号 40850209指导教师杨欲亮2011年6月实验二 时域采样与频域采样一、实验目的时域采样理论与频域采样理论是数字信号处理中的重要理论。
要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。
二、实验原理及方法时域采样定理的要点是: (a)对模拟信号)(t x a 以间隔T 进行时域等间隔理想采样,形成的采样信号的频谱)(ˆΩj X 是原模拟信号频谱()a X j Ω以采样角频率s Ω(T s /2π=Ω)为周期进行周期延拓。
公式为:)](ˆ[)(ˆt x FT j X a a =Ω )(1∑∞-∞=Ω-Ω=n s a jn j X T(b )采样频率s Ω必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。
利用计算机计算上式并不方便,下面我们导出另外一个公式,以便用计算机上进行实验。
理想采样信号)(ˆt x a 和模拟信号)(t x a 之间的关系为:∑∞-∞=-=n a a nT t t x t x)()()(ˆδ对上式进行傅立叶变换,得到:dt e nT t t x j X t j n a a Ω-∞∞-∞-∞=⎰∑-=Ω])()([)(ˆδdte nT t t x t j n a Ω-∞-∞=∞∞-∑⎰-)()( δ=在上式的积分号内只有当nT t =时,才有非零值,因此:∑∞-∞=Ω-=Ωn nTj aae nT xj X )()(ˆ上式中,在数值上)(nT x a =)(n x ,再将T Ω=ω代入,得到:∑∞-∞=-=Ωn nj aen x j X ω)()(ˆ上式的右边就是序列的傅立叶变换)(ωj e X ,即Tj a e X j X Ω==Ωωω)()(ˆ 上式说明理想采样信号的傅立叶变换可用相应的采样序列的傅立叶变换得到,只要将自变量ω用T Ω代替即可。
数字信号处理实验报告

物理与电子电气工程学院实验报告课程名称:数字信号处理院系:物理与电子电气工程学院专业:电子信息科学与技术班级:学号:姓名:物理与电子电气工程学院实验报告实验报告(1)实验名称实验一离散时间信号分析实验日期2013.10.19 指导教师(2)绘制单位跃阶)u序列(n解:MATLAB程序如下:>> n=-10:10;>> x=[zeros(1,10),ones(1,11)]; >> stem(n,x,'fill')>> grid on(4)正弦型序列)35sin()(ππ+=n A n x解:MATLAB 程序如下: >> n=-10:10; >> w=pi/5; >> ph=pi/3; >> A=2;(2)2()1(2)()(-+-+-+=n n n n n h δδδδ解:MATLAB 程序如下: >> n=-10:10;>> x=[zeros(1,10),1,2,1,2,zeros(1,7)]; >> stem(n,x,'fill') >> grid on(2)实现任意序列(2)()(-+=n n n h δδ解:MATLAB 程序如下:>> n=-10:10;>> x=[zeros(1,10),1,2,1,2,zeros(1,7)]; >> y=circshift(x,[0,-4]); %左移四位>> stem(n,y,'fill') >> grid on(4)实现任意序列)(=n x (2)2()1(2)()(+-+-+=n n n n n h δδδδ解:MATLAB 程序如下:x=[zeros(1,10),1,2,1,2,zeros(1,7)];>> y=[zeros(1,10),1,2,3,4,5,zeros(1,6)]; >> k=x+y; %两数列相加(5)实现任意序列)(=n x δ(2)2()1(2)()(-+-+-+=n n n n n h δδδδ解:MATLAB 程序如下:>> n=-10:10;>> x=[zeros(1,10),1,2,1,2,zeros(1,7)]; >> y=[zeros(1,10),1,2,3,4,5,zeros(1,6)]; >> k=x.*y; %实现两序列的积 >> stem(n,k,'fill')(6)分别实现()(=n n x δ(2)2()1(2)()(-+-+-+=n n n n n h δδδδ解:MATLAB 程序如下: ①>> n=-10:10;②>> n=-10:10;>> x=[zeros(1,10),1,2,1,2,zeros(1,7)];>> y=cumsum(x); %%实现函数自身的累加(由左向右累加)>> stem(n,y,'fill')>> grid on实验一实验心得:首先,第一次实验,我又开始重拾MATLAB方法。
数字信号处理课程设计报告_4

目录一、课程设计的目的 (2)二、数字滤波器的设计步骤 (2)2.2、IIR数字滤波器与FIR数字滤波器的区别 (2)三、IIR数字滤波器 (3)3.1、IIR数字滤波器的特点 (3)3.1.2、IIR数字滤波器采用递归型结构 (3)3.1.3、借助成熟的模拟滤波器的成果 (3)3.1.4、需加相位校准网络 (3)3.2、用双线性法设计IIR数字滤波器 (3)3.3、巴特沃斯低通滤波器的设计 (4)3.4、巴特沃斯高通滤波器的设计 (5)3.4.1、巴特沃斯高通滤波器各参数图形 (5)3.4.2、巴特沃斯高通滤波器滤波效果图 (5)四、FIR数字滤波器 (5)4.1、FIR滤波器的特点 (5)4.2、窗函数法设计FIR数字滤波器 (6)五、程序实例源码 (8)六、问题分析 (12)七、心得体会 (13)八、参考文献 (13)一、课程设计的目的数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。
在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。
本次课程设计是通过对常用数字滤波器的设计和实现,掌握数字信号处理的工作原理及设计方法;熟悉用双线性变换法设计 IIR 数字滤波器和用窗函数法设计FIR数字滤波器的原理与方法,掌握利用数字滤波器对信号进行滤波的方法,掌握数字滤波器的计算机仿真方法,并能够对设计结果加以分析。
二、数字滤波器的设计步骤2.1、不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:(1)按照实际任务的要求,确定滤波器的性能指标。
(2)用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。
根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。
(3)利用有限精度算法实现系统函数,包括结构选择,字长选择等。
2.2、IIR数字滤波器与FIR数字滤波器的区别2.2.1、单位响应IIR数字滤波器单位响应为无限脉冲序列,而FIR数字滤波器单位响应为有限的;FIR滤波器,也就是“非递归滤波器”,没有引入反馈。
数字信号处理实验报告(全)

实验一、离散时间系统及离散卷积1、单位脉冲响应源程序:function pr1() %定义函数pr1a=[1,-1,0.9]; %定义差分方程y(n)-y(n-1)+0.9y(n-2)=x(n) b=1;x=impseq(0,-20,120); %调用impseq函数n=[-40:140]; %定义n从-20 到120h=filter(b,a,x); %调用函数给纵座标赋值figure(1) %绘图figure 1 (冲激响应) stem(n,h); %在图中绘出冲激title('冲激响应'); %定义标题为:'冲激响应'xlabel('n'); %绘图横座标为nylabel('h(n)'); %绘图纵座标为h(n)figure(2) %绘图figure 2[z,p,g]=tf2zp(b,a); %绘出零极点图zplane(z,p)function [x,n]=impseq(n0,n1,n2) %声明impseq函数n=[n1:n2];x=[(n-n0)==0];结果:Figure 1:Figure 2:2、离散系统的幅频、相频的分析源程序:function pr2()b=[0.0181,0.0543,0.0543,0.0181];a=[1.000,-1.76,1.1829,-0.2781];m=0:length(b)-1; %m从0 到3l=0:length(a)-1; %l从0 到3K=5000;k=1:K;w=pi*k/K; %角频率wH=(b*exp(-j*m'*w))./(a*exp(-j*l'*w));%对系统函数的定义magH=abs(H); %magH为幅度angH=angle(H); %angH为相位figure(1)subplot(2,1,1); %在同一窗口的上半部分绘图plot(w/pi,magH); %绘制w(pi)-magH的图形grid;axis([0,1,0,1]); %限制横纵座标从0到1xlabel('w(pi)'); %x座标为 w(pi)ylabel('|H|'); %y座标为 angle(H)title('幅度,相位响应'); %图的标题为:'幅度,相位响应' subplot(2,1,2); %在同一窗口的下半部分绘图plot(w/pi,angH); %绘制w(pi)-angH的图形grid; %为座标添加名称xlabel('w(pi)'); %x座标为 w(pi)ylabel('angle(H)'); %y座标为 angle(H)结果:3、卷积计算源程序:function pr3()n=-5:50; %声明n从-5到50u1=stepseq(0,-5,50); %调用stepseq函数声用明u1=u(n)u2=stepseq(10,-5,50); %调用stepseq函数声用明u2=u(n-10) %输入x(n)和冲激响应h(n)x=u1-u2; %x(n)=u(n)-u(n-10)h=((0.9).^n).*u1; %h(n)=0.9^n*u(n)figure(1)subplot(3,1,1); %绘制第一个子图stem(n,x); %绘制图中的冲激axis([-5,50,0,2]); %限定横纵座标的范围title('输入序列'); %规定标题为:'输入序列'xlabel('n'); %横轴为nylabel('x(n)'); %纵轴为x(n)subplot(3,1,2); %绘制第二个子图stem(n,h); %绘制图中的冲激axis([-5,50,0,2]); %限定横纵座标的范围title('冲激响应序列'); %规定标题为:'冲激响应序列'xlabel('n'); %横轴为nylabel('h(n)'); %纵轴为h(n)%输出响应[y,ny]=conv_m(x,n,h,n); %调用conv_m函数subplot(3,1,3); %绘制第三个子图stem(ny,y);axis([-5,50,0,8]);title('输出响应'); %规定标题为:'输出响应'xlabel('n');ylabel('y(n)'); %纵轴为y(n)%stepseq.m子程序%实现当n>=n0时x(n)的值为1function [x,n]=stepseq(n0,n1,n2)n=n1:n2;x=[(n-n0)>=0];%con_m的子程序%实现卷积的计算function [y,ny]=conv_m(x,nx,h,nh)nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);结果:实验二、离散傅立叶变换与快速傅立叶变换1、离散傅立叶变换(DFT)源程序:function pr4()F=50;N=64;T=0.000625;n=1:N;x=cos(2*pi*F*n*T); %x(n)=cos(pi*n/16)subplot(2,1,1); %绘制第一个子图x(n)stem(n,x); %绘制冲激title('x(n)'); %标题为x(n)xlabel('n'); %横座标为nX=dft(x,N); %调用dft函数计算x(n)的傅里叶变换magX=abs(X); %取变换的幅值subplot(2,1,2); %绘制第二个子图DFT|X|stem(n,X);title('DFT|X|');xlabel('f(pi)'); %横座标为f(pi)%dft的子程序%实现离散傅里叶变换function [Xk]=dft(xn,N)n=0:N-1;k=0:N-1;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;结果:F=50,N=64,T=0.000625时的波形F=50,N=32,T=0.000625时的波形:2、快速傅立叶变换(FFT)源程序:%function pr5()F=50;N=64;T=0.000625;n=1:N;x=cos(2*pi*F*n*T); %x(n)=cos(pi*n/16) subplot(2,1,1);plot(n,x);title('x(n)');xlabel('n'); %在第一个子窗中绘图x(n)X=fft(x);magX=abs(X);subplot(2,1,2);plot(n,X);title('DTFT|X|');xlabel('f(pi)'); %在第二个子图中绘图x(n)的快速傅%里叶变换结果:3、卷积的快速算法源程序:function pr6()n=0:14;x=1.^n;h=(4/5).^n;x(15:32)=0;h(15:32)=0;%到此 x(n)=1, n=0~14; x(n)=0,n=15~32% h(n)=(4/5)^n, n=0~14; h(n)=0,n=15~32subplot(3,1,1);stem(x);title('x(n)');axis([1,32,0,1.5]); %在第一个子窗绘图x(n)横轴从1到32,纵轴从0到1.5 subplot(3,1,2);stem(h);title('h(n)');axis([1,32,0,1.5]); %在第二个子窗绘图h(n)横轴从1到32,纵轴从0到1.5 X=fft(x); %X(n)为x(n)的快速傅里叶变换H=fft(h); %H(n)为h(n)的快速傅里叶变换Y=X.*H; %Y(n)=X(n)*H(n)%Y=conv(x,h);y=ifft(Y); %y(n)为Y(n)的傅里叶反变换subplot(3,1,3) %在第三个子窗绘图y(n)横轴从1到32,纵轴从0到6 stem(abs(y));title('y(n=x(n)*h(n))');axis([1,32,0,6]);结果:实验三、IIR数字滤波器设计源程序:function pr7()wp=0.2*pi;ws=0.3*pi;Rp=1;As=25;T=1;Fs=1/T;OmegaP=(2/T)*tan(wp/2); %OmegaP(w)=2*tan(0.1*pi) OmegaS=(2/T)*tan(ws/2); %OmegaS(w)=2*tan(0.15*pi)ep=sqrt(10^(Rp/10)-1);Ripple=sqrt(1/(1+ep.^2));Attn=1/10^(As/20);N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(OmegaP/OmegaS) ));OmegaC=OmegaP/((10.^(Rp/10)-1).^(1/(2*N)));[cs,ds]=u_buttap(N,OmegaC);[b,a]=bilinear(cs,ds,Fs);[mag,db,pha,w]=freqz_m(b,a);subplot(3,1,1); %在第一个子窗绘制幅度响应的图形plot(w/pi,mag);title('幅度响应');xlabel('w(pi)');ylabel('H');axis([0,1,0,1.1]);set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]);set(gca,'YTickmode','manual','YTick',[0,Attn,Ripple,1]);grid;subplot(3,1,2); %在第二个子窗以分贝为单位绘制幅度响应的图形plot(w/pi,db);title('幅度响应(dB)');xlabel('w(pi)');ylabel('H');axis([0,1,-40,5]);set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]);set(gca,'YTickmode','manual','YTick',[-50,-15,-1,0]);grid;subplot(3,1,3); %在第三个子窗绘制相位响应的图形plot(w/pi,pha);title('相位响应');xlabel('w(pi)');ylabel('pi unit');%axis([0,1,0,1.1]);set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]);set(gca,'YTickmode','manual','YTick',[-1,0,1]);grid;function [b,a]=u_buttap(N,OmegaC)[z,p,k]=buttap(N);p=p*OmegaC;k=k*OmegaC.^N;B=real(poly(z));b0=k;b=k*B;a=real(poly(p));function [mag,db,pha,w]=freqz_m(b,a)[H,w]=freqz(b,a,1000,'whole');H=(H(1:501))';w=(w(1:501))';mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);结果:实验四、FIR数字滤波器的设计源程序:function pr8()wp=0.2*pi;ws=0.35*pi;tr_width=ws-wp;M=ceil(6.6*pi/tr_width)+1;n=0:M-1;wc=(ws+wp)/2;alpha=(M-1)/2;m=n-alpha+eps;hd=sin(wc*m)./(pi*m);w_ham=(hamming(M))';h=hd.*w_ham;[mag,db,pha,w]=freqz_m(h,[1]);delta_w=2*pi/1000;Rp=-(min(db(1:wp/delta_w+1)));As=-round(max(db(ws/delta_w+1:501)));subplot(2,2,1);stem(n,hd);title('理想冲激响应');axis([0,M-1,-0.1,0.3]);ylabel('hd(n)');subplot(2,2,2);stem(n,h);title('实际冲激响应');axis([0,M-1,-0.1,0.3]);ylabel('h(n)');subplot(2,2,3);plot(w/pi,pha);title('滤波器相位响应');axis([0,1,-pi,pi]);ylabel('pha');set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1.1]); set(gca,'YTickmode','manual','YTick',[-pi,0,pi]); grid;subplot(2,2,4);plot(w/pi,db);title('滤波器幅度响应');axis([0,1,-100,10]);ylabel('H(db)');set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1.1]); set(gca,'YTickmode','manual','YTick',[-50,-15,0]);function [mag,db,pha,w]=freqz_m(b,a)[H,w]=freqz(b,a,1000,'whole');H=(H(1:501))';w=(w(1:501))';mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);结果:。
数字信号处理-实验报告一-序列绘图

XXXX大学实验报告学生姓名_xxx_学号_xxxxxxxxxxx_年级班级_201x级xxx班_实验项目_序列的绘图_实验时间_201x-xx-xx_一、实验目的:1.了解MATLAB的实验环境;2.充分熟悉subplot函数的使用;3.能够画出单位脉冲序列及单位阶跃序列的图形;4.能够画出矩形序列及正弦序列的图形。
二、实验步骤:1.打开MATLAB,了解三个区域(工作区、命令区、历史记录区)的作用;2.用help查找subplot函数的使用情况;3.编辑并生成函数impseq.m(单位脉冲序列)function [x,n] = impseq(n0,n1,n2)% 产生 x(n) = delta(n-n0); n1 <= n,n0 <= n2% [x,n] = impseq(n0,n1,n2)if ((n0 < n1) | (n0 > n2) | (n1 > n2))error('参数必须满足 n1 <= n0 <= n2')endn = [n1:n2];%x = [zeros(1,(n0-n1)), 1, zeros(1,(n2-n0))];x = [(n-n0) == 0];以及函数stepseq.m(单位阶跃序列)function [x,n] = stepseq(n0,n1,n2)% 产生 x(n) = u(n-n0); n1 <= n,n0 <= n2% [x,n] = stepseq(n0,n1,n2)if ((n0 < n1) | (n0 > n2) | (n1 > n2))error('参数必须满足n1 <= n0 <= n2')endn = [n1:n2];%x = [zeros(1,(n0-n1)), ones(1,(n2-n0+1))];x = [(n-n0) >= 0];主函数test1.mn=[-5:5];x1=impseq(0,-5,5);subplot(2,2,1);stem(n,x1);title('单位脉冲序列')xlabel('n');ylabel('x(n)');n=[0:10];x2=stepseq(0,0,10);subplot(2,2,2);stem(n,x2);title('单位阶跃序列');xlabel('n');ylabel('x(n)');或主函数test2.mn=[0:10];x3=stepseq(0,0,10)-stepseq(5,0,10);subplot(2,2,3);stem(n,x3);title('矩形序列');xlabel('n');ylabel('x(n)');n=[0:20];x4=sin(0.3*n);subplot(2,2,4);stem(n,x4);title('正弦序列');xlabel('n');ylabel('x(n)');4.先运行test1.m, 再运行test2.m, 并改变坐标尺度n的范围,分别画出另外两种坐标尺度的图形。
数字信号处理实验报告

实验报告课程名称:数字信号处理授课班级:学号:姓名:指导老师:实验一离散时间信号及系统的时域分析实验类别:基础性实验1实验目的:(1)了解MA TLAB 程序设计语言的基本特点,熟悉MA TLAB软件运行环境。
(2)熟悉MA TLAB中产生信号和绘制信号的基本命令,学会用MA TLAB在时域中产生一些基本的离散时间信号,并对这些信号进行一些基本的运算。
(3)通过MA TLAB仿真一些简单的离散时间系统,并研究它们的时域特性。
(4)通过MA TLAB进行卷积运算,利用卷积方法观察分析系统的时域特性。
2. 实验报告要求●简述实验原理及目的。
●结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。
●记录调试运行情况及所遇问题的解决方法。
3.实验内容:思考题:9.2.1 运行程序P9.2.1,哪个参数控制该序列的增长或衰减:哪个参数控制该序列的振幅?若需产生实指数序列,应对程序作何修改?9.2.2运行程序P9.2.1,该序列的频率是多少?怎样改变它?哪个参数控制该序列的相位?哪个参数可以控制该序列的振幅?该序列的周期是多少?9.2.3 运行程序P9.2.3,对加权输入得到的y(n)与在相同权系数下输出y1(n)和y2(n)相加得到的yt(n)进行比较,这两个序列是否相等?该系统是线性系统吗?9.2.4 假定另一个系统为y(n)=x(n)x(n-1)修改程序,计算这个系统的输出序列y1(n),y2(n)和y(n)。
比较有y(n)和yt(n)。
这两个序列是否相等?该系统是线性系统吗?(提高部分)9.2.5运行程序P9.2.4,并比较输出序列y(n)和yd(n-10)。
这两个序列之间有什么关系?该系统是时不变系统吗?9.2.6 考虑另一个系统:修改程序,以仿真上面的系统并确定该系统是否为时不变系统。
(选做)n = 0:40; D = 10;a = 3.0;b = -2;x = a*cos(2*pi*0.1*n) + b*cos(2*pi*0.4*n);[x1,n1]=sigmult(n,n,x,n)[x2,n2]=sigshift(x,n,1)[y,ny1]= sigadd(x1,n1,x2,n2)[y1,ny11]= sigshift(y,ny1,D)[sx,sn]= sigshift(x,n,D)[sx1,sn1]=sigmult(n,n, sx,sn)[sx2,sn2]=sigshift(sx,sn,1)[y2,ny2]= sigadd(sx1,sn1,sx2,sn2)D= sigadd(y1,ny11,y2,ny22)六、实验心得体会:实验时间批阅老师实验成绩实验二 FFT 实现数字滤波实验类别:提高性实验 1.实验目的(1) 通过这一实验,加深理解FFT 在实现数字滤波(或快速卷积)中的重要作用,更好的利用FFT 进行数字信号处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理自动化领域的应用院系:电气与控制工程学院自动化0702班班级:自动化0702班姓名:雷云、李彬、郭歌学号:0706050209、0706050212、0706050213日期:2010.12.3目录一设计目的 (2)二系统分析 (2)2.1设计要求 (2)2.2设计思想 (2)三总体设计 (2)3.1硬件设计 (2)3.2总电路图设计 (3)3.3最小系统图 (3)四单元电路设计 (3)4.1按键电路 (4)4.2. DSP与LCD接口设计 (4)五元器件选择............................................................................. . (5)5.1所要元器件 (5)5.2主要元器件的描述 (5)5.2.1、TPS7333 (5)5.2.2、MGLS12864-LCD (5)六运行描述 (8)七软件设计 (9)7.1序流程图 (9)7.2序代码 (9)八参考文献 (29)一、设计目的数字信号处理(DSP,digital signal processing)是一门涉及许多领域的新兴学科,在现代科技发展中发挥着极其重要的作用。
近年来,数字信号处理理论在不断取得进步的同时,随着半导体技术的突飞猛进,专用的数字信号处理器芯片也获得了飞速发展。
数字信号处理器是在模拟信号变换为数字信号后对数字信号进行高速实时处理的专用处理器,它具有计算速度快、体积小、功耗低等优点,是实现数字信号处理的强大工具。
近年来,随着半导体技术的进步,处理器芯片的处理能力越来越强大,使得信号处理的研究可以主要放在算法和软件方面,不再像过去那样需要过多考虑硬件。
由于它的出色性能,DSP目前被广泛应用于数字通信、信号处理、工业控制、图像处理等领域。
二、系统分析2.1、设计要求(1)设置DSPf2812芯片为Emulator工作模式;(2)设置GPIO相应管脚为输入或输出模式;(3)DSP芯片外接LCD作为输出,外接n个(数目不底于3个)单按键作为输入;(4)在程序中构建汉字字模,并能够使用查找法提取。
2.2、设计思想通过CCS软件开发平台和相应实验箱进行程序调试DSP外设控制设备开发扩展。
用独立式控键控制DSP的GPIO管脚,使用DSP芯片控制LCD来显示汉字,用其中一个按键实现LCD的清屏,其它(4个)每个按键实现8汉字的输出控制,通用DSP管脚控制LCD公告牌的文字显示三、总体设计3.1、硬件设计TMS320F2812作为使用的DSP芯片。
它包含33个电源引脚(为使器件正常运行,所有电源引脚必须正确连接且不能悬空),时钟源模块,DSP有六种信号可以使DSP控制器复位。
所以在设计的初期,我把它分成了四个模块。
它们分别是:电平转换部分、晶振和复位部分、键盘部分和液晶显示。
其中复位采用电源复位的方式,由引脚PORESET引起。
为了可靠复位,其中高电平的有效时间至少6个CPU时钟周期。
硬件设计组成框图如图所示:3.2、总体电路图设计其中s1~s5为按键,R1~R5对管脚起保护作用。
该键盘为独立式键盘,分别和DSP芯片的GPIO管脚PWM1、PWM2、PMW3、PWM4、PWM5相连接命令控制扩展接口的地址为0X108001,数据控制扩展接口的地址为0X108003、0x108004,辅助控制扩展接口的地址为0X108002。
因为DSP芯片的允许电压为3.3V,所以该键盘外接3.3V的电源。
设置GPIO相应管脚为输入或输出模式,DSP芯片外接LCD 作为输出,外接5个单按键作为输入。
在程序中构建汉字字模,并能够使用查找法提取。
3.3最小系统图四、单元电路设计4.1 按键电路该键盘为独立式键盘,分别和DSP芯片的GPIO管脚PWM1、PWM2、PMW3、PWM4、PWM5相连接,因为DSP芯片的允许电压为3.3V,所以该键盘外接3.3V的电源。
当开关S断开时,其管脚为高电平;当开关闭合时,其管脚变为低电平;以此来控制DSP芯片的管脚。
其中PWM1为轻屏,其余控制LCD显示汉字。
4.2. DSP与LCD接口设计DSP经常会对读写周期较慢的输入/输出设备(如液晶显示模块、打印机、键盘等)进行访问,通常用以下两种方法来解决DSP与这些慢速设备之间的输入/输出时序匹配问题。
直接访问。
直接访问方式是将DSP的读写信号线与慢速设备接口控制板引出的读写信号线直接相连,时序由DSP内部读写逻辑控制。
由于慢速外设的读写周期相对DSP较慢,要使两者的时序匹配,还必须进行一些时序方面的控制处理。
一种处理方法是软件编程等待状态发生器,将外部总线周期扩展到数个机器周期。
由于受硬件条件的限制,这种扩展通常也是有限的。
另一种处理方法是利用DSP的READY(外部设备准备就绪)引脚,通过硬件扩展实现外部状态自动等待,从而使DSP与慢速设备之间的时序匹配。
虽然可以将总线周期扩展到任意个机器周期,但是需要进行硬件扩展,增加了系统设计的复杂度。
间接访问。
用DSP的数字I/0间接控制慢速设备,通过软件控制DSP的I/O 口来实现与慢速设备的时序匹配。
此种方式无需硬件扩展即可实现与任意时序慢速设备之间的时序匹配。
本设计采用间接访问方式来实现DSP与LCD之间的时序匹配,即在程序中加入大量延时语句。
由于DSP 为3.3V 设备,而液晶显示模块属于5V 设备,所以在连接控制线、数据线时需要加电平隔离和转换设备。
五、元器件选择5.1 所要元器件TPS7333电平转换芯片;TMS320F2812 DSP芯片; MGLS12864-LCD;若干导线; 5个开关;5个电阻。
5.2、模块性能分析5.2.1、TPS7333由于器件所需电压为3.3V,而实际提供电源为5V,所以要有个电平转换模块,我们选择的是TPS7333,原理图如下:5.2.2、MGLS12864-LCD字符式液晶显示模块MGLS12864-LCD SM由一块128X64点阵液晶屏和控HD44780及其辅助电路组成。
它可以显示字母、数字、符号等;该液晶显示模块的访问、控制是由F2812DSP对扩展接口的操作来完成的,控制扩展口的寻址:命令控制扩展接口的地址为0X108001,数据控制扩展接口的地址为0X108003、0X108004,辅助控制扩展接口的地址为0X108002。
发送控制命令:向液晶显示模块发送控制命令的方法是通过向命令控制扩展接口写入命令控制字,然后再向辅助控制接口写入0。
六、运行描述(1)CS运行环境,进行相应的设置,然后保存设置,在CCS运行环境下打开已编好的程序,进行调试,直至提示0个错误,然后保存调试成功后的文件。
(2)打开DSP试验箱电源,按照先前设计的电路原理图连接电路,其中电源部分应在确定为3.3v或小于3.3v时连接芯片电源,然后拷入刚才运行成功后的程序。
(3) 由键盘作用分别向DSP芯片管脚输入低电平,各管脚分别调用相应程序来控制LCD的显示;按键1: LCD显示出“梅子金黄杏子肥”按键2: LCD显示出“麦花雪白菜花稀”按键3: LCD显示出“日长篱落无人过”按键4: LCD显示出“唯有蜻蜓蛱蝶飞”七、软件设计7.1程序流程图初始化程序后,f2812一直处在等待判断状态,若有低电平,则调用显示程序,若没有低电平送来(5个按键有其中一个按下)。
则根据相应的程序设置地址判断时显示相应按键控制下的汉字还是清屏,如果没有低电平送来,则保持原来等待判断状态。
当清屏或显示汉字后,程序会自动回到等待判断状态,以此循环。
程序流程图如下:7.2程序代码#include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File #include "f2812a.h"#include "DSP281x_GPio.h"#include "lcd.h"#define LCDDELAY 1#define LCDCMDTURNON 0x3f //打开LCD#define LCDCMDTURNOFF 0x3e //关闭LCD#define LCDCMDSTARTLINE 0xc0 //起始行#define LCDCMDPAGE 0xb8 //起始页#define LCDCMDVERADDRESS 0x40 // 起始地址int i,j,y=0;//void Delay(unsigned int nTime); // 延时子程序void TurnOnLCD(); // 打开显示void LCDCLS(); // 清除屏幕显示内容//延时 /*void Delay(unsigned int nTime){ int ii;int jj;int kk=0;for(ii=0;ii<nTime;ii++ ){ for(jj=0;jj<100;jj++ ){ kk++;}}}*/unsigned char ledkey1[8][32]={{0x00, 0xfe, 0x02, 0x02, 0x02, 0xfe, 0x02, 0x02, 0xfe, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00,0x00, 0x7f, 0x28, 0x24, 0x23, 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x22, 0x22, 0x7f, 0x00, 0x00, },{0x00, 0x00, 0xfc, 0x04, 0x24, 0x24, 0xfc, 0xa5, 0xa6, 0xa4, 0xfc, 0x24, 0x24, 0x24, 0x04, 0x00,0x80, 0x60, 0x1f, 0x80, 0x80, 0x42, 0x46, 0x2a, 0x12, 0x12, 0x2a, 0x26, 0x42, 0xc0, 0x40, 0x00, },{0x40, 0x40, 0x44, 0x54, 0x54, 0xd4, 0x74, 0x5f, 0x54, 0x54, 0xd4, 0x54, 0x54, 0x44, 0x40, 0x00,0x04, 0x04, 0x02, 0x02, 0x7f, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x7e, 0x01, 0x03, 0x06, 0x02, 0x00, },{0x00, 0x00, 0x00, 0xfe, 0x02, 0x12, 0x22, 0x42, 0x82, 0x7a, 0x12, 0x02, 0xfe, 0x00, 0x00, 0x00,0x40, 0x20, 0x18, 0x07, 0x10, 0x08, 0x04, 0x02, 0x01, 0x06, 0x1c, 0x00, 0x0f, 0x30, 0x7c, 0x00, },{0x80, 0x40, 0x20, 0xf8, 0x07, 0x02, 0x00, 0x00, 0xff, 0xc0, 0x60, 0x30, 0x1c, 0x08, 0x00, 0x00,0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x02, 0x01, 0x3f, 0x40, 0x40, 0x40, 0x40, 0x78, 0x00, 0x00, },{0x10, 0x98, 0x54, 0x33, 0x1a, 0x00, 0xfe, 0x52, 0x52, 0x7e, 0x52, 0x52, 0x42, 0xfe, 0x00, 0x00,0x11, 0x11, 0x09, 0x89, 0x49, 0x30, 0x0f, 0x00, 0x1f, 0x09, 0x09, 0x5f, 0x80, 0x7f, 0x00, 0x00, },{0x20, 0x38, 0xa7, 0x62, 0x18, 0x00, 0x2a, 0x12, 0xbe, 0x40, 0xa6, 0x1a, 0x02, 0x7e, 0x00, 0x00,0x10, 0x11, 0x11, 0x09, 0x0a, 0x82, 0x95, 0x55, 0x4a, 0x29, 0x24, 0x11, 0x09, 0x02, 0x02, 0x00, },{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x58, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },};unsigned char ledkey2[8][32]={{0x00,0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x0 0,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x3C, 0x00,},{0x00,0x10,0x92,0x92,0x56,0x5A,0x32,0xFE,0x11,0x31,0x59,0x95,0x91,0x18,0x10 ,0x00,0x01,0x01,0x00,0xFF,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0xFF,0x01,0x01,0x01, 0x00, },{0x24,0x24,0xE4,0xFC,0xA2,0x22,0x22,0x80,0x70,0x00,0xFF,0x40,0x20,0x18,0x00 ,0x00,0x02,0x01,0x00,0xFF,0x00,0x83,0x40,0x20,0x18,0x07,0x01,0x06,0x18,0xE0,0x40, 0x00, },{0x02,0x02,0xF2,0x32,0x52,0x92,0x12,0xFE,0x32,0x52,0x92,0x12,0xF2,0x02,0x02 ,0x00,0x00,0x00,0xFF,0x01,0x02,0x04,0x00,0x7F,0x01,0x02,0x44,0x80,0x7F,0x00,0x00, 0x00, },{0x10,0x61,0x06,0xF0,0xA0,0x98,0x8E,0x88,0x88,0xFF,0x88,0x88,0x88,0x80,0x80 ,0x00,0x04,0x04,0xFF,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x3F,0x40,0x40,0x40,0x70, 0x00, },{0x10,0x61,0x86,0x60,0x08,0xF8,0x08,0x00,0xFC,0x0E,0x35,0x04,0x44,0x7C,0x00 ,0x00,0x04,0x7C,0x03,0x04,0x04,0x03,0x0A,0x08,0x09,0x09,0x09,0x09,0x49,0x81,0x7F, 0x00, },{0x10,0x60,0x01,0xC6,0x30,0x20,0x18,0x0F,0xC8,0x08,0x08,0x08,0x08,0xF8,0x00 ,0x00,0x04,0x04,0xFE,0x01,0x00,0x04,0x06,0x05,0x04,0x04,0x46,0x8C,0x40,0x3F,0x00, 0x00, },{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00, },};unsigned char ledkey3[8][32]={{0x00, 0xfe, 0x02, 0x02, 0x02, 0xfe, 0x02, 0x02, 0xfe, 0x02, 0x02, 0x02, 0x02,0x00, 0x7f, 0x28, 0x24, 0x23, 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x22, 0x22, 0x7f, 0x00, 0x00, },{0x00, 0x00, 0xfc, 0x04, 0x24, 0x24, 0xfc, 0xa5, 0xa6, 0xa4, 0xfc, 0x24, 0x24, 0x24, 0x04, 0x00,0x80, 0x60, 0x1f, 0x80, 0x80, 0x42, 0x46, 0x2a, 0x12, 0x12, 0x2a, 0x26, 0x42, 0xc0, 0x40, 0x00, },{0x40, 0x40, 0x44, 0x54, 0x54, 0xd4, 0x74, 0x5f, 0x54, 0x54, 0xd4, 0x54, 0x54, 0x44, 0x40, 0x00,0x04, 0x04, 0x02, 0x02, 0x7f, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x7e, 0x01, 0x03, 0x06, 0x02, 0x00, },{0x00, 0x00, 0x00, 0xfe, 0x02, 0x12, 0x22, 0x42, 0x82, 0x7a, 0x12, 0x02, 0xfe, 0x00, 0x00, 0x00,0x40, 0x20, 0x18, 0x07, 0x10, 0x08, 0x04, 0x02, 0x01, 0x06, 0x1c, 0x00, 0x0f, 0x30, 0x7c, 0x00, },{0x80, 0x40, 0x20, 0xf8, 0x07, 0x02, 0x00, 0x00, 0xff, 0xc0, 0x60, 0x30, 0x1c, 0x08, 0x00, 0x00,0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x02, 0x01, 0x3f, 0x40, 0x40, 0x40, 0x40, 0x78, 0x00, 0x00, },{0x10, 0x98, 0x54, 0x33, 0x1a, 0x00, 0xfe, 0x52, 0x52, 0x7e, 0x52, 0x52, 0x42, 0xfe, 0x00, 0x00,0x11, 0x11, 0x09, 0x89, 0x49, 0x30, 0x0f, 0x00, 0x1f, 0x09, 0x09, 0x5f, 0x80, 0x7f, 0x00, 0x00, },{0x20, 0x38, 0xa7, 0x62, 0x18, 0x00, 0x2a, 0x12, 0xbe, 0x40, 0xa6, 0x1a, 0x02, 0x7e, 0x00, 0x00,0x10, 0x11, 0x11, 0x09, 0x0a, 0x82, 0x95, 0x55, 0x4a, 0x29, 0x24, 0x11, 0x09, 0x02, 0x02, 0x00, },{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x58, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,};unsigned char ledkey4[8][32]={{0x00, 0xfe, 0x02, 0x02, 0x02, 0xfe, 0x02, 0x02, 0xfe, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00,0x00, 0x7f, 0x28, 0x24, 0x23, 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x22, 0x22, 0x7f, 0x00, 0x00, },{0x00, 0x00, 0xfc, 0x04, 0x24, 0x24, 0xfc, 0xa5, 0xa6, 0xa4, 0xfc, 0x24, 0x24, 0x24, 0x04, 0x00,0x80, 0x60, 0x1f, 0x80, 0x80, 0x42, 0x46, 0x2a, 0x12, 0x12, 0x2a, 0x26, 0x42, 0xc0, 0x40, 0x00, },{0x40, 0x40, 0x44, 0x54, 0x54, 0xd4, 0x74, 0x5f, 0x54, 0x54, 0xd4, 0x54, 0x54, 0x44, 0x40, 0x00,0x04, 0x04, 0x02, 0x02, 0x7f, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x7e, 0x01, 0x03, 0x06, 0x02, 0x00, },{0x00, 0x00, 0x00, 0xfe, 0x02, 0x12, 0x22, 0x42, 0x82, 0x7a, 0x12, 0x02, 0xfe, 0x00, 0x00, 0x00,0x40, 0x20, 0x18, 0x07, 0x10, 0x08, 0x04, 0x02, 0x01, 0x06, 0x1c, 0x00, 0x0f, 0x30, 0x7c, 0x00, },{0x80, 0x40, 0x20, 0xf8, 0x07, 0x02, 0x00, 0x00, 0xff, 0xc0, 0x60, 0x30, 0x1c, 0x08, 0x00, 0x00,0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x02, 0x01, 0x3f, 0x40, 0x40, 0x40, 0x40, 0x78, 0x00, 0x00, },{0x10, 0x98, 0x54, 0x33, 0x1a, 0x00, 0xfe, 0x52, 0x52, 0x7e, 0x52, 0x52, 0x42, 0xfe, 0x00, 0x00,0x11, 0x11, 0x09, 0x89, 0x49, 0x30, 0x0f, 0x00, 0x1f, 0x09, 0x09, 0x5f, 0x80, 0x7f, 0x00, 0x00, },{0x20, 0x38, 0xa7, 0x62, 0x18, 0x00, 0x2a, 0x12, 0xbe, 0x40, 0xa6, 0x1a, 0x02, 0x7e, 0x00, 0x00,0x10, 0x11, 0x11, 0x09, 0x0a, 0x82, 0x95, 0x55, 0x4a, 0x29, 0x24, 0x11, 0x09, 0x02, 0x02, 0x00, },{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x58, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },};/*void Delay(unsigned int nTime){int ii ,jj,kk=0;for(ii=0;ii<nTime;ii++){for(jj=0;jj<1024;jj++){ kk++;}}//}*//*//r打开液晶显示void TurnOnLCD(){*(int *)0x108001=LCDCMDTURNON;Delay(LCDDELAY);*(int *)0x108002=0;Delay(2048);*(int *)0x108001=LCDCMDSTARTLINE;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}void LCDCLS() //清屏{int i,j;*(int *)0x108001=LCDCMDSTARTLINE;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( i=0;i<8;i++ ){ //左屏*(int *)0x108001=LCDCMDPAGE+i;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS; //地址 Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( j=0;j<64;j++ ){*(int *)0x108003=0;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);} //右屏*(int *)0x108001=LCDCMDPAGE+i;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( j=0;j<64;j++ ){*(int *)0x108004=0;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}}}void main(void){EALLOW;GpioMuxRegs.GPAMUX.all=0x0000; //管脚定义为I/O口 GpioMuxRegs.GPADIR.all=0x0000; //定义管脚为输入口 EDIS;TurnOnLCD(); // 打开显示LCDCLS();for(;;){ if(GpioDataRegs.GPADAT.bit.GPIOA0==0){LCDCLS(); // 清除显示内存}if(GpioDataRegs.GPADAT.bit.GPIOA1==0){//设置起始值*(int *)0x108001=LCDCMDSTARTLINE; // 设置显示起始行Delay(LCDDELAY); //延时*(int *)0x108002=0; //辅助命令控制字Delay(LCDDELAY);*(int *)0x108001=LCDCMDPAGE; // 设置操作页=0Delay(LCDDELAY);*(int *)0x108002=0; //辅助命令控制字Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS; // 起始列=0 Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);// TurnOnLCD(); // 打开显示y=0;for(j=0;j<4;j++){*(int *)0x108001=LCDCMDPAGE+2; //设置页Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; //设置地址 Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=0;i<16;i++){*(int *)0x108003=ledkey1[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}*(int *)0x108001=LCDCMDPAGE+3;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=16;i<32;i++){*(int *)0x108003=ledkey1[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}y+=16;}y=0;}for(j=4;j<8;j++){*(int *)0x108001=LCDCMDPAGE+4;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=0;i<16;i++){*(int *)0x108004=ledkey1[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}*(int *)0x108001=LCDCMDPAGE+5;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=16;i<32;i++){*(int *)0x108004=ledkey1[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}y+=16;} if(GpioDataRegs.GPADAT.bit.GPIOA3==0){//设置起始值*(int *)0x108001=LCDCMDSTARTLINE; // 设置显示起始行Delay(LCDDELAY); //延时*(int *)0x108002=0; //辅助命令控制字Delay(LCDDELAY);*(int *)0x108001=LCDCMDPAGE; // 设置操作页=0 Delay(LCDDELAY);*(int *)0x108002=0; //辅助命令控制字Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS; // 起始列=0Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);TurnOnLCD(); // 打开显示y=0;for(j=0;j<4;j++){*(int *)0x108001=LCDCMDPAGE+2; //设置页Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; //设置地址 Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=0;i<16;i++){*(int *)0x108003=ledkey2[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}*(int *)0x108001=LCDCMDPAGE+3;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=16;i<32;i++){*(int *)0x108003=ledkey2[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}y+=16;}y=0;for(j=4;j<8;j++){ *(int *)0x108001=LCDCMDPAGE+4;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=0;i<16;i++){*(int *)0x108004=ledkey2[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}*(int *)0x108001=LCDCMDPAGE+5;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=16;i<32;i++){*(int *)0x108004=ledkey2[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}y+=16;}}if(GpioDataRegs.GPADAT.bit.GPIOA5==0){//设置起始值*(int *)0x108001=LCDCMDSTARTLINE; // 设置显示起始行Delay(LCDDELAY); //延时*(int *)0x108002=0; //辅助命令控制字Delay(LCDDELAY);*(int *)0x108001=LCDCMDPAGE; // 设置操作页=0 Delay(LCDDELAY);*(int *)0x108002=0; //辅助命令控制字Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS; // 起始列=0 Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);TurnOnLCD(); // 打开显示y=0;for(j=0;j<4;j++){ *(int *)0x108001=LCDCMDPAGE+2; //设置页Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; //设置地址 Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=0;i<16;i++){*(int *)0x108003=ledkey2[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}*(int *)0x108001=LCDCMDPAGE+3;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=16;i<32;i++){*(int *)0x108003=ledkey2[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}y+=16;}y=0;for(j=4;j<8;j++){ *(int *)0x108001=LCDCMDPAGE+4;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=0;i<16;i++){*(int *)0x108004=ledkey2[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);} *(int *)0x108001=LCDCMDPAGE+5;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=16;i<32;i++){*(int *)0x108004=ledkey2[j][i];Delay(LCDDELAY);*(int *)0x108002=0;}y+=16;}}if(GpioDataRegs.GPADAT.bit.GPIOA7==0){//设置起始值*(int *)0x108001=LCDCMDSTARTLINE; // 设置显示起始行Delay(LCDDELAY); //延时*(int *)0x108002=0; //辅助命令控制字Delay(LCDDELAY);*(int *)0x108001=LCDCMDPAGE; // 设置操作页=0 Delay(LCDDELAY);*(int *)0x108002=0; //辅助命令控制字Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS; // 起始列=0 Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);TurnOnLCD(); // 打开显示y=0;for(j=0;j<4;j++){ *(int *)0x108001=LCDCMDPAGE+2; //设置页Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; //设置地址 Delay(LCDDELAY);*(int *)0x108002=0;for(i=0;i<16;i++){ *(int *)0x108003=ledkey4[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}*(int *)0x108001=LCDCMDPAGE+3;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=16;i<32;i++){ *(int *)0x108003=ledkey4[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);} y+=16;}y=0;for(j=4;j<8;j++){ *(int *)0x108001=LCDCMDPAGE+4;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=0;i<16;i++){*(int *)0x108004=ledkey4[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}*(int *)0x108001=LCDCMDPAGE+5;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(i=16;i<32;i++){ *(int *)0x108004=ledkey4[j][i];Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);} y+=16;}}if(GpioDataRegs.GPADAT.bit.GPIOA3==0)if(GpioDataRegs.GPADAT.bit.GPIOA5==0)if(GpioDataRegs.GPADAT.bit.GPIOA7==0)}八、参考文献[1]万山明,《TMS320F281xDSP原理与应用实例》,北京航空航天大学出版社,2007.7。