实验1(显示程序实验)

实验1(显示程序实验)
实验1(显示程序实验)

实验1:显示程序实验

一、实验目的

1、掌握在PC 机上以16进制数据形式显示数据的方法。

2、掌握部分DOS功能调用的使用方法。

3、熟悉TDDEBUG集成软件的使用。

二、实验原理分析

一般来说,从键盘上输入的数都是以ASCII码的形式存放在内存中。另外,数据区中以字符形式定义的数(用单引号括起来的数),在内存中也是以其对应的ASCII码存放的。

1、数据显示

输入到内存的数据或字符是以ASCII码形式保存,若再显示在屏幕上,则还原成源数据或字符。

例如:数字“7”,存放在内存中是“37H”(即:7的16进制ASCII码),直接显示在屏幕上时也是数字“7”(一般通过DOS功能调用)。

数字型数据“0~9”转换成ASCII码后,对应的16进制值分别为“30H~39H”。

字符型数据“A~Z”转换成ASCII码后,对应的16进制值分别为“41H~5AH”;字符型数据“a~z”转换成ASCII码后,对应的16进制值分别为“61H~7AH”。

从转换后的16进制ASCII码值来分析,16进制值的“0~9”可以视为对应的ASCII码值“30H~39H”减去30H后得到;16进制值的“A~F”可以视为对应的ASCII码值“41H~46H”37H(减去30H、再减去7H)后得到。即:

0H=30H﹣30H AH=41H﹣37H

1H=31H﹣30H BH=42H﹣37H

2H=32H﹣30H CH=43H﹣37H

DH=44H﹣37H

EH=45H﹣37H

FH=46H﹣37H

8H=38H﹣30H

9H=39H﹣30H

换句话说:如果内存中存放的是任一ASCII码值,则显示在屏幕后就是其对应的字符值。

2、关于DOS功能调用

微机系统中的系统软件为用户提供了多种功能调用服务,即用户在进行汇编程序设计时,无需再对这些功能进行汇编编程设计,而直接在自己的用户程序中来调用这些功能程序。

一般有二种功能调用,(1)DOS功能调用,也称高级调用;(2)BIOS功能调用,也称低级调用。用户程序在调用这些功能服务程序时,使用软中断指令:“INT n”。

所有DOS系统功能调用使用软中断指令“INT 21H”来实现,即:

MOV AH [ ] ;[ ]为功能号

INT 21H

(1)键盘输入

从键盘上输入的所有内容都作为ASCII字符对待(控制键除外)。

①进行单字符输入时,使用1、7和8功能号。其中7、8号无回显功能;1号有回显功能(即键盘输入的内容同时也显示在屏幕上)。

MOV AH,1

INT 21H

②进行字符串输入时,使用0AH功能号。

MOV AH,0A

INT 21H

(2)显示器输出

要将一个字符串送到显示器显示,可调用DOS功能的2、6、9号功能实现。其中,功能2、6用于显示单个字符,功能9显示一个字符串。

例如:MOV DL,<要显示的字符> ;要显示的字符必须放在DL中

MOV AH,2 ;功能号送AH

INT 21 ;执行系统功能调用

(3)返回到DOS

程序执行完后将控制权交给DOS系统,称为返回DOS。使用如下程序段:

MOV AH,4CH ;功能号送AH

INT 21H ;返回DOS

三、实验内容说明

一般来说,很多程序需要显示运行状态和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求编写程序,其功能是将指定数据区的数据以十六进制形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。

实验中的数据主要是指字符型的数据(如“A、B、…Z”或“a、b、…z”)和数值型的数据(如“0、1、…9”)等。

这些数据可以通过键盘输入,也可以在数据区中定义,但在内存中均以对应的ASCII 码存放,送到屏幕显示后就还原为原数据字符。

例如:“7”存入内存后为“37H”,送屏幕显示时还原为“7”;

“A”存入内存后为“41H”,送屏幕显示时还原为“A”;

“a b…”存入内存后为“61H、62H…”,送屏幕显示时还原为“a b…”。

1、实验分析提示:

本实验要求数据存入内存后在送屏幕显示时,显示其对应的16进制的ASCII码值。

即,数据“7”存入内存后,送屏幕显示时应显示“37”;

数据“A”存入内存后,送屏幕显示时应显示“41”;

数据“ab…”存入内存后,送屏幕显示时应显示“6162…”。

数据写入内存后,其ASCII码值为8位二进制值(也可以2位16进制值表示),可以分为高4位和低4位二个部分。通过编写程序,如果能实现在屏幕上先显示数据的ASCII 码高4位的16进制值,再显示数据的ASCII码低4位的16进制值,就能达到实验的目的。

如:“7”,对应二进制ASCII码值为01100111B,高4位为0110,低4位为0111。

