当前位置:文档之家› 迷宫电脑鼠的设计报告

迷宫电脑鼠的设计报告

迷宫电脑鼠的设计报告
迷宫电脑鼠的设计报告

综合课程设计报告题目:迷宫电脑鼠的设计

二级学院计算机科学与工程学院

专业计算机科学与技术

班级

学生姓名学号

指导教师

时间 2015 01 17

目录

目录 ........................................................................................................................................................ I 摘要 ...................................................................................................................................................... II 1、课程设计的目的及要求. (1)

1.1 课程设计目的 (1)

1.2课程设计要求 (1)

2、题目分析 (1)

2.1 功能分析 (1)

2.2 性能需求分析 (1)

2.3 算法分析 (1)

3、系统设计 (2)

3.1系统整体设计 (2)

3.2硬件设计 (3)

3.2.1 硬件结构设计 (3)

3.2.2 传感器组设计 (4)

3.2.3 电机驱动电路设计 (7)

3.3软件设计 (8)

3.3.1 电脑鼠正常行走程序设计 (8)

3.3.2 电脑鼠找终点程序设计 (11)

3.3.3 程序设计 (12)

4 总结 (27)

4.1 所遇问题及解决办法 (27)

4.2 心得体会 (28)

重庆理工大学综合课程设计报告

摘要

“电脑鼠”是使用单片机微控制器,传感器和机电运动部件构成的一种智能行走装置。一只电脑鼠是具有机电知识整合的基本构架,本身就像是一个智能的机器人。要在指定的迷宫中比赛,就像是一个人置身竞赛中一样,必须要靠自己的判断力,敏捷动作及正确探查周边坏境。一般来说一只电脑鼠具备有以下两个基本能力:拥有稳定且快速的行走能力;正确判断能力。

II

重庆理工大学综合课程设计报告

1、课程设计的目的及要求

1.1 课程设计目的

(1)了解并熟悉电子元器件焊接技术与方法。

(2)了解并熟悉电子元器件工作原理和功能特性。

(3)掌握单片机对编码电机的控制与红外发射与接收的控制。

(4)熟练运用keil软件进行单片机的C语言编程。

1.2课程设计要求

走有一定弯度、曲折度、路线单一的迷宫。

2、题目分析

2.1 功能分析

(1)迷宫电脑鼠能够在迷宫中随意穿行。

由于迷宫中有很多挡板,要使电脑鼠能够在迷宫中随意穿行,就要让电脑鼠遇到挡板的时候能够转弯找到一条可通行的路,所以就要用到用来检测挡板的传感器。还要电脑鼠能够左转、右转和前进,所以必须要写出这四个功能函数,不然电脑鼠就不能在迷宫中行走。

2.2 性能需求分析

1、迷宫电脑鼠外形合理,符合8×8迷宫场地需求。

2、迷宫电脑鼠运行稳定,能够正常在迷宫中随意穿行。

2.3 算法分析

此次迷宫电脑鼠主要用到了这几个算法:左手法则、右手法则和车头方向、转弯算法、修正算法。

转弯算法:当遇到障碍物向左转90度或者右转90度或者向后转。

修正算法:当在迷宫中走偏后能够自动修正方向。

左手法则:小车在搜过程中有两个以上的搜索方向时,优先选择向左转,其次是向前行进,最后才考虑向右转弯。

右手法则:小车在搜过程中有两个以上的搜索方向时,优先选择向右转,其次是向前行进,最后才考虑向左转弯。

车头方向:迷宫机器鼠的车头有绝对方向和相对方向之分。绝对方向:以小车刚开始运行的时候车头面向的方向作为“上”,其它方向类推。相对方向:顾名思义,相对于当前小车所朝向的方向的方向。机器鼠转弯时要修整方向为绝对方向。用数字0,1,2,3分别表示上,右,下,左,

重庆理工大学综合课程设计报告

修正公式为:转弯后的绝对方向=(转弯前的绝对方向+转弯数值)% 4,如图所示。

绝对方向

3、系统设计

3.1系统整体设计

系统的功能函数:

延时函数功能:延时

电机驱动函数功能:启动和停止左右电机

电机初始化函数功能:初始化电机

中断函数功能:T0、T1用来计数左右电机的脉冲数;T2用来产生红外信号

系统初始化函数功能:初始化整个系统

红外传感器函数功能:当遇到障碍物时点亮LED灯

转弯函数1功能:左转和右转任意角度

转弯函数2功能:左转90度,右转90度,向后转

前进一步函数功能:电脑鼠在迷宫前进一个方格距离

重庆理工大学综合课程设计报告 主程序流程图:

蜂鸣器提示掉头并交换起点和

终点坐标

右手法则寻路到达终点

3.2硬件设计

3.2.1 硬件结构设计 硬件电路部分主要由单片机最小系统电路、传感器电路、电机驱动电路构成。如图所示,是硬件电路部分结构框图。

重庆理工大学综合课程设计报告

1、微控制器

微控制器是电脑鼠的核心,可以选择单片机,若RAM需求量大或者算法复杂或者性能要求高时,需要使用ARM等高性能的微处理器。

2、传感器

传感器的作用是用来感知环境,探测电脑鼠的左、前、右是否有路可走。本设计中采用的是红外线方式,发射和接收分别受微控制器控制。由硬件电路部分结构框图可知,在电脑鼠的前、左、右、左前、右前方共有5组,其中左、右、前三组传感器是用于探测电脑鼠在当前迷宫格左、右、前三个方向上是否有支路的,左前、右前两组传感器呈45度安装,用于电脑鼠行进过程中进行姿态矫正,防止电脑鼠走偏而撞到迷宫墙。

3、显示器

显示器是用来显示当前位置等相关信息的,是电脑鼠的可选部分。

4、电源

电源用来为单片机供电,选择哪种电池,这也将影响电路的设计。

5、蜂鸣器

当电脑鼠到底终点、或是返回到起点,可以用蜂鸣器来提示,是电脑鼠的可选部分。

3.2.2 传感器组设计

(1)传感器的选择

电脑鼠有5组传感器。这5组传感器分别安装于电脑鼠的左、左前、前、右前、右5个不同的方向,其中左、右、前三组传感器是用于探测电脑鼠在当前迷宫格左右前三个方向上是否有支路的,左前、右前两组传感器呈45度安装,用于电脑鼠行进过程中进行姿态矫正,防止走偏而撞到迷宫墙。如图所示,是用于电脑鼠环境感知的传感器组电路。传感器组电路由红外发射LED 和红外一体化接收头HS0038构成,红外LED由前面载波发生器产生的CLOCK信号驱动产生38KHz红外调制光。RP1为可调电阻,通过调节RP1来调节红外LED发光强度,从而调整传感器组检测迷宫墙障碍物的距离,RP1电阻越大,检测距离越近,电阻越小,检测距离越远。irT1用于控制该组传感器是否工作,连接到3-8译码选择电路。红外调制光经障碍物反射由HS0038红外一体化接收头接收,进行放大滤波、解调等处理后由irR1输出,单片机通过识别irR1位的高低电平来判断传感器前面是否有障碍物。这里只给出了一组传感器,另外四组传感器也与该组传感器相同的。电脑鼠通过对这五组传感器信息的融合,实现环境感知功能。

