当前位置:文档之家› 实验四_循环结构汇编语言程序设计实验报告

实验四_循环结构汇编语言程序设计实验报告

实验四_循环结构汇编语言程序设计实验报告
实验四_循环结构汇编语言程序设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计

一、实验目的

1、学习循环结构的汇编语言程序的设计和调试。

2、学习通过直接对8086计算机的寄存器和内存的直接访问,编写更高效简洁的汇编程序。

3、加深掌握计算机整体的工作过程。

3、加深对排序算法的理解。

二、实验任务

编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……)

三、实验内容

为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。

1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如

下所示:

2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境

PC机:winXP/win7(32位)/win7(64位)+winxp 虚拟机

汇编工具:Masm.exe+Link.exe。

五、实验步骤

1)建立和生成的文件

(1)编写的源程序,源程序名为abc、扩展名为.asm

(2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj

(3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe

2)汇编环境

最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如huibian)中,并将文件夹huibian放在硬盘根目录C :\>下

3)上机步骤

进入DOS窗口中执行。

4)调试程序

进入DEBUG后,调试程序

5)调试成功后重新汇编、连接并生成可执行代码

6)执行程序,并对运行结果截图。

利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48)

利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

六、实验心得

通过本次循环结构汇编语言程序设计的实验,我初步了解了汇编语言的基本语法,利用汇编语言的循环结构实现了对于数组A中元素的排序以及求得元素中的最大值最小值。另外,在实验过程中,我也了解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。

七、汇编语言代码

1、利用冒泡排序实现求最大值最小值的代码

data segment

mes1 db 'the max:$'

mes2 db 'the min:$'

a dw 13,0,59,900,587,1,657,234,34,48

data ends

code segment

main proc far

assume cs:code,ds:data

start:

push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

;以下是起泡排序核心代码

mov cx,10

dec cx

loop1:

mov di,cx

mov bx,0

loop2:

mov ax,a[bx]

cmp a[bx+2],ax

jge cotinue

xchg ax,a[bx+2]

mov a[bx],ax

cotinue:

add bx,2

loop loop2

mov cx,di

loop loop1

mov dx,offset mes1

mov ah,09h

int 21h

mov bx,a[18]

call bini ;转换为十进制的子程序

mov dx,offset mes2

mov ah,09h

int 21h

mov bx,a[0]

call bini

ret

main endp

bini proc near

mov cx,10000d

call bin

mov cx,1000d

call bin

mov cx,100d

call bin

mov cx,10d

call bin

mov cx,1d

call bin

ret

bini endp

bin proc near

mov ax,bx

mov dx,0

div cx

mov bx,dx

mov dl,al

add dl,30h

mov ah,02h

int 21h

ret

bin endp

crlf proc near

mov dl,0ah

mov ah,02h

int 21h

mov dl,0dh

mov ah,02h

int 21

ret

crlf endp

code ends

end start

2、利用选择排序实现排序的代码

SAVEREG macro

push ax

push bx

push cx

push dx

push si

push di

endm

RESAVEREG macro

循环结构程序设计(C语言实验报告)

仲恺农业工程学院实验报告纸 信息学院(院、系) 专业 班 C 语言程序设计 课 实验目的: (1)熟练掌握用三种循环语句实现循环的方法。 (2)掌握在程序设计中用循环方法实现的一些常用算法。 (3)进一步学习调试程序。 实验内容与总结: 编程练习 1、打印出所有“水仙花数”——教材P129-6.6 程序如下: #include void main() { int i,j,k,n; for(n=100;n<1000;n++) { i=n/100; j=(n-i*100)/10; k=n-i*100-j*10; if(n==i*i*i+j*j*j+k*k*k) printf("水仙花数为:%d\n",n); } } (1)程序编制要点: ①用for 语句实现循环; ②立方的表示; ③if 语句的表达。 (2)该题目涉及的知识点和难点: ①for 语句的输入与使用; ②if 语句的使用。 2、用迭代法求a x = 。求平方根的公式为:)(211n n n x a x x +=+ 程序如下:

