当前位置:文档之家› 《现代信号处理》课程设计

《现代信号处理》课程设计

《现代信号处理》课程设计
《现代信号处理》课程设计

目录

一、课程设计目的------------------------------2

二、课程设计任务------------------------------2

三、详细设计过程------------------------------4

四、设计结果及分析---------------------------13

五、心得体会---------------------------------24

一、课程设计目的:

1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。

2.提高综合运用所学知识独立分析和解决问题的能力; 3.熟练使用一种高级语言进行编程实现。

二、课程设计内容

(一).信号分析

1、编制信号生成程序,产生下述各序列,绘出它们的时域波形 1) 单位抽样序列 ()n δ

2)矩形序列 ()N R n 3) 三角波序列

4) 反三角波序列

5)Gaussian 序列

6) 正弦序列

7)衰减正弦序列

44,03()3,47

0,n n x n n n -≤≤??

=-≤≤???

其它31,03

()8,47

0,n n x n n n +≤≤??

=-≤≤???

其它2

()

5,015()0,n p q

e

n x n --

??

≤≤=???

其它

6()sin 16x n t

π=64,16

fs Hz N ==at

-

对连续信号 进行采样,可得到测试序列

。令A=50,采样周期T=1ms,即fs=1000Hz,f0=62.5,a=100。 2. 对上述信号完成下列信号分析

1)对三角波序列3()x n 和反三角波序列4()x n ,作N=8点的FFT ,观察比较它们的幅频特性,说明它们有什么异同?绘出两序列及其它们的幅频特性曲线。在3()x n 和4()x n 的尾部补零,作N=16点的FFT ,观察它们的幅频特性发生了什么变化?分析说明原因。

2)、观察高斯序列5()x n ,固定信号5()x n 中的参数p=8,令q 分别等于2,4,8,观察它们的时域和幅频特性,了解当q 取不同值时,对信号序列的时域幅频特性的影响;固定q=8,令p 分别等于8,13,14,观察参数p 变化对信号序列的时域及幅频特性的影响,观察p 等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。

3)对于正弦序列4()x n ,取数据长度N 分别等于8,16,32,分别作N 点FFT ,观察它们的的时域和幅频特性,说明它们的差别 ,简要说明原因。

4)、观察衰减正弦序列7()x n 的时域和幅频特性,绘出幅频特性曲线,改变采样频率fs,使fs=300Hz , 观察此时的频谱的形状和谱峰出现位置?说明产生现象的原因。

3.设有一连续时间信号s(t),其由20Hz 、220Hz 和750Hz 的正弦信号叠加而成,分析确定采样频率及数据分析长度,计算并绘出信号的频谱,指出各个频率份量。

(二)、数字滤波器的设计与实现

设计和实现IIR 或FIR 数字滤波器:

要求:输入数字滤波器的滤波指标,包括通带截止频率,通带最大衰减,阻带截止频率,阻带最小衰减。设计出相应的数字滤波器。显示得到的滤波器的系数和阶数,求出系统的单位脉冲响应h(n)。并画出设计得到的滤波器的幅频特性图(要有坐标标度)和相频特性。 1.对于IIR 数字滤波器:使用双线性变换法。可选用BW 型、CB 型和椭圆型等滤波器类型来进行设计

2.对于FIR 数字滤波器:要对多种窗口(三种及以上)、不同阶数设计结果进行分析比

70()sin(2)()anT x n Ae f nT u n π-=

较。

(三)、综合应用

对于给出的任意一段语音信号,进行分析处理。

1、读出语音信号,并显示语音信号的时域波形,然后对读出的信号进行FFT变换,

得到信号的频谱特性。

2、分析其频谱特性,应用设计的滤波器将主要的频率分量分离出来。

3、回放此语音信号,感觉滤波前后的声音有什么变化

三、详细设计过程

1、新建一个空白的图形GUI界面

2、添加axes及Pop-up Menu。可以用鼠标拖拽,将其放在合适的位置。Pop-up Menu

下拉菜单可以根据任务自行设置名称。

3、在图形界面生成的源程序中编程,以实现课程设计的各项任务。源程序如下:function varargout = wo(varargin)

% WO M-file for wo.fig

% WO, by itself, creates a new WO or raises the existing

% singleton*.

%

% H = WO returns the handle to a new WO or the handle to

% the existing singleton*.

%