重庆理工大学综合课程设计报告

(2)74HC138译码器

74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。

1、74HC138的引脚如图所示:

2、74HC138的译码/真值表如下表所示:

译码/真值表

重庆理工大学综合课程设计报告

应用:

例如A0A1A2地址为000时,74HC138输出Y0有效,从而使第一组传感器工作,而其他组传感器处于没有工作的状态。这样就可以实现单片机的3个引脚控制5个或者更多的传感器组。如图所示,是硬件电路部分3-8译码选择器电路。

(3)载波发生器

传感器组是由38KHz的红外一体化接收头和红外发射管构成的障碍感测器。为了能够让传感器组正常工作,红外发射管需要一个38KHz的方波来驱动,使红外发射管发射出调制频率与接收头接收频率匹配的红外光。如图所示,是产生38KHz方波的载波发生器电路。

重庆理工大学综合课程设计报告

(4)传感器的调试

(主要写每组传感器如何进行调试。)

1、左右两边的传感器检测是否有墙壁。

2、左前和右前45°角的两组传感器用于电脑鼠在行走过程中的微调。

3、传感器上标的1、2、3、

4、5对应led的1、2、3、4、5(里面往前数)。

4、传感器的测距是通过条对应的可调电阻来实现的,可调电阻顺时针转动调近,逆时针调远传感器的测试距离。

3.2.3 电机驱动电路设计

如图所示,是用来驱动电脑鼠伺服电机的驱动电路。由于单片机I/O口电流输出能力有限,不能直接驱动电机转动。为了能让单片机控制电机运转,需要使用电机驱动电路,将单片机I/O 口弱电流放大到足以驱动电机的电流。

1、L9110器件的管脚图如图所示。

重庆理工大学综合课程设计报告

2、管脚定义如下:

3、通过L9110驱动芯片IA、IB输入的逻辑值的组合,不同高低电平的输入输出,控制电机正转、反转、停转。L9110的逻辑关系表如下表所示:

L9110逻辑关系

3.3软件设计

3.3.1 电脑鼠正常行走程序设计

电脑鼠正常行走包括直走、左转弯、右转弯和向后转弯四个功能函数。这四个功能函数中要用到T0、T1定时/计数器;所以函数中首先初始化T0、T1。T0初始化:打开总开关EA=1;开T0中断ET0=1;设定T0模式2,8位自动重装值定时计数器TMOD&=0xf6; TMOD|=0x06; 设定T0计数初值,定义中断脉冲数TH0=256-ICP;TL0=256-ICP; //启动T0计数TR0=1;T1初始化也是一样的。

为了使左右电机的转速尽可能相同,我们可以设定一个值,在这个值内,如果T0的脉冲数Count0大于T1的脉冲数Count1,就停止左电机,转动右电机;当Count0

在左转函数中,当Count0>Count1时,停止右电机,反转左电机;当Count0

右转函数中,当Count0>Count1时,停止右电机,正转左电机;当Count0

向后转函数可以通过两次左转来实现。

重庆理工大学综合课程设计报告

在直走函数中,当Count0>Count1时,停止右电机,正转左电机;当Count0

向前走一步函数程序框图:

重庆理工大学综合课程设计报告右转函数程序框图:

重庆理工大学综合课程设计报告

左转函数程序框图:

3.3.2 电脑鼠找终点程序设计

电脑鼠通过右手法则来探寻前进的路径:当右方有路时优先向右转,右方没路则检测前方,当前方有路就向前走,前方没路再检测左方,左方有路则向左转,左方没路的话就只有向后转了,所以四个方向的优先级为右>前>左>后。

规定电脑鼠起点车头方向为北,顺时针依次为北、东、南、西,分别用0、1、2、3代表;在左转右转和后转中,每转一次向就更新一次当前的绝对方向,然后向前行进一步并更新当前坐标,然后将当前坐标与终点坐标比较,若当前坐标为终点坐标,则蜂鸣器响一声表示已到达终点坐标;否则继续用右手法则探路直到到达终点坐标为止。

重庆理工大学综合课程设计报告右手法则:

3.3.3 程序设计

1.头文件

#include

#define ICP 35

//位定义左右电机

sbit ML1=P2^0;

sbit ML2=P2^1;

重庆理工大学综合课程设计报告

sbit MR1=P2^2;

sbit MR2=P2^3;

//指示灯接口定义

sbit LED1=P0^0;

sbit LED2=P0^1;

sbit LED3=P0^2;

sbit LED4=P0^3;

sbit LED5=P0^4;

sbit LED6=P0^5;

sbit LED7=P0^6;

sbit LED8=P0^7;

//红外地址接口定义(74HC138译码器

sbit A0=P1^2;

sbit A1=P1^3;

sbit A2=P1^4;

//红外传感器接口定义

sbit irR1=P2^5;//左外

sbit irR2=P2^6;//中

sbit irR3=P2^7;//右外

sbit irR4=P3^6;//左

sbit irR5=P3^7;//右

//按键接口定义

sbit key=P1^0;

//蜂鸣器接口定义

sbit SPEAK=P2^4;

2.符号定义

#include"hys.h"

bit irL,irR,irZ,irZL,irZR; //依次为左、右、前、左前、右前

unsigned char endX,endY,X,Y,exchangeX,exchangeY,Count0,Count1;

unsigned char now_direct; //绝对方向

unsigned char arrived; //定义到达终点坐标时要用到的的一个符号3.延时函数代码

//在24M晶振下,延时1ms,12M倍频

void delay(unsigned char ms)

{

unsigned char X;

while(ms--)

{

X=250;

while(--X);//延时250us

X=250;

while(--X);//延时250us

X=250;

重庆理工大学综合课程设计报告

while(--X);//延时250us

X=250;

while(--X);//延时250us

}

}

4.驱动配置代码

/****************************电机驱动函数*********************************/ //左电机停止

void STOPML()

{

ML1=0;

ML2=0;

}

//右电机停止

void STOPMR()

{

MR1=0;

MR2=0;

}

//启动左电机

void RUNML(bit i)

{

if(i)

{

ML1=1;

ML2=0;

}

else

{

ML1=0;

ML2=1;

}

}

//启动右电机

