实验三 数据的输入输出

合集下载

实验三组合逻辑电路应用——译码器、数据选择器

实验三组合逻辑电路应用——译码器、数据选择器

实验三组合逻辑电路应用——译码器、数据选择器
译码器和数据选择器是现代数字电子学中常用的两种组合逻辑电路。

它们可以将输入
的二进制信号转换为对应的输出信号,并且在数字电路中具有广泛的应用。

一、译码器
译码器是一种将输入的二进制信号转换成对应输出信号的数字电路。

译码器的作用是
将输入的地址码转换成溢出电路所能识别的控制信号,通常用来将不同的地址码映射到不
同的设备或功能上。

比如在存储器系统中,根据不同地址码,从RAM或者ROM中取出相应
的数据或指令。

除此之外,译码器还可以用于数据压缩、解码、解密等领域。

在一些数字电路中,译
码器还可以充当多路复用器、选择器等电路的功能。

译码器的分类按照其输入和输出的码制不同,可以分为译码器、BCD译码器、灰码译
码器等。

其中,最常见的是2-4译码器、3-8译码器、4-16译码器等。

二、数据选择器
数据选择器是一种多路选择器,根据控制信号选择输入端中的一个数据输出到输出端。

选择器的控制信号通常由一个二进制码输入到它的控制端,二进制码的大小由选择器的通
道数决定。

数据选择器广泛用于控制、多媒体处理、信号处理等方面。

数据选择器与译码器相比,最主要的区别在于其输出可以不仅限于数字信号。

数据选
择器可以处理模拟信号、复合信号等多种形式的信号,因为它可以作用于信号的幅度、相位、频率等方面。

数据选择器按照输入和输出的端口取数的不同,可以分为单路选择器和多路选择器。

常见的有2-1选择器、4-1选择器、8-1选择器、16-1选择器等。

实验三 8255_1_输入_输出实验报告

实验三 8255_1_输入_输出实验报告

实验三开关量输入与显示
一、实验要求
编写程序,通过8255的A口读取开关的状态,并在C口所连接的LED灯上显示出来。

二、实验目的
通过使8255读取开关量,进一步掌握8255的编程方法。

三、连接图
图1
四、实验程序框图
五实验过程及步骤
1 按实验要求连接线,将K1~K8连PA0~PA7,PC0~PC7连DL1~DL8,CS连200~207H。

连线结果如上图1所示。

2 对8255进行初始化:方式控制字为90h
3 读入A口状态:
mov dx,200h
in al,dx
4 写入C口
not al
mov dx,202h
out dx,al
5延迟代码段
mov cx,0fffh
lop:loop lop ;延迟,便于观察实验现象
6 运行程序,观察实验结果。

并改变开关的状态,再运行,观察不同开关状态下,LED灯的亮灭情况。

六实验结果
开关打开,相应的LED灯会亮;开关关闭,相应的LED会熄灭。

实验源代码
code segment
assume cs:code
start:
mov dx,203h;对8255进行初始化
mov al,90h
out dx,al
gg:
mov dx,200h ;写入A口
in al,dx
not al
mov dx,202h ;从C口输出
out dx,al
mov cx,0fffh
lop:loop lop ;延迟,便于观察实验现象
jmp gg
code ends
end start。

数字量输入输出实验

数字量输入输出实验

数字量输入输出实验一、实验目的了解P1口作为输入输出方式使用时,CPU 对P1口的操作方式。

二、实验环境1、软件环境要求Windows XP操作系统以及Keil C51 单片机集成开发环境。

2、硬件环境要求电脑一台,TD-51单片机系统,开关及LED显示单元,单次脉冲单元。

三、实验内容编写实验程序,将P1口的低4位定义为输出,高4位定义为输入,数字量从P1口的高4位输入,从P1口的低4位输出控制发光二极管的亮灭。

提高部分:LED灯控制要求:通过KK1实现LED灯工作方式即时控制,完成LED灯左循环、右循环、间隔闪烁功能。

四、实验分析P1口是8位准双向口,每一位均可独立定义为输入输出,输入位置1。

通过A的左/右移位及赋值55H、0AAH,再将A值送入P1,可实现LED灯左循环、右循环、间隔闪烁功能。

五、实验步骤(一)基础实验程序及实验程序流程图如下。

