单片机实验报告多机通讯

单片机实验报告多机通讯
单片机实验报告多机通讯

线程实现邮箱通信-实验报告

进程通信实验报告 一、实验名称:进程通信 二、实验目的:掌握用邮箱方式进行进程通信的方法,并通过设计实现简单邮箱理解进程通信中的同步问题以及解决该问题的方法。 三、实验原理:邮箱机制类似于日常使用的信箱。对于用户而言使用起来比较方便,用户只需使用send ()向对方邮箱发邮件 receive ()从自己邮箱取邮件, send ()和 receive ()的内部操作用户无需关心。因为邮箱在内存中实现,其空间有大小限制。其实send ()和 receive ()的内部实现主要还是要解决生产者与消费者问题。 四、实验内容:进程通信的邮箱方式由操作系统提供形如send ()和receive ()的系统调用来支持,本实验要求学生首先查找资料了解所选用操作系统平台上用于进程通信的系统调用具体形式,然后使用该系统调用编写程序进行进程间的通信,要求程序运行结果可以直观地体现在界面上。在此基础上查找所选用操作系统平台上支持信号量机制的系统调用具体形式,运用生产者与消费者模型设计实现一个简单的信箱,该信箱需要有创建、发信、收信、撤销等函数,至少能够支持两个进程互相交换信息,比较自己实现的信箱与操作系统本身提供的信箱,分析两者之间存在的异同。 五、背景知识介绍: 1、sembuf 数据结构 struct sembuf { unsigned short int sem_num; //semaphore number short int sem_op; //semaphore operation short int sem_flg; //operation flag }; sem_num :操作信号在信号集中的编号,第一个信号的编号是0。 进程A 进程B 信箱A 信箱B Send() Send() receive() receive()

单片机实验报告

实验报告 专业:计算机科学与技术班级:C093 姓名:孙丽君 学号:098677

实验一:数据传送实验 1.实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—A FH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV@R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H

MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 3.实验结果: 4. CPU 对8031内部RAM存储器有哪些寻址方式? 答:直接寻址,寄存器寻址,寄存器间接寻址,位寻址。

5. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH内容:A0~AF 内部RAM 50H~5FH内容:A0~AF 实验二多字节十进制加法实验 1.实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG0000H RESET: AJMP MAIN ORG0100H MAIN: MOV SP, #60H MOV R0, #31H MOV@R0, #22H DEC R0 MOV@R0, #33H

Linux进程间通信(2)实验报告

实验六:Linux进程间通信(2)(4课时) 实验目的: 理解进程通信原理;掌握进程中信号量、共享内存、消息队列相关的函数的使用。实验原理: Linux下进程通信相关函数除上次实验所用的几个还有: 信号量 信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是前一节的共享内存方式的进程间通信。要调用的第一个函数是semget,用以获得一个信号量ID。 int semget(key_t key, int nsems, int flag); key是IPC结构的关键字,flag将来决定是创建新的信号量集合,还是引用一个现有的信号量集合。nsems是该集合中的信号量数。如果是创建新集合(一般在服务器中),则必须指定nsems;如果是引用一个现有的信号量集合(一般在客户机中)则将nsems指定为0。 semctl函数用来对信号量进行操作。 int semctl(int semid, int semnum, int cmd, union semun arg); 不同的操作是通过cmd参数来实现的,在头文件sem.h中定义了7种不同的操作,实际编程时可以参照使用。 semop函数自动执行信号量集合上的操作数组。 int semop(int semid, struct sembuf semoparray[], size_t nops); semoparray是一个指针,它指向一个信号量操作数组。nops规定该数组中操作的数量。 ftok原型如下: key_t ftok( char * fname, int id ) fname就是指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。 当成功执行的时候,一个key_t值将会被返回,否则-1 被返回。 共享内存 共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写。首先要用的函数是shmget,它获得一个共享存储标识符。 #include #include #include int shmget(key_t key, int size, int flag); 当共享内存创建后,其余进程可以调用shmat()将其连接到自身的地址空间中。 void *shmat(int shmid, void *addr, int flag); shmid为shmget函数返回的共享存储标识符,addr和flag参数决定了以什么方式来确定连接的地址,函数的返回值即是该进程数据段所连接的实际地

数字通信系统设计实验报告

实验1:用 Verilog HDL 程序实现乘法器 1实验要求: (1) 编写乘法器的 Veirlog HDL 程序. (2) 编写配套的测试基准. (3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证 (4) 注意乘法逻辑电路的设计. 2 试验程序: Module multiplier(input rst,input clk,input [3:0]multiplicand, input [3:0]multiplier,input start_sig,output done_sig,output [7:0]result); reg [3:0]i; reg [7:0]r_result; reg r_done_sig; reg [7:0]intermediate; always @ ( posedge clk or negedge rst ) if( !rst ) begin i<=4'b0; r_result<=8'b0; end else if(start_sig) begin case(i) 0: begin intermediate<={4'b0,multiplicand}; r_result<=8'b0; i<=i+1; end 1,2,3,4: begin if(multiplier[i-1]) begin r_result<=r_result+intermediate; end intermediate<={intermediate[6:0],1'b0}; i<=i+1; end 5: begin r_done_sig<=1'b1;

i<=i+1; end 6: begin r_done_sig<=1'b0; i<=1'b0; end endcase end assign result=r_done_sig?r_result:8'bz; assign done_sig=r_done_sig; endmodule3 测试基准: `timescale 1 ps/ 1 ps module multiplier_simulation(); reg clk; reg rst; reg [3:0]multiplicand; reg [3:0]multiplier; reg start_sig; wire done_sig; wire [7:0]result; /***********************************/ initial begin rst = 0; #10; rst = 1; clk = 1; forever #10 clk = ~clk; end /***********************************/ multiplier U1 ( .clk(clk), .rst(rst), .multiplicand(multiplicand), .multiplier(multiplier), .result(result), .done_sig(done_sig), .start_sig(start_sig) ); reg [3:0]i; always @ ( posedge clk or negedge rst ) if( !rst )

北邮scilab_通信原理软件实验报告

信息与通信工程学院通信原理软件实验报告

实验二时域仿真精度分析 一、实验目的 1. 了解时域取样对仿真精度的影响 2. 学会提高仿真精度的方法 二、实验原理 一般来说,任意信号s(t)是定义在时间区间(-无穷,+无穷)上的连续函数,但所有计算机的CPU 都只能按指令周期离散运行,同时计算机也不能处理这样一个时间段。为此将把s(t)按区间[-T/2 ,+T/2 ]截短为按时间间隔dert T均匀取样,得到的取样点数为N=T/dert T. 仿真时用这个样值集合来表示信号s(t)。Dert T反映了仿真系统对信号波形的分辨率,越小则仿真的精确度越高。据通信原理所学,信号被取样以后,对应的频谱是频率的周期函数,其重复周期是1/t; 。如果信号的最高频率为 那么必须有 才能保证不发生频域混叠失真,这是奈奎斯特抽样定理。设 则称为仿真系统的系统带宽。如果在仿真程序中设定的采样间隔是,那么不能用 此仿真程序来研究带宽大于这的信号或系统。换句话说,就是当系统带宽一定的情况下,信号的采样频率最小不得小于2*Bs,如此便可以保证信号的不失真,在此基础上时域采样频率越高,其时域波形对原信号的还原度也越高,信号波形越平滑。也就是说,要保证信号的通信成功,必须要满足奈奎斯特抽样定理,如果需要观察时域波形的某些特性,那么采样点数越多,可得到越真实的时域信号。 三、实验步骤 1.将正弦波发生器模块、示波器模块、时钟模块按下图连接:

时钟设置0.01,得到的结果如下: 时钟设置0.3,以后得到的结果如下:

五、思考题 (1)观察分析两图的区别,解释其原因。 答:因为信号周期是1,而第一个图的采样周期是0.01,所以一个周期内能采样100个点,仿真出来的波形能较精确地显示成完整波形,而第二个图采样周期是0.3,所以一个周期内只有三个采样点,故信号失真了。 (2)将示波器的控制时钟的period的参数改为0.5,观察仿真结果,分析其原因。 结果如下:

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.360docs.net/doc/5f2495367.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY RL A

DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件

个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.360docs.net/doc/5f2495367.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJNZ R2,LOOP

通信原理 数字基带传输实验报告

基带传输系统实验报告 一、 实验目的 1、 提高独立学习的能力; 2、 培养发现问题、解决问题和分析问题的能力; 3、 学习matlab 的使用; 4、 掌握基带数字传输系统的仿真方法; 5、 熟悉基带传输系统的基本结构; 6、 掌握带限信道的仿真以及性能分析; 7、 通过观察眼图和星座图判断信号的传输质量。 二、 实验原理 在数字通信中,有些场合可以不经载波调制和解调过程而直接传输基带信号,这种直接传输基带信号的系统称为基带传输系统。 基带传输系统方框图如下: 基带脉冲输入 噪声 基带传输系统模型如下: 信道信号 形成器 信道 接收 滤波器 抽样 判决器 同步 提取 基带脉冲

各方框的功能如下: (1)信道信号形成器(发送滤波器):产生适合于信道传输的基带信号波形。因为其输入一般是经过码型编码器产生的传输码,相应的基本波形通常是矩形脉 冲,其频谱很宽,不利于传输。发送滤波器用于压缩输入信号频带,把传输 码变换成适宜于信道传输的基带信号波形。 (2)信道:是基带信号传输的媒介,通常为有限信道,如双绞线、同轴电缆等。信道的传输特性一般不满足无失真传输条件,因此会引起传输波形的失真。另 外信道还会引入噪声n(t),一般认为它是均值为零的高斯白噪声。 (3)接收滤波器:接受信号,尽可能滤除信道噪声和其他干扰,对信道特性进行均衡,使输出的基带波形有利于抽样判决。 (4)抽样判决器:在传输特性不理想及噪声背景下,在规定时刻(由位定时脉冲控制)对接收滤波器的输出波形进行抽样判决,以恢复或再生基带信号。 (5)定时脉冲和同步提取:用来抽样的位定时脉冲依靠同步提取电路从接收信号中提取。 三、实验内容 1采用窗函数法和频率抽样法设计线性相位的升余弦滚讲的基带系统(不调用滤波器设计函数,自己编写程序) 设滤波器长度为N=31,时域抽样频率错误!未找到引用源。o为4 /Ts,滚降系数分别取为0.1、0.5、1, (1)如果采用非匹配滤波器形式设计升余弦滚降的基带系统,计算并画出此发送滤波器的时域波形和频率特性,计算第一零点带宽和第一旁瓣衰减。 (2)如果采用匹配滤波器形式设计升余弦滚降的基带系统,计算并画出此发送滤波器的时域波形和频率特性,计算第一零点带宽和第一旁瓣衰减。 (1)非匹配滤波器 窗函数法: 子函数程序: function[Hf,hn,Hw,w]=umfw(N,Ts,a)

通信原理实验一、二实验报告

通信原理 实验一 实 验 报 告 实验日期: 学院: 班级: 学号: 姓名: 指导老师:

实验一数字基带传输系统的MA TLAB仿真 一、实验目的 1、熟悉和掌握常用的用于通信原理时域仿真分析的MATLAB函数; 2、掌握连续时间和离散时间信号的MATLAB产生; 3、牢固掌握冲激函数和阶跃函数等函数的概念,掌握卷积表达式及其物理意义,掌握 卷积的计算方法、卷积的基本性质; 4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MA TLAB程序验证卷积的 常用基本性质; 5、掌握MATLAB描述通信系统中不同波形的常用方法及有关函数,并学会利用 MATLAB求解系统功率谱,绘制相应曲线。 基本要求:掌握用MATLAB描述连续时间信号和离散时间信号的方法,能够编写 MATLAB程序,实现各种常用信号的MA TLAB实现,并且以图形的方式再现各种信号的波形。 二、实验内容 1、编写MATLAB 程序产生离散随机信号 2、编写MATLAB 程序生成连续时间信号 3、编写MATLAB 程序实现常见特殊信号 三、实验原理 从通信的角度来看,通信的过程就是消息的交换和传递的过程。而从数学的角度来看, 信息从一地传送到另一地的整个过程或者各个环节不外乎是一些码或信号的交换过程。例如 信源压缩编码、纠错编码、AMI编码、扰码等属于码层次上的变换,而基带成形、滤波、调 制等则是信号层次上的处理。码的变换是易于用软件来仿真的。要仿真信号的变换,必须解 决信号与信号系统在软件中表示的问题。 四、实验步骤 (1)分析程序program1_1 每条指令的作用,运行该程序,将结果保存,贴在下面的空白 处。然后修改程序,将dt 改为0.2,并执行修改后的程序,保存图形,看看所得图形的效果 怎样。 dt=0.01 时的信号波形 Sinusoidal signal x(t) -2-1.5-1-0.500.51 1.52 Time t (sec) dt=0.2 时的信号波形

操作系统之进程(生产者_消费者)实验报告

操作系统实验报告 ——生产者和消费者问题 姓名:学号:班级: 一、实验内容 1、模拟操作系统中进程同步和互斥; 2、实现生产者和消费者问题的算法实现; 二、实验目的 1、熟悉临界资源、信号量及PV操作的定义与物理意义; 2、了解进程通信的方法; 3、掌握进程互斥与进程同步的相关知识; 4、掌握用信号量机制解决进程之间的同步与互斥问题; 5、实现生产者-消费者问题,深刻理解进程同步问题; 三、实验题目 在Windows操作系统下用C语言实现经典同步问题:生产者—消费者,具体要求如下: (1)一个大小为10的缓冲区,初始状态为空。 (2)2个生产者,随机等待一段时间,往缓冲区中添加数据,若 缓冲区已满,等待消费者取走数据之后再添加,重复10次。 (3)2个消费者,随机等待一段时间,从缓冲区中读取数据,若 缓冲区为空,等待生产者添加数据之后再读取,重复10次。 四、思想 本实验的主要目的是模拟操作系统中进程同步和互斥。在系统进程并发执行异步推进的过程中,由于资源共享和进程间合作而造成进程间相互制约。进程间的相互制约有两种不同的方式。 (1)间接制约。这是由于多个进程共享同一资源(如CPU、共享

输入/输出设备)而引起的,即共享资源的多个进程因系统协调使用资源而相互制约。 (2)直接制约。只是由于进程合作中各个进程为完成同一任务而造成的,即并发进程各自的执行结果互为对方的执行条件,从而限制各个进程的执行速度。 生产者和消费者是经典的进程同步问题,在这个问题中,生产者不断的向缓冲区中写入数据,而消费者则从缓冲区中读取数据。生产者进程和消费者对缓冲区的操作是互斥,即当前只能有一个进程对这个缓冲区进行操作,生产者进入操作缓冲区之前,先要看缓冲区是否已满,如果缓冲区已满,则它必须等待消费者进程将数据取出才能写入数据,同样的,消费者进程从缓冲区读取数据之前,也要判断缓冲区是否为空,如果为空,则必须等待生产者进程写入数据才能读取数据。 在本实验中,进程之间要进行通信来操作同一缓冲区。一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批量数据传送。有时,也把进程间控制在本实验中,进程之间要进行通信来操作同一缓冲区。一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批量数据传送。有时,也把进程间控制信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。 目前,计算机系统中用得比较普遍的高级通信机制可分为3大类:共享存储器系统、消息传递系统及管道通信系统。 ?共享存储器系统 共享存储器系统为了传送大量数据,在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读数据或写数据以实现通信。

《单片机系统设计》实验报告

短学期实验报告 (单片机系统设计) 题目: 专业: 指导教师: 学生姓名: 学号: 完成时间: 成绩:

基于单片机的交流电压表设计 目录 1系统的设计要求 (2) 2系统的硬件要求 (2) 2.1真有效值转换电路的分析 (2) 2.2放大电路的设计 (3) 2.3A/D转换电路的设计 (3) 2.4单片机电路的分析 (4) 2.5显示电路 (4) 3 软件设计 (5) 3.1 软件的总流程图 (5) 3.2 初始化定义与定时器初始化流程图 (5) 3.3 A/D转换流程图 (6) 3.4 数据处理流程图 (6) 3.5 数据显示流程图 (7) 4 调试 (7) 4.1 调试准备 (7) 4.2 关键点调试 (7) 4.3 测试结果 (8) 4.4 误差分析 (8) 5结束语 (8) 5.1 总结 (9) 5.2 展望 (9) 附录1 总原理图 (10) 附录2 程序 (10) 附录3 实物图 (14)

基于单片机的交流电压表设计 ****学院 ****专业 姓名 指导老师:******* 1 设计要求 (1)运用单片机实现真有效值的检测和显示。 (2)数据采集使用中断方式,显示内容为有效值与峰值交替进行。 2 硬件设计 本系统是完成一个真有效值的测量和显示,利用AD737将交流电转换成交流电压的有效值,用ADC0804实现模数转换,再通过单片机用数码管来显示。系统原理框图如图2-1所示。系统框图由真有效值转换电路、放大电路、A/D 转换电路、单片机电路、数码管显示电路五部分。 图2-1 原理框图 2.1 真有效值转换电路 真有效值转换电路主要是利用AD737芯片来实现真有效值直流变换的,即将输入的交流信号转换成直流信号的有效值,其原理图如图2-2所示。 图2-2 真有效值转换电路 由于AD737最大输入电压为200mV, 所以需要接两个二极管来限制输入电压,起到限幅的作用。如图中D1、D2,由IN4148构成,电容C6是耦合电容,电阻R1是限流电阻。 2.2 放大电路设计 放大电路主要是利用运放uA741来进行放大,电路原理图如图2-3所示。 A/D 转换 单片机 电路 显示 电路 转换 电路 交流 信号 放大 电路

数字通信原理实验报告

《数字通信原理与技术》实验报告 学院:江苏城市职业学院 专业:计算机科学与技术 班级: 姓名:___________ 学号: ________

实验一熟悉MATLAB环境 一、实验目的 (1)熟悉MATLAB的主要操作命令。 (2)掌握简单的绘图命令。 (3)用MATLAB编程并学会创建函数。 (4)观察离散系统的频率响应。 二、实验内容 (1)数组的加、减、乘、除和乘方运算。输入A=【1 2 3 4】,B=【3 4 5 6】,求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 (2)用MATLAB实现下列序列: a)x(n)=0.8n 0≦n≦15 b)x(n)=e(0.2+0.3j) 0≦n≦15 c)x(n)=3cos(0.125πn+0.2π)+0.2sin(0.25πn+0.1π) 0≦n≦15 d) 将c)中的x(n)扩展成以16为周期的函数x16(n)=x(n+16),绘出四个周期。 e) 将c)中的x(n)扩展成以10为周期的函数x10(n)=x(n+10),绘出四个周期。 (3) 绘出下列时间函数图形,对x轴、y轴以及图形上方均须加上适当的标注: a)x (t )=sin(2πt) 0≦n≦10s b) x (t)=cos(100πt)sin(πt) 0≦n≦14s 三、程序和实验结果 (1)实验结果: 1、A=[1,2,3,4] B=[3,4,5,6] C=A+B D=A-B E=A.*B F=A./B G=A.^B A =1 2 3 4 B =3 4 5 6 C =4 6 8 10 D =-2 -2 -2 -2 E =3 8 15 24 F =0.3333 0.5000 0.6000 0.6667 G =1 16 243 4096 >> stem(A) >> stem(B) >> stem(C) >> stem(D) >> stem(E) >> stem(F)