#include #include void main () { float x1,x2=1,a; printf("请输入求平方跟的数a="); scanf("%f",&a); do { x1=x2; x2=(x1+a/x1)/2; } while (fabs(x2-x1)>1e-5); printf("x的平方根是:%f\n",x2); } (1)程序编制要点: ①用do…while语句实现循环; ②平方根公式的输入; ③前后两次求出的x的差的绝对值小于1E-5。 (2)该题目涉及的知识点和难点: ①scanf函数,求绝对值函数fabs; ②do…while语句的输入与使用。 3、猜数字:编程先由计算机“想”一个1到100之间的整数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则结束游戏。 程序如下: #include #include /*使用srand和rand函数*/ #include /*使用time函数*/ void main() { int magic,guess,count=0; srand(time(NULL)); magic = rand() % 100 + 1; /*magic得到一个1到100的随机数*/ printf("请输入一个1到100之间的数,你共有10次机会:\n"); do { scanf("%d",&guess); count++; if((guess<=0)||(guess>=100))

左右来回循环的流水灯实验报告

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________ 院(部)____________________________ 专业________________班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 01 信息科学技术学院 计算机科学与技术0961 2012 12 27

摘要 (2) 1、单片机概述 (2) 2、仿真软件介绍 (2) 3、需求分析 (3) 一、课程设计目的 (3) 二、课程设计要求 (4) 三、实验内容 (4) 1、设计任务与要求 (4) 2、系统分析 (4) 1).硬件电路设计(画出原理图、接线图) (5) 2)软件框图 (7) 3、用keil建项目流程 (8) 4、程序清单 (9) 4、系统调试 (11) 四、设计总结(结论) (12)

摘要 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。能够通过按键控制8个LED小灯从左到右依次点亮。 关键字:单片机、LED流水灯 1、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处 理器、存储器和I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合, 便可成为一个单片机控制系统。 单片机经过1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它 们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2、仿真软件介绍 (1).Keil uv3 运行Keil uv3

plc设计实验报告

学院:信息工程学院班级: 学号: 姓名:

实验一:了解PLC的硬件构成与特性和编 程软件的使用方法 一、实验目的: 1.熟悉LG—K10S1型PLC的构成及特性。 2.掌握基本指令的使用方法。 3. 掌握PLC程序的编制和调试方法。 二、实验步骤: 1.按图接线;开关量输入信号/输出信号。 2.检查无误后,上电运行。 三、掌握PLC编程软件的使用方法: 1) 用户可以在KGL-DOS 或者GSIKGL中使用的程序,参数,变量/注释也适用与KGL for Windows。 2) PLC 系统由工程[Project]结构 KGL for Windows把用户自定义程序当成一个包括参数和变量/注释的工程[Project]来管理。 同时有允许用户把程序(*.PRG),参数*(.PMT),,变量(*.VAR),注释(*.CNT)各自保存起来,是这些单独的文件应用到别的工程[Project]中。 3) 用户友好接口 为创建,编辑和监视提供简单的和友好的接口。 4) 在线编辑 在在线方式下可以获得实时编辑。在在线条件下编辑的程序可以自动的下载、而不必停止PLC的硬件。 5) 从PLC监视信息 用户可以轻易的监视PLC的状态如:错误状态,网络信息和系统信息。 6) 调试和自诊断(LG MASTER-K系列) 在精确调试中可以得到取样跟踪,触发和强制I/O Enable。

实验二:多重输入电路及其拓展电路的编程、下载、调试 一、实验目的: 理解典型电路的特性与设计方法,多点输入对输出的影响。 二、实验内容: 多重输入电路的编程、下载、调试 三、实验步骤: 将上述继电器线路图转化成梯形图并输入PLC,并由此进一步熟悉和掌握编程软件。 通过实验操作,观察输入P00、P01、P02、P03对输出P10的影响。并变换输入和输出接点实验。 P00、P02、P01、P03为常开接点。 当P00、P01接通时,P10亮蓝灯。 P00、P03接通时,P10输出。 P02、P01接通时,P10输出。 P02、P03接通时,P10输出。 P00、P02、P01接通时,P10输出。 P00、P02、P03接通时,P10输出。 P00、P01、P03接通时,P10输出。 P02、P01、P03接通时,P10输出。 P00、P02、P01、P03接通时,P10输出。