% WO('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in WO.M with the given input arguments.

%

% WO('Property','Value',...) creates a new WO or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before wo_OpeningFunction gets called. An

% unrecognized property name or invalid value makes pro perty application

% stop. All inputs are passed to wo_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Copyright 2002-2003 The MathWorks, Inc.

% Edit the above text to modify the response to help wo

% Last Modified by GUIDE v2.5 15-Sep-2010 08:37:54

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @wo_OpeningFcn, ...

'gui_OutputFcn', @wo_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before wo is made visible.

function wo_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to wo (see VARARGIN)

% Choose default command line output for wo

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes wo wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = wo_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

% --- Executes on selection change in popupmenu1.

function popupmenu1_Callback(hObject, eventdata, handles)

% hObject handle to popupmenu1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

n = get(handles.popupmenu1, 'Value');

switch n

case 1

n=1:50;x=zeros(1,50);x(1)=1;subplot(421);

stem(x,'.');xlabel('n');ylabel('x1(n)');

n=1:50;x=rectpuls(n-25,20);subplot(422);stem(x,'.');xlabel('n');ylabel('x2(n)');

n1=0:3;x1=n1+1; n2=4:7;x2=8-n2;n=[n1 n2]; x=[x1

x2];subplot(423);stem(x,'.');xlabel('n');ylabel('x3(n)');

n1=0:3;x1=4-n1;n2=4:7;x2=n2-3;n=[n1 n2];x=[x1

x2];subplot(424);stem(x,'.');xlabel('n');ylabel('x4(n)');

n=0:50;p=8;q=2;x=exp(-1*(n-p).^2/q);subplot(425);stem(x,'.');xlabel('n');ylabel('x5 (n)');

fs=64;N=16;n=0:2*pi*fs/N;x=sin(n*pi/4);subplot(426);stem(x,'.');xlabel('n');ylabel( 'x6(n)');

n=0:15; a=0.1; f=0.0625;

x=50*exp(-a*n).*sin(2*pi*f*n);subplot(427);stem(x,'.');xlabel('n');ylabel('x7(n)');

case 2

n1=0:3;x1=n1+1; n2=4:7;x2=8-n2;n=[n1 n2]; x=[x1 x2];

y=fft(x,8);subplot(421);stem(y,'.');xlabel('k');ylabel('x3(k)');grid;

magy=abs(y);k=0:7;w=2*pi/8*k;subplot(422);

stem(w/pi,magy,'.');xlabel('N=8');ylabel('|X3(k)|');grid;

x=[x

zeros(1,8)];y=fft(x,16);subplot(425);stem(y,'.');xlabel('k');ylabel('x3(k)');grid; magy=abs(y);k=0:15;w=2*pi/16*k;subplot(426);

stem(w/pi,magy,'.');xlabel('N=16');ylabel('|X3(k)|');grid;

n1=0:3;x1=4-n1;n2=4:7;x2=n2-3;n=[n1 n2];x=[x1 x2];

y=fft(x,8);subplot(423);stem(y,'.');xlabel('k');ylabel('x4(k)');grid;

magy=abs(y);k=0:7;w=2*pi/8*k;subplot(424);

stem(w/pi,magy,'.');xlabel('N=8');ylabel('|X4(k)|');grid;

x=[x

zeros(1,8)];y=fft(x,16);subplot(427);stem(y,'.');xlabel('k');ylabel('x4(k)');grid; magy=abs(y);k=0:15;w=2*pi/16*k;subplot(428);

stem(w/pi,magy,'.');xlabel('N=16');ylabel('|X4(k)|');grid;

case 3

figure(1);n=0:15;p=8;q=2;x=exp(-1*(n-p).^2/q);subplot(321);stem(x,'.');title('高斯,p=8,q=2');

y=fft(x);magy=abs(y);subplot(322);stem(magy,'.');title('幅频特性,p=8,q=2'); n=0:15;p=8;q=4;x=exp(-1*(n-p).^2/q);subplot(323);stem(x,'.');title('高斯,p=8,q=4');

y=fft(x);magy=abs(y);subplot(324);stem(magy,'.');title('幅频特性,p=8,q=2'); n=0:15;p=8;q=8;x=exp(-1*(n-p).^2/q);subplot(325);stem(x,'.');title('高斯,p=8,q=8');

y=fft(x);magy=abs(y);subplot(326);stem(magy,'.');title('幅频特性,p=8,q=2');

figure(2);n=0:15;p=8;q=8;x=exp(-1*(n-p).^2/q);subplot(321);stem(x,'.');title('高斯,p=8,q=8');

y=fft(x);magy=abs(y);subplot(322);stem(magy,'.');title('幅频特性,p=8,q=8'); n=0:15;p=13;q=8;x=exp(-1*(n-p).^2/q);subplot(323);stem(x,'.');title('高斯,p=13,q=8');

y=fft(x);magy=abs(y);subplot(324);stem(magy,'.');title('幅频特性,

p=13,q=8');

n=0:15;p=14;q=8;x=exp(-1*(n-p).^2/q);subplot(325);stem(x,'.');title('高斯,p=14,q=8');

y=fft(x);magy=abs(y);subplot(326);stem(magy,'.');title('幅频特性,

p=14,q=8');

case 4

fs=64;N=8;n=0:2*pi*fs/N;x=sin(n*pi/4);subplot(321);stem(x,'.');title('正弦,N=8');y=abs(fft(x,8));subplot(322);stem(y,'.');title('正弦幅频特性,N=8');

fs=64;N=16;n=0:2*pi*fs/N;x=sin(n*pi/4);subplot(323);stem(x,'.');title('正弦,N=16');y=abs(fft(x,16));subplot(324);stem(y,'.');title('正弦幅频特性,N=16');

fs=64;N=20;n=0:2*pi*fs/N;x=sin(n*pi/4);subplot(325);stem(x,'.');title('正弦,N=20');y=abs(fft(x,20));subplot(326);stem(y,'.');title('正弦幅频特性,N=20');

case 5

n=0:15; a=0.1; f=0.0625;

x=50*exp(-a*n).*sin(2*pi*f*n);subplot(221);stem(x,'.');title('fs=1000Hz');

y=abs(fft(x));subplot(222);stem(y,'.');title('fs=1000Hz,幅频特性');

n=0:15; a=1/3; f=5/24;

x=50*exp(-a*n).*sin(2*pi*f*n);subplot(223);stem(x,'.');title('fs=300Hz');

y=abs(fft(x));subplot(224);stem(y,'.');title('fs=300Hz,幅频特性');

case 6

fs=2000;N=200;n=0:N-1;t=n/fs;x=sin(pi*40*t)+sin(pi*440*t)+sin(pi*1500*t);subplot(2,

1,1);plot(x);

y=fft(x,N);mag=abs(y);f=(0:length(y)-1).*fs/length(y);subplot(212);plot(f(1:N/2),ma g(1:N/2));xlabel('f/Hz');

case 7

wp=input('Please enter wp:');

ws=input('Please enter ws:');

rp=input('Please enter rp:');

rs=input('Please enter rs:');

k=input('请选择滤波器类型 1、cb型 2、bw型 3、椭圆型:');

switch k

case 1 %cb型

[n,wn]= cheb1ord(wp,ws,rp,rs) %阶数n和截止频率wn

[B,A]=cheby1(n,rp,wn) %系统函数系数向量b和a

figure(1); freqs(B,A);[H,w] = freqz(B,A);

magH = abs(H);phaH = angle(H); num=[B];

den=[A];

figure(2);subplot(311);plot(w/pi,magH);grid

xlabel('frequency Unit:pi');ylabel('Magnitude'); title('幅频特性');

subplot(312);plot(w/pi,phaH/pi);grid

xlabel('frequency Unit:pi');ylabel('Phase Unit:pi');

title('相频特性');

subplot(313);

impulse(num,den);

title('系统的单位脉冲响应h(n)');

case 2 %bw型

[n,wn]=buttord(wp,ws,rp,rs) %阶数n和截止频率wn

[B,A]=butter(n,wn) %系统函数系数向量b和a

figure(1); freqs(B,A);[H,w] = freqz(B,A);

magH = abs(H);phaH = angle(H); num=[B];

den=[A];

figure(2);subplot(311);plot(w/pi,magH);grid

xlabel('frequency Unit:pi');ylabel('Magnitude');

title('幅频特性');

subplot(3,1,2);plot(w/pi,phaH/pi);grid

xlabel('frequency Unit:pi');ylabel('Phase Unit:pi');

title('相频特性');

subplot(313);

impulse(num,den);

title('系统的单位脉冲响应h(n)');

case 3 %椭圆型

[n,wn]=ellipord(wp,ws,rp,rs) %阶数n和截止频率wn

[B,A]=ellip(n,rp,rs,wn) %系统函数系数向量b和a

figure(1); freqs(B,A); [H,w] = freqz(B,A);

magH = abs(H);phaH = angle(H); num=[B];

den=[A];

figure(2);subplot(311);plot(w/pi,magH);grid

xlabel('frequency Unit:pi');ylabel('Magnitude');

title('幅频特性');

subplot(312);plot(w/pi,phaH/pi);grid

xlabel('frequency Unit:pi');ylabel('Phase Unit:pi'); title('相频特性');

subplot(313);

impulse(num,den);

title('系统的单位脉冲响应h(n)');

end

case 8

N=21;wc=1/4;n=0:20;

hn=fir1(N-1,wc,boxcar(N));

fh=fft(hn,1024);

fh=20*log10(abs(fh));

wk=0:1023;wk=2*wk/1024;

subplot(421);stem(n,hn);grid;

title('矩形窗设计结果:');

subplot(422);plot(wk,fh);grid;

title('矩形窗');xlabel('w/pi');

wind=hanning(N);

hn=hn.*wind';

fh=fft(hn,1024);

fh=20*log10(abs(fh));

subplot(423);stem(n,hn);grid;

title('汉宁窗设计结果:');

subplot(424);plot(wk,fh);grid;

title('汉宁窗');xlabel('w/pi');

axis([0 2 -130 0]);

wind=hamming(N);

hn=hn.*wind';

fh=fft(hn,1024);

fh=20*log10(abs(fh));

subplot(425);stem(n,hn);grid;

title('哈明窗设计结果:');

subplot(426);plot(wk,fh);grid;

title('哈明窗');xlabel('w/pi');

axis([0 2 -160 0]);

wind=blackman(N);

hn=hn.*wind';

fh=fft(hn,1024);

fh=20*log10(abs(fh));

subplot(427);stem(n,hn);grid;

title('布莱克曼窗设计结果:');

subplot(428);plot(wk,fh);grid;

title('布莱克曼窗');xlabel('w/pi');

case 9

fb=1000;fc=1200;As=100;Ap=1;fs=22050;

x2=wavread('F:\sha \we.wav ');

Ts=1/fs;R1=10;

wp=2*pi*fb/fs;

ws=2*pi*fc/fs;

wp1=2/Ts*tan(wp/2); %将模拟指标转换成数字指标

ws1=2/Ts*tan(ws/2);

[N,Wn]=buttord(wp1,ws1,Ap,R1,'s'); %选择滤波器的最小阶数

[Z,P,K]=buttap(N); %创建butterworth模拟滤波器

[Bap,Aap]=zp2tf(Z,P,K);

[b,a]=lp2lp(Bap,Aap,Wn);

[bz,az]=bilinear(b,a,fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线

figure(1)

plot(W*fs/(2*pi),abs(H));grid

xlabel('频率/Hz')

ylabel('频率响应幅度')

title('IIR低通滤波器')

f1=filter(bz,az,x2);

figure(2)

subplot(2,1,1)

plot(x2) %画出滤波前的时域图

title('IIR低通滤波器滤波前的时域波形');

subplot(2,1,2)

plot(f1); %画出滤波后的时域图

title('IIR低通滤波器滤波后的时域波形');

sound(f1,44100); %播放滤波后的信号

F0=fft(f1,1024);

f=fs*(0:511)/1024;

figure(3)

y2=fft(x2,1024);

subplot(2,1,1);

plot(f,abs(y2(1:512))); grid %画出滤波前的频谱图

title('IIR低通滤波器滤波前的频谱')

xlabel('频率/Hz');

ylabel('幅值');

subplot(2,1,2)

F1=plot(f,abs(F0(1:512))); grid %画出滤波后的频谱图

title('IIR低通滤波器滤波后的频谱')

xlabel('频率/Hz');

ylabel('幅值');

end

% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1

% --- Executes during object creation, after setting all properties.

function popupmenu1_CreateFcn(hObject, eventdata, handles)

% hObject handle to popupmenu1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% --- Executes during object creation, after setting all properties.

function axes1_CreateFcn(hObject, eventdata, handles)

% hObject handle to axes1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: place code in OpeningFcn to populate axes1

四、设计结果及分析

(一)、信号分析部分

1、单位抽样序列 ()n 、矩形序列 ()N R n 、三角波序列、反三角波序列、Gaussian 序列、正弦序列、衰减正弦序列的波形如下图所示:

00.51

n

x 1(n )

n

x 2(n )

2

46

8

024

n

x 3(n )

2

46

8

n

x 4(n )

00.5

1n

x 5(n )

n

x 6(n )

5

1015

20

-50

50

n

x 7(n )

2、对三角波序列3()x n 和反三角波序列4()x n ,作N=8点的FFT ;在3()x n 和4()x n 的尾部补零,作N=16点的FFT 。如下图所示:

2

46

8

k

x 3(k )

N=8

|X 3(k )|

5

1015

20

k

x 3(k )

N=16

|X 3(k )

|

2

46

8

k

x 4(k )

N=8

|X 4(k )|

k

x 4(k )

N=16

|X 4(k )|

由上图可知:当求N=8点的FFT 时,所得的三角波和反三角波的幅频特性相差不大,基本看不出差别。当取N=16时的幅频特性差别明显。对N=16点的幅频特性进行一个间隔一点的采样即得到N=8点的幅频特性。由所学知识可知求FFT 的公式是

--∏-=

=1

2)()]([)(N n kn

N

j

e

n x n x DFT k X (k=0,1….N-1)

其中幅度)2

sin()2sin()(w wN

w R N

=

(k N w ∏=2) N 的取值越大所得的包络越接近y 的DTFT 的幅度谱。

3、固定信号5()x n 中的参数p=8,令q 分别等于2,4,8;固定q=8,令p 分别等于8,13,14;如下图所示:

0510152000.5

1高斯,p=8,q=2

05101520

02

4幅频特性,p=8,q=2

0510152000.5

1高斯,p=8,q=405101520

02

4幅频特性,p=8,q=2

051015200

0.5

1高斯,p=8,q=805101520

5

10幅频特性,p=8,q=2

由上图可知:当固定p=8,而q 在取不同值时它们的时域和幅频度不一样。q 的值越大,时域图形的零点越少,图形越“胖”,值越分散。q 的值越大,频域图形的零点越多,但其他点的幅值相对增大,发生频谱泄露以及混叠。这是因为值越分散在经过窗函数时,N 的值就越大,泄漏也就越大。

0510152000.5

1高斯,p=8,q=8

05101520

05

10幅频特性,p=8,q=8

0510152000.5

1高斯,p=13,q=805101520

5

幅频特性,p=13,q=8

051015200

0.5

1高斯,p=14,q=805101520

02

4幅频特性,p=14,q=8

由上图可知:当固定q=8,而p 在取不同值时它们的时域和幅频度不一样。p 的值越大,时域图形右移,形状不变。p 的值越大,频域图形的频谱泄露就越明显并伴随有频谱的混叠。这是因为谱线右移,经过窗函数时N 的取值会相应增大,从而使泄露以及混叠现象越明显。

4、对于正弦序列4()x n ,取数据长度N 分别等于8,16,32,分别作N 点FFT 。如下图所示:

-10

1正弦,N=8

024正弦幅频特性,N=8

-10

1正弦,N=160

510正弦幅频特性,N=16

-1

1正弦,N=2005101520

5

10正弦幅频特性,N=20

由上图可知:当N 越大时,所求得的FFT 的幅值就越密,包络曲线就越接近原函数的包络。这是因为N 与它的周期紧密相连,序列FFT 的幅值是关于N/2对称的。

5、观察衰减正弦序列7()x n 的时域和幅频特性,绘出幅频特性曲线,改变采样频率fs,使fs=300Hz 。如下图所示:

5

1015

20

fs=1000Hz

5

10

15

20

fs=1000Hz,幅频特性

5

10

15

20

fs=300Hz

5

10

15

20

fs=300Hz ,幅频特性

采样我们知道是对信号进行时间上的量化,即采样后频谱发生变化。结合我们所学的理论的知识和上图体现出不管是序列的时域还是幅频特性它们的图形都与采样周期相关联,时域的衰减长度及快慢与采样频率联系,fs 越大其的衰减长度就越长衰减的也越慢,当fs 是300是序列衰减长度是fs=1000的300/1000倍即衰减的速度是fs=1000的300/1000倍。同时它的幅频特性也发生了变化,fs=300Hz 的一个完整的幅频长度是fs=1000Hz 的长度发的3/10倍,从上图我们可以看出在实际中我们不一定只能根据信号的宽度来选择滤波器,也可根据所得滤波器去去调整信号宽度减少信号的泄露。

6、设有一连续时间信号s(t),其由20Hz 、220Hz 和750Hz 的正弦信号叠加而成,分析确定采样频率及数据分析长度,计算并绘出信号的频谱,指出各个频率份量。如下图所示:

020406080100120140160180200

-4

-202

40100200300400

5006007008009001000

50

100

150

f/Hz

根据连续信号的叠加性质,将几个简单信号叠加即可。根据采样定理fs 要大于等于2倍的fm ,在此可以取fs=2000hz 。

7、对于IIR 数字滤波器:使用双线性变换法。可选用BW 型、CB 型和椭圆型等滤波器类型来进行设计。 CB 型

0.1

0.2

0.3

0.40.50.60.7

0.8

0.9

1

00.5

1frequency Unit:pi M a g n i t u d e

幅频特性

0.1

0.2

0.3

0.40.50.60.70.80.91

-10

1frequency Unit:pi

P h a s e U n i t :p i

相频特性

00.51 1.52 2.53

0.5

1

系统的单位脉冲响应h(n)

Time (sec)

A m p l i t u d e

10

-110

10

1

-200

-1000100

200

Frequency (rad/s)

P h a s e (d e g r e e s )

10

-1

10

10

1

10

-4.3

10

-4.2

10

-4.1

Frequency (rad/s)

M a g n i t u d e

BW 型

0.1

0.2

0.3

0.40.50.60.7

0.8

0.9

1

01

2frequency Unit:pi M a g n i t u d e

幅频特性

0.1

0.2

0.3

0.40.50.60.70.80.91

-10

1frequency Unit:pi

P h a s e U n i t :p i

相频特性

00.51 1.5

2 2.5

3 3.5

0.5

1

系统的单位脉冲响应h(n)

Time (sec)

A m p l i t u d e

10

-210-1

10

10

1

-200

-1000100

200

Frequency (rad/s)

P h a s e (d e g r e e s )

10

-2

10

-1

10

10

1

10

-6

10-5

10-4

10

-3

Frequency (rad/s)

M a g n i t u d e

椭圆型

0.1

0.2

0.3

0.40.50.60.7

0.8

0.9

1

00.5

1frequency Unit:pi M a g n i t u d e

幅频特性

0.1

0.2

0.3

0.40.50.60.70.80.91

-10

1frequency Unit:pi

P h a s e U n i t :p i

相频特性

0.51 1.5

2 2.5

3 3.5

5

系统的单位脉冲响应h(n)

Time (sec)

A m p l i t u d e

10

-110

10

1

-100

-50050

100

Frequency (rad/s)

P h a s e (d e g r e e s )

10

-1

10

10

1

10

-3

10

-2

10

-1

Frequency (rad/s)

M a g n i t u d e

由上图可知:在同等条件下(输入的wp=.2,ws=.3,rp=1,rs=34)选择不同的类型滤波器

09电信电子线路课程设计题目

电子线路课程设计题目 (模电、数电部分) 一、锯齿波发生器 二、语音放大电路 三、可编程放大器 四、数字频率计 五、可调电源 六、汽车尾灯控制电路 2011.09

一、设计一高线性度的锯齿波发生器 要求: (1)利用555定时器和结型场效应管构成的恒流源设计一高线性度的锯齿波发生器;参考电路如图所示; (2)在EWB中对该电路进行仿真; (3)焊接电路并进行调试;调试过程中思考: a、电路中两个三极管的作用是什么?其工作状态是怎么样的? b、R3阻值的大小会对锯齿波的线性度产生什么影响? c、输出锯齿波的幅值范围多大? d、调节电路中的可调电阻对波形有什么影响? e、LM324的作用是什么? (4)参考电路图中采用的是结型场效应管设计的,若采用N沟道增强型VMOS管和555定时器来设计一高线性度的锯齿波发生器,该如何设计? LM324 图2 高线性度锯齿波发生器的设计

二、语音放大电路的设计 通常语音信号非常微弱,需要经过放大、滤波、功率放大后驱动扬声器。 要求: (1)采用集成运算放大器LM324和集成功放LM386N-4设计一个语音放大电路;假设语音信号的为一正弦波信号,峰峰值为5mV,频率范围为100Hz~1KHz,电路总体原理图如下所示; 图4 语音放大电路 (2)仔细分析以上电路,弄清电路构成,指出前置放大器的增益为多少dB?通带滤波器的增益为多少dB? (3)参照以上电路,焊接电路并进行调试。 a、将输入信号的峰峰值固定在5mV,分别在频率为100Hz和1KHz的条件下测试前 置放大的输出和通带滤波器的输出电压值,计算其增益,将计算结果同上面分析 的理论值进行比较。 b、能过改变10K殴的可调电阻,得到不同的输出,在波形不失真的条件下,测试集 成功放LM386在如图接法时的增益; c、将与LM386的工作电源引脚即6引脚相连的10uF电容断开,观察对波形的影响, 其作用是什么? d、扬声器前面1000uF电容的作用是什么?

北京理工大学汇编实验报告3

北京理工大学汇编实验报告3

本科实验报告实验名称:实验三字符串操作实验 课程名称: 课程设计Ⅰ(CPU与汇编)(实 验)实验时间: 第5-10周周五 下午 任课教师:聂青实验地点:10-102 实验教师:苏京霞 实验类型:?原理验证□综合设计□自主创新 学生姓名:罗逸雨 学号/班级:1120141208 05211401 组号:3 学院:信息与电子学院同组搭档: 专业:通信工程成绩:

CX 中值减 1,当 CX 中值减至 0 时,停止重复执行,继续执行下一条指令。当REP无条件重复前缀,重复串操作直到计数寄存器的内容 CX 为0为止。经常与REP 配合工作的字符串处理指令有MOVS、STOS和LODS。 当REPE/REPZ判断计数寄存器的内容 CX 是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。 当REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。 3)字符串操作指令 lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据 DF 标志增减 SI; stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据 DF 标志增减 DI; movsb、movsw:把 DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据 DF标志分别增减SI和DI; scasb、scasw:把AL或AX 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI; cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与 ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI; rep:重复其后的串操作指令。重复前先判断 CX 是否为0,为0就结束重复,否则CX减1,重复其后的串操作指令。主要用在MOVS和STOS前。一般不用在 LODS 前。 上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器 AX、计数器CX。 涉及的标志位:DF、AF、CF、OF、PF、SF、ZF。 三、实验步骤 1) 编写程序,比较两个字符串BUF1和BUF2所含的字符是否相同,相同则AL 返回0,不同AL返回1,字符串长度要求自动获取,要求用字符串处理方法。提示:输入两个字符串之后,将串操作所必须的寄存器等参数设置好,然后使用串操作指令进行从头到尾的比较,两个字符串相等的条件是串长度相等且对应的字符相同。 2) 编写程序,设有一字符串存放在以BUF为首址的数据区中,其最后一字符‘$’作为结束标志,计算该字符串的长度并输出。提示:从串的第一个字符开始统计,直到遇到定义的字符串结束符为止,看看在这个过程中总共有多少个字符,

模拟电路课程设计心得体会

模拟电路课程设计心得 体会 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

精选范文:《模拟电路》课程设计心得体会(共2篇)本学期我们开设了《模拟电路》与《数字电路》课,这两门学科都属于电子电路范畴,与我们的专业也都有联系,且都是理论方面的指示。正所谓“纸上谈兵终觉浅,觉知此事要躬行。”学习任何知识,仅从理论上去求知,而不去实践、探索是不够的,所以在本学期暨模电、数电刚学完之际,紧接着来一次电子电路课程设计是很及时、很必要的。这样不仅能加深我们对电子电路的任职,而且还及时、真正的做到了学以致用。这两周的课程设计,先不说其他,就天气而言,确实很艰苦。受副热带高气压影响,江南大部这两周都被高温笼罩着。人在高温下的反应是很迟钝的,简言之,就是很难静坐下来动脑子做事。天气本身炎热,加之机房里又没有电扇、空调,故在上机仿真时,真是艰熬,坐下来才一会会,就全身湿透,但是炎炎烈日挡不住我们求知、探索的欲望。通过我们不懈的努力与切实追求,终于做完了课程设计。在这次课程设计过程中,我也遇到了很多问题。比如在三角波、方波转换成正弦波时,我就弄了很长时间,先是远离不清晰,这直接导致了我无法很顺利地连接电路,然后翻阅了大量书籍,查资料,终于在书中查到了有关章节,并参考,并设计出了三角波、方波转换成正弦波的电路图。但在设计数字频率计时就不是那么一帆风顺了。我同样是查阅资料,虽找到了原理框图,但电路图却始终设计不出来,最后实在没办法,只能用数字是中来代替。在此,我深表遗憾!这次课程设计让我学到了很多,不仅是巩固了先前学的模电、数电的理论知识,而且也培养了我的动手能力,更令我的创造性思维得到拓展。希望今后类似这样课程设计、类似这样的锻炼机会能更多些!

逆波兰表达式求值(实验报告及C 源码)

逆波兰表达式求值 一、需求分析 1、从键盘中输入一个后缀表达式,该表示包括加减乘除等操作符,以及正整数作为操 作数等。 2、用堆栈来实现 3、测试数据 输入:2 3 * 1 – # 输出:2 3 * 1 -- =5 二、概要设计 抽象数据类型 需要一个浮点数栈来存储还没有计算的浮点数或者运算的结果。 ADT Stack 数据成员:int size; int top; //分别用于存储栈大小、栈顶位置 float *listArray;//存储浮点型数字的数组 成员函数: bool push(float it); bool pop(float& it); bool isEmpty(); //判断栈为空 bool isOne();//判断栈是否只有一个元素 算法的基本思想 1.逐一扫描字符串,用ascii码进行判断,如果该字符是数字,则利用x=x*10+str[i]-48 将数据由字符类型转换为浮点型数据; 2.如果字符是‘.’,则将‘.’转化为小数点,并将‘.’后的数据转化为小数部分; 3.遇到空格前是数据的,将x押入栈; 4.如果该字符是’+’,’-’,’*’或’/’,判断栈里的元素是否少于两个个,如果少于两个, 报错;如果大于等于两个,就弹出两个数据,并进行相应的计算; 程序的流程 输入字符串,程序对字符串依次扫描。扫描一位,处理一位。扫描完成后,判断栈里是不是只有一个数据,若是,得到正确结果;若不是,则表达式出错。 三、详细设计 物理数据类型 用浮点数类型的栈存储运算中要用的数据,需要入栈、出栈,故设计如下的浮点类型的栈: class Stack { private: int size; int top; float *listArray; public: Stack(int sz=20); ~Stack();

南京理工大学电子线路课程设计(优秀)

南京理工大学 电子线路课程设计 实验报告

摘要 本次实验利用QuartusII7.0软件并采用DDS技术、FPGA芯片和D/A转换器,设计了一个直接数字频率信号合成器,具有频率控制、相位控制、测频、显示多种波形等功能。 并利用QuartusII7.0软件对电路进行了详细的仿真,同时通过SMART SOPC实验箱和示波器对电路的实验结果进行验证。 报告分析了整个电路的工作原理,还分别说明了设计各子模块的方案和编辑、以及仿真的过程。并且介绍了如何将各子模块联系起来,合并为总电路。最后对实验过程中产生的问题提出自己的解决方法。并叙述了本次实验的实验感受与收获。 关键词数字频率信号合成器频率控制相位控制测频示波器 Abstract This experient introduces using QuartusII7.0software, DDS technology,FPGA chip and D/A converter to design a multi—output waveform signal generator in which the frequency and phase are controllable and test frequency,display waveform. It also make the use of software QuartusII7.0 a detailed circuit simulation, and verify the circuit experimental results through SMART SOPC experiment box and the oscilloscope. The report analyzes the electric circuit principle of work,and also illustrates the design of each module and editing, simulation, and the process of using the waveform to testing each Sub module. Meanwhile,it describes how the modules together, combined for a total circuit. Finally the experimental problems arising in the process of present their solutions. And describes the experience and result of this experiment. Keywords multi—output waveform signal- generator frequency controllable phase controllable test frequency oscilloscope 目录

汇编课程设计报告

四川大学计算机学院 学生实验报告 实验名称:汇编课程设计报告 指导教师:唐宁九 姓名:廖偲 学号:0943111209 班级:软件09级一班 日期:20101114

实验报告 班级______________姓名_______________学号_________ 一、实验一:DEBUG基本命令与数据传输指令 二、实验的目的和要求: ? 1.熟练掌握DEBUG的基本调试命令,能够使用DEBUG编写、调试汇编语言程序片段。 ? 2.在理解数据传输指令的基础上按照实验内容中指定的程序片段对程序进行调试和记录; 三、实验的环境: 1.硬件环境:cpu 2.26gHZ、内存2G、显存1G、64位总线笔记本电脑 2.软件环境:win7 32位操作系统、8086/8088指令集系统(在windows系统中)、masm的汇编工具。 四、源程序清单: ?MOV AL, 01H ?MOV SI, 0002H ?LEA SI, [SI] ?MOV BYTE PTR [SI], 80H ?LAHF ?XCHG AL, AH ?SAHF ?XCHG AH, [SI] ?SAHF 五、操作内容: 1.从cmd在debug下进入用A命令进行汇编 格式: A [地址] 功能:从键盘输入汇编程序, 并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。如果不指定汇编地址, 则以CS:IP为地址 2. 反汇编命令U使用 格式: U [地址]/[地址范围] 功能: 将指定地址范围内的机器代码翻译成汇编源程序指令显示出来, 并同时显示地址及代码。 注意: 反汇编时一定确认指令的起始地址, 否则得不到正确的结果。 3.寄存器查看/编辑命令r或r寄存器名称 功能: 显示当前所有寄存器内容, 状态标志及将要执行的下一条指令的地址、代码和汇编指令形式。

电子线路CAD课程设计汇本报告

目录 第一章绪论 (2) 1.1设计目的及要求 (2) 1.2 设计流程 (2) 第二章原理分析 (3) 2.1 最小系统的结构 (3) 2.2 各电路的原理分析 (3) 第三章原理图绘制 (8) 3.1 原理图设计的一般步骤 (8) 3.2 元件库的设计 (8) 第四章PCB图的绘制 (12) 4.1 创建该项目下的PCB文件 (12) 4.2 绘制PCB (12) 总结 (15) 参考文献 (16) 附录 (17)

第一章绪论 1.1 设计目的及要求 电子线路CAD是以电为主的机电一体化工科专业的专业基础课,作为通信工程专业,要通过学习一种典型电子线路CAD软件altium designer,掌握计算机绘制包括电路(原理)图、印刷电路板图在的电气图制图技能和相应的计算机仿真技能。通过本次设计,达到了解DXP软件的运用,认识51单片机的最小系统的构成以及学会改正制图过程中遇到的问题。 根据课程设计的题目,独立设计、绘制和仿真电路,实现51单片机的最最小系统。要求如下: (1)设计出原理图自己绘制51单片机最小系统的电路图,分析电路图中各小电路的工作原理; (2)用DXP软件画出原理图; (3)用DXP软件仿真出PCB板,熟悉电路板的加工工艺; 1.2 设计流程 本次设计主要是熟练运用DXP作出最小单片机系统的电路图,以下通过介绍最小系统的各部分电路的电路图及原理,通过在DXP上绘制原理图,检查并

修改错误,最后生成完整PCB板。

第二章原理分析 2.1 最小系统的结构 单片机单片微控制器,是在一块芯片中集成了CPU(中央处理器)、RAM (数据存储器)、ROM(程序存储器)、定时器/计数器和多种功能的I/O(输入和输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。 单片机最小系统电路主要集合了串口电路、USB接口电路、蜂鸣器与继电器电路、AD&DA转换电路、数码管电路、复位电路、晶振电路和4*4矩阵键盘等电路。如下介绍几种简单的电路设计。 下图是本次设计的的几个有关电路图总体框图:

数据结构实验报告 逆波兰表达式

HUNAN UNIVERSITY 课程实习报告 题目逆波兰表达式求值 学生姓名XX 学生学号 专业班级 指导老师 完成日期

一、需求分析 1.本程序要求对用户输入一个后缀表达式,打印输出其结果。 2.后缀表达式有用户通过键盘输入,其中两相邻操作数之间利用空格隔开,以“#”表达结束。如果该后缀表达式正确,那么在字符界面上输出其结果,计算结果小数点后面保留两位有效数字,如果不正确,请在字符界面上输出表达式错误提示。 3.测试数据 输入 2 3*1-# 输出 5 二、概要设计 1.抽象数据类型 为实现上述程序的功能,应以一个字符数组存储用户的输入,运算中运用到整数及浮点数。 2.算法的基本思想 根据题目要求,计算后缀表达式,需要用到堆栈来实现。算法如下: 1)假设此表达式正确从字符串第一个开始扫描,遇到运算数就先转化成为数值然后压入堆栈中, 2)如遇到运算符则弹出堆栈上面的两个元素,并进行对应的运算,将得到的值压入栈中,循环计算,然后往堆栈中压入结果,直到最后一个字符为止。 3)若表达式错误:返回错误提示。 ADT: Stack{ 操作对象:字符,整数,浮点数 基本操作: Stack(int size);//构造大小为size的栈 ~Stack();//释放内存空间 void push(const float& n);//数据进栈 float pop();//数据出栈 int length();//计算栈内元素个数 } 3.程序的流程 程序由三个模块组成: 1)输入模块:输入一个表达式的字符串。 2)计算模块:设计一个计算后缀表达式的函数。 3)输出模块:输出显示计算的结果。 三、详细设计 1.算法的具体设计 算法流程图如下:

电子线路课程设计am调幅发射机设计报告

电子线路课程设计 总结报告 学生姓名: 可行性,选择适合设计方案,并对设计方案进行必要的论证。本课题以小功率调幅发射机为设计对象,并对其主振级、低频电压放大级、调制级、高频功率放大级进行了详细的设计、论证、调试及仿真,并进行了整机的调试与仿真。设计具体包括以下几个步骤:一般性理论设计、具体电路的选择、根据指标选定合适器件并计算详细的器件参数、用multisim进行设计的仿真、根据仿真结果检验设计指标并进行调整。最后对整个设计出现的问题,和心得体会进行总结。 关键词调幅发射机;振荡器;multisim仿真设计

一、设计内容及要求 (一)设计内容:小功率调幅AM发射机设计 1.确定小功率调幅发射机的设计方案,根据设计指标对既定方案进行理论设计分析, 并给出各单元电路的理论设计方法和实用电路设计细节,其中包括元器件的具体选择、参数调整。 根据设计要求,要求工作频率为10MHz,输出功率为1W,单音调幅系数 m。由于载波频率为10Mhz,大多数振荡器皆可满足,提供了较多的选择且不需要 8.0 = a 倍频。由于输出功率小,因此总体电路具有结构简单,体积较小的特点。其总体电路结构 可分为主振荡电路(载波振荡电路)、缓冲隔离电路、音频放大电路、振幅调制电路、功

(二)单元电路方案论证 1.主振荡电路 主振荡电路是调幅发射机的核心部件,载波的频率稳定度和波形的稳定度直接影响到发射信号的质量,因此,主振荡电路产生的载波信号必须有较高的频率稳定度和较小的波形失真度,主振荡电路可以有四种设计方案:RC正弦波振荡电路、石英晶体振荡电路、三点振荡电路、改进三点式(克拉泼)振荡电路。 2.振幅调制电路 振幅调制电路是小信号调幅发射机的核心组成部分,该单元实现将音频信号加载到载波上以调幅波形式发送出去,振幅调制电路要能保证输出的信号为载波信号的振幅随调制信号线性变化。

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 软件工具:Turbo C , Debug, MASM 实验内容 《 将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。 实验步骤 1.要完成这个实验,首先我们需要编写三个子程序。第一个子程序是可以显示字符串到屏 幕的程序,其汇编代码如下: ;名称:show_str

;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串 ;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址 ;返回:显示在屏幕上 ¥ show_str: push ax push cx push dx push es push si push di mov ax,0b800h - mov es,ax mov al,160 mul dh add dl,dl mov dh,0 add ax,dx mov di,ax mov ah,cl . show_str_x: mov cl,ds:[si] mov ch,0 jcxz show_str_f mov al,cl mov es:[di],ax inc si inc di 【 inc di jmp show_str_x show_str_f: pop di pop si pop es pop dx pop cx } pop ax ret 2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出

电子线路课程设计报告

石英晶体好坏检测电路设计 设计要求 1. 利用高频电子线路及其先修课程模拟电路的知识设计一个电子线路2.利用该电子线路的要求是要求能够检测石英晶体的好坏 3. 要求设计的该电子线路能够进行仿真 4. 从仿真的结果能够直接判断出该石英晶体的好坏 5. 能够理解该电子线路检测的原理 6. 能够了解该电子线路的应用 成果简介设计的该电子线路能够检测不同频率石英晶体的好坏。当有该石英晶体(又称晶振)的时候,在输出端接上一个示波器能够有正弦波形输出,而当没有 该晶振的时候,输出的是直流,波形是一条直线。所以利用该电路可以在使 用晶振之前对其进行检测。 报告正文 (1)引言: 在高频电子线路中,石英晶体谐振器(也称石英振子)是一个重要的高频部件,它广泛应用于频率稳定性高的振荡器中,也用作高性能的窄带滤波 器和鉴频器。其中石英晶体振荡器就是利用石英晶体谐振器作滤波元件构成 的振荡器,其振荡频率由石英晶体谐振器决定。与LC谐振回路相比,石英晶 体谐振器有很高的标准性,采用品质因数,因此石英晶体振荡器具有较高的 频率稳定度,采用高精度和稳频措施后,石英晶体振荡器可以达到很高的频 率稳定度。正是因为石英晶体谐振器的这一广泛的应用和重要性,所以在选 择石英晶体谐振器的时候,应该选择质量好的。在选择的时候要对该晶振检 测才能够知道它的好坏,所以要设计一个检测石英晶体好坏的电路。 (2)设计内容: 设计该电路的原理如下:

如下图所示,BX为待测石英晶体(又名晶振),插入插座X1、X2,按下按钮SB,如果BX是好的,则由三极管VT1、电容器C1、C2等构成的振荡器工作,振荡信号从VT1发射极输出,经C3耦合到VD2进行检波、C4滤波,变成直流信号电压,送至VT2基极,使VT2导通,发光二极管H发光,指示被测石英晶体是好的。若H不亮,则表明石英晶体是坏的。适当改变C1、C2的容值,即可用于测试不同频率的石英晶体。 图一石英晶体好坏检测电路检测原理图 在上面的电路中,晶振等效于电感的功能,与C1和C2构成电容三点式振荡电路,振荡频率主要由C1、C2和C3以及晶振构成的回路决定。即由晶振电 抗X e 与外部电容相等的条件决定,设外部电容为C L ,则=0,其中C l 是C1、 C2和C3的串联值。 (3)电路调试过程: 首先是电路的仿真过程,该电路的仿真是在EWB软件下进行的,下面是将原图画到该软件后的截图:

(编译原理)逆波兰式算法的源代码

一.实验目的 1.深入理解算符优先分析法 2.掌握FirstVt和LastVt集合的求法有算符优先关系表的求法 3.掌握利用算符优先分析法完成中缀表达式到逆波兰式的转化 二.实验内容及要求 将非后缀式用来表示的算术表达式转换为用逆波兰式来表示的算术表达式,并计算用逆波兰式来表示的算术表达式的值。 程序输入/输出示例: 输出的格式如下: (1) (2)输入一以#结束的中缀表达式(包括+—*/()数字#) (3) (4)逆波兰式 备注:(1)在生成的逆波兰式中如果两个数相连则用&分隔,如28和68,中间用&分隔; 注意:1.表达式中允许使用运算符(+-*/)、分割符(括号)、数字,结束符#; 2.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好); 3.对学有余力的同学,测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照; 三.实验过程 1、逆波兰式定义 将运算对象写在前面,而把运算符号写在后面。用这种表示法表示的表达式也称做后缀式。逆波兰式的特点在于运算对象顺序不变,运算符号位置反映运算顺序。采用逆波兰式可以很好的表示简单算术表达式,其优点在于易于计算机处理表达式。 2、产生逆波兰式的前提 中缀算术表达式 3、逆波兰式生成的实验设计思想及算法

(1)首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。 (2)读入一个用中缀表示的简单算术表达式,为方便起见,设该简单算术表达式的右端多加上了优先级最低的特殊符号“#”。 (3)从左至右扫描该算术表达式,从第一个字符开始判断,如果该字符是数字,则分析到该数字串的结束并将该数字串直接输出。 (4)如果不是数字,该字符则是运算符,此时需比较优先关系。 做法如下:将该字符与运算符栈顶的运算符的优先关系相比较。如果,该字符优先关系高于此运算符栈顶的运算符,则将该运算符入栈。倘若不是的话,则将此运算符栈顶的运算

计算机组成原理与大全实验报告

计算机组成原理与汇编课程设计 实验报告 字符统计.asm 2.斐波那契数(小于50).asm (29) 一、课程设计目标 通过课程设计使学生综合运用所学过的计算机原理与汇编知识,增强解决实际问题的能力,加深对所学知识的理解与掌握,提高软硬件开发水平,为今后打下基础。

课程设计的目的和要求: 1、使学生巩固和加强《计算机原理与汇编语言》课程的基本理论知识。 2、使学生掌握汇编语言程序设计的方法及编程技巧,正确编写程序。 3、使学生养成良好的编程习惯并掌握调试程序的基本方法。 4、使学生养成规范书写报告文档的能力,撰写课程设计总结报告。 5、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。 1 2 3 4 1 2 3 00001001 00100000 00001011 00110000 00001011

01000000 00000000 00000001 本实验设计机器指令程序如下: 4)这里做的是个加法运算,第一个加数已经存入到内存的0000 1010单元中, 第二个加数是需要手工输入的。在实验运行面板中点击“运行”按钮,选择 “输入”芯片,设置输入的数据后,双击连接“输入”芯片的单脉冲,这样 第二个加数就设置好了。 5)在实验运行面板中双击连续脉冲,模型机便开始工作,观察各个芯片的状态。 或者在模型机调试窗口中(如图2所示)点击“指令执行”选项卡,在模型 机调试窗口中点击“下一时钟”,模型机机执行到下一个时钟,点击“下一