通信原理实验报告

实验一常用信号的表示 【实验目的】 掌握使用MATLAB的信号工具箱来表示常用信号的方法。 【实验环境】 装有MATLAB6.5或以上版本的PC机。 【实验内容】 1. 周期性方波信号square 调用格式:x=square(t,duty) 功能:产生一个周期为2π、幅度为1 ±的周期性方波信号。其中duty表示占空比,即在信号的一个周期中正值所占的百分比。 例1:产生频率为40Hz,占空比分别为25%、50%、75%的周期性方波。如图1-1所示。 clear; % 清空工作空间内的变量 td=1/100000; t=0:td:1; x1=square(2*pi*40*t,25); x2=square(2*pi*40*t,50); x3=square(2*pi*40*t,75); % 信号函数的调用subplot(311); % 设置3行1列的作图区,并在第1区作图plot(t,x1); title('占空比25%'); axis([0 0.2 -1.5 1.5]); % 限定坐标轴的范围 subplot(312); plot(t,x2); title('占空比50%'); axis([0 0.2 -1.5 1.5]); subplot(313); plot(t,x3); title('占空比75%'); axis([0 0.2 -1.5 1.5]);

图1-1 周期性方波 2. 非周期性矩形脉冲信号rectpuls 调用格式:x=rectpuls(t,width) 功能:产生一个幅度为1、宽度为width、以t=0为中心左右对称的矩形波信号。该函数横坐标范围同向量t决定,其矩形波形是以t=0为中心向左右各展开width/2的范围。Width 的默认值为1。 例2:生成幅度为2,宽度T=4、中心在t=0的矩形波x(t)以及x(t-T/2)。如图1-2所示。 t=-4:0.0001:4; T=4; % 设置信号宽度 x1=2*rectpuls(t,T); % 信号函数调用 subplot(121); plot(t,x1); title('x(t)'); axis([-4 6 0 2.2]); x2=2*rectpuls(t-T/2,T); % 信号函数调用

