复习题1湖南工业大学交互式考试doc.docx
- 文档编号:10290309
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:17
- 大小:38.07KB
复习题1湖南工业大学交互式考试doc.docx
《复习题1湖南工业大学交互式考试doc.docx》由会员分享,可在线阅读,更多相关《复习题1湖南工业大学交互式考试doc.docx(17页珍藏版)》请在冰豆网上搜索。
复习题1湖南工业大学交互式考试doc
1、JC的组成,JC编译方式的特点。
JC由两部分组成:
编译环境(包含交互式命令行编辑和调试功能)、能力风暴操作系统。
JC编译方式的特点:
不直接编译生成针对特定处理器的机器代码,而是先编译生成基于堆栈虚拟机的伪代码,然后由能力风暴操作系统解释执行。
2、JC的库函数。
3、多个进程如果进行通讯怎么办?
多进程之间的通讯及同步问题。
遵循的原则?
进程间的通讯:
通过全局变量进行。
多进程之间的通讯及同步问题。
遵循的原则:
1)-•种设备只在-•个进程中访问;2)同时只能有一•个进程写一•个全局变量,但可以有多个进程同时读。
4、构成机器人的三大要素是什么?
请从这三大要素着手分析说明机器人的工作原理。
构成机器人的三大要素是:
传感器、微控制器和执行器。
机器人的工作原理:
机器人通过传感器采集外界环境信息,然后将采集的信息经过转换元件转换成电信号,再经过A/D转换成数字量,传递给微控制器,微控制器根据装载的JC程序,发出相应的命令给执行器执行。
5、微控制器68HC11,端口A—E的功能。
在机器人中的使用情况。
PORTA:
数字口。
PA2输入捕捉通道。
PA3-PA6输出比较通道。
PA7通用的I/OQo能力风暴机器人中:
光电编码器利用PAO、PAIQ捕捉计码盘信号;电机驱动采用PA5、PA6发出PWM信号;喇叭由PA3控制。
PORTB:
端口功能受68HC11E的工作模式的影响,单独工作模式下,提供普通的8条输出信号通道,扩展工作模式下,提供8位地址通道。
能力风暴机器人中:
PORTB与PORTC提供16条地址线,PORTB做为地址的高8位。
PORTC:
单独工作模式下,提供普通的8条输入/输出信号通道,扩展工作模式下,提供8位地址/数据复合通道。
能力风暴机器人中:
PORTB与PORTC提供16条地址线,8条数据线(PORTC做为地址的低8位,地址/数据时分多用)
PORTD(1008):
PDO-PD1作为串行通信口(SCI),PD2-PD5串行外设接口(SPI);能力风暴机器人中:
用PDO,PD1与PC机进行通信;PDO(RXD)——接收数据;PDl(TXD)——发送数据。
红外传感器:
利用PD2,PD3设置发光二极管的状态;直流电机:
利用PD4,PD5给驱动电机芯片提供输入脉冲。
PORTE(100A):
模拟口。
能力风暴机器人中:
光敏传感器利用PEO,PE1口采集光敏电阻上的电压值;麦克风利用PE2口采集电压值;碰撞传感器利用PE3口采集电压值;红外传感器利用PE4口采集红外探测器的当前值。
7、什么是传感器?
它的作用和组成。
传感器就是自动测量系统中一个把待测量变换成某种电信号的装置。
传感器是能感觉规定的被测量,并按一定的规律性,转换成可用输出信号的器件或装置。
通常由敏感元件和转换元件组成。
8、能力风暴五种基本传感器,所对应的库函数有哪些,如何应用。
基本的结构和执行的过程。
红外传感器:
红外传感器由发光二极管和光敏晶体管组成。
发光二极管发出的光经过反射被光敏晶体管接收。
接收到的光强和传感器与目标的距离有关,因此也叫接近觉传感器。
机器人的最远“可视距离”是80cm。
由红外发射管决定,调节主板上的调节电位器,在电位器的旁边分别标有“irleft""irright",顺时针旋转,机器人的“可视距离”增大,反之,减小。
红外传感器检测障碍的过程
1)左右发射管均关闭,红外探测器探测一次当前信号,并保存下来以跟后面采集的数据比较。
当程序中调用i七detector()时,启动红外发射探测系统。
首先,左红外发射管发射一次,延时1ms后红外探测器探测一次信号;然后,右红外发射管发射一次,延时1ms后红外探测器探测一次信号,(红外探测器探测一次信号的时间为0.064ms)红外探测器通过PE4口采样当前值,并保存下来。
3)调用一次ir_dctector()函数,红外探测系统开启一•次。
完成后,左右发射管关闭。
只有在初始探测无反射而第二次探测有反射时,左反射管才是有反射的,这样系统才认为左方有障碍;同理,初始探测无反射而第三次探测有反射时,右反射管才是有反射的,右方被认为有障碍。
而当左右两方向都检测到障碍时,就认为前方有障碍。
注意:
红外接收模块只是在接收到一定强度的红外光时才认为有障碍,所以,当障碍物太细时,会检测不到障碍;当障碍物是黑色或深色时,由于只反射回一小部分红外光,会使接收模块接收到的红外光强度不够而被误认为无障碍。
红外传感器对应的库函数是ir_detector()□返回值:
ObOO:
没有障碍ObOl:
左方有障碍OblO:
右方有障碍:
OblOO:
前方有障碍。
碰撞传感器:
碰撞环上有四个碰撞开关:
右前、左前、右后、左后,它们和碰撞环一•起构成了碰撞传感器,用来感知碰撞环上的碰撞信息。
四个碰撞开关接在一个电阻网络里,当受到碰撞时,碰撞开关闭合,通过采集模拟口PE3上电压值的变化,来识别出哪个或哪些碰撞开关闭合,从而判断出哪些方向有碰撞。
碰撞传感器对应的库函数是bumper(),返回值0001左前、0010右前、0100左后、1000右后、0011前、1100后、0101左、1010右、0000无。
麦克风:
声音传感器内置一个对声音敏感的电容式驻极体话筒。
声波使话筒内的驻极体薄膜振动,导致电容的变化,而产生与之对应变化的微小电压。
这一电压随后被转化成0〜5V的电压,经过A/D转换被数据采集器接受,麦克风采集到的信号通过放大,输出信号至PE2口。
没有声音时,电压为2.5V左右,转换为8位二进制数后得到的十进制整数为127左右。
当有声音时,输出电压在2.5V±下波动,PE2测得的电压和2.5V相减的绝对值越大,则声音越大。
麦克风对应的摩函数是microphone()omicrophone()对数据进行了处理,使返回值在0~255之间,声音越响数值越大。
intmicrophone()
{returnabs(analogport
(2)-127)*2;}
光敏传感器:
两个光敏电阻分别与模拟输入口PEO,PE1相连,系统中采集的是光敏电阻上的电压值。
光暗时,电阻上的电压接近5V;光强时,接近0V。
光敏电阻的阻值变化是连续的,因此PEO,PE1的电压变化也是连续的,电压信号经过模数转换变成8位二进制数,即十进制0-255o0表示光线最强;255表示光线最弱。
/*读光敏,index二左1,右2,返回值0~255,光线越暗数值越大*/intphoto(intindex)
if(index=l)returnanalogport
(1);
if(index==2)returnanalogport(0);
return0;
)
光电编码器:
光电编码器是一种传递位置信息的传感器,试述它的组成及基本的工作原理,并讲述机器人如何通过光电编码器得到行驶的距离?
光电编码器的组成包括:
光电编码模块和码盘。
基本的工作原理:
光电编码模块集成了红外发射与接收功能,码盘是反射器,可以将光电编码模块发射的红外光反射回来,给光电编码模块接收。
检测左右编码器当前状态的库函数为:
encoder(l),它返回左编码器的当前状态;encoder
(2)它返回右编码器的当前状态。
0为低电平,1为高电平库函数rotation(l),rotation
(2)nJ读出经过左右光电编码器的脉冲累计值。
/*光电编码器当前状态,index二左1,右2*/intencoder(intindex){
if(index==l)returndigitalport(0);
elsereturndigitalport(7);
编写程序:
把儿个机器人放在一起,编写程序并下载运行,试一试机器人你叫我应的场面是不是很有趣。
一部分机器人先发音,一部分机器人先侦听。
发音的机器人发音完毕后转入侦听,听到声音的机器人回应(发音)。
/*初始化b二1时,设置该机器人先侦听;初始化b二-1时,设置该机器人先发出声音。
*/
■voidmain()
■(intb=l;
■intmic;
■while
(1)
■{mic二microphone();
■printf("mic=%d\n”,mic);
■wait(0.5);
■if(b=l&&niic>140)
■{b=b*(-l);
■beep();
■wait(2.0);}
if(b==-l)
■beepO;
■wait(1.0);
■b二b*(T);}
■
机器人放在离光源有一段距离的地方,此时,让机器人向光源靠近,足够接近
}}
请用光敏传感器让机器人追光。
但光敏传感器能探测到光源的位置,光源时停下来。
■Voidmain()
intright,left,diff,even;while
(1)
right二photo
(2));
left二photo⑴;
diff二rightTeft;
even=(right+left)/2;
if(even<100)
stopO;
elseif(diff>20)
drive(60,10);
elseif(diff<-20)
drive(60,TO);
elsedrive(60,0)
wait(0.1);
)
}
请让机器人以最大速度前进10秒,然后计算机器人行走的距离和速度(每
个脉冲周长方面的分辨率为6.2mm)
voidmain()
(
ints,v;
intnumber=0;
drive(100,0);
wait(lO.O);
number=rotation
(1);
s=(int)(number*6.2);
v=(int)(distant/10);
请用麦克风检测声音,让机器人第一次听到声音时,全速前进;第二次听到声音时,停下来;如此循环。
(有效声音标志microphone0返回值大于180)
■Voidmain()
■(
■int1=0;
■intmic;
■while
(1)
■(
■mic=microphone();
■if(mic>180)1+二1;
■if(I==l)drive(100,0);
■else
■(stopO:
1=0;}
■}
■}
红外避障库函数:
/*红外测障,返回值:
无0,左1,右2,前4。
左发射PD2,右发射PD3,接收PE4*/
■intir_detector()
■(intvail,val2,val3,result;
■vail=read(OxlOOA)&OblOOOO;/*检测接收到的背景红外信号*/
■bit_set(0x1008,0b0100);
■msleep(2L);/*
/*打开左红外发射传感器,PD2口*/等待2毫秒*/
val3=read(OxlOOA)&OblOOOO;/*检测接收到的红外信号*/
■bitclear(0x1008,ObOlOO);
■bitset(0x1008,OblOOO);
/*关闭左红外发射传感器*/
/*打开右红外发射传感器,PD3口*/
msleep(2L);/*等待2毫秒*/
val2=read(0x100A)&0b10000;/*检测接收到的红外信号*/
■bit_clear(0x1008,Obi100);
/*关闭所有红外发射传感器*/
result=((val1&~val2)»3)|((val1&~v&13)»4);
■msleep(2L);
■if(result=3)result=4;
■returnresult;
/*等待2毫秒*/
请用能力风暴机器人做一•个简易电子琴,碰撞碰撞环,发出8个不同方位的声音,并且在液晶显示器上,分别将8个不同方位的碰撞信息显示出来。
左前(247Hz)/<、右的(294Hz)
3
右(330Hz)
右后(350Hz)
1(262Hz)
7
左(495Hz)64
左后(441Hz)5
后(393Hz)
■voidmain()
■(
■intbump;
■while
(1)
■{
■bump=bumper();
■if(bump==0b0011){printf("font\n”);tone(262.0,0.5);)
■elseif(bump==0b0001){printf("rightand
font\n”);tone(294.0,0.5);}
■elseif(bump==0b0101)(printf("right"');tone(330.0,0.5);)
■elseif(bump二二ObOlOO){printf("rightand
ba.ck\n”);tone(350.0,0.5);}
■elseif(bump==0bll00)(printf(uback\nv);tone(393.0,0.5);)
■elseif(bump=0bl000){printf("leftand
back\n");tone(441.0,0.5);)
■elseif(bump=0bl010){printf("left\n”);tone(495.0,0.5);}
■elseif(bump==0b0010)(printf("leftandfont\n”);tone(247.0,0.5);}
■wait(0.5);
■}
读取系统时间,此时的系统时间单位是“秒”,然后通过程序处理后,变为“分:
秒:
毫秒”的显示方式,也就是将系统读出的时间变为具体的分、秒、毫秒值来显示。
■voidmain()
.(floatfscc;
■intsec,msec,min;
■while(bumper()=0)
■{fsec=seconds();
■sec=(int)fsec;
*/
/*主函数,作为程序入口*/
/*定义浮点数型变量*/
/*定义整型变量*/
/*当没有碰撞时*/
/*读取时间值,单位为“秒”*/
/*得到所有时间的整数“秒”值
■msec=(int)((fsec-(float)sec)*100.0);/*得到“毫秒”的整数值*/
■min=sec/60;/*得到“分”的值*/
■sec=sec-min*60;/*得到"秒”的值*/
■if(min<10)printf(〃0%d〃,min);/*如果"分”小于10,前面加0显示*/
■elseprintf(〃%d〃,min);/*否则,直接显示“分”
*/
■if(sec<10)printf(〃:
0%d”,sec);/*如果“秒”小于10,前面
加0显示*/
■elseprintf(〃:
%d〃,sec);/*否则,直接显示“秒”
*/
■if(msec<10)printf(z,:
0%d\nz/,msec);/*如果“毫秒”小于10,
前面加0显示*/
■elseprintf(〃:
%d\n〃,msec);/*否则,直接显示“毫秒”
*/
■wait(0.1);/*等待0.1秒*/
■}
■}
机器人直走校准程序及调试方法。
■intdrivebias=0;
■voiddriveb(inttrans,introt)
■(introt_bias=(drive_bias*trans)/100;
■motor(0,trans-(rot+rot_bias));
■motor(1,trans+(rot+rotbias));
■}—
飞蛾扑火程序:
voidmain()
(
{
intr,1;/*定义变量r左光敏1右光敏*/
intal,a2,a3;/*定义标志位al找光源方向a2靠近光源a3围绕光源转*/
intdl,d2;/*定义参数dl靠近光源左右方向参数d2旋转参数*/
al=l;a2=0;a3=0;/*标志位设初值,al设1则先执行找光源方向*/
while
(1)
I
while(al)/*执行al找光源*/
(
r二photo
(2);
1二photo(l);
printf(z,al:
r=%d,1二%d\n〃,r,1);
if(r<240||l<240)/*发现光源方向的条件*/
(al=0;a2=l;}/*转到a2执行,靠近光源*/
r=photo
(2);
l=photo(l);
/*设置dl参数*/
,r,1,dl);
dl=(l-r)*2;
printf(z,a2:
r=%d,l=%d,d=%d\n,/
if(r<150||l<150)/*到达光源附近的条件*/
(a2=0;a3=l;}/*转到a3执行,围绕光源转圈*/
elseif(r>240&&!
>240)/*远离光源的条件*/
/*转到al执行,寻找光源方向*/
/*靠近光源移动*/
(al=l;a2=0;}
drive(80,dl);
wait(0.1);
r二photo
(2);
/*设置d2参数*/
d2二(r-150)*2;
printf(,za3:
r=%d,d=%d\n,r,d2〃);
drive(80,d2);/*围绕光源转动,先调整轨道,停留在r=150
的圆圈轨道上运动*/
wait(0.01);
}
}
1
跟人走
■voidmain()
■{intir=0;/*红外检测变量*/
■intbmp=0;/*碰撞检测变量*/
■intold_bmp=0;/*前一次的碰撞检测结果*/
■intfoltransdef=80;/*预设的前进速度*/
■intfolrotdef二40;/*预设的转弯速度*/
■printf(〃Follow\n");/*显示在LCD屏幕上*/
■while
(1)
■{ir=ir_dctector();/*取红外系统检测结果*/
■bmp=bumper()&ObOOll;/*检测前左、前右方向上的碰撞*/
■if(oldbmp&&(!
bmp))/*连续两次碰撞*/
■wait(0.5);
■elseif(bmp)/*如果前方有碰撞*/
■stopO;/*停止运动*/
■elseif(ir==0)/*前方没有物体*/
■StopO;/*停止运动*/
■elseif(ir==4)/*前方有物体*/
■drive(foltransdef,0);/*往前追*/
■elseif(ir―1)/*物体在左侧*/
■drive(foltransdef,(-folrotdef));/*转向左*/
■elseif(ir==2)/*物体在右侧*/
■drive(fol_trans_def,fol_rot_def);/*转向右*/
■wait(0.1);/*让运动持续一会*/
■oldbmp=bmp;
■)"
■}
多进程同步:
intbilltrans=0;
intbillrot=0;
intbmpr=0;
intforward=0;
intrunning=0;/*能力风暴初始值处于静止状态*/
voidbilliards()
(
while
(1)/*无限循环检测*/
{
bmpr=bumper();/*检测碰撞传感器*/
if(bmpr!
=0)
(if(bmpr==0b0011)/*正前方发生碰撞*/
{forward=0;
bill_trans=-80;/*后退*/
billrot=0;
}
elseif(bmpr==0bll00)/*正后方发生碰撞*/
{forward二1;
bi1l_trans=80;/*前进*/
bill_rot=0;
}
elseif(bmpr&ObOlOl)/*左侧发生碰撞*/
{bill_trans=0;
bill_rot=-80;
wait(0.5);/*顺时针转一个角度*/
forward二1;
bill_trans=80;/*前进*/
bill_rot=0;
}"
elseif(bmpr&OblOlO)/*右侧发生碰撞*/
{bill_trans=0;
bill_rot二80;
wait(0.5);/*逆时针转一个角度*/forward=l;
bill_trans=80;/*前进*/bill_rot=0;
}}
)
)
voidbilliardsir(){—intir;
while
(1)
{
if(running)/*能力风暴没有开始运动,不检测障碍*/
(ir=ir_detector();/*检测红外传感器*/
if(bmpr==0&&forward)/*后退或发生碰撞时,不避障*/{
if(ir==2)/*右侧有障碍,向左绕*/
(bill_trans=20;
bill_rot=80;/*逆时针转*/
)
elseif(ir==l)/*左侧有障碍,向右绕*/
(bill_trans=20;
bill_rot=-80;/*顺时针转*/
}一
elseif(ir==0)/*前方没有障碍,恢复直行*/
{billtrans=80;
billrot=0;
}}wait(0.1);
})
voidbilliardsdrive()
{~
while
(1)
(running=bill_trans;/*能力风暴正在运动*/drive(bill_trans,bill_rot);/*驱动电机*/
)
)
voidmain()start_proccss(billiards_drivc());/*创建电机驱动进程*/start_process(billiards_ir());/*创建避障进程*/
start_process(bil1iards());/*创建碰撞处理进程*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习题 湖南 工业大学 交互式 考试 doc
![提示](https://static.bdocx.com/images/bang_tan.gif)