实验程序:ORG 0000HLJMP MAINORG 0100HMAIN:MOV P1,#0F0H ;将开关状态送入P1高位MOV A,P1 ;送入ASWAP A ;高低位互换MOV P1,A ;将开关状态送入P1低位JMP MAIN ;循环SJMP $END程序流程图:图1 LED开关控制显示功能图图2 实验接线图实验步骤:1. 按图2所示,连接实验电路图,图中“圆圈”表示需要通过排线连接;2. 编写实验程序,编译链接无误后进入调试状态;3. 运行实验程序,观察实验现象,验证程序正确性;4. 按复位按键,结束程序运行,退出调试状态;5. 自行设计实验,验证单片机其它IO 口的使用。

(二)提高实验程序及实验程序流程图如下。

实验程序:实验程序流程图:ORG 0000HLJMP MAINORG 0100HMAIN:KT: ;检查KK1SETB P3.3JNB P3.3,KTCLR P3.3LL1: ;左循环MOV A,#01HX1:MOV P1,ACALL DELAYRL ASETB P3.3JNB P3.3,X1CLR P3.3LL2: ;右循环MOV A,#80HX2:MOV P1,ACALL DELAYRR ASETB P3.3JNB P3.3,X2CLR P3.3LL3: ;间隔闪烁MOV A,#55HMOV P1,ACALL DELAYMOV A,#0AAHMOV P1,ACALL DELAYSETB P3.3JNB P3.3,LL3CLR P3.3JMP KTDELAY: ;延时子程序MOV R2,#00H图3 实验流程图MOV R3,#00HABC:DJNZ R2,ABCDJNZ R3,ABCRETSJMP $END实验步骤:(1)按图4连接实验电路;(2)编写实验程序,编译、链接无误后启动调试;(3)运行实验程序,每按一次KK1+,观察实验现象;(4)验证程序功能,实验结束按复位按键退出调试。

实验五 三人表决器实验报告

实验五    三人表决器实验报告

实验五三人表决器实验报告一、实验目的本次实验的主要目的是设计并实现一个三人表决器,通过逻辑门电路来判断三个输入信号的多数情况,从而输出相应的表决结果。

通过这个实验,我们将深入理解数字逻辑电路的基本原理和设计方法,提高我们的电路分析和设计能力。

二、实验原理三人表决器的功能是当有两个或三个输入为“1”时,输出为“1”;否则,输出为“0”。

我们可以使用逻辑门电路来实现这个功能。

首先,我们可以使用与门和或门来构建这个电路。

将三个输入信号分别标记为 A、B、C。

我们先将 A、B 进行与运算,得到结果 D;再将 B、C 进行与运算,得到结果 E;然后将 A、C 进行与运算,得到结果 F。

接着,将 D、E、F 进行或运算,得到结果 G。

最后,将 G 再进行一次非运算,就得到了最终的表决结果 Y。

其逻辑表达式为:Y =((A ∧ B)∨(B ∧ C)∨(A ∧ C))。

三、实验器材1、数字电路实验箱2、 74LS00 四 2 输入与非门芯片3、 74LS08 四 2 输入与门芯片4、 74LS32 四 2 输入或门芯片5、导线若干四、实验步骤1、按照实验原理,在数字电路实验箱上连接电路。

将 74LS00、74LS08 和 74LS32 芯片插入相应的插槽中,并使用导线将各个芯片的引脚连接起来,形成完整的三人表决器电路。

2、连接输入信号。

将三个开关分别连接到 A、B、C 输入端口,用于模拟三个表决人的表决情况。

3、观察输出结果。

打开实验箱电源,通过拨动三个开关的状态(“0”表示反对,“1”表示赞成),观察输出端口的指示灯状态,以确定表决结果。

4、记录实验数据。

分别记录不同输入组合情况下的输出结果,并填写在实验表格中。

五、实验数据及结果分析|输入 A |输入 B |输入 C |输出 Y ||||||| 0 | 0 | 0 | 0 || 0 | 0 | 1 | 0 || 0 | 1 | 0 | 0 || 1 | 0 | 0 | 0 || 0 | 1 | 1 | 1 || 1 | 0 | 1 | 1 || 1 | 1 | 0 | 1 || 1 | 1 | 1 | 1 |通过对实验数据的分析,我们可以发现,当输入为000、001、010、100 时,输出为 0;当输入为 011、101、110、111 时,输出为 1,这与我们预期的三人表决器的功能完全一致。

实验三 数据流图与数据字典

实验三 数据流图与数据字典

实验三数据流图与数据字典数据流图与数据字典是软件工程中常用的工具,用于描述系统的信息流动和数据处理过程。

本文将详细介绍数据流图和数据字典的定义、组成部分、绘制方法以及使用场景。

一、数据流图的定义和组成部分数据流图(Data Flow Diagram,简称DFD)是一种图形化工具,用于描述系统中数据的流动和处理过程。

它由一系列的图形符号组成,包括实体(Entity)、过程(Process)、数据流(Data Flow)和数据存储(Data Store)。