微指令”,模型机机执行到下一个微指令,点击“下一指令”,模型机机执行到下一条指令。观察各个芯片的状态,思考模型机的运行原理。 四、课程设计的要求 1、根据题目内容,查阅资料。 2、编写课程设计预习报告。 3、编制程序及调试程序。 4、分析总结,写出课程设计报告,报告中应该包含程序功能与使用说明、程序功能 实现方法说明、如流程图与算法参数说明等内容,设计经验体会总结,源程序清 5 6 1 通 三、实验设计内容 读取文件代码段: MOV AX,DATAS MOV DS,AX ;置数据段寄存器 ; MOV DX,OFFSET FNAME MOV AX,3D00H ;读打开指定文件

《低频电子线路》课程设计 )

辽宁师范大学《低频电子线路》课程设计 (2009级本科) 题目:红外控制9 学院:物理与电子技术学院 专业:电子信息工程 班级: 班级学号: 姓名: 指导教师: 完成日期:2011 年 6月23日 模拟电子技术课程设计:红外控制九 一内容摘要 红外控制9——红外遥控发射接收系统。该系统主要通过三极管NPN、集成块CD4011以及若干元器件组成红外发射装置产生38—40KHZ频率的信号,由光电二极管接收并通过NE555振荡电路,经过电解电容和二极管作用使小灯发光以达到设计目的。 二关键词 一般PCB基本设计流程如下:前期准备->PCB结构设计->PCB布局->布线->布线优化和丝印->网络和DRC检查和结构检查->制版。 第一:前期准备。这包括准备元件库和原理图。“工欲善其事,必先利其器”,