void RUNMR(bit i)

{

if(i)

{

MR1=1;

MR2=0;

}

else

{

MR1=0;

重庆理工大学综合课程设计报告

MR2=1;

}

}

/*******************************电机初始化函数******************************/ void init_motor()

{

ML1=0;

ML2=0;

MR1=0;

MR2=0;

}

5.中断函数代码

//T2中断周期设定函数,最大30ms

void set_Timer2(unsigned int m)

{

TH2=RCAP2H=(65535-m)/256;

TL2=RCAP2L=(65535-m)%256;//设定T2自动重装载寄存器和计数器初值

}

void init_Timer2(unsigned int m)//中断定时获取传感器返回的值

{

EA=1;

ET2=1;

TH2=RCAP2H=(65535-m)/256;

TL2=RCAP2L=(65535-m)%256;//设定T2自动重装载寄存器和计数器初值///捕捉/自动重载寄存器

TR2=1;

}

/************************中断函数*************************************/

//T0中断函数//右电机

void timer0() interrupt 1//外部中断1

{

//工作模式2.自动重装初值

Count0++;

}

//T1中断函数//左电机

void timer1() interrupt 3 //外部中断2

{

//工作模式2.自动重装初值

Count1++;

}

//T2中断函数

重庆理工大学综合课程设计报告

void Timer2() interrupt 5