C语言之循环队列的基本操作

1):循环队列的基本操作 #include #include #define OK 1 #define ERROR 0 typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等typedef int QElemType; #define MAXQSIZE 100 // 最大队列长度(对于循环队列,最大队列长度要减1) typedef struct { QElemType *base; // 初始化的动态分配存储空间 int front; // 头指针,若队列不空,指向队列头元素 int rear; // 尾指针,若队列不空,指向队列尾元素的下一个位置 }SqQueue; Status InitQueue(SqQueue &Q) { Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType)); if(!Q.base) { return ERROR; } Q.front=Q.rear=0; return OK; } Status EnQueue(SqQueue &Q,QElemType e) { if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR; Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXQSIZE; return OK; } Status DeQueue(SqQueue &Q, QElemType &e) { if(Q.front==Q.rear) return ERROR; e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXQSIZE; return OK; }

C语言程序设计实验报告(实验大纲+过程)

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分:4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的? 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; pr intf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序:

LED灯实验报告

mcs-51单片机接口技术实验 适用:电气类专业本科学生 实验报告 实验一熟悉proteus仿真模拟器,led花样表演 一、实验目的 掌握以下方法: 1.在proteus的环境下,设计硬件原理图; 2.在keilc集成环境下设计c51语言程序; 2.在proteus的环境下,将硬件原理图与软件联接仿真运行。 二、实验环境 1.个人微机,windows操作系统 2.proteus仿真模拟器 3.keilc编程 三、实验题目 基本题:使用8051的并口带动8个led发光二极管显示一种花样表演。提高题:使用一个键切换实现3种以上花样表演。 四、实验类型: 学习、模仿与简单设计型。 五、实验步骤: 0、进入isis,先选择需要的元件,然后设计电原理图,保存文件; 1、在keilc软件集成环境下编写源程序,编译工程文件; 2、将所设计的硬件原理图与目标代码程序相联接; 4、按play键,仿真运行程序。 附,可能用到的元件名称: cpu:at89c51或任一种mcs-51家族cpu; 晶振:crystal; 电容器:capacitors,选22pf 电解电容:cap-elec或genelect10u16v 复位电阻:minres10k 限流电阻:minres330r 按键:button led:led-blue/red/yellow或diode-led (一)接线图如下: (二).基础花样 (四)程序流程图 (五)c程序 #include <> #define uint unsigned int #define uchar unsigned char const tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /*正向流水灯*/ 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,};/*反向流水灯*/ const tab2[]={0xff,0x00,0xff,0x00,0xff,0x00,}; void delay() { uint i,j; for(i=0;i<256;i++) for(j=0;j<256;j++)

彩灯循环显示控制电路的设计与仿真EWB

南京信息工程大学实验(实习)报告 实验(实习)名称彩灯循环显示控制电路的设计与仿真实验(实习)日期 2012年11月16日得分指导教师裴晓芳 院电子与信息工程专业电子信息工程年级 10级班次2班姓名张蕾学号 20101305066 1.实验目的: 设计彩灯循环控制电路,要求该电路彩灯循环显示频率快慢可调,控制器具有8路输出。 2.实验内容: 彩灯由发光二极管模拟代替,该电路由555定时器、7490计数器和138译码器组成。7490计数器的时钟由555振荡器提供,改变555的振荡频率,即可以改变计数器的快慢,即可以控制彩灯闪烁的快慢。计数器的输出端作138译码器的输入信号,计数器输出不同数据,即可以控制138译码器得到8种不同的输出,控制彩灯的循环变化。 3.实验步骤: (1)根据电路图图1,从EWB元件器库中选择所需元器件,74LS138芯片、7490芯片、555发生器、发光二级管、电阻、电容、+Vdd电平、接地符号等连接电路,根据需要修改参数,完成后其文件名保存文件。 图1 (2)检查电路无误后,运行该电路观察发光二级管的闪烁情况,如图2所示。 图2