单片机实验报告

实验一:8255输入、输出实验 一.实验要求 编写程序,使用8255可编程并行口芯片,来检测八位拨动开关的状态,并控制八位发光二极管。使得八位发光二极管的亮灭变化与八位拨动开关的状态相一致。实验中用8255PB口作输入,PC口做输出。 二.实验目的 了解8255芯片结构及编程方法。 三.实验电路及连线 8255的PB0~PB7(PB口)接至八位拨动开关K0~K7。 将PC0~PC7(PC口)接至八位发光二极管L0 – L7。CS8255接F228。 四.实验说明 可编程通用接口芯片8255A有三个八位的并行I/O口,请用户仔细阅读有关书籍掌握其特点和各种用法。 由于8255的A1、A2脚分别接至地址线的A0、A1。所以相对应8255各口/寄存器的地址分配如下:PA口:F228H; PB口:F229H;PC口:F22AH;控制寄

存器地址:F22BH。 本示例程序中使用PB口作输入,检测八位拨动开关的状态;使用PC口作输出,控制八个发光二极管的亮灭。 五.实验程序及框图 实验示例程序见8255.ASM。 实验示例程序流程框图如下: 开 设置8255 工作状态 PB口读入八 位开关量 PC口输出至八 位二极管 程序代码: ;FOR EAT598 ;--------------------------------------------------------- D8255 EQU 0F22BH ;8255命令口地址 D8255A EQU 0F228H ;8255 PA口地址 D8255B EQU 0F229H ;8255 PB口地址 D8255C EQU 0F22AH ;8255 PC口地址 ;--------------------------------------------------------- ORG 0000H LJMP START ORG 0100H START: LCALL DELAY ;延时 MOV DPTR,#D8255 MOV A,#82H ;置8255状态 ;方式0,PA,PC口输出,PB口输入MOVX @DPTR,A ROTATE: MOV DPTR,#D8255B MOVX A,@DPTR ;读开关状态