要做出一块好的板子,除了要设计好原理之外,还要画得好。在进行PCB设计之前,首先要准备好原理图SCH的元件库和PCB的元件库。元件库可以用peotel自带的库,但一般情况下很难找到合适的,最好是自己根据所选器件的标准尺寸资料自己做元件库。原则上先做PCB的元件库,再做SCH的元件库。PCB的元件库要求较高,它直接影响板子的安装;SCH的元件库要求相对比较松,只要注意定义好管脚属性和与PCB元件的对应关系就行。PS:注意标准库中的隐藏管脚。之后就是原理图的设计,做好后就准备开始做PCB设计了。 第二:PCB结构设计。这一步根据已经确定的电路板尺寸和各项机械定位,在PCB设计环境下绘制PCB板面,并按定位要求放置所需的接插件、按键/开关、螺丝孔、装配孔等等。并充分考虑和确定布线区域和非布线区域(如螺丝孔周围多大范围属于非布线区域)。 第三:PCB布局。布局说白了就是在板子上放器件。这时如果前面讲到的准备工作都做好的话,就可以在原理图上生成网络表(Design->CreateNetlist),之后在PCB图上导入网络表(Design->LoadNets)。就看见器件哗啦啦的全堆上去了,各管脚之间还有飞线提示连接。然后就可以对器件布局了。一般布局按如下原则进行: ①.按电气性能合理分区,一般分为:数字电路区(即怕干扰、又产生干扰)、模拟电路区 (怕干扰)、功率驱动区(干扰源); ②.完成同一功能的电路,应尽量靠近放置,并调整各元器件以保证连线最为简洁;同时,调整各功能块间的相对位置使功能块间的连线最简洁; ③.对于质量大的元器件应考虑安装位置和安装强度;发热元件应与温度敏