(3)改变555的振荡频率,重新运行电路,观察发光二极管的闪烁情况变化。进过实验,将1MΩ的电阻换为1KΩ的电阻,发现其闪烁的频率变快。 (4)给电路添加复位控制,复位按钮闭合彩灯输出,复位按钮断开彩灯熄灭,电路如图3所示,当space=0时,电路复位。 图3 4.实验分析和总结 通过实验,我学会了如何设计一个彩灯循环显示控制电路,掌握了芯片555定时器,7490计数器以及138译码器的工作原理,学会了创新设计,为以后的学习打下基础。

顺序队的基本操作

上机实验报告 学院:计算机与信息技术学院 专业:计算机科学与技术(师范)课程名称:数据结构 实验题目:顺序队的基本操作 班级序号:师范1班 学号: 2731 学生姓名:邓雪 指导教师:杨红颖 完成时间: 2015年12月25号

一、实验目的: 1.熟悉掌握队的定义、结构及性质;? 2. 熟练掌握循环队列的操作及应用,掌握循环队列的入队和出队等基本操作。? 3. 加深对队列结构的理解,逐步培养解决实际问题的编程能力 二、实验环境: Windows Microsoft Visual c++ 三、实验内容及要求: 掌握队列的概念及性质,并建立顺序队,实现如下功能: 1.建立一个顺序队 2.输出队 3.求队长 4.判队空 5.取队头 6.入队 7.出队 8. 清空栈 四、概要设计: 1、通过循环,由键盘输入一串数据。创建并初始化一个顺序队。 2、编写实现相关功能函数,完成子函数模块如下。 3、调用子函数,实现菜单调用功能,完成顺序表的相关操作。

#include <> #include <> #define maxsize 1024 typedef int datatype; //定义结构体 typedef struct { datatype data[maxsize]; int front,rear; }sequeue; sequeue *sq; //建立顺序队 sequeue *SET() { sequeue *sq; datatype x; sq=(sequeue *)malloc(sizeof(sequeue)); sq->front=maxsize-1; sq->rear=maxsize-1; printf("请输入要存入的结点值(以0结尾)\n"); scanf("%d",&x); while(x!=0) { sq->rear=(sq->rear+1)%maxsize; sq->data[sq->rear]=x; scanf("%d",&x); } printf("顺序队输入成功\n\n"); return sq; }

分支与循环程序设计实验报告

分支与循环程序设计实验-报告

————————————————————————————————作者: ————————————————————————————————日期:

实验名称 分支与循环程序设计实验 指导教师 罗志祥 专业班级 光电1406 姓名 段昳晖 学号 U2014***** 联系电话 137******** 一、任务要求 1. 设有8bits 符号数X 存于外部RA M单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。 264/2 106410 X X Y X X X X ?≥? =<

单片机实验报告——LED灯控制器

《微机实验》报告LED灯控制器 指导教师: 专业班级: 姓名: 学号: 联系方式:

一、任务要求 实验目的:加深对定时/计数器、中断、IO端口的理解,掌握定时/计数器、中断的应用编程技术及中断程序的调试方法。 实验内容:利用C8051F310单片机设计一个LED灯控制器 主要功能和技术指标要求: 1. LED灯外接于P0.0端。 2. LED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s。 3. 在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。 4. 利用单片机内部定时器定时,要求采用中断方式。 提高要求: 使用按键(KINT)控制LED灯闪烁模式的切换。 二、设计思路 C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,所以T1定时器采用定时方式1,单次定时最长可以达到的时间为 1.027s,可以满足0.5Hz是的定时要求。 基础部分: 给TMOD赋值10H,即选用T1定时器采用定时方式1,三种频率对应的半周期时间为0.25s、0.5s、1s。计算得需给TH1和TL1为C1H、B1H;83H、63H;06H、C6H。 要使闪烁持续10s,三种模式需要各循环40、20、10次。 用LOOP3:MOV C,PSW.5 ;PSW.5为标志位,进定时器中断后置一 JNC LOOP3 代替踏步程序等待中断,以便中断完后回到主程序继续向下执行。 为了减少代码长度,可以采用循环结构,循环主题中,将R1、R2分别赋给TH1、TL1,R7为循环次数(用DJNZ语句实现);定时中断里,重新给TH1、TL1赋值时同理。这样,循环时只要把定时时间和循环次数赋给R1、R2、R7即可,达到减少代码长度的效果。