数字通信实验报告

Digital Communication Project 姓名:王志卓 学号:514104001502

在PSK调制时,载波的相位随调制信号状态不同而改变。如果两个频率相同的载波同时开始振荡,这两个频率同时达到正最大值,同时达到零值,同时达到负最大值,此时它们就处于―同相‖状态;如果一个达到正最大值时,另一个达到负最大值,则称为―反相‖。把信号振荡一次(一周)作为360度。如果一个波比另一个波相差半个周期,两个波的相位差180度,也就是反相。当传输数字信号时,―1‖码控制发0度相位,―0‖码控制发180度相位。 PSK相移键控调制技术在数据传输中,尤其是在中速和中高速的数传机(2400bit/s~4800bit/s)中得到了广泛的应用。相移键控有很好的抗干扰性,? 在有衰落的信道中也能获得很好的效果。主要讨论二相和四相调相,在实际应用中还有八相及十六相调相。 PSK也可分为二进制PSK(2PSK或BIT/SK)和多进制PSK(MPSK)。在这种调制技术中,载波相位只有0和π两种取值,分别对应于调制信号的―0‖和―1‖。传―1―信号时,发起始相位为π的载波;当传―0‖信号时,发起始相位为0的载波。由―0‖和―1‖表示的二进制调制信号通过电平转换后,变成由―–1‖和―1‖表示的双极性NRZ(不归零)信号,然后与载波相乘,即可形成2PSK信号,在MPSK中,最常用的是四相相移键控,即QPSK (QuadraturePhaseShiftKeying),在卫星信道中传送数字电视信号时采用的就是QPSK调制方式。可以看成是由两个2PSK调制器构成的。输入的串行二进制信息序列经串—并变换后分成两路速率减半的序列,由电平转换器分别产生双极性二电平信号I(t)和Q(t),然后对载波Acos2πfct和Asin2πfct进行调制,相加后即可得到QPSK信号。 PSK信号也可以用矢量图表示,矢量图中通常以零度载波相位作为参考相位。四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四进制移相键控。QPSK是在M=4时的调相技术,它规定了四种载波相位,分别为45°,135°,225°,315°。调制器输入的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两比特分成一组,共有四种组合,即00,01,10,11,其中每一组称为双比特码元。每一个双比特码元是由两位二进制信息比特组成的,它们分别代表四进制四个符号中的一个符号。QPSK中每次调制可传输2