1. 实体(Entity):实体代表系统的外部对象,可以是人、组织或其他系统。

它们与系统交互,输入和输出数据流。

2. 过程(Process):过程表示对数据流进行处理的功能模块或子系统。

它接收输入数据流,执行一定的操作,并产生输出数据流。

3. 数据流(Data Flow):数据流表示数据在系统中的传输路径。

它可以是输入数据流,也可以是输出数据流。

4. 数据存储(Data Store):数据存储用于存储系统中的数据。

它可以是数据库、文件或其他数据存储介质。

二、数据流图的绘制方法绘制数据流图的方法主要有两种:基于功能分解和基于数据流分析。

1. 基于功能分解的数据流图绘制方法:(1)确定系统的功能模块:根据需求分析,将系统的功能划分为多个模块或子系统。

(2)绘制顶层数据流图:将系统的输入和输出数据流与功能模块连接起来,形成顶层数据流图。

(3)细化数据流图:对每个功能模块进行进一步细化,绘制下一级数据流图,直到达到足够细节的层次。

2. 基于数据流分析的数据流图绘制方法:(1)识别数据流和数据存储:通过需求分析,识别系统中的数据流和数据存储。

(2)绘制顶层数据流图:将数据流和数据存储与功能模块连接起来,形成顶层数据流图。

(3)细化数据流图:对每个功能模块进行进一步细化,绘制下一级数据流图,直到达到足够细节的层次。

三、数据字典的定义和组成部分数据字典(Data Dictionary)是数据流图的补充,用于详细描述数据流图中使用的数据元素和数据结构。

数字电路实验报告3

数字电路实验报告3

数字电路实验报告3实验目的本实验旨在通过实际操作,进一步了解数字电路中的加法器和减法器的基本原理,并通过观察和分析实验结果,加深对数字电路的理解。

实验原理加法器加法器是数字电路中常用的逻辑电路,用于将两个二进制数相加。

常见的加法器有半加法器、全加法器等。

在本实验中,我们将使用半加法器和全加法器来实现二进制数的加法运算。

半加法器是最基本的加法器,它只能实现1位二进制数的相加。

半加法器有两个输入端A和B,表示要相加的两个二进制位,以及两个输出端Sum和Carry,分别表示相加的结果和进位。

全加法器是在半加法器的基础上进行改进,可以实现多位二进制数的相加。

全加法器有三个输入端A、B和Carry-in,分别表示要相加的两个二进制位和进位。

它还有两个输出端Sum和Carry-out,分别表示相加的结果和进位。

减法器减法器是用于实现二进制数的减法运算的数字电路。

它可以将两个二进制数相减,并得到减法的结果。

在本实验中,我们将使用全减法器来实现二进制数的减法运算。

全减法器是将半减法器进行组合得到的。

它有三个输入端A、B和Borrow-in,分别表示被减数、减数和借位。

它还有两个输出端Diff和Borrow-out,分别表示减法的结果和借位。

实验步骤1.搭建半加法器电路:根据半加法器的原理图,使用逻辑门和触发器等器件,搭建一个半加法器电路。

2.连接输入端:将两个二进制数的相应位连接到半加法器电路的输入端A和B上。

3.连接输出端:将半加法器电路的输出端Sum和Carry连接到示波器上,用于观察结果。

4.输入数据:给输入端A和B分别输入二进制数,记录输入的数值。

5.观察结果:观察示波器上显示的结果,并记录下来。

6.分析结果:根据观察到的结果,分析二进制数的相加运算是否正确,以及进位是否正确。

7.搭建全加法器电路:根据全加法器的原理图,使用逻辑门和触发器等器件,搭建一个全加法器电路。

8.连接输入端:将两个二进制数的相应位和进位信号连接到全加法器电路的输入端A、B和Carry-in上。

实验三、matlab输入输出的应用(1-7章的内容)

实验三、matlab输入输出的应用(1-7章的内容)

实验3、输入输出的应用目的与要求:掌握自定义函数的使用掌握matlab 输入和输出的应用实验内容:1、产生一个1x10的均匀随机矩阵,大小范围为[-5 5],并且按照从大到小的顺序排列。

2、设 y=cos[0.5+((3sinx)/(1+x^2))]把x=[0,2π]间分为101点,画出以x 为横坐标,y 为纵坐标的曲线;线条颜色为红色,线型为虚线。

3、创建M 文件,提示用户输入下面的矩阵,用函数max 计算矩阵中的最大值。

提示用户输入的矩阵为:[1 5 3 8 9 22]4、将一个屏幕分4幅,选择合适的步长在右上幅与左下幅绘制出下列函数的图形。