十六路彩灯控制电路实验报告

山东科技大学电工电子实验教学中心创新性实验研究报告 实验项目名称_16路彩灯控制电路___ 专题____________ 姓名学号_ 姓名学号_ 姓名学号_ 手机Email _ 专业电气工程及其自动化班级___ 指导教师及职称______ 开课学期2011 至_2012 学年_2 _学期提交时间2012 年 6 月28 日

一、实验摘要 设计一种利用发光二极管作为彩灯指示,实现发光二极管四种花样依次点亮,并能够实现这四种点亮方式自动状态切换的彩灯循环控制电路。实验按照效果预设、电路设计、仿真调试、实物实验连接与调试的步骤进行,在实验组三人的分工合作下完成对预定效果的实现。实验原理主要涉及数字电子技术和模拟电子技术知识,要求通过本实验既能加深对原有基础知识的熟悉和掌握,并实现在所学内容的基础上创新性设计和应用。本实验用到的元器件主要包括555定时器、16进制加减计数器、普通16进制加法计数器以及译码器,并以它们为各自核心分别构成了多谐振荡信号输出部分、彩灯状态编码输入部分、彩灯点亮花样切换控制部分和彩灯状态译码输出部分,从而实现在有高电平脉冲输入的情况下彩灯电路自动实现不同的闪烁效果。 二、实验目的 1.学会分析、设计和测试用555计时器构成的多谐振荡器。 2.熟悉掌握16进制计数器的不同工作状态的基本原理并在自主设计下实现不同状态之间的自动转换。 3.实现16个已编号LED灯四种方式的点亮花样的依次循环: ①从1号灯开始依次加法式顺次点亮至第16号灯; ②从16号灯开始依次减法式顺次点亮至第1号灯; ③1号灯和9号灯同时点亮,并且分别以它们为起点依次加法式顺次点亮至第8号和第16号灯,即1号灯点亮并依次加法式顺次点亮至第8号灯的同时9号灯点亮并依次加法式顺次点亮至第16号灯,然后重复一次; ④16号灯和8号灯同时点亮,并且分别以它们为起点依次减法式顺次点亮至第9号和第1号灯,即16号灯点亮并依次减法式顺次点亮至第9号灯的同时8号灯点亮并依次减法式顺次点亮至第1号灯,然后重复一次; 并且以上四种循环点亮方式要实现①→②→③→④的状态自动控制循环。 4.实现两片3线-8线译码器用作4线-16线译码器,并且要在彩灯点亮花样的要求下实现同一时间下的不同工作状态的组合,以控制彩灯不同的点亮或熄灭循环状态。 5.掌握电子电路安装和调试以及故障排除的方法,学会用Multisim软件对电路仿真。 6.通过查阅手册和文献资料,培养分析问题和解决问题的能力,培养创新思维和创新能力。 三、实验场地及仪器、设备和材料:

实验二 MATLAB程序设计 含实验报告

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因 c b a 、、的不同取值而定) ,这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2?1 3?10?5?16?8?4?2?1 6?3?10?5?16?8?4?2?1 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. 的值,调用该函数后,

彩灯双向循环电子技术课程设计实验报告

安徽农业大学经济技术学院 电子技术课程设计报告书 课题名称一种多种波形发生器设计 姓名汪亦嘉 学号150103233 院、系、部机械工程系 专业机械设计制造及其自动化 指导教师李琰 2017年 6月 13 日