{

static unsigned char intC=1,irNo=1;

TF2=0;//软件清除溢出中断标志位

//中断服务代码

if(intC==1)

{

switch(irNo)

{

case 1:

{

A0=0;

A1=0;

A2=0;

intC=1;

set_Timer2(2000);//发射2us

break;

}

case 2:

{

if(irR1) //如果irR1为高电平

{

irZL=0; //没有障碍物置低电平0

LED1=1; //熄灭LED灯

}

else //如果irR1低电平

{

irZL=1; //有障碍物置高电平1

LED1=0; //点亮LED灯

}

A0=1;

A1=0;

A2=0;

intC=1;

set_Timer2(2000);

break;

}

case 3:

{

if(irR2)

{

irZ=0;

LED2=1;

}

迷宫问题课程设计报告

目录 第一章:设计问题描述与分析 (1) 1.1.课程设计内容 (1) 1.2. 问题分析 (1) 1.3.功能实现 (2) 1.4.运行环境 (3) 第二章:算法设计与流程图 (4) 2.1.主函数的流程图 (4) 2.2.概要设计 (5) 2.4详细设计 (6) 2.4.1. 节点类型和指针类型 (6) 2.4.2.迷宫的操作 (6) (1)生成迷宫 (6) (2)打印迷宫矩阵与字符图形 (7) (3)迷宫求解路由求解操作 (7) (4)打印迷宫通路坐标 (8) (5)输出迷宫通路的字符图形 (8) 2.4.3. 主函数 (9) 第三章:调试分析 (10) 第四章:使用说明 (11)

第五章:测试结果 (12) 附录1 (19) 附录2 (19)

第一章:设计问题描述与分析 1.1.课程设计内容: 该系统是由C 语言编写的生成一个N×M(N行M列)的迷宫,完成迷宫的组织和存储,并实现迷宫路由算法。基本要求1、 N和M是用户可配置的,缺省值为50和50。 2、迷宫的入口和出口分别在左上角和右下角。 提示:(1)可以使用二维数组maze[M+2][N+2]表示迷宫,其中M,N为迷宫的行、列数,当元素值为0时表示该点是通路,当元素值为1时表示该点是墙。老鼠在每一点都有4种方向可以走,可以用数组move[4]来表示每一个方向上的横纵坐标的偏移量,可用另一个二维数组mark[M+2][N+2]记录节点的访问情况。(2)可以选用深度优先算法或广度优先算法实行,迷宫可由自动或手动生成。测试用例应该包含有解迷宫和无解迷宫。 1.2. 问题分析 本程序要求实现迷宫问题的相关操作,包括迷宫的组织和存储,并实现迷宫路由算法(即查找迷宫路径)。程序所能达到的:具体包括迷宫的建立,迷宫的存储(迷宫由自动生成或手动生成),迷宫中路径的查找 迷宫是一个矩形区域,迷宫存在一个入口和一个出口,其内部包含了不能穿越的墙或者障碍。迷宫的建立即是建立这样一个迷宫矩阵,用于存储迷宫信息,包括可穿越的路和不可穿越的墙或者障碍,分别用0表示通路,1表示障碍。对于迷宫矩阵,用m×n的矩阵来描述,m和n分别代表迷宫的行数和列数。这样,则迷宫中的每个位置都可以用其行号和列号来指定。从入口到出口的路径是由一组位置构成的。每个位置上都没有障碍,且每个位置(第一个除外)都是前一个位置的上、下、左、右的邻居。 为了描述迷宫中位置(i ,j)处有无障碍,规定,当位置(i ,j)处有一个障碍时,其值为1,否则为0.这样迷宫就可以用0、1矩阵来描述,在构造矩阵时,为了操作方便会将矩阵四周置为1(不通)。

数据结构迷宫问题实验报告

《数据结构与算法设计》迷宫问题实验报告 ——实验二 专业:物联网工程 班级:物联网1班 学号:15180118 姓名:刘沛航

一、实验目的 本程序是利用非递归的方法求出一条走出迷宫的路径,并将路径输出。首先由用户输入一组二维数组来组成迷宫,确认后程序自动运行,当迷宫有完整路径可以通过时,以0和1所组成的迷宫形式输出,标记所走过的路径结束程序;当迷宫无路径时,提示输入错误结束程序。 二、实验内容 用一个m*m长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序对于任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 三、程序设计 1、概要设计 (1)设定栈的抽象数据类型定义 ADT Stack{ 数据对象:D={ai|ai属于CharSet,i=1、2…n,n>=0} 数据关系:R={|ai-1,ai属于D,i=2,3,…n} 基本操作: InitStack(&S) 操作结果:构造一个空栈 Push(&S,e) 初始条件:栈已经存在 操作结果:将e所指向的数据加入到栈s中 Pop(&S,&e) 初始条件:栈已经存在 操作结果:若栈不为空,用e返回栈顶元素,并删除栈顶元素 Getpop(&S,&e) 初始条件:栈已经存在 操作结果:若栈不为空,用e返回栈顶元

StackEmpty(&S) 初始条件:栈已经存在 操作结果:判断栈是否为空。若栈为空,返回1,否则返回0 Destroy(&S) 初始条件:栈已经存在 操作结果:销毁栈s }ADT Stack (2)设定迷宫的抽象数据类型定义 ADT yanshu{ 数据对象:D={ai,j|ai,j属于{‘ ’、‘*’、‘@’、‘#’},0<=i<=M,0<=j<=N} 数据关系:R={ROW,COL} ROW={|ai-1,j,ai,j属于D,i=1,2,…M,j=0,1,…N} COL={|ai,j-1,ai,j属于D,i=0,1,…M,j=1,2,…N} 基本操作: InitMaze(MazeType &maze, int a[][COL], int row, int col){ 初始条件:二维数组int a[][COL],已经存在,其中第1至第m-1行,每行自第1到第n-1列的元素已经值,并以值0表示障 碍,值1表示通路。 操作结果:构造迷宫的整形数组,以空白表示通路,字符‘0’表示障碍 在迷宫四周加上一圈障碍 MazePath(&maze){ 初始条件:迷宫maze已被赋值 操作结果:若迷宫maze中存在一条通路,则按如下规定改变maze的状态;以字符‘*’表示路径上 的位置。字符‘@’表示‘死胡同’;否则迷宫的状态不变 } PrintMaze(M){ 初始条件:迷宫M已存在 操作结果:以字符形式输出迷宫 } }ADTmaze (3)本程序包括三个模块 a、主程序模块

机械设计综合实验指导书与实验报告

机械设计综合实验指导书 及实验报告 班级 学号 姓名 机械基础实验中心雷代明 2017年3月 第一部分机械设计

实验一机械零件认知与分析实验 一、实验目的 1、熟悉常用的机械零件的基本结构,以便对所学理论知识产生一定的感性认识。 2、分析常用机械零件的基本构造及制造原理。 3、了解常用机械零件的实际使用情况。 二、实验内容 通过观察,掌握常用的机械零件的基本结构及应用场合。 三、实验简介 机械零件陈列观摩,共包括: (1)螺纹联接与应用 (2)键、花键、销、铆、焊、铰接 (3)带传动 (4)链传动 (5)齿轮传动 (6)蜗杆传动 (7)滑动轴承与润滑密封 (8)滚动轴承与装置设计 (9)轴的分析与设计 (10)联轴器与离合器。 共10个陈列柜,罗列了机械设计内容中大多数常用的基本零件与标准件,并对相应的零件进行了结构和基本受力分析,联接和安装的基本方法的说明,有些常用的零件还给出了简单的应用举例。 通过本实验的观摩,学生可以对照书本所学的基本内容,初步领会机械设计的一些常用零部件的基本设计与应用原理,从而达到举一反三的教学目的,对其所学的课本理论知识进一步巩固和深化。 四、实验要求 1、学生必须带上课本,以便于与书本内容进行对照观察。 2、进入实验室必须保持安静,不得大声喧哗,以免影响其他同学。 3、不得私自打开陈列柜,不得用手触摸各种机械零件模型。 4、服从实验人员的安排,认真领会机械零件的构造原理。 五、思考题 1、常用螺纹联接的方法有哪些? 2、说明无键联结的优缺点. 3、在带传动中,带张紧的方法有哪些?

4、轴上零件轴向常用的定位方法有哪些?举例说明。 第二章滑动轴承实验 实验二滑动轴承基本性能实验 一、概述 滑动轴承用于支承转动零件,是一种在机械中被广泛应用的重要零部件。根据轴承的工作原理,滑动轴承属于滑动摩擦类型。滑动轴承中的润滑油若能形成一定的油膜厚度而将作相对转动的轴承与轴颈表面分开,则运动副表面就不发生接触,从而降低摩擦、减少磨损,延长轴承的使用寿命。 根据流体润滑形成原理的不同,润滑油膜分为流体静压润滑(外部供压式)及流体动压润滑(内部自生式),本章讨论流体动压轴承实验。 流体动压润滑轴承其工作原理是通过轴颈旋转,借助流体粘性将润滑油带入轴颈与轴瓦配合表面的收敛楔形间隙内,由于润滑油由大端入口至小端出口的流动过程中必须满足流体流动连续性条件,从而润滑油在间隙内就自然形成周向油膜压力(见图2-1),在油膜压力作用下,轴颈由图2-1(a)所示的位置被推向图2-1(b)所示的位置。 当动压油膜的压力p在载荷F方向分力的合力与载荷F平衡时,轴颈中心处于某一相应稳定的平衡位置O1,O1位置的坐标为O1(e,φ)。其中e=OO1,称为偏心距;φ为偏位角(轴承中心0与轴颈中心0l连线与外载荷F作用线间的夹角)。 随着轴承载荷、转速、润滑油种类等参数的变化以及轴承几何参数(如宽径比、相对间隙)的不同,轴颈中心的位置也随之发生变化。对处于工况参数随时间变化下工作的非

迷宫与栈问题课程设计报告

二、课程设计容(含技术指标) 【问题描述】 以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 【任务要求】 首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。 编写递归形式的算法,求得迷宫中所有可能的通路。 以方阵形式输出迷宫及其通路。 【测试数据】 迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。 出口 出口 四、基本要求 1.在设计时,要严格按照题意要求独立进行设计,不能随意更改。若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。

2.在设计完成后,应当场运行和答辩,由指导教师验收,只有在验收合格后才能算设计部分的结束。 3.设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。设计报告以规定格式的电子文档书写、打印并装订,报告格式严格按照模板要求撰写,排版及图、表要清楚、工整。 从总体来说,所设计的程序应该全部符合要求,问题模型、求解算法以及存储结构清晰;具有友好、清晰的界面;设计要包括所需要的辅助程序,如必要的数据输入、输出、显示和错误检测功能;操作使用要简便;程序的整体结构及局部结构要合理;设计报告要符合规。 课程负责人签名: 2011年7月1日 迷宫与栈问题 摘要 数据结构是研究与数据之间的关系,是互相之间一种或多种特定关系的数据元素的集合,我们称这一关系为数据的逻辑结构。数据结构在计算机的表示(又称映像)称为数据的物理结构,又称存储结构。 本次课程设计是迷宫求解问题,主要是模拟从入口到出口的通路。程序中的数据采取的是“栈”作为数据的逻辑结构,并且使用链式存储结构,即是实现一个以链表作存储结构的栈类型。本课程设计实现了链栈的建立,入栈,出栈,判断栈是否为空的方法,关键的是迷宫通路路径的“穷举求解”和递归求解的方法。 本课程设计重要说明了系统的设计思路、概要设计以及各个功能模块的详细设计和实现方法。 本次程序的开发工具是microsoft visual studio 2008,编程语言是C语言。 关键词:迷宫求解链栈穷举求解递归求解

课程设计报告示例:迷宫求解

安徽建筑大学 课程设计报告 课程名称:数据结构与算法课程设计 题目:迷宫求解 院系:数理系 专业:信息与计算数学 班级: 学号: 姓名: 时间:

目录 一、需求分析 (2) 1.问题描述: (2) 2.基本要求 (2) 二、概要设计 (3) 1.数据结构 (3) 2.程序模块 (3) 3.算法设计 (5) 三、详细设计 (7) 1.数据类型定义 (7) 2.函数实现代码 (7) 3.函数之间的调用关系 (7) 四、调试分析 (7) 五、用户手册 (8) 六、测试结果 (8) 七、参考文献 (9) 八、附录 (9)

迷宫求解题目: 以一个m×n长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍,设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。(1)以二维数组存储迷宫数据; (2)求得的通路以二元组( i , j )的形式输出,其中(i, j)指示迷宫中的一个坐标。 一、需求分析 1. 问题描述: 在迷宫中求出从入口到出口的路径。经分析,一个简单的求解方法是:从入口出发,沿某一方向进行探索,若能走通,则继续向前走;否则沿原路返回,换一方向再进行搜索,直到所有可能的通路都探索到为止。即所谓的回溯法。 求迷宫中从入口到出口的所有路径是一个经典的程序设计问题。由于计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中应用“栈”也就是自然而然的事了。 假设“当前位置”指的是“在搜索过程中某一时刻所在图中某个方块位置”,则求迷宫中一条路径的算法的基本思想是:若当前位置"可通",则纳入"当前路径",并继续朝“下一位置”探索,即切换“下一位置”为“当前位置”,如此重复直至到达出口;若当前位置“不可通”,则应顺着“来向”退回到“前一通道块”,然后朝着除“来向”之外的其他方向继续探索;若该通道块的四周四个方块均“不可通”,则应从“当前路径”上删除该通道块。所谓“下一位置”指的是“当前位置”四周四个方向(东、南、西、北)上相邻的方块。 2. 基本要求 (1)以二维数组maze.adr[m+1][n+1]表示迷宫,其中mg[0][j]和mg[m+1][j](0 j n)及mg[i][0]和mg[i][n](0 i m)为添加的一圈障碍,数组中以元素值为0表示通路,1表示障碍,限定迷宫大小m,n 10。 (2)用户以文件的形式输入迷宫的数据:文件中第一行的数据为迷宫的行数m 和列数n;从第2行至第m+1行(每行n个数)为迷宫值,同一行的两个数之间用空 白字符相隔。 (3)迷宫入口为(1,1),出口为(m,n)。 (4)每次移动只能从一个无障碍的单元到周围8个方向上任意无障碍的单元,编制程序给出一条通过迷宫的路径或报告一个“无法通过”的信息。 (5)本程序只求出一条成功的通路。 3.测试数据见下表,当入口为(1,1)时,出口为(8,8) 用一个字符类型的二微数组表示迷宫,数组中的每个元素表示一个小方格,取值“0”(表示可以进出)或“1”(表示不可以进出) 随机产生一个8*8的迷宫,其中使用迷宫障碍坐标如下: (1,3),(1,7),(2,3),(2,7),(3,5),(3,6), (4,3),(4,4),(5,4),(6,2),(6,6),(7,2),(7,3), (7,4),(7,6),(7,7),(8,1)。

迷宫问题c++实验报告

数据结构实验报告 班级: 姓名: 学号: 组员: 问题描述: 迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的

门放入,在盒中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老鼠经多次试验终于得到它学习走迷宫的路线。设计功能要求: 迷宫由m行n列的二维数组设置,0表示无障碍,1表示有障碍。设入口为(1,1),出口为(m,n),每次只能从一个无障碍单元移到周围四个方向上任一无障碍单元。编程实现对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 算法输入:代表迷宫入口的坐标 算法输出:穿过迷宫的结果。算法要点:创建迷宫,试探法查找路 任务分派 为了达到锻炼大家独立设计算法的能力,大家一致决定,先自己独立设计算法,不论算法的好坏、难易,完完全全出自于自己的手中。 在大家独立完成算法后,进行小组集中讨论,将自己的算法思想与大家交流,特别是自己最自豪的部分或是自己觉得可以改进的地方,之后得出最优结果。 独立设计 求解思想: 利用递归的方式进行求解。从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达,则到达新点,否则试探下一方向;若所有的方向均没有通路,则沿原路返回前一点,换下一个方向再继续试探,直到所有可能的通路都探索到,或找到一条通路,或无路可走又返回到入口点。 如果现在位置(i,j)处于迷宫的边界位置,则有2种或3种可能的走法,为使问题简单化,用maze[m+2][n+2]来表示迷宫,而迷宫的四周的值全部为1,这样做使问题简单了,每个点的试探方向全部为4,不用再判断当前点的试探方向有几个,同时与迷宫周围是墙壁这一实际问题相一致。 struct Pos { int x,y; int di; }; 其中x、y分别表示横纵坐标值、di表示前进的方向。 在已经某一位置(i, j, d)的情况下,其下一个位置横、纵坐标的取值如表4-2所示。 而走到一个新位置时,其方向值初始置为1。 代码 #include "iostream" #include "iomanip" using namespace std; struct Pos { int x,y; int di; };

课程设计报告(迷宫)详解

武汉东湖学院计算机科学学院 课程设计报告 课程名称数据结构课程设 题目深度与广度优先搜索 迷宫问题 专业班级(请自己填写) 学号(请自己填写) 学生姓名(请自己填写) 指导教师吴佳芬 (请自己填写)年(请自己填写)月(请自己填写)日

武汉东湖学院计算机科学学院 课程设计任务书 课程名称:数据结构课程设计 设计题目:深度与广度优先搜索:迷宫问题 专业:(请自己填写)班级:(请自己填写) 完成时间:自己填写指导教师:吴佳芬专业负责人:许先斌

武汉大学东湖分校计算机科学学院 课程设计成绩评价表 指导教师:吴佳芬年月日

(由学生完成,以下为摸版) 【软件课程设计报告目录】 1、需求分析 说明程序设计的任务,强调的是程序要做什么,明确规定: (1)输入的形式和输入值的范围; (2)输出的形式; (3)程序所能达到的功能; (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 2、概要设计 说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 3、详细设计 实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法;画出函数的调用关系。 4、使用说明、测试分析及结果 (1)说明如何使用你编写的程序; (2)测试结果与分析; (3)调试过程中遇到的问题是如何解决提以及对设计与实现的回顾讨论和分析; (4)运行界面。 5、课程设计总结(设计心得) (1)你在编程过程中用时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题? (2)遇到了哪些难题?你是怎么克服的? (3)你对算法有什么改正想法吗? (4)你的收获有哪些? 参考文献 (由学生完成,以下为摸版,编页码:共x页,第x页)

数据结构-迷宫实验报告

云南大学软件学院数据结构实验报告(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 实验难度 A □ B □ C □ 承担任务 (难度为C时填写) 指导教师评分(签名) 【实验题目】 实验4.数组的表示极其应用 【问题描述】 以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 【基本要求】 首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d 表示走到下一坐标的方向。如;对于下列数据的迷宫,输出的一条通路为:(l,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。?

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) (本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识) 本实验的目的是设计一个程序,实现手动或者自动生成一个n×m矩阵的迷宫,寻找一条从入口点到出口点的通路。我们将其简化成具体实验内容如下:选择手动或者自动生成一个n×m的迷宫,将迷宫的左上角作入口,右下角作出口,设“0”为通路,“1”为墙,即无法穿越。假设从起点出发,目的为右下角终点,可向“上、下、左、右、左上、左下、右上、右下”8个方向行走。如果迷宫可以走通,则用“■”代表“1”,用“□”代表“0”,用“→”代表行走迷宫的路径。输出迷宫原型图、迷宫路线图以及迷宫行走路径。如果迷宫为死迷宫,输出信息。 可以二维数组存储迷宫数据,用户指定入口下标和出口下标。为处理方便起见,可在迷宫的四周加一圈障碍。对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。? 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 1. 设定迷宫的抽象数据类型定义: ADT Maze { 数据对象:D = { a i, j | a i, j ∈ { ‘■’、‘□’、‘※’、‘→’、‘←’、 ‘↑’、‘↓’ } , 0≤ i≤row+1, 0≤j≤col+1, row, col≤18 } 数据关系:R = { ROW, COL } ROW = { < a i-1, j , a i, j > | a i-1, j , a i, j ∈D, i=1, … , row+1, j=0, … , col+1} COL = { < a i, j-1, a i, j > | a i, j-1 , a i, j ∈D, i=0, … , row+1, j=1, … , col+1} 基本操作: Init_hand_Maze( Maze, row, col) 初始条件:二维数组Maze[][]已存在。

微机综合设计实验报告

微机接口实验报告 学院:计算机与通信工程学院专业:计算机科学与技术 班级: 学号: 姓名: 综合设计实验

带分频的AD转换 实现功能: 利用8254实现分频功能,再利用AD0809实现数模转换功能。 设计思路: 首先利用8254芯片的计时功能,将CLK0端输入的1MHz的脉冲信号分频为0.1MHz的脉冲,并且从OUT0端输出,然后将输出的脉冲信号作为AD0809数模转换单元的输入信号,从而实现8254的分频功能和AD0809的数模转换功能。 设计接线图: 实验代码: (加粗为分频部分代码,未加粗为AD转换部分代码) IO8254_MODE EQU 283H ;8254控制寄存器端口地址 IO8254_COUNT0 EQU 280H ;8254计数器0端口地址 IO0809 EQU 298H ;AD0809DE STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX, IO8254_MODE ;初始化8254工作方式 MOV AL,37H ;计数器0,方式3 00110111 OUT DX,AL MOV DX,IO8254_COUNT0 ;装入计数初值 MOV AX,000AH ;10D=0AH(可以自己设计分频倍数或者利用多个计数器实现更大倍数的分频) MOV AL,03H

OUT DX,AL MOV AL,AH OUT DX,AL MOV DX, IO0809 ;启动A/D转换器 OUT DX, AL MOV CX, 0FFH ;延时 DELAY: LOOP DELAY IN AL, DX ;从A/D转换器输入数据 MOV BL,AL ;将AL保存到BL MOV CL, 4 SHR AL, CL ;将AL右移四位 CALL DISP ;调显示子程序显示其高四位 MOV AL, BL AND AL, 0FH CALL DISP ;调显示子程序显示其低四位 MOV AH, 02 MOV DL, 20H ;加回车符 INT 21H MOV DL, 20H INT 21H PUSH DX MOV DL, 0FFH ;判断是否有键按下 MOV AH, 06H INT 21H POP DX JE START ;若没有转START MOV AH, 4CH ;退出 INT 21H DISP PROC NEAR ;显示子程序 MOV DL, AL CMP DL, 9 ;比较DL是否>9 JLE DDD ;若不大于则为'0'-'9',加30h为其ASCII码 ADD DL, 7 ;否则为'A'-'F',再加7 DDD: ADD DL,30H ;显示 MOV AH, 02 INT 21H RET DISP ENDP CODE ENDS END START

数据结构迷宫问题课程设计

数据结构课程设计报告 设计题目:迷宫问题数据结构课程设计_ 班级:计科152 学号:19215225 姓名:徐昌港 南京农业大学计算机系

数据结构课程设计报告内容 一.课程设计题目 迷宫问题 以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。要求:首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 二.算法设计思想 1.需求分析 (1)迷宫数据用一个二维数组int maze[row][col]来存储,在定义了迷宫的行列数后,用两个for循环来录入迷宫数据,并在迷宫周围加墙壁。 (2)迷宫的入口位置和出口位置可以由用户自己决定。 2.概要设计 (1)主程序模块: void main() { int maze[row][col]; struct mark start,end; //出入口的坐标 int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; //方向,依次是东西南北 built_maze(maze); printf("请输入入口的横纵坐标:"); scanf("%d,%d",&start.a,&start.b); printf("请输入出口的横纵坐标:");

scanf("%d,%d",&end.a,&end.b); printf("0为东,1为南,2为西,3为北,-1为出路\n"); maze_path(maze,dir,start,end); getchar(); } (2)栈模块——实现栈抽象数据类型 (3)迷宫模块——实现迷宫抽象数据类型,建立迷宫,找出迷宫的一条通路 3.详细设计 (1)坐标位置类型 struct mark{ int a,b; //迷宫a行b列为位置 }; (2)迷宫类型 void built_maze(int maze[row][col]) //按照用户输入的row行和col列的二维数组(元素值为0和1) //设置迷宫maze的初值,包括边上边缘一圈的值 void maze_path(int maze[row][col],int dir[4][2],struct mark start,struct mark end) //求解迷宫maze中,从入口start到出口end的一条路径, //若存在,则返回TRUE;否则返回FALSE (3)栈类型 struct element{ int i,j,d; //坐标与方向 }; typedef struct Linkstack{ element elem;

迷宫与栈课程设计报告范例

(此文档为word格式,下载后您可任意编辑修改!) 北京理工大学珠海学院课程设计说明书 _2014_—_2015_学年第_一_学期 题目: 迷宫与栈 学院:计算机学院 专业班级:软件工程x班 学号 x 学生姓名: XXX 指导教师:何春香 成绩: 时间: 2014年 11 月 7日

附件4: 北京理工大学珠海学院 课程设计任务书 2014 ~2015 学年第学期 学生姓名:专业班级: 指导教师:何春香工作部门:软件工程教研室一、课程设计题目 迷宫与栈问题 二、课程设计内容(含技术指标) 【问题描述】 以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 【任务要求】 首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。 编写递归形式的算法,求得迷宫中所有可能的通路。 以方阵形式输出迷宫及其通路。 【测试数据】 迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)

为出口。 出口 出口 三、进度安排 1.初步设计:写出初步设计思路,进行修改完善,并进行初步设计。 2.详细设计:根据确定的设计思想,进一步完善初步设计内容,按要求编写出数据结构类型定义、各算法程序、主函数。编译分析调试错误。 3.测试分析:设计几组数据进行测试分析,查找存在的设计缺陷,完善程序。 4.报告撰写:根据上面设计过程和结果,按照要求写出设计报告。 5.答辩考核验收:教师按组(人)检查验收,并提出相关问题,以便检验设计完成情况。 四、基本要求 1.在设计时,要严格按照题意要求独立进行设计,不能随意更改。若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。 2.在设计完成后,应当场运行和答辩,由指导教师验收,只有在验收合格后才能算设计部分的结束。 3.设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。设计报告以规定格式的电子文档书写、打印

最简单的c语言迷宫游戏实验报告

一、内容: 1、本游戏主要实现了人控制键盘方向键使小人(*)走出迷宫。 2、具有的功能: 1)、在游戏菜单里人可以选择不同难度的游戏进行游戏; 2)、在游戏过程中,可以通过键盘方向键使小人移动,走出迷宫; 3)、在游戏过程中,当人碰到墙壁(#)的时候小人过不去; 4)、当人顺利完成游戏之后,输出“========you are win!======”字样,30秒钟后自动返回到游戏菜单; 5)、在游戏过程中,人可以通过按Esc键返回游戏菜单;也可以可以按0直接退出游戏; 6)、在游戏菜单里,按0键可以退出游戏。 3、具体应用: 1)、人主要同过键盘的1,2,3数字键来选择游戏难度; 2)、在游戏中通过Esc键来返回菜单; 3)、同过0键退出游戏。 二、上机环境 操作系统:windows7 开发工具:VC6.0 三、函数调用关系图

四、各函数功能说明 main() 主函数; menu() 游戏菜单; roadcake() 消去小人路径; introduce() 游戏介绍; system(“cls”) 消屏函数; exit(0) 退出游戏; drawmg1() 画初级难度迷宫; drawmg2() 画中级难度迷宫; drawmg3() 画高级难度迷宫; control1() 控制初级难度游戏; control2() 控制中级难度游戏; control3() 控制高级难度游戏; 五、算法流程图 首先定义三个全局数组mg1[20][20]、mg2[30][30]、mg3[30][30]用于画出迷宫的地图;1表示墙(#),0表示空地(); Introduce( )函数里如果按Enter键,则调用menu( )函数,从键盘中输入相应的提示数字,进入难度不同的游戏;游戏的执行在此只初级难度进行描述,其余的难 度与其类似; 选了1后调用system(”cls”)进行清屏;drawmg1()函数进行迷宫的地图的绘

计算机操作系统综合设计实验报告实验一

计算机操作系统综合设计 实验一 实验名称:进程创建模拟实现 实验类型:验证型 实验环境: win7 vc++6.0 指导老师: 专业班级: 姓名: 学号: 联系电话: 实验地点:东六E507 实验日期:2017 年 10 月 10 日 实验报告日期:2017 年 10 月 10 日 实验成绩:

一、实验目的 1)理解进程创建相关理论; 2)掌握进程创建方法; 3)掌握进程相关数据结构。 二、实验内容 windows 7 Visual C++ 6.0 三、实验步骤 1、实验内容 1)输入给定代码; 2)进行功能测试并得出正确结果。 2、实验步骤 1)输入代码 A、打开 Visual C++ 6.0 ; B、新建 c++ 文件,创建basic.h 头文件,并且创建 main.cpp 2)进行功能测试并得出正确结果 A 、编译、运行main.cpp B、输入测试数据 创建10个进程;创建进程树中4层以上的数型结构 结构如图所示:。

createpc 创建进程命令。 参数: 1 pid(进程id)、 2 ppid(父进程id)、3 prio(优先级)。 示例:createpc(2,1,2) 。创建一个进程,其进程号为2,父进程号为1,优先级为2 3)输入创建进程代码及运行截图 4)显示创建的进程