①y=]22[)cos(ππ,,-∈x x (曲线图); ②4)y 2,-4x (-242),(2222≤≤≤≤+=;y x y x f (三维曲面图)。

5、请自己定义函数,函数名为qj (注意保持时候函数名和文件名一致)y=1*2*3*…*n (注意函数文件不可以直接运行,只能被调用)(1)求前n 项积,n 为自然数。

(2)给出调用命令,如n=100时的结果。

6、根据当前美元和人民币的汇率,提示用户输入美元的起始值和终止值,步长为1,将美元人和民币的兑换输出结果绘制成表格,要求用disp 在表格中添加标题和表头。

(参考p181例7.2)7、首先阅读程序,理解程序的作用,然后修改下面的程序,让他们没有循环语句!修改后的程序与源程序得到相当的结果。

A=[1 2 3; 4 5 6; 7 8 9];[r,c]=size(A);for i=1:1:rfor j=1:1:cif (A(i,j)>8 | A(i,j)<2)A(i,j)=0;endendendA。

C语言实验报告 实验三 参考答案

C语言实验报告 实验三  参考答案

实验三循环结构程序设计(参考答案)1、设计程序sy3-1.c,计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数之和。

例如输入n 的值为20时,输出0.583333。

算法分析:穷举1~n(含n)之间的每一个整数,能否被5或者9整除。

如果能,则把它的倒数累加到累加器里去。

因为能被5整除的自然数,应该至少从5才可能,所以循环控制变量i可以5开始。

参考答案:#include<stdio.h>void main(){int n,i;double s=0; //累加器要赋初值为0,结果为小数,所以定义为实数类型printf("请输入n的值:");scanf("%d",&n);for(i=5;i<=n;i++) //穷举小于等于n的自然数if(i%5==0||i%9==0)s=s+1.0/i;// 因为i是整数类型,所以1/i的值为0printf("s=%f\n",s);}运行结果:2、设计程序sy3-2.c,计算并输出给定整数n的所有因子(不包括1与自身)之和。

例如,输入n的值是856时,应输出763。

算法分析:因子,就是能整除n的值。

所以从2到n-1穷举每个数是不是它的因子,是就累加到s中。

参考答案:#include<stdio.h>void main(){int s=0,n,i;printf("请输入n:");scanf("%d",&n);for(i=2;i<n;i++) //穷举所有可能为因子的整数if(n%i==0) //因子即是能整除n的数s=s+i;printf("%d的所有因子之和是:%d\n",n,s);}运行结果:3、设计程序sy3-3.c,输入一个整数,要求将该整数上各位数字是偶数的数取出,并按原来从高位到低位的顺序组成一个新数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目7 自加、自减运算符以及printf的输出顺序问题
仔细分析下列程序,写出运行结果,再输入到计算机运行,将得到 的结果与你分析所得到的结果进行比较对照。
#include <stdio.h> void main() { int i , j , m=0 , n=0 ; i=6; j=9; m+= i ++; n -= --j; printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n); } 再将printf语句改为: printf("%d,%d,%d,%d",i,j,i++,j++); 给出数中的格式转换符有什 么区别? 2. 根据上面的上机练习,总结出scanf()函数在 输入数据时,要注意哪些问题?
题目4 按格式要求输入/输出数据
#include "stdio.h" void main() { int a,b; float x,y; char c1,c2; scanf(“a=%d,b=%d”,&a,&b);
//注意在键盘上输入数据的格式必须和scanf中的格式一 致 scanf(“%f, %e”,&x,&y); scanf(“&c &c”,&c1,&c2); //注意在键盘上输入数据的格式必须和scanf中的格式一 致 printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2); } 调试该程序,如有语法错误,给出修改。无语法错误后,运行该程 序,按如下方式在键盘上输入数据 a=3,b=7 ↙ 8.5,71.82 ↙ a,A ↙ 写出输出结果,并对结果进行分析。 把以上程序进行修改为以下程序: #include "stdio.h" void main() { int a,b; float x,y; char c1,c2; scanf(“a=%5d,b=%3d”,&a,&b); scanf(“%f, %e”,&x,&y); c1=getchar(); c2=getchar(); printf(“a=%6d,b=%d,x=%2.3f,y=%f \n”,a,b,x,y); putchar(c1); putchar(c2); } 调试该程序,如有语法错误,给出修改。无语法错误后,运行该程 序,按如下方式在键盘上输入数据: a= 3,b= 7 ↙ 8.5,71.82 ↙ a,A ↙ 仔细分析结果,最终能得到什么结论。分析使用getchar和scanf的 区别和联系,putchar和printf的区别和联系。
(提示:printf()函数占了两行,在第一行末尾使用了一个反斜杠 (\)指出字符串将延续到下一行,因此编译器将把这两行代码视为一 行) 运行结果: (3)运行结果,并对每条程序加以注释。 #include <stdio.h> #include <math.h> main() { float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2); } 输入:a=1,b=3,c=2 运行结果: (4)观察以下代码的运行结果是否会显示在同一行? #include<stdio.h> void main() { printf(“hello, ”); printf(“world”); } 运行结果: (5)学习使用按位与& 运算。 程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 #include <stdio.h> void main() { int a,b; a=077; b=a&3; printf("\40: The a & b(decimal) is %d \n",b); b&=7; printf("\40: The a & b(decimal) is %d \n",b); } 运行结果:
题目5 纠正程序中存在错误
下列程序的功能为:输入1个字母后,输出该字母的前序字母、该 字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出 ZAB;输入M,则输出LMN;输入Z,则输出YZA。 #include <stdio.h> void main() { char ch,c1,c2; printf("Enter a character:"); getchar(); //① if((ch>='a')||(ch<='z')) //② ch-=32; c1=ch-1; c2=ch+1; if(ch='A') c1=ch+25; //③ else if(ch='Z') c2=ch-25; //④ putchar(c1); putchar(ch); putchar(c2); putchar('\n'); }
#include <stdio.h> void main( ) { int a=1234; float f=123.456; char c[]="Hello,world!"; printf("%8d,%-8d\n",a,a); printf("%10.2f,%-10.1f\n",f,f); printf("%10.5s,%-10.3s\n",c,c); printf("%08d\n",a); printf("%010.2f\n",f); printf("%0+8d\n",a); printf("%0+10.2f\n",f); } (4)getchar与 putchar的使用 #include<stdio.h> void main() { char c1,c2; /*思考:此处能否为int型*/ c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); putchar('\n'); printf("c1=%d,c2=%d\n",c1,c2); printf("c1=%c,c2=%c\n",c1,c2); } 输入:B1 输出: 说明每输出项的含义? 输入:B 输出: 说明每输出项的含义?
题目3 在程序的空白处填入正确的语句
程序填空,使得程序能正常执行并完成规定的功能。 (1)以下程序的功能是从键盘上输入一个整型数,一个实型数和一 个字符型数,并把它们在屏幕上输出,完成以下填空,并把程序调通,
写出运行结果。 #include "stdio.h" void main() { int a;float b;char c; scanf("%d,%f,%c", ① ); printf("a= ② \n",a); printf("b= ③ \n",b); printf("c= ④ \n",c); } (2)下列程序的功能为:判断从键盘上输入的一个字符,并按下 列要求输出。 若该字符是数字 输出字符串"0-9" 若该字符是大写字母 输出字符串"A-Z" 若该字符是小写字母 输出字符串"a-z" 若该字符是其他字符 输出字符串"!,@,…" #include <stdio.h> void main() { char c; scanf( ① ); if('0'<=c&&c<='9') //关系表达式判“若该字符是数字” printf("0-9\n"); else if( ② ) //关系表达式判“若该字符是大写字母” printf( ③ ); //输出字符串"A-Z" else if ( ④ ) //关系表达式判“若该字符是小写字母” printf(" ⑤ ");//输出字符串"a-z" else printf("!,@,…\n"); }
题目2 体验数据格式输入、输出的效果
分析以下程序,假设依据给定的内容输入,其输出会怎样?实际运 行并按照要求输入,比较其输出结果与分析的结果是否一致。 (1)十、八、十六进制数的输入与输出 #include "stdio.h" void main() { int a,b,c,d; scanf("%d,%x,%o,%c",&a,&b,&c,&d); printf("a=%d,b=%d,c=%d,d=%c\n",a,b,c,d); } 输入:10,10,10,10 输出: 输入:10 10 10 10 输出: 正确否?为什么? (2)控制字符与修饰符使用1 #include "stdio.h" void main() { int a,d; float b; char c; scanf("%2d%*2d%2f%2c%d",&a,&b,&c,&d); printf("a=%d,b=%f,c=%c,d=%d\n",a,b,c,d); } 输入:12345678900 输出: 输入:123456789m0 输出: 输入:12 34 56 78900 输出: 输入:1,23,456,7890 输出: 正确否?为什么? 输入:使用回车键输入,下列哪一组正确?为什么? 12↙ 12↙ 34↙ 34↙ 56↙ 5678900↙ 78900↙ (3)格式字符与修饰符使用2
相关文档
最新文档