一、设计任务及要求: 1、用中规模计数器设计双向流动彩灯控制器。 2、要求彩灯双向流动点亮,其闪烁频率在1~10Hz内可调。 3、要求用555定时器设计时钟脉冲,五路彩灯采用五个发光二极管代替。设计要求 4、双向流动彩灯控制器的直流稳压电源要求自行设计。 5、在选择器件时,应考虑成本。 6、根据技术指标,通过分析计算确定电路和元器件参数。 7、画出电路原理图(元器件标准化,电路图规范化)。 指导教师签名: 2017年6月日二、指导教师评语: 指导教师签名: 2017年6月日

三、成绩 指导教师签名: 2017年6月日

一、设计目的 1、对模拟电子技术的的直流电源中的整流、滤波、稳压等环节加深印象。 2、了解直流电源各部分的结构。 3、加深对于555定时器的内部结构的理解。 4、将74LS161改为十六进制以内的任一进制计数器。 5、Mulsitim 电路仿真软件应用灵活。 二、方案论证 设计一个双向彩灯控制器,控制五路彩灯。 方案一:以555定时器为基础连接成多谐振荡器产生周期在1~10Hz 矩形时钟脉冲,用以启动74LS161计数器。并用74LS161构成八进制加法计数器通过74LS138译码器输出给五个彩灯,实现双向循环。方案一原理框图如图1所示。 图1 双向彩灯控制器方案一的原理框图 方案二:与方案一的第一部分原理相同同样采用555定时器构成多谐振荡器,用来产生1~10Hz 的周期矩形时钟脉冲,启动计数器。第二部分采用四进制加法计数器和四进制减法计数器结合实现循环,第三部分同样采用74LS138译码器输出给五路彩灯,实现循环。方案二原理框图如图2所示。 图2 双向彩灯控制器方案二的原理框图 最终本设计采用的是方案一,只采用一个八进制加法计数器,循环简单方便,仅需一次循环就可实现五路彩灯双向流动。在考虑成本的条件下,节省器件。所以方案一更加合适。 多谐振荡器 八进制加法计数器 译码器 彩灯 多谐振荡器 四进制加法计数器 四进制减法计数器 译码器 彩灯

实验二 栈与队列操作实验题目

实验二栈与队列操作 实验目的: (1)理解栈与队列的结构特征和运算特征,以便在实际问题背景下灵活运用。 (2)了解复杂问题的递归算法设计。 本次实验中,下列实验项目选做一。 1、顺序栈的基本操作 [问题描述] 设计算法,实现顺序栈的各种基本操作 [基本要求] (1)初始化栈s。 (2)从键盘输入10个字符以$结束,建立顺序栈。 (3)从键盘输入1个元素,执行入栈操作。 (4)将栈顶元素出栈。 (5)判断栈是否为空。 (6)输出从栈顶到栈底元素。 要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。 2、链栈的基本操作 [问题描述] 设计算法,实现链栈的各种基本操作 [基本要求] (1)初始化栈s。 (2)从键盘输入10个字符以$结束,建立带头结点的链栈。 (3)从键盘输入1个元素,执行入栈操作。 (4)完成出栈操作。 (5)判断栈是否为空。 (6)输出从栈顶到栈底元素。 (7)输出链栈的长度。 要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。 3、循环队列的基本操作 [问题描述] 设计算法,实现循环顺序队列的建立、入队、出队等操作。 [基本要求] (1)从键盘输入10个字符以$结束,建立循环队列,并显示结果。 (2)从键盘输入1个元素,执行入队操作,并显示结果。 (3)将队头元素出队,并显示结果。 (4)要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。