3、画出createpc函数程序流程图 分析createpc函数的代码,画出如下流程图:

四、实验总结 1、实验思考 (1)进程创建的核心内容是什么? 答: 1)申请空白PCB 2)为新进程分配资源 3)初始化进程控制块 4)将新进程插入到就绪队列 (2)该设计和实际的操作系统进程创建相比,缺少了哪些步骤? 答:只是模拟的创建,并没有分配资源 2、个人总结 通过这次课程设计,加深了对操作系统的认识,了解了操作系统中进程创建的过程,对进程创建有了深入的了解,并能够用高 级语言进行模拟演示。一分耕耘,一分收获,这次的课程设计让 我受益匪浅。虽然自己所做的很少也不够完善,但毕竟也是努 力的结果。另外,使我体会最深的是:任何一门知识的掌握, 仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能 达到功效。

迷宫实验实验报告

迷宫实验 一.摘要 迷宫实验主要是要探讨研究一个人只靠自己的动觉,触觉和记忆获得信息的情况下,如何学会在空间中定向。本实验的被试是华东师范大学应用心理学系大二的一名女同学,本实验以学习遍数为自变量,以所用时间和错误次数为因变量,让被试在排除视觉条件下,用小棒从迷宫起点凹槽移动到达终点,其间小棒每次进入盲巷并与盲巷末端金属片接触算一次错误,学会的定义为连续三遍不出错。而且主试也不能给予被试任何提示或暗示。被试要运用动觉,思维,记忆等自己认为有效的方法独立完成。测试中为了控制疲劳带来的误差,若被试感到疲劳,可稍事休息再进行实验。分析实验数据可知,被试走完迷宫所用时间成减少趋势,错误次数也成减少趋势。在最初几次走迷宫时,错误次数会出现反复的时多时少的情况,所用时间也在反复,时多时少,这表明被试在摸索迷宫路线,处于对整个迷宫的整体定位中。随着学习遍数的增加,错误次数与走完一次迷宫所用的时间开始减少,这表明被试对于迷宫的整体情况有了比较清楚的了解。 关键词迷宫学习次数学习时间错误次数 二.引言 人类从十九世纪末就开始研究迷宫学习了。1899 年,斯莫尔(W. S. Small ) 让白鼠学习一条相当复杂的迷津通路。通过研究他认为,白鼠迷宫学习所依靠的主要是触觉和动觉记忆。1912 年希克思(V. C. Hicks) 和卡尔把迷宫用于研究人类学习。泊金斯(Perkins,1927)最早使用这种在手指迷宫的基础上发展起来的最简便、最常用的触棒迷宫(pencil maze)。近年来,学者们则利用迷宫进行逆反学习能力的研究。而在特殊教育领域,也利用迷宫队正常人和盲人进行了触棒迷宫的对比试验,并得出了盲人心理的巨大补偿作用和学习潜能的结论。 迷宫是研究一个人只靠自己的动觉、触觉和记忆获得信息的情况下,如何学会在空间中定向。迷宫的种类很多,结构方式也不一样,但是有一个特征,这就是有一条从起点到终点的正确途径与从此分出的若干条盲巷。被试的任务是寻找与巩固掌握这条正确途径。迷宫的学习一般可分为四个阶段:1.一般方位辨认。2.掌握迷宫的首段、尾段和中间的一、二部分。3.扩大可掌握的部分,直至全部掌握空间图形。4.形成集体对空间图形的自动化操作。迷宫学习与被试的智商有关,它涉及被试的空间定向能力、思维、记忆诸多方面。 在此迷宫实验中,被试排除视觉条件,用小棒从迷宫起点沿凹槽移动到达终点。在此过程中,被试要运用动觉,思维,记忆等自己认为有效