中缀表达式转逆波兰式并求值

中缀表达式转逆波兰式并求值 // 标题: 栈的应用——中缀表达式转逆波兰式 // 时间: 2015年4月14日// 所有者: Vae #include #include #include #include #include #define STACK_INIT_SIZE 100 #define STACKCREATE 10 #define OK 1 #define ERROR 0 typedef struct double_stack { int *num; int *index; }DOUBLESTACK; typedef struct SqStack { DOUBLESTACK top; DOUBLESTACK base; int stacksize; }SqStack; // 函数名: InitStack // 形参类型: SqStack * // 函数功能构造一个栈void InitStack(SqStack *S) { S->base.index = (int *)malloc(sizeof(int)*STACK_INIT_SIZE);

S->base.num = (int *)malloc(sizeof(int)*STACK_INIT_SIZE); if (!(S->base.num && S->base.index)) { printf("构造栈失败!\n"); exit(-1); } S->top.num = S->base.num; S->top.index = S->base.index; S->stacksize = STACK_INIT_SIZE; return ; } // 函数名: Push // 形参类型: SqStack *, int, int // 函数功能插入e为新的栈顶元素int Push(SqStack *S, int m, int n) { if ((S->top.num - S->base.num) >= S->stacksize) { S->base.index = (int *)realloc(S- >base.index,sizeof(int)*(STACK_INIT_SIZE+STACKCREATE)); S->base.num = (int *)realloc(S- >base.num,sizeof(int)*(STACK_INIT_SIZE+STACKCREATE)); if (!(S->base.num || S->base.index))