通信原理实验报告

通信原理实验报告 一.实验目的 熟悉掌握MATLAB软件的应用,学会对一个连续信号的频谱进行仿真,熟悉sigexpand(x2,ts2/ts1)函数的意义和应用,完成抽样信号对原始信号的恢复。 二.实验内容 设低通信号x(t)=cos(4pi*t)+1.5sin(6pi*t)+0.5cos(20pi*t); (1)画出该低通信号的波形 (2)画出抽样频率为fs=10Hz(亚采样)、20Hz(临界采样)、50Hz(过采样)的抽样序列 (3)抽样序列恢复出原始信号 (4)三种抽样频率下,分别分析对比模拟信号、离散采样信号、恢复信号的时域波形的差异。 原始信号与恢复信号的时域波形之差有何特点?有什么样的发现和结论? (5)三种抽样频率下,分别分析对比模拟信号、离散采样信号、恢复信号的频域特性的差异。 原始信号与恢复信号的频域波形之差有何特点?有什么样的发现和结论? 实验程序及输出结果 clear; close all; dt=0.05; t=-2:dt:2 x=cos(4*pi*t)+1.5*sin(6*pi*t)+0.5*cos(20*pi*t); N=length(t); Y=fft(x)/N*2; fs=1/dt; df=fs/(N-1); f=(0:N-1)*df; subplot(2,1,1) plot(t,x) title('抽样时域波形') xlabel('t') grid; subplot(2,1,2) plot(f,abs(Y)); title('抽样频域信号 |Y|'); xlabel('f'); grid;