4、只用尾指针表示的循环链表队列的综合操作 [问题描述] 假设以带头结点的的循环链表表示队列,并且只设一个指针指向队尾元素的结点(注意不设头指针),试编写队列初始化、入队、出队函数。 [基本要求及提示] (1)首先定义链表结点类型。 (2)编写带头结点的循环链表的初始化函数,只用尾指针表示。 (3)编写入队函数、出队函数。 (4)在主函数中编写菜单(1.初始化;2.入队;3.出队;4.退出),调用上述功能函数。 5、用标志域表示队空队满状态的循环队列的综合操作 [问题描述] 要求循环队列不损失一个空间全部都得到利用,设置一个标志域tag,以0和1来区分当队头与队尾指针相同时队列状态的空和满,试编写与此结构相对应的入队和出队操作。 [基本要求及提示] (1)教材中为区分当队头与队尾指针相同时队列状态的空和满,以牺牲一个空间的代价来实现的,空:Q->front==Q->rear,满:(Q->rear+1)%MAXSIZE==Q->front。 (2)本题不损失一个空间全部都得到利用,为此如下定义循环队列类型: Typedef struct { QueueElementType element[MAXSIZE]; int front; int rear; int tag; }SeqQueue; 此时,循环队列空和满的条件分别为: Q->front==Q->rear&&tag==0 和 Q->front==Q->rear&&tag==1 (3)编写入队函数、出队函数。 (4)在主函数中编写菜单(1.入队;2.出队;3.退出),调用上述功能函数。 6、利用辅助数组进行栈的逆置 [问题描述] 利用辅助栈将栈中的元素逆置。 [基本要求及提示] 在主函数中编写菜单(1.入栈;2.出栈;3.逆置;4.退出)调试运行程序。 7、利用辅助栈进行队列的逆置 [问题描述] 利用辅助栈进行队列元素逆置。 [基本要求及提示] 在主函数中编写菜单(1.入队;2.出队;3.逆置;4.退出)调试运行程序。 8、Hanoi塔问题

循环结构程序设计实验报告

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错, 及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”, 根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 (1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编写程序如下: #include int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n')

微机接口实验报告(循环彩灯)

目录 第一章需求分析 1.1 设计目的 (1) 1.2 设计任务和要求 (1) 1.3 软硬件运行环境及开发工具 (1) 第二章概要分析 2.1 总体方案和说明 (2) 2.2 8255A芯片图 (3) 2.3 循环彩灯流程图 (4) 第三章详细设计 3.1 硬件设计和实现 (5) 3.2 实验电路图和说明 (6) 3.3 源程序代码 (6) 第四章系统调试和操作说明 4.1 系统调试 (9) 4.2 操作说明 (9) 第五章总结体会 (10) 参考文献 (10) 第一章:需求分析 1.1设计目的 巩固和加深课堂所学知识;熟悉各种指令的使用及条件; 学习掌握一般的软硬件的设计方法和查阅、运用资料的能力; 深入了解和掌握8255A在PC机系统的典型接法和8255A的工作方法及使用编程。 1.2设计任务和要求

任务: 循环彩灯控制系统输出四种参考花型如下:数位为1时表示灯亮 1)00000001 左循环 2)10000000 右循环 3)按10000001,11000011,11100111,11111111 规律递增, 全亮后同时闪烁十次,循环不断。 4)按11110000,00001111 交替闪烁。 要求: 1.画出硬件原理图(接口芯片和外设部分)和实验连线图; 2.功能要求: 1)循环彩灯的循环速度可调; 2)按键要求 ①启动/暂停,按K0开关启动系统,按K1开关停止系统工作。 ②花型变换,由开关K2、K3进行四种花型切换; 1.3软硬件运行环境及开发工具 利用TDN86/88实验平台进行硬件电路的连接,在Wmd86软件下进行程序的调试,直到使循环彩灯按照设计要求运行,实验所使用的实验开发平台是Wmd86,使用的编程语言是汇编。 第二章:概要设计 2.1 总体方案和说明 根据所学内容和对8255A的使用,整个系统硬件采用8086微处理器,和8255A可编程并行接口芯片和8个led彩灯。 Intel 8255A是一种通用的可编程并行接口芯片,由于它是可以编程的,可以通过程序来设置芯片的工作方式,通用性强,使用灵活,可为多种不同的CPU和外设之间提供并行输入/输出的通道;8086微处理器,选择最小工作模式,所有的总线控制信号均由8086产生;8086CPU的地址\数据总线AD15-AD0和地址\状态总线A16/S3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线分离。 可编程并行通信接口芯片8255A: 方式0为简单I/O,查询方式,端口A、端口B、端口C均可使用。 方式1为选通I/O,中断方式,端口A、端口B可以使用,选通的输入/输出方式。 方式2为双向I/O,中断方式,只有端口A可以使用,双向的传输方式。 三个8位端口PA、PB、PC 端口A(PA口):有一个8位数据输入锁存器和一个8位数据输入锁存/缓冲器; 端口B(PB口):有一个8位数据输入锁存器和一个8位数据输入/输出,锁存/缓冲器; 端口C(PC口):有一个8位数据输入锁存器和一个8位数据锁存/缓冲器。