电子线路课程设计

电子线路课程设计总结报告 学生姓名: 学号: 专业:电子信息工程 班级:电子112班 报告成绩: 评阅时间: 教师签字: 河北工业大学信息学院 2014年2月

课题名称:小功率调幅AM发射机设计 内容摘要:小功率调幅发射机调幅简便,调制所占的频带窄,并且与之对应的调幅接收设备简单常用于通信系统和其它无线电系统中,特别是在中短波广播通信的领域里更是得到了广泛应用。本课程设计的目的即设计一个小功率调幅发射机并使之满足相应的技术指标。让学生综合运用高频电子线路知识,进行实际高频系统的设计、安装和调测,利用相关软件进行电路设计,提高综合应用知识的能力、分析解决问题的能力和电子技术实践技能,让学生了解高频电子通信技术在工业生产领域的应用现状和发展趋势。为今后从事电子技术领域的工程设计打好基础。通过设计主振器,缓冲器,音频放大器,调幅电路最终组成小功率调幅发射机。主振器是用来产生频率稳定的高频载波信号。高频放大器是将高频振荡载波信号放大到足够大得强度。高频功率放大器及调制器是将低频放大器输出的信号调制到载波上,同时完成末级功放。 一、设计内容及要求 1、内容:设计一个小功率调幅AM发射机 2、要求: 发射机工作频率f0=10MHz;发射功率Po大于等于200mW;负载电阻Ra=50Ω;输出信号带宽9kHz平均调幅系数ma大于等于30%,单音调幅系数ma=0.8;发射效率η大于等于50%;残波辐射小于等于40dB; 二、方案选择及系统框图 1、方案选择 低频小功率调幅发射机是将待传送的音频信号通过一定的方式调制到高频载波信号上,放大到额定的功率,然后利用天线以电磁波的方式发射出去,覆盖一定的范围。可选用最基本的发射机结构,系统框图如下图所示,由主振级、高频放大器、音频放大器、高电平调幅电路、缓冲电路结构组成。 (1)主振器 主振器就是高频振荡器,根据载波频率的高低、频率稳定度来确定电路型式。电容三点式振荡器的输出波形比电感三点式振荡器的输出波形好。这是因为电容三点式振荡器中,反馈是由电容产生的,高次谐波在电容上产生的反馈压降较小,输出中高频谐波小;而在电感三点式振荡器中,反馈是由电感产生的,高次谐波在电感上产生的反馈压降较大。另外,电容三点式振荡器最高工作频率一般比电感三点式振荡器的高。 主要原因是在电感三点式振荡器中,晶体管的极间电容与回路电感相并联,在频率高时可能改变电抗的性质;在电容三点式振荡器中,极间电容与电容并联,频率变化不改变电抗的性质。因此振荡器的电路型式一般采用电容三点式。在频率稳定度要求不高的情况下,可以采用普通三点式电路、克拉泼电路、西勒电路。频率稳定度要求高的情况下,可以采用晶体振荡器,也可以采用单片集成振荡电路。本电路采用克拉拨振荡器;