定义sigexpand函数 function[out]=sigexpand(d,M) N=length(d); out=zeros(M,N); out(1,:)=d; out=reshape(out,1,M*N); 频域时域分析fs=10Hz clear; close all; dt=0.1; t0=-2:0.01:2 t=-2:dt:2 ts1=0.01 x0=cos(4*pi*t0)+1.5*sin(6*pi*t0)+0.5*cos(20*pi*t0); x=cos(4*pi*t)+1.5*sin(6*pi*t)+0.5*cos(20*pi*t); B=length(t0); Y2=fft(x0)/B*2; fs2=1/0.01; df2=fs2/(B-1); f2=(0:B-1)*df2; N=length(t); Y=fft(x)/N*2;

进程间通信实验报告

进程间通信实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求: Linux系统的进程通信机构 (IPC) 允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉Linux支持的消息通讯机制及信息量机制。 实验内容与分析设计: (1)消息的创建,发送和接收。 ①使用系统调用msgget (), msgsnd (), msgrev (), 及msgctl () 编制一长度为1k 的消息的发送和接收程序。 ②观察上面的程序,说明控制消息队列系统调用msgctl () 在此起什么作用? (2)共享存储区的创建、附接和段接。 使用系统调用shmget(),shmat(),sgmdt(),shmctl(),编制一个与上述功能相同的程序。(3)比较上述(1),(2)两种消息通信机制中数据传输的时间。 实验步骤与调试过程: 1.消息的创建,发送和接收: (1)先后通过fork( )两个子进程,SERVER和CLIENT进行通信。 (2)在SERVER端建立一个Key为75的消息队列,等待其他进程发来的消息。当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER 。SERVER每接收到一个消息后显示一句“(server)received”。 (3)CLIENT端使用Key为75的消息队列,先后发送类型从10到1的消息,然后退出。最后的一个消息,既是 SERVER端需要的结束信号。CLIENT每发送一条消息后显示一句“(client)sent”。 (4)父进程在 SERVER和 CLIENT均退出后结束。 2.共享存储区的创建,附接和断接: (1)先后通过fork( )两个子进程,SERVER和CLIENT进行通信。 (2)SERVER端建立一个KEY为75的共享区,并将第一个字节置为-1。作为数据空的标志.等待其他进程发来的消息.当该字节的值发生变化时,表示收到了该消息,进行处理.然后再次把它的值设为-1.如果遇到的值为0,则视为结束信号,取消该队列,并退出SERVER.SERVER 每接收到一次数据后显示”(server)received”. (3)CLIENT端建立一个为75的共享区,当共享取得第一个字节为-1时, Server端空闲,可发送请求. CLIENT 随即填入9到0.期间等待Server端再次空闲.进行完这些操作后, CLIENT退出. CLIENT每发送一次数据后显示”(client)sent”. (4)父进程在SERVER和CLIENT均退出后结束。 实验结果: 1.消息的创建,发送和接收: 由 Client 发送两条消息,然后Server接收一条消息。此后Client Server交替发送和接收消息。最后一次接收两条消息。Client 和Server 分别发送和接收了10条消息。message 的传送和控制并不保证完全同步,当一个程序不再激活状态的时候,它完全可能继续睡眠,造成上面现象。在多次send message 后才 receive message.这一点有助于理解消息转送的实现机理。