数电彩灯

课程设计报告 课程名称数字电子技术 课题名称彩灯控制器 专业电气工程及其自动化 班级1284班 学号33 姓名汪文龙 指导教师张向华 2014年12月5日

湖南工程学院 课程设计任务书 课程名称:数字电子技术 题目:彩灯控制器 专业班级:电气工程及其自动化1284 班 学生姓名:汪文龙学号:33 指导老师:张向华 审批: 任务书下达日期2014年11月24日 设计完成日期2014年12月 5 日

设计内容与设计要求 一、任务与要求: 设计一个彩灯控制器,要求如下: 1.有8只彩灯(用发光二极管代替)。 2.自左至右或顺时针逐次点亮至全亮,然后逐次熄灭至全灭。 3.自右至左或逆时针逐次点亮至全亮,然后逐次熄灭至全灭。 4.闪烁,8只灯同亮、同灭、同亮、同灭。 5. 自主设计一个彩灯花样。 5. 按2、3、4、5循环工作。 二、设计要求: 1.电路设计要求思路清晰,给出整体设计框图和总电路图; 2.单元电路设计,给出具体设计思路和电路; 3.采用EWB、protous、multism中任一软件对电路进行仿真。 4.安装、调试电路; 5.写出设计报告;

主要设计条件 1.提供调试实验室; 2.提供调试面板,元件;

目录 一.设计总体思路,基本原理和框图(总电路图) (6) 1.1、总体思路: (6) 1.2基本原理 (7) 1.3总电路图 (9) 二、单元路设计电 (10) 2.1双向移位寄存器的设计 (10) 2.2二进制计数器与逻辑组合电路的设计... 错误!未定义书签。 三、仿真波形 .................................................... 错误!未定义书签。 3.1彩灯输出波形 ......................................... 错误!未定义书签。 3.2芯片74LS161连接四或门时输出波形.. 错误!未定义书签。 四、安装与调试步骤 (12) 五、故障分析与电路改进 (14) 六、总结与体会 (15) 七、附录(元器件清单) (16) 八、参考文献 (17)

实验4顺序循环队列基本操作

实验4: 顺序循环队列基本操作 一、实验目的 1.熟悉并能实现顺序循环队列的定义和基本操作。 2.了解用队列解决实际应用问题。 二、实验要求 1.进行队列的基本操作时要注意队列“先进先出”的特性。 2.复习关于栈操作的基础知识。 3.编写完整程序完成下面的实验内容并上机运行。 4.整理并上交实验报告。 三、实验内容 1.任意输入队列长度和队列中的元素值,构造一个队列,对其进行清空、插入新元素、返回队头元素以及删除队头元素操作。 2.约瑟夫环的实现:设有n个人围坐在圆桌周围,现从某个位置i 上的人开始报数,数到m 的人就站出来。下一个人,即原来的第m+1个位置上的人,又从1开始报数,再是数到m的人站出来。依次重复下去,直到全部的人都站出来,按出列的先后又可得到一个新的序列。由于该问题是由古罗马著名的史学家Josephus提出的问题演变而来,所以通常称为 Josephus 问题。 例如:当n=8,m=4,i=1时,得到的新序列为: 4,8,5,2,1,3,7,6 编写程序选择循环队列(也可换为自己熟悉的数据结构)作为存储结构模拟整个过程,并依次输出出列的各人的编号。 3.(选做实验)设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 程序编写提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。

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