汇编器实验报告doc

汇编器实验报告 篇一:汇编实验报告 实验一(1)熟悉汇编语言程序调试环境及顺序程序设计 一、实验目的及要求: 1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。 2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。 3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 二、熟悉汇编语言程序调试环境 1.汇编语言源程序的建立 本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。设定源程序的文件名为ABC。 DATA SEGMENT BUFDB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH CN EQU $-BUF DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: PUSH DS

XOR AX,AX PUSH AX MOVAX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,CN DEC CX MOV AL,[BX] INC BX LP:CMP AL,[BX] JBE NEXT MOV AL,[BX] NEXT: INC BX DEC CX JNZ LP MOV AH,4CH INT 21H CODE ENDS END START 键入以下命令: C:\>EDIT ABC.ASM 此时屏幕的显示状态如图1所示。

1 图1 用EDIT编辑ABC.ASM程序窗口 程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。 2.将源程序文件汇编成目标程序文件 一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。 (2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。 (3)若程序中使用了宏指令,则汇编程序将展开宏指令。 源程序建立以后,在DOS状态下,采用宏汇编程序MASM 对源程序文件进行汇编,其操作过程如图2所示。 图2 MASM宏汇编程序工作窗口 汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。 3.用连接程序生成可执行程序文件

逆波兰表达式实验报告

HUNAN UNIVERSITY 课程实习报告 题目长浮点型逆波兰表达式求值 学生姓名毛宇锋吴淑珍王小玉 学生学号16 20 22 专业班级信息安全一班 指导老师夏艳刘炜 完成日期2014.4.8

一、需求分析 读入一个后缀表达式,利用堆栈来计算该表达式的值,同时要效验后缀表达式是否正确。 二、概要设计 抽象数据类型 为实现上述程序的功能,应以数据元素为长浮点型的栈来存储用户的输入,以及计算出的结果。 算法的基本思想 由于读入屏幕的字符,所以第一步是区分字符代表数值还是运算符,此外,还应该对字符是否为小数点做一个特别的判断。当确定系统读入的是数值时,应以double型将数值压入栈中,当确定读入的是运算符时,首先判断当前栈中的数值是否够运算(即至少有两个元素在栈中),满足该条件后分别弹出栈顶的两个元素,然后对其进行系统要求的运算,重新压入栈中。 程序的流程 程序由三个模块组成: (1)输入模块:循环输入字符,当遇到#号时结束 (2)计算模块:将输入的字符转化为相应的长浮点型数字并输出 (3)输出模块:显示最终计算结果 三、详细设计 物理数据类型 设计的关键在于读取字符型并转化为长浮点型 算法的具体步骤 循环输入字符串 1.判断当前的输入是否为数字,当结果为真时,执行字符串转换为长浮点型数的函数; 2.判断是否为操作符,并给定每一个操作符返回相应的计算结果。 算法的时空分析 由于在循环内的操作都为时间复杂度为θ(1)的,故算法的时间复杂度取决于输入字符的多少,令输入的字符为n时,算法的时间复杂度应该为θ(n)。 空间复杂度:给定栈的大小为10,即允许最多压入十个元素而不进行任何运算,由于逆波兰表达式通常最多输入两个元素即进行一次运算,所以栈的大小至少为2,这里给定10在空间的开销也很小。 输入和输出的格式 输入:在字符界面上输入一个后缀表达式,其中两相邻操作数之间利用空格隔开。以“#”表示结束。 输出:如果该后缀表达式正确,那么在字符界面上输出其结果,计算结果小数点后面保留两位有效数字,如果不正确,请在字符界面上输出表达式错误提示。 五、测试结果 为了验证测试具有普遍性,分别用个位整数、个位小数、多位整数、多位小数进行运算,如输入:4 0.2 + 10 * 3.6 – 3 / 即计算((4+0.2)*10-3.6)/3 结果应该等于12.8 下图为程序运行结果:

《汇编语言+微型计算机》课程设计实验报告

长江大学工程技术学院《汇编+微机》课程设计报告 ?? 数据采集系统的设计与调试 学生姓名:袁春云学号:200960720?序号:25 专业班级:计本60901 指导老师:李华贵许建国 报告日期: 2011 年9月10日 ???

一.课程设计题目:数据采集系统的设计与测试 利用《汇编语言+微型计算机》课程中所学的可编程接口芯片8253、8255A、ADC0809和微机内部的中断控制器8259A设计一个数据采集系统,并且编程与调试。 二.设计目的 1.通过本设计,使学生综合运用《微型计算机技术》、《汇编语言程序设计》以及电子技术等课程的内容,为以后从事计算机检测与控制奠定一定的基础。 2.主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编程器件的使用,掌握译码器74LS138的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。 三.课程设计要求 1.功能要求 ①利用《汇编语言+微型计算机系统》课程中所学的可编程接口芯片8253、8255A、ADC0809和微机内部的中断控制器8259A(从保留的IRQ2或TRQ10端引入)设计一个数据采集系统、并且编程与调试。 ②用8253定时器定时10MS,每次定时10MS后启动一次模/数转换,要求对所接通道变化的模拟电压值进行采集。 ③每次模/数转换结束后,产生一次中断,在中断服务程序中,采集来的数字量被读入微处理器的累加器AL中,然后通过8255A输出到8个LED发光二极管显示。 2.设计所需器材与工具 ④微机原理与接口综合仿真实验平台。 ⑤可编程接口芯片8253、8255A、ADC0809和译码器芯片74LS138、74LS 245等。 ⑥可调电位器4.7KΩ一个。 ⑦其他逻辑器件、导线若干。 ⑧万用表、常用工具等。 四.设计思路 1. 4.7Ω电位器一端接+5V,一端接地,调节电位器得到变化的模拟电压,

相关主题
文本预览
相关文档 最新文档