单片机原理及应用实验报告

单片机原理实验报告 专业:计算机科学与技术 学号: :

实验1 计数显示器 【实验目的】 熟悉Proteus仿真软件,掌握单片机原理图的绘图方法 【实验容】 (1)熟悉Proteus仿真软件,了解软件的结构组成与功能 (2)学习ISIS模块的使用方法,学会设置图纸、选元件、画导线、修改属性等基本操作 (3)学会可执行文件加载及程序仿真运行方法 (4)理解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制【实验步骤】 (1)观察Proteus软件的菜单、工具栏、对话框等基本结构 (2)在Proteus中绘制电路原理图,按照表A.1将元件添加到编辑环境中(3)在Proteus中加载程序,观察仿真结果,检测电路图绘制的正确性 表A.1

Switches&Relays BUT BUTTON 【实验原理图】 【实验源程序】 #include sbit P3_7=P3^7; unsigned char x1=0;x2=0 ; unsigned char count=0; unsigned char idata buf[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(int time) { int k,j;

for(;time<0;time--) for(k=200;k>0;k--) for(j=500;j<0;j--); } void init() { P0=buf[x1]; delay(10); P2=buf[x2]; delay(10); } void main() { init(); while(1) { x1=count/10; x2=count%10; P0=buf[x1]; delay(10);

数据通信实验报告

电子科技大学 实验报告 实验一 NS2的基础使用 NS2是一种提供虚拟环境进行网络模拟仿真,能验证网络性能的正确性和进行相关性能测试的软件。 一、实验环境: Ubuntu 12.04/kernel 3.5 GCC 4.6.3 NS-2.33 二、网络拓扑: 实验共有6个节点,每个节点的连接情况如图所示。其中节点N0、N2和节点N1、N2连接,N3、N4和N4、N5连接,N2和N3连接。从0号节点到2号节点,带宽为2Mb,延时为10ms。 三、实践步骤: 切换到用户根目录下cd ~ 建立自己的文件夹mkdir your_document_name 进入刚刚新建的文件夹cd your_document_name 新建一个TCL 脚本文件gedit your_TCL_file_name.tcl #Here is the beginning of this code file set val(stop) 5.0 ;# 模拟器结束时间 #新建一个NS 模拟对象 set ns [new Simulator] #打开NS 追踪文件 set tracefile [open out.tr w] $ns trace-all $tracefile

#打开NAM 追踪文件 set namfile [open out.nam w] $ns namtrace-all $namfile #新建6 个节点 set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #建立节点之间的链路,格式解释如下 #duplex-link 双向链路可选选项(duplex-link,simple-link 单向链路) #$n0 $n2 表明从0 号节点到2 号节点 #2.0Mb 申明链路传输速率,可使用Mb,Kb,b #10ms 申明链路传输延迟 #DropTail 队列类型 $ns duplex-link $n0 $n2 2.0Mb 10ms DropTail #申明链路队列长度 $ns queue-limit $n0 $n2 10 $ns duplex-link $n1 $n2 2.0Mb 10ms DropTail $ns queue-limit $n1 $n2 10 $ns duplex-link $n4 $n3 2.0Mb 10ms DropTail $ns queue-limit $n4 $n3 10 $ns duplex-link $n3 $n2 1.0Mb 20ms DropTail $ns queue-limit $n3 $n2 10 $ns duplex-link $n3 $n5 2.0Mb 10ms DropTail $ns queue-limit $n3 $n5 10 #为NAM 创建节点位置描述,以第一个为例,2 号节点在0 号节点的右下方 $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n4 $n3 orient left-down $ns duplex-link-op $n3 $n2 orient left $ns duplex-link-op $n3 $n5 orient right-down #新建一个UDP 连接 set udp0 [new Agent/UDP] #将0 号节点Agent/UDP 绑定,以下类似 $ns attach-agent $n0 $udp0 set null2 [new Agent/Null] $ns attach-agent $n4 $null2 #将Agent/UDP 及Agent/Null 节点进行连接 $ns connect $udp0 $null2 #设置Agent/UDP 包大小

相关文档
最新文档