《数据结构》课程设计报告-运动会分数统计 一元多项式 迷宫求解 文章编辑 纸牌游戏等

《数据结构》课程设计报告-运动会分数统计一元多项式迷宫求解文章编辑纸牌游戏等

南京林业大学 数据结构课程设计报告 专业:计算机科学与技术 课程名称:数据结构 姓名: 学号:090801126 指导老师: 时间: 2011年1月

目录要点: 一.具体内容(题目) (1) 二.需求分析(功能要求) (2) 三.概要设计(程序设计思想) (3) 四.详细设计(源代码) (6) 五.调试分析(运行结果显示及说明) (31) 六.课设总结 (34) 题目1: 运动会分数统计** 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7,5,3,2,1,取前三名的积分分别为:5,3,2,;哪些取前五名或前三名由学生自己设定。(m〈=20,n〈=20); 题目2:一元多项式** 任务:能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加,相减,并将结果输入; 题目4:迷宫求解 任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出; 题目5:文章编辑** 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行; 题目6:Joseph环 任务:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有的人出列为止。设计一个程序来求出出列的顺序。 2

c++迷宫游戏实验报告材料

1、问题描述 程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向健操纵老鼠在规定的时间内走到粮仓处。 基本要求: (1)老鼠形象可以辨认,可用键盘操纵老鼠上下左右移动; (2)迷宫的墙足够结实,老鼠不能穿墙而过; (3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,并给出一条路径,否则提示失败。 提高要求: (1)添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙; (2)增加闯关和计分功能; (3)找出走出迷宫的所有路径,以及最短路径。 。 2.需求分析 软件的基本功能:通过键盘控制光标移动实现老鼠在迷宫中的行走、全部路径和最短路径的显示、自定义地图(墙变路,路变墙)。在老鼠闯关只能在地图显示是路的地方行走,不能穿墙,有计时功能,当时间结束时若没有到达指定地点,显示game over,查看排行榜,游戏结束,若成功到达指定位置,进去下一关,直到所有关结束,程序结束;。 输入/输出形式:用户可以通过控制台,根据输入提示。 输入形式: ①方向键、空格键、enter键 输出形式: ①输出地图菜单。 ②输出地图 ③输出是否成功信息、输出排行榜 3.概要设计 (1)主程序流程

图1:主程序流程图 (3)模块调用关系: 本程序中函数包括:main函数,menu函数,menu2函数,mouse类内函数,path 类内函数,change函数, 函数调用关系如下:

图2:函数调用关系 4.详细设计 (1)实现概要设计的数据类型: Mouse类 class mouse { private: int m_x; int m_y; time_t begin ,stop; public: int move_up(int map[x][y],int end);//向上移动 int move_down(int map[x][y],int end);//向下移动 int move_left(int map[x][y],int end);//左 int move_right(int map[x][y],int end);//右 void initialize(int map[x][y],int end){ m_x=S;m_y=S;map[end][end]=9;} void print(int map[x][y],int end);//打印地图

电子电路综合设计实验报告

电子电路综合设计实验报告 实验5自动增益控制电路的设计与实现 学号: 班序号:

一. 实验名称: 自动增益控制电路的设计与实现 二.实验摘要: 在处理输入的模拟信号时,经常会遇到通信信道或传感器衰减强度大幅变化的情况; 另外,在其他应用中,也经常有多个信号频谱结构和动态围大体相似,而最大波幅却相差甚多的现象。很多时候系统会遇到不可预知的信号,导致因为非重复性事件而丢失数据。此时,可以使用带AGC(自动增益控制)的自适应前置放大器,使增益能随信号强弱而自动调整,以保持输出相对稳定。 自动增益控制电路的功能是在输入信号幅度变化较大时,能使输出信号幅度稳定不变或限制在一个很小围变化的特殊功能电路,简称为AGC 电路。本实验采用短路双极晶体管直接进行小信号控制的方法,简单有效地实现AGC功能。 关键词:自动增益控制,直流耦合互补级,可变衰减,反馈电路。 三.设计任务要求 1. 基本要求: 1)设计实现一个AGC电路,设计指标以及给定条件为: 输入信号0.5?50mVrm§ 输出信号:0.5?1.5Vrms; 信号带宽:100?5KHz; 2)设计该电路的电源电路(不要际搭建),用PROTE软件绘制完整的电路原理图(SCH及印制电路板图(PCB 2. 提高要求: 1)设计一种采用其他方式的AGC电路; 2)采用麦克风作为输入,8 Q喇叭作为输出的完整音频系统。 3. 探究要求: 1)如何设计具有更宽输入电压围的AGC电路; 2)测试AGC电路中的总谐波失真(THD及如何有效的降低THD 四.设计思路和总体结构框图 AGC电路的实现有反馈控制、前馈控制和混合控制等三种,典型的反馈控制AGC由可变增益放大器(VGA以及检波整流控制组成(如图1),该实验电路中使用了一个短路双极晶体管直接进行小信号控制的方法,从而相对简单而有效实现预通道AGC的功能。如图2,可变分压器由一个固定电阻R和一个可变电阻构成,控制信号的交流振幅。可变电阻采用基极-集电极短路方式的双极性晶体管微分电阻实现为改变Q1电阻,可从一个由电压源V REG和大阻值电阻F2组成的直流源直接向短路晶体管注入电流。为防止Rb影响电路的交流电压传输特性。R2的阻值必须远大于R1。

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