(或“7”,对应16进制ASCII码值为37H,高4位为3,低4位为7)。

任何一个数据的ASCII码高4位(或低4位)的16进制值范围为“0~F”,显示“0~9”值时,在内存中存放“30H~39H”的ASCII码值。

显示“A、B、C、D、E、F”等值时,在内存中存放“41H、42H、43H、44H、45H、46H”的ASCII码值。

2、程序编写提示:

任何数据写入内存后,先分别取其对应的ASCII高4位和低4位的16进制值

(1)若所取的值在0~9的范围时,将该值加上30H。

即:取值“0”,对应0H+30H=30H;

取值“1”,对应1H+30H=31H;

取值“9”,对应9H+30H=39H;

再存入内存中,然后送屏幕显示。

(2)若所取的值在A~F的范围时,将该值先加7D,再加30H。

即:取值“A”,对应(10+7)D=17D=11H,11H+30H=41H;

取值“B”,对应(11+7)D=18D=12H,12H+30H=42H;

取值“F”,对应(15+7)D=22D=16H,16H+30H=46H;

再存入内存中,然后送屏幕显示。

3、实验参考流程图

见实验指导书P35页图3-1-1,显示程序实验流程图。

信号与系统实验

《信号与系统及MATLAB实现》实验指导书

前言 长期以来,《信号与系统》课程一直采用单一理论教学方式,同学们依靠做习题来巩固和理解教学内容,虽然手工演算训练了计算能力和思维方法,但是由于本课程数学公式推导较多,概念抽象,常需画各种波形,作题时难免花费很多时间,现在,我们给同学们介绍一种国际上公认的优秀科技应用软件MA TLAB,借助它我们可以在电脑上轻松地完成许多习题的演算和波形的绘制。 MA TLAB的功能非常强大,我们此处仅用到它的一部分,在后续课程中我们还会用到它,在未来地科学研究和工程设计中有可能继续用它,所以有兴趣的同学,可以对MA TLAB 再多了解一些。 MA TLAB究竟有那些特点呢? 1.高效的数值计算和符号计算功能,使我们从繁杂的数学运算分析中解脱出来; 2.完备的图形处理功能,实现计算结果和编程的可视化; 3.友好的用户界面及接近数学表达式的自然化语言,易于学习和掌握; 4.功能丰富的应用工具箱,为我们提供了大量方便实用的处理工具; MA TLAB的这些特点,深受大家欢迎,由于个人电脑地普及,目前许多学校已将它做为本科生必须掌握的一种软件。正是基于这些背景,我们编写了这本《信号与系统及MA TLAB实现》指导书,内容包括信号的MA TLAB表示、基本运算、系统的时域分析、频域分析、S域分析、状态变量分析等。通过这些练习,同学们在学习《信号与系统》的同时,掌握MA TLAB的基本应用,学会应用MA TLAB的数值计算和符号计算功能,摆脱烦琐的数学运算,从而更注重于信号与系统的基本分析方法和应用的理解与思考,将课程的重点、难点及部分习题用MA TLAB进行形象、直观的可视化计算机模拟与仿真实现,加深对信号与系统的基本原理、方法及应用的理解,为学习后续课程打好基础。另外同学们在进行实验时,最好事先预习一些MA TLAB的有关知识,以便更好地完成实验,同时实验中也可利用MA TLAB的help命令了解具体语句以及指令的使用方法。

数字信号处理实验二报告

实验二 IIR数字滤波器设计及软件实现 1.实验目的 (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法; (2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR数字滤波器的MATLAB实现方法。 (3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 2.实验原理 设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计IIR数字滤波器。 本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。 3. 实验内容及步骤 (1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。 图1 三路调幅信号st的时域波形和幅频特性曲线 (2)要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为

程序设计基础实验内容

实验指导 实验一 Visual C++开发环境使用 1.实验目的 (1)熟悉Visual C++集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include ; int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容 (1)整数相除 #include<> int main() {

int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include<> int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include<> int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&&a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的 (1)掌握格式字符使用的方法。 (2)掌握printf()进行格式化输出的方法。 (3)掌握scanf()进行格式化输入的方法。 2.实验内容 (1)输入如下程序,观察运行结果 #include<>

信号与系统实验报告一

1. 实验原理 2. 设描述连续时间系统的微分方程为: ) ()()()()()()()(01) 1(1) (01)1(1)(t f b t f b t f b t f b t y a t y a t y a t y a m m m m n n n n +'+++=+'+++---- 则可用向量a 和b 表示该系统,即 ],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -= 注意,向量a 和b 的元素一定要以微分方程时间求导的降幂次序排列,且缺项要用0补齐。 如微分方程 )()()(2)(3)(t f t f t y t y t y +''=+'+'' 表示该系统的向量为 ]2 3 1[=a ]1 0 1[=b (1)求解冲激响应:impulse()函数 impulse()函数有以下四种调用格式: ① impulse(b,a) 该调用格式以默认方式绘制由向量a 和b 定义的连续时间系统的冲激响应的时域波形。 ② impulse(b,a,t) 该调用格式绘制由向量a 和b 定义的连续时间系统在t ~0时间范围内的冲激响应的时域波形。 ③ impulse(b,a, t1:p:t2) 该调用格式绘制由向量a 和b 定义的连续时间系统在21~t t 时间范围内,且以时间间隔 p 均匀抽样的冲激响应的时域波形。 ④ y=impulse(b,a,t1:p:t2) 该调用格式并不绘制系统冲激响应的波形,而是求出由向量a 和b 定义的连续时间系统在21~t t 时间范围内以时间间隔p 均匀抽样的系统冲激响应的数值解。 (2)求解阶跃响应:step()函数 step()函数也有四种调用格式: ① step(b,a) ② step(b,a,t) ③ step(b,a, t1:p:t2) ④ y=step(b,a,t1:p:t2) 上述调用格式的功能与impulse()函数完全相同。 (3)求解零状态响应:lsim()函数 lsim()函数有以下二种调用格式:

数字信号处理实验程序2.

2.1 clc close all; n=0:15; p=8;q=2; x=exp(-(n-p.^2/q; figure(1; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=2'; xk1=fft(x,16; q=4; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=8,q=4'; q=8; x=exp(-(n-p.^2/q;

xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';%时域特性figure(2; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=2'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=8,q=4'; subplot(3,1,3; stem(n,abs(xk3; title('exp(-(n-p^2/q,p=8,q=8';%频域特性%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% p=8;q=8; figure(3; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';

xk1=fft(x,16; p=13; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=13,q=8'; p=14; x=exp(-(n-p.^2/q; xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=14,q=8';%时域特性figure(4; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=8'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=13,q=8'; subplot(3,1,3;

单片机实验报告

汇编语言程序设计 1)编译后,系统提示:目标越界,改为AJMP后编译通过,将ORG 07FFH 改为0800H, 系统提示:目标越界,这说明AJMP可以在2KB 范围内无条件转移。 2.改为LJMP编译通过,这说明LJMP可以在64KB 范围内无条件转移。 3.将LJMP LP1改为SJMP LP0,机器码为80FC,其中FC为偏移量,它是一个补码,01H~7FH说明向PC(增大√、减小)方向跳,80H~FFH说明向PC(增大、减小√)方向跳,这说明SJMP可以在当前PC值-128B~+127B 范围内无条件转移。 1、X、Y以补码的形式存放在20H、21H中,编写程序实现如下函数: 实验程序: MOV A,20H JZ ZREO JB ACC.7,NEG MOV 21H,#01H SJMP PEND ZREO:MOV 21H,A SJMP PEND NEG:MOV 21H,#0FFH PEND:SJMP$ END 结果记录: 1.将数89H存放于20H中,运行程序,观察到21H单元中的内容为FF; 2.将数05H存放于20H中,运行程序,观察到21H单元中的内容为01; 3.将数00H存放于20H中,运行程序,观察到21H单元中的内容为00; 2、将20H~27H中的压缩BCD码拆为两个单字节BCD码,存放在以2000H为首地址的外部RAM 中。 实验程序: MOV R0,#20H MOV R7,#08H MOV DPTR,#2000H LOOP:ACALL CZ INC R0

INC DPTR DJNZ R7,LOOP SJMP $ CZ:MOV A,@R0 SWAP A ANL A,#0FH MOVX @DPTR,A INC DPTR MOV A,@R0 ANL A,#0FH MOVX @DPTR,A RET END 结果记录: 20H 21H 22H 23H 24H 25H 26H 27H 87H 54H 36H 23 19H 43H 77H 69H 2000H 2002H2004H2006H2008H200AH200CH200EH 07H 04H 06H 03H 09H 03H 07H 09H 2001H 2003H2005H2007H2009H200BH200DH200FH 08H 05H 03H 02H 01H 04H 07H 06H 1、数在计算机中是以补码形式存放的,因此,判断数据的正负,往往采用判断第7 位,是0 则为正数,是1 则为正数 2、实验内容2中JZ ZREO 的机器码为600DH ,其中0DH 为偏移量,当前PC值0004 加上这个偏移量等于0011H ,这正是即将执行的程序的首地址,即标号为ZREO 语句。程序计算器PC的功能是指向下一条指令,因此,跳转语句是依靠偏移量来改变程序计数器PC的值,从而改变程序的流向。 3、分支程序一定要注意分支的语句标号的正确性,每一分支之间必须用跳转(如SJMP)指令分隔,并跳转到相应标号。 4、子程序往往用间址寄存器传递数据,内部RAM用@Ri ,外部RAM用@DPTR ,绝对不能用直接地址。最后以RET 结尾。 5、循环程序往往用寄存器传递数据,用R7控制循环次数,用调用作为循环体,用指令INC 修改地址指针,用指令DJNZ 判断循环结束。 6、执行ACALL前(SP)= 07H ,执行ACALL时,(SP)= 09H ,(08H)= 09H ,(09H)= 00H ,(PC)= 000FH ,PC的值正是子程序的入口地址,而堆栈中这两个单元存放的是断点处PC的值;执行到RET后,(SP)= 07H , 原08H的值弹给(PC)7~0 ,原09H的值弹给(PC)15~8 ,因此,返回断点继续执行主程序。

信号与系统实验三

信号与系统实验实验三:信号的卷积 小组成员: 黄涛13084220 胡焰焰13084219 洪燕东13084217

一、实验目的 1. 理解卷积的物理意义; 2. 掌握运用计算机进行卷积运算的原理和方法; 3. 熟悉卷积运算函数conv的应用; 二、预习内容 1. 卷积的定义及物理意义; 2. 卷积计算的图解法; 3. 卷积的应用 三、实验原理说明 1.卷积的定义 连续时间和离散时间卷积的定义分别如下所示: 2.卷积的计算 由于计算机技术的发展,通过编程的方法来计算卷积积分和卷积和已经不再是冗繁的工作,并可以获得足够的精度,因此信号的时域卷积分析法在系统分析中得到了广泛的应用。 卷积积分的数值运算可以应用信号的分段求和来实现,即: 数值运算只求当时的信号值,则由上式可以得到: 上式中实际上就是连续信号等间隔均匀抽样的离散序列的卷积和,当足够小的时候就是信号卷积积分的数值近似。因此,在利用计算机计算两信号卷积积分时,实质上是先将其转化为离散序列,再利用离散卷积和计算原理来计算。 3.卷积的应用 3.1 求解系统响应 卷积是信号与系统时域分析的基本手段,主要应用于求解系统响应,已知一LTI系统的单位冲激响应和系统激励信号则系统响应为激励与单位冲激响应的卷积。 需要注意的是利用卷积分析方法求得的系统响应为零状态响应。 3.2 相关性分析 相关函数是描述两个信号相似程度的量。两信号之间的相关函数一般称之为互相关函数或者互关函数,定义如下: 若是同一信号,此时相关函数称为自相关函数或者自关函数: 对于相关函数与卷积运算有着密切的联系,由卷积公式与相关函数比较得: 可见,由第二个信号反转再与第一个信号卷积即得到两信号的相关函数。 4.涉及的Matlab函数 4.1 conv函数 格式w = conv(u,v),可以实现两个有限长输入序列u,v的卷积运算,得到有限冲激响应系统的输出序列。输出序列长度为两个输入序列长度和减一。 四、实验内容 给定如下因果线性时不变系统: y[n]+0.71y[n-1]-0.46y[n-2]-0.62y[n-3=0.9x[n]-0.45x[n-1]+0.35x[n-2]+0.002x[n-3] (1)不用impz函数,使用filter命令,求出以上系统的单位冲激响应h[n]的前20个样本; clc; N = 0:19;

数字信号处理实验一

一、实验目的 1. 通过本次实验回忆并熟悉MATLAB这个软件。 2. 通过本次实验学会如何利用MATLAB进行序列的简单运算。 3. 通过本次实验深刻理解理论课上的数字信号处理的一个常见方法——对时刻n的样本附近的一些样本求平均,产生所需的输出信号。 3. 通过振幅调制信号的产生来理解载波信号与调制信号之间的关系。 二、实验内容 1. 编写程序在MATLAB中实现从被加性噪声污染的信号中移除噪声的算法,本次试验采用三点滑动平均算法,可直接输入程序P1.5。 2. 通过运行程序得出的结果回答习题Q1.31-Q1.33的问题,加深对算法思想的理解。 3. 编写程序在MATLAB中实现振幅调制信号产生的算法,可直接输入程序P1.6。 4. 通过运行程序得出的结果回答习题Q1.34-Q1.35的问题,加深对算法思想的理解。 三、主要算法与程序 1. 三点滑动平均算法的核心程序: %程序P1.5 %通过平均的信号平滑 clf; R=51; d=0.8*(rand(R,1)-0.5);%产生随噪声 m=0:R-1; s=2*m.*(0.9.^m);%产生为污染的信号 x=s+d';%产生被噪音污染的信号 subplot(2,1,1); plot(m,d','r-',m,s,'g--',m,x,'b-.');

xlabel('时间序号n');ylabel('振幅'); legend('d[n]','s[n]','x[n]'); x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2); plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n]','s[n]'); xlabel('时间序号n');ylabel('振幅'); 2. 振幅调制信号的产生核心程序:(由于要几个结果,因此利用subplot函数画图) %程序P1.6 %振幅调制信号的产生 n=0:100; m=0.1;fH=0.1;fL=0.01; m1=0.3;fH1=0.3;fL1=0.03; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; xH1=sin(2*pi*fH1*n); xL1=sin(2*pi*fL1*n); y1=(1+m1*xL).*xH; y2=(1+m*xL).*xH1; y3=(1+m*xL1).*xH; subplot(2,2,1); stem(n,y); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.1;fH=0.1;fL=0.01;'); subplot(2,2,2); stem(n,y1); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.1;fL=0.01;'); subplot(2,2,3); stem(n,y2); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.3;fL=0.01;'); subplot(2,2,4); stem(n,y3); grid;

实验一 顺序程序设计

实验一顺序程序设计 一、实验目的: 1、学习顺序程序的设计方法 2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程 3、学习和掌握字符及字符串的输入输出方法 二、实验环境: 硬件环境IBM/PC 及其兼容机 软件环境操作系统DOS 编辑程序EDIT或其他编辑程序 汇编程序MASM.EXE 连接程序LINK.EXE 调试程序DEBUG.EXE 可视化编程环境emu8086 三、实验内容: 1、已知X和Y是数据段中的两个无符号字节单元,用程序完成表达式Z=(X2+Y2)/2的计算。 2、从键盘读入两个一位数(按键时保证按下的是数字键),显示它们的积。 四、实验要求: 1、画出实验程序流程图,独立完成源代码的编写。 开始 X中的内容 送AL 计算X*X X*X乘积 送BX Y中的内 容送AL 计算Y*Y 计算X*X+Y*Y 计算(X*X+Y*Y)/2结果送Z单元 结束 开始 读入第1个数字 并保存在BL中 读入第2个数字 将两个数字都转换成十进制数 两个数相乘, 积在AX中 积除以10取商送AL,余数在AH中 转换成相应的 ASCII码,并 保存在BX中 输出十位数 输出个位数 结束

2、在DOS环境下使用MASM完成对源代码的编译、连接,有必要的情况下使用debug.exe 进行调试。 3、WINDOS环境下使用EMU8086完成上第2步的工作。 4、与程序流程图比较,验证是否完成规定的功能,若未达要求,返回第1步。 5、提交完成的源代码,要求对关键语句进行注释。 ①源代码如下: DA TA SEGMENT X DB 5 Y DB 4 Z DW ? DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX ;初始化数据段 MOV AL,X ;X中的内容送AL MUL AL ;计算X*X MOV BX,AX ;X*X乘积送BX MOV AL,Y ;Y中的内容送AL MUL AL ;计算Y*Y ADD AX,BX ;计算X2+Y2 SHR AX,1 ;计算(X2+Y2)/2 MOV Z,AX ;结果送Z单元 MOV AH,4CH INT 21H ;返回DOS CODE ENDS END START ;汇编结束 ②源代码如下: CODE SEGMENT ASSUME CS:CODE MAIN: MOV AH,1 INT 21H ;读入第1个数字 MOV BL,AL ;保存在BL中 MOV AH,2 MOV DL,13 INT 21H ;回车 MOV DL,10 INT 21H ;换行 MOV AH,1 INT 21H ;读入第2个数字 SUB AL,30H ;第2个数字转换成十进制数 SUB BL,30H ;第1个数字转换成十进制数 MUL BL ;两个数相乘,积在AX中

单片机实验报告

太原工业学院计算机工程系成绩: 单片机原理及应用 课程实验报告 课程:单片机原理及应用 姓名:冯文颖 专业:计算机科学与技术 学号:132054413 日期:2016年4月20日 太工计算机工程系 计算机原理实验室

实验一:拆字程序实验 实验环境PC机+Win 2007+伟福仿真软件实验日期2016.4.20一.实验内容 1.熟悉51仿真系统,设计并单步调试实现,将R5中一字节数拆分成两位独立的数据,分别存于R6,R7中,将R6,R7中的一位HEX数据转换为输出 2.ASCII编码分析BIN,HEX,BCD,ASCII等不同编码的数学意义及表现形式上的异同 二.理论分析或算法分析 (1)基本要求的描述 在这次实验中,要将R5中存的一字节数拆分成两个独立的数据,主要用到是逻辑运算符中的与功能,进而取得高字节和低字节的数,将R5的数和0f0h进行与取得高字节,和0f0h 与取得低字节的数,进而将它们分别存于R6、R7中。 (2)扩展要求的描述 在扩展要求中,要求将高低字节的数据转换成ASCII码值,首先先运用操作符subb将高低位字节与0Ah进行比较,根据CY的值来判断高低字节的数据是否在0到9之间,若在则在它们的基础上加上30h即可得到其对应的ASCII码值,否则,若在A到F之间,则需要在它们的基础上加37h即可得到它们对应的ASCII码值。 三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等) org 0019h clr c mov r5,#6ah mov a,r5 anl a, #0fh mov r6, a mov a, r5 anl a,#0f0h swap a mov r7,a sjmp $ end Masc1:mov a,r6 add a,#0F6h . mov,a,r6 jnc ad30h add a,#07h ad30h: add a,#30h mov r6,a 1

信号与系统实验DOC

信号与系统实验讲义 雷明东编 重庆文理学院 电子电气学院 2014年10月

实验注意事项 1、不准迟到早退,开始做实验前需要签字; 2、在离开实验室前,要整理好实验设备、桌椅、收拾好垃圾后,待老师检查完毕,方可离开实验室; 3、做实验期间不准大声喧哗,如有问题需举手示意; 4、不准在无老师授权的情况下随意拆卸实验设备; 5、在每次做新实验前,需交前个实验的实验报告。

实验一 常用信号的分类和观察 一 实验目的: 1、观察和了解常见信号的波形和特点。 2、理解相关信号参数的作用和意义。 3、掌握信号的FFT 变换。 3、熟练掌握示波器的使用。 二 实验原理: 描述信号的基本方法是写出它的数学表达式,此表达式是时间的函数,绘出函数的图像称为信号的波形。 对于各种信号,可以从不同的角度分类。如分成确定性信号与随机信号;周期信号与非周期信号;连续时间信号与离散时间信号等。 常见信号除了包括正弦波)sin()(0φω+=t A t x 、指数函数信号t Ke t x α=)(、抽样函数信号t t A t x /)(sin )(=、高斯函数信号τ/)(t Ke t x -=、方波、三角波、锯齿波,还包括一些直流信号。 三 预习练习: 1、预习有关信号的分类和描述。 2、理解信号的函数表达式和相关参数的意义。 四 实验内容及步骤: 1、 根据实验箱上函数信号发生器模块的提示选择相应的信号波形代码。 01:正弦波 02:方波 03:锯齿波 04:三角波

05:阶梯波 06:衰减指数信号 07:高斯函数信号 08:抽样函数信号 09:抽样脉冲 10:调幅信号 11:扫频信号 2、用示波器测量信号,读取信号的幅度和频率,并用坐标纸记录信号波形; 在信号与系统实验箱上的电源模块用电压表(或万用表)与示波器来观 测电源信号的特点,并测量电源的幅度。 3、在示波器上观测扫频信号的波形特征,大致画出扫频信号的波形。 4、利用示波器中的FFT函数,来观看信号的FFT变换形式。 5、用频谱分析仪观测各个信号的频谱(选做)。 五实验仪器: 1、信号系统实验箱(函数信号发生器模块) 2、双踪示波器 六实验报告内容: 1、根据实验测量所得数据,绘制各个信号的波形图。 2、绘制各个波形的FFT变换波形。 3、写出相应的函数表达式与频域变换表达式。 4、用示波器直流档观测函数信号的波形特点,并说明原因(提示:本函数发生器所产生的信号均由单片机AT89C51产生)。

数字信号处理实验报告(实验1_4)

实验一 MATLAB 仿真软件的基本操作命令和使用方法 实验容 1、帮助命令 使用 help 命令,查找 sqrt (开方)函数的使用方法; 2、MATLAB 命令窗口 (1)在MATLAB 命令窗口直接输入命令行计算3 1)5.0sin(21+=πy 的值; (2)求多项式 p(x) = x3 + 2x+ 4的根; 3、矩阵运算 (1)矩阵的乘法 已知 A=[1 2;3 4], B=[5 5;7 8],求 A^2*B

(2)矩阵的行列式 已知A=[1 2 3;4 5 6;7 8 9],求A (3)矩阵的转置及共轭转置 已知A=[1 2 3;4 5 6;7 8 9],求A' 已知B=[5+i,2-i,1;6*i,4,9-i], 求B.' , B' (4)特征值、特征向量、特征多项式 已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征值、特征向量、特征多项式;

(5)使用冒号选出指定元素 已知:A=[1 2 3;4 5 6;7 8 9];求A 中第3 列前2 个元素;A 中所有列第2,3 行的元素; 4、Matlab 基本编程方法 (1)编写命令文件:计算1+2+…+n<2000 时的最大n 值;

(2)编写函数文件:分别用for 和while 循环结构编写程序,求 2 的0 到15 次幂的和。

5、MATLAB基本绘图命令 (1)绘制余弦曲线 y=cos(t),t∈[0,2π]

(2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π] (3)绘制[0,4π]区间上的 x1=10sint 曲线,并要求: (a)线形为点划线、颜色为红色、数据点标记为加号; (b)坐标轴控制:显示围、刻度线、比例、网络线 (c)标注控制:坐标轴名称、标题、相应文本; >> clear;

实验二选择结构程序设计实验报告

实验二选择结构程序设计 一、实验目的和要求 1.掌握关系表达式和逻辑表达式的使用。 2.熟悉选择结构程序设计。 3.熟练使用if语句进行程序设计。 4.使用switch语句实现多分支选择结构 二、实验设备 PC 机Visual C++6.0 三、实验内容 (一)实验准备 1.从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支(选择)结构、循环 结构。 2.lf-else 语句: 一般形式为:if (表达式) 语句1 ; else 语句2 ; 该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句 2. 2.switch 语句 switch语句可以处理多分支选择问题,根据其中break语句的使用方法,一般分为三种情况。 (二)实验项目 1.计算a+|b| #in clude int main (void) { int a,b, z; prin tf("Please en ter a,b:\n"); sca nf("%d,%d",&a,&b); if (b>=0)t b=b; prin tf("%d+%d=%d\n",a,b,z); return 0 ; } 2判断一个整数是否可以被3和5整除

#in clude int main (void) { int a ; printf("Please enter a:\n"); scanf("%d",&a); if (a%3==0){ printf("a 可以被 3 整除:\n"); } else{ if (a%5==0){ printf("a 可以被 5 整除:\n"); } else { printf("a 不可以被5整除,也不可以被3整除:\n"); } } 3.从键盘输入一个字符型数据,若输入一个数字字符( '0'-'9' ),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。 #include int main(void) { int a ; printf("please enter a char:\n"); scanf("%d",&a); if((0<=a)&&(a<=9)) { printf("This char is %d:\n",a); } else { printf(" 这个字符不是个整数:\n"); } return 0 ; } 4.编写一个程序,其功能为:从键盘输入三个数x、y、z ,判断x+y=z 是否成立,若成立输出 “x+y=z” 的信息,否则输出“ x+y!=z ”的信息。 #include int main(void) { int x,y,z; printf (" 请输入x,y,z:\n"); scanf ("%d,%d,%d",&x,&y,&z); if (x+y==z) { printf ("x+y=z\n"); } else { printf ("x+y!=z\n"); } return 0; } 5.编写一个程序,其功能为:输入三个整数,输出最大数和最小数#include int main(void) { int a,b,c,x,y; printf (" 请输入三个数字:\n"); scanf ("%d,%d,%d",&a,&b,&c);

单片机实验

实验一拆字程序 1.实验目的: 掌握汇编语言设计方法。 2.实验内容: 把8000H地址上的内容拆开,高位送8001H地址的低位,低位送8002H地址的低位,8001H、8002H地址的高位清零.本程序通常在把数据送显示缓冲区时使用。 3.实验器材: (1) G2010实验箱 1 台 4.实验步骤: (1)按流程图编写程序,可借助KEIL集成调试环境中的编辑器输入程序,存盘并编译,按提示的内容进行排错。 (2)打开DATA和XDATA窗口,在XDATA窗口的8000H单元输入一个值,如23H,单步调试程序,观察累加器A,辅助寄存器B,外部数据存储器8001H,8002H单元中 数据的变化。 5.软件清单(实验例程\实验1\ASM51\EX1.ASM)(实验例程\实验1\C51\EX1.C) ;文件名:MCS51\ex1.ASM ;把指定字节的高低位拆开分别存放,多用于显示子程序 ORG 0000H sjmp start org 0050h start:MOV DPTR,#8000H ;指定的字节 MOVX A,@DPTR MOV B,A ;暂存 SWAP A ;交换 ANL A,#0FH ;屏敝高位 INC DPTR MOVX @DPTR,A INC DPTR MOV A,B ANL A,#0FH ;指定字节的内容屏敝高位 MOVX @DPTR,A LOOP: SJMP LOOP end 6、仿真结果

7、心得体会 这个实验让我学会了软件KEIL的使用和用这个软件对程序的的调试,明白了拆字程序的原理,对汇编程序的读写也有了更近一步的理解。

实验二拼字程序 1.实验目的: (1)进一步掌握汇编语言设计 2.实验内容: 把8000H、8001H两个字节的低位分别送入8002H的高位和低位。本程序一般用于把显示缓冲区数据取出拼装成一个字节。 3.实验器材: (1) G2010实验箱 1 台 4.实验步骤: (1)按流程图编写程序,可借助KEIL集成调试环境中的编辑器输入程序,存盘并编译,按提示的内容进行排错。 (2)打开DATA和XDATA窗口,在XDATA窗口的8000H单元输入一个值,如23H,单步调试程序,观察累加器A,辅助寄存器B,外部数据存储器8001H,8002H单元中 数据的变化。 5.软件清单:(实验例程\实验2\ASM51\EX2.ASM)(实验例程\实验2\C51\EX2.C) “验证式”实验二拼字程序 ;文件名:MCS51\A02.ASM ;把两字节的低位合拼成一个字节,多用于显示子程序 ORG 0000h sjmp start org 0050h start:MOV DPTR,#8000H MOVX A,@DPTR ANL A,#0FH ;屏敝高位 SWAP A MOV B,A ;保存 INC DPTR MOVX A,@DPTR ANL A,#0FH ORL A,B ;合拼 INC DPTR MOVX @DPTR,A ;送8002H存放 LOOP: SJMP LOOP end 6.结果截图

信号与系统实验报告_1(常用信号的分类与观察)

实验一:信号的时域分析 一、实验目的 1.观察常用信号的波形特点及产生方法 2.学会使用示波器对常用波形参数的测量 二、实验仪器 1.信号与系统试验箱一台(型号ZH5004) 2.40MHz双踪示波器一台 3.DDS信号源一台 三、实验原理 对于一个系统特性的研究,其中重要的一个方面是研究它的输入输出关系,即在一特定的输入信号下,系统对应的输出响应信号。因而对信号的研究是对系统研究的出发点,是对系统特性观察的基本手段与方法。在本实验中,将对常用信号和特性进行分析、研究。 信号可以表示为一个或多个变量的函数,在这里仅对一维信号进行研究,自变量为时间。常用信号有:指数信号、正弦信号、指数衰减正弦信号、复指数信号、Sa(t)信号、钟形信号、脉冲信号等。 1、信号:指数信号可表示为f(t)=Ke at。对于不同的a取值,其波形表现为不同的形式,如下图所示: 图1―1 指数信号 2、信号:其表达式为f(t)=Ksin(ωt+θ),其信号的参数:振幅K、角频率ω、与初始相位θ。其波形如下图所示:

图1-2 正弦信号 3、指数衰减正弦信号:其表达式为其波形如下图: 图1-3 指数衰减正弦信号 4、Sa(t)信号:其表达式为:。Sa(t)是一个偶函数,t= ±π,±2π,…,±nπ时,函数值为零。该函数在很多应用场合具有独特的运用。其信号如下图所示:

图1-4 Sa(t)信号 5、钟形信号(高斯函数):其表达式为:其信号如下图所示: 图1-5 钟形信号 6、脉冲信号:其表达式为f(t)=u(t)-u(t-T),其中u(t)为单位阶跃函数。其信号如下图所示: 7、方波信号:信号为周期为T,前T/2期间信号为正电平信号,后T/2期间信号为负电平信号,其信号如下图所示 U(t)

数字信号处理实验及参考程序

数字信号处理实验实验一离散时间信号与系统及MA TLAB实现 1.单位冲激信号: n = -5:5; x = (n==0); subplot(122); stem(n, x); 2.单位阶跃信号: x=zeros(1,11); n0=0; n1=-5; n2=5; n = n1:n2; x(:,n+6) = ((n-n0)>=0); stem(n,x); 3.正弦序列: n = 0:1/3200:1/100; x=3*sin(200*pi*n+1.2); stem(n,x); 4.指数序列 n = 0:1/2:10; x1= 3*(0.7.^n); x2=3*exp((0.7+j*314)*n); subplot(221); stem(n,x1); subplot(222); stem(n,x2); 5.信号延迟 n=0:20; Y1=sin(100*n); Y2=sin(100*(n-3)); subplot(221); stem(n,Y1); subplot(222); stem(n,Y2);

6.信号相加 X1=[2 0.5 0.9 1 0 0 0 0]; X2=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; X=X1+X2; stem(X); 7.信号翻转 X1=[2 0.5 0.9 1]; n=1:4; X2=X1(5-n); subplot(221); stem(n,X1); subplot(222); stem(n,X2); 8.用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 9.用MA TLAB计算差分方程 当输入序列为时的输出结果。 N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n'); ylabel('幅度') 10.冲激响应impz N=64; a=[0.8 -0.44 0.36 0.22];

实验一简单程序设计实验

实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。 程序流程图略。 参考源程序: DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA ;数据段寄存器初始化 MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统 INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。 参考源程序: DATA SEGMENT ARY DB 2AH,?,? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI] ;取16进制数至AL

MOV BL,AL AND AL,0F0H ;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL ;存0X1 MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2 MOV [SI+2],AL ;存0X2 MOV AH,4CH INT 21H CODE ENDS END START

相关文档
最新文档