语音控制小车使用说明书v1_第1页
语音控制小车使用说明书v1_第2页
语音控制小车使用说明书v1_第3页
语音控制小车使用说明书v1_第4页
语音控制小车使用说明书v1_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、语音控制小车使用说明书V1.2 2005.09.11科技大学计划教育推广中心海淀上地信息产业FAX: 86-10-62962425中黎科技园 1 号楼 5 层: 86-10-62981668E-保留对此文件修改之权利且不另行通知。所提供之信息相信为正确且可靠之信息, 但并不保证本文件中绝无错误。请于向科技股份提出订单前, 自行确定所使用之相关技术文件及规格为之版本。若因贵公司权之应用及配合时, 则使用本公司之文件或产品, 而涉及第三人之专利或著作权等智能应由贵公司负责取得同意及司应为保证之责任. 又, 本公司仅单纯贩售产品, 上述关于同意及, 非属本公之正式, 本公司之所有产品不得使用于医疗器

2、材, 维持生命系统及飞航等相关设备。目录. 2目录3语音控制小车概述111.11.21.3功能简介1参数说明1注意事项12硬件说明2小车实物图2硬件框图2SPCE061A精简开发板简介3小车控制板5小车的功能实现原理1133.13.23.33.4直走的实现过程11转弯的实现过程11调速的原理12语音识别原理简介12流程1444.1 主程序流程图144.2 程序中需明的几个问题155如何使用165.15.25.35.45.5连接硬件16代码. 17训练小车18声控小车19重新训练196应用举例206.1 一个简单的前进实例20常见问题2278附录238.18.28.38.4配件23资料获取途径2

3、3配套资料公司. 23. 241 语音控制小车概述1.1 功能简介科技教育推广中心推出的基于16 位单片机 SPCE061A 的典型应用,在产品语音控制小车是设计上充分利用了 SPCE061A 的众多资源,打破了传统教学中单片机学习枯燥和低效的现状。该小车在设计中的一大特色为加入了语音识别功能,可通过语音命令对其行驶状态进行控制,趣味性很强。语音控制小车的主要功能:可以通过简单的 I/O 操作实现小车的前进、后退、左转、右转功能;配合 SPCE061A 的语音特色,利用系统的语音和语音识别资源,实现语音控制的功能;3 可以扩展控制板的调速环节,利用系统的资源,实现小车的调速;4 预留多路开关型

4、传感器接口,可以自行安装各类传感器,配合程序实现小车的循迹、避障等功能。1.2 参数说明车体:双电机四轮驱动供电:电池(四节 AA 电池:1.2V*4 或 1.5V*4)工作电压:DC 4V6V工作电流:运动时约 200mA1.3 注意事项安装电池一定要注意电池的正负极性,切勿装反;长期不用请将电池从电池盒中取出;由于语音信号的不确定性,语音识别的过程会出现一定的误差和确性;4 由于小车行动比较灵活,速度比较快,在使用时一定要注意保持场地足够大,且保证不会对周围的物体造成;5 不要让小车长时间运行在堵转状态(堵转状态:由于小车所受阻力过大,造成小车电机加电但并不转动的现象),这样会造成很大的堵

5、转电流,有可能会损坏小车的控制电路。1 2 硬件说明2.1 小车实物图图 2.1 语音控制小车实物图整个小车分为三大部分:车体、61 板、控制板,如图 2.1 所示。车体又包括电机、电池盒、开关,电池盒可以安装四节 AA 电池,位于车的底部;开关负责整个车(包括 61 板在内)的电源控制。控制板是中间一块黑色的 PCB 板,它主要负责将 61 板的输出信号转换为电机的驱动信号。小车为双电机四轮驱动,左侧两个由左电机驱动,右侧的两个由右电机驱动。2.2 硬件框图小车的系统硬件结构如图 2.2 所示,主要分为两个部分:一个是 SPCE061A 精简开发板(即“61”板),另外一个是电机控制板。电机

6、控制板的功能是根据 61 板的输出信号去启动和停止相应的电机,及调整电机的正反转方向,通过开启和关闭相应的电机,使电机在不同的组合状态运转,最终来实现小车的前进,等功能。图中左边部分区域为 61 板结构图,右边部分为控制板结构图。2 电机驱动 2SPCE061A电源模块预留传感器输入控制板61板图 2.2 系统的硬件组成框图2.3 SPCE061A 精简开发板简介2.3.1SPCE061A 总述SPCE061A 是科技推出的一款16位微控制器。高速的处理速度和nSP的内核结构使它能够非常容易、快速地处理复杂的数字信号。同时SPCE061A内嵌32K字的FLASH ROM和2K字的SRAM。因此

7、SPCE061A微控制器是适用于语音识别领域的一种最佳选择。2.3.2SPCE061A 性能16位nSP微处理器;工作电压(CPU) VDD为3.0V3.6V;(I/O) VDDH为3.0V5.5V; CPU时钟:0.32MHz49.152MHz;内置2K字SRAM;内置32K字FLASH ROM;可编程音频处理;晶体振荡器; HYPERLINK mailto:耗电仅为2A3.6V 系统处于休眠模式下(时钟处于停止状态),耗电仅为2A3.6V; 2个16位可编程定时器/计数器(可自动预置初始计数值);2个10位DAC(数-模转换)输出通道;32位通用可编程输入/输出端口;两级中断,14个中断源

8、;具备触键唤醒的功能;使用音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;锁相环PLL振荡器提供系统时钟信号;3 SPKKEY电机2电机1电机驱动 1MIC32768Hz实时时钟;7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;具备串行设备接口(UART,SIO);具有低电压复位(LVR)功能和低电压监测(LVD)功能;内置仿真电路ICE(In- Circuit Emulator)接口;具有加密功能;具有Watch-dog功能。精简开发板61 板2.3.3“61 板”是以16 位单

9、片机 SPCE061A 为的精简开发仿真实验板,大小相当于一张牌。 61 板除了具备单片机最小系统电路外,还包括有电源电路、复位电路、ICE 电路、音频电路(含MIC 输入部分和 DAC 音频输出部分)等,61 板可以采用电池供电。图2.3 所示为该精简开发板的实物图。图 2.3 61 板实物图4 2.4 小车控制板2.4.1控制板框图图 2.4 控制板结构框图控制板的结构框图如图四大部分。2.4 所示,它包括接口模块,电机控制模块,预留传感器接口,以及电源模块2.4.2电源模块由于小车采用 4 节 AA 电池供电,电压最高可以达到 6V,考虑到 61 板的安全加入了电源模块。电源模块的电路原

10、理图如图 2.5 所示,电源模块的作用是将电池组提供的电压稳定在 5V 以内为 61 板供电。电源模块采用集成稳压7805,在输出端(控制板的 JP11)并接一个 470F 滤波电容和一个 0.1F 的去藕电容,增强系统电压的稳定性和性能。U17 7805V513VIVOJP11 BT1 AA*4C112C2+104470uHEADER 2图 2.5 电源模块电路原理图2.4.3电机控制模块电机控制模块是整个控制板的内容,也是整个语音控制小车的部分。电机控制电路包括方向控制单元和速度控制单元两大部分。方向控制单元负责小车电机的正转、反转和停止三态控制,速度控制单元是扩展单元,是为了适应不同的场

11、合需求而设置的。电机控制模块原理电路如图 2.6 所示,小车控制板上共有电机控制单元。5 212GND2 12 1预留传感器接口预留模组接口61板接口预留开关型传感器接口电机控制电路电源稳压MOTSPR110012R2 MOT112Q1 90141PNP5610Q34kQ2 NPN5609V5D1DIODEQ4 BD136J11212CON2R410012R6D2DIODE MOT2 12Q6 90141J2 MOTSP 1212CON2PNP5610 Q8Q7 NPN56094kQ5 BD136V5图 2.6 电机控制电路原理图方向控制图 2.7 所示为电机控制单元的方向控制部分电路,方向控

12、制是通过一个 H 桥电路完成的,该 H 桥电路主要由三极管 Q2、Q3、Q7、Q8 组成,把 Q2、Q3 归为一组,Q7、Q8 归为另一组。另外还有两个辅助三极管 Q1、Q6,Q1 负责控制 Q2、Q3 的导通与关断,Q1 导通激发 Q2、Q3 导通,Q1 关断的同时 Q2、Q3 也关断。Q6 负责控制 Q7、Q8 的导通与关断,其工作过程同 Q2、Q3。R110012R2 MOT1 1 2 Q1NPN9014PNP5610Q34kQ2 NPN5609V5J11122 R410012CON2R6 MOT2 1 2 Q6NPN9014PNP5610 Q84k1 Q7 NPN5609V5图 2.7

13、 方向控制单元原理图下面详细地介绍一下 H 桥的工作原理: 众所周知 H 桥有四个臂分别为 B1、B2、B3、B4,分别对应图 2.7 中的 Q2、Q3、Q7、Q8。四个臂分为两组 Q2、Q3 和 Q7、Q8,每一组的两个臂都是同时导通,同时关断的。如果让 Q2、Q3 导通 Q7、Q8 关断,电流会流经 Q3、负载、Q2 组成的回路,加在负载 Load两端的电压负,如图 2.8 所示,此时电机正转;如果让 Q7、Q8 导通 Q2、Q3 关断,电流会流经 Q8、负载、Q7 组成的回路,加在负载 Load 两端的电压为左负右正,此时电机反转,对应图 2.9 所示。另外如果让 Q2、Q3 关断 Q7

14、、Q8 也关断,负载 Load 两端悬空,此时电机停转。这样就实现了电机的正转、反转、停止三态控制。6 13131313323223233 23 22 32 31221B2 Q3B4 Q8MLoadB3 Q7B1 Q2图 2.8 B1、B2 工作时的H 桥电路简图B2 Q3B4 Q8MLoadB1 Q2B3 Q7图 2.9 B3、B4 工作时的H 桥电路简图由于 Q2、Q3,Q7、Q8 的导通和关断是通过 Q1、Q6 控制,而 Q1、Q6 的导通和关断又是通过 MOT1(IOB10)、MOT2(IOB11)控制的,所以电机的状态还是通过 I/O 端口来控制的。表 2.1 描述了 IOB10和

15、IOB11 所控制电机运行状态与端口数据的对应关系。表 2.1 I/O 端口状态与电机运行状态的对应关系。注意:由 H 桥的工作原理可知,H 桥的四个臂不能同时导通,一旦四个臂同时导通会出现类似短路的现象,在 H 桥的每一个臂上都会有很大的电流流过。如图 2.10,Q2、Q3、Q7、Q8 同时导通时,就会形成 Q3、Q7 回路和 Q2、Q8 回路,就会有很大的电流经过这 4 个三极管,严重时会烧毁三极管甚至引起电源。7 IOB11IOB10Q1Q6Q2、Q3Q7、Q8电机00关断关断关断关断停转01导通关断导通关断反转10关断导通关断导通正转B2 Q3B4 Q8MLoadB1 Q2B3 Q7图

16、 2.10 四个臂全导通时的H 桥电流回路以上分析的是两个 H 桥电路的其中之一,另外一个 H 桥的电路结构和工作原理是完全一样,在这里就不再赘述。小车的运动是靠带动的,而的转动是靠电机带动的,所以在确定了电机的运行状态之后就能够推断出小车的运行状态。下面是小车运行状态与 61 板端口数值对照表(表表 2.2 小车的动作和端口输出对照表2.2):注意:1由于车体的局限,按表中的介绍执行转弯操作,可能达不到理想的效果,所以采用了一种近过程见 3.2 节。似拟合的方案来实现转弯,详细的原理2对于原地旋转操作,如果地面比较光滑,小车可以靠打滑在原地旋转。但是如果地面比较粗糙,小车会待在原地不动,并且

17、会有很大的堵转电流。为了小车的安全,出现堵转时请马上关掉小车的电源。速度控制如图 2.6 所示,经过方向控制单元作用后的电压由 J1 输出,如果不需要速度调节,直接将负载接在 J1 处即可;如果需要速度调节,则需要将负载接到 J2 处。具体的调速过程分两种情况,一种是 J1 的电压为正(1 脚为正 2 脚为负)的情况,另一种是 J1 的电压为负(1 脚为负 2 脚为正)的情况,其调速过程的原理图分别对应图 2.11 和图 2.12。8 IOB13IOB10左电机右电机小车0000停转停转停止0001反转停转右后转0010正转停转右前转0100停转反转左后转1000停转正转左前转1001反转正转

18、逆时针旋转0110正转反转顺时针旋转1010正转正转前进0101反转反转后退MOTSPQ4BD136+J11212- + 1 J2D2CON2212-CON2DIODE图 2.11 J1 电压为正对应的调速原理图当 J1 电压为正时,J1 的 1 端为 VCC,2 端为地,D1 和 Q5 不工作,D2 和 Q4 工作。对应的简化电路如图 2.11 所示。其基本工作原理就是通过 MOTSP 控制 Q4 的导通和关断,当 MOTSP 为信号时 Q4导通,这时 J2 两端的电压为 VCC(理想状态分析,不考虑 D2 和 Q4 自身的压降)。当 MOTSP 为低电平信号时 Q4 关断,这时 J2 两端

19、的电压为 0V。这样加在 J2 两端的电压就随着 Q4 的通断在 VCC 和 0V 之间跳变,可以通过改变 MOTSP时间和低电平的时间比值最终改变加在 J2 的平均电压,即电机两端的电压,从而调节小车电机的转速。将 MOTSP 端连接到 61 板的 IOB9,即小车的 B输出端,就可以通过对 SPCE061A 的B 设置来完成小车的调速。上面介绍的是 J1 电压为正的情况,当 J1 电压变为负时,D1 工作 D2 停止工作,Q5 工作而 Q4 停止工作,对应的电路如图 2.12 所示。其工作过程和 J1 电压为正时是完全一样的。-J112D112DIODE+CON2-J2 MOTSP 112

20、2Q5 BD136+CON2图 2.12 J1 电压为负对应的调速原理图2.4.4传感器扩展接口为了小车后期开发的方便,在小车的控制板上预留了很多的传感器接口和模组接口。如果在设计中需要添加传感器或者相关的模组,只要参照电路原理图以及相关说明连接电路就可以了,十分的方便。图 2.13 是一个开关型传感器的接口电路,其中 1、2 为传感器信号输入,3、4 为电源,5、6 为地。考虑到很多的开关型传感器的信号输出为集电极开路的 OC 门结构,所以在电源端和信号端之间加入一个 4.7K的上拉电阻。应用时,只需要将电源线、地线、信号线按照图中标注连接好,然后再将信号端(图中的 1 端或 2 端)接到

21、SPCE061A 的相应 I/O 端口,在程序中把对应的端口设置为输入即可。9 1 212JP2R1312V5234565kHEADER 3x2/SM图 2.13 预留开关型传感器接口电路10 3 小车的功能实现原理3.1 直走的实现过程只要让小车的左右两侧的同时朝前旋转,小车就会受到向前的作用力而朝前运动,这样就实现了小车的前进功能。由于小车每一侧的由同侧的电机控制,所以要实现两侧的四个同时朝前转,只需要左右两个电机正转即可。由表 2.2 可知两个电机都正转的控制组合为 IOB13 IOB10=1010,也就是说只要把 IOB13 IOB10 设置为“1010”就实现了小车的前进功能。同理,

22、只要让两个电机同时反转,就实现了小车的功能。此时的 IOB13 IOB10 端口数据为“0101”。3.2 转弯的实现过程在某些场合,小车还需要转弯,那么小车又是怎样实现转弯的呢?其实只要让一侧的停转,让另一侧的旋转,这样小车就会朝着一个方向偏转。比如让右侧的停转,左侧的前转,对应的端口输出状态为 IOB13 IOB10=0010,此时小车就会向右前方旋转,最终实现右前转。另外还有左前转,右后转,左后转等动作,详细的端口输出状态见表 2.2。但是这种转弯的实现方案在实际的测试中并不理想,小车转弯所走的弧线半径比较大,有时近似在走直线。造成这种现象的原因是:小车转弯是通过一侧的停转,另一侧的正转

23、或者反转实现的。但是虽然一侧的电机停转了,另一侧旋转的会带着停转的一起运动,这样小车偏转的趋势就不明显,小车转弯的半径就会比较大,不能达到理想的目的。应用了一种近似插补的实现方案,如图 3.1 所示。将所要走的弧线切割成若干个小段,在段与段的连接处,作一定角度的原地旋转,然后再直走到下接点。如图 3.1 示,从 A 点出发,让小车在原反转),然后让小车直行,到 B 点处再重复执行地做一定角度的旋转(即一侧的正转,另一侧的原地旋转动作,然后再直行到达 C 点。如此一直到弧线的终点 H,这样就完成了一定弧度的转弯。图示为左拐的过程,右拐的原理是一样的,只是原地旋转的方向不同而已。在实际的操作中需要

24、注意的有两点:一是顺时针旋转还是逆时针旋转一定要清楚,可以参看表 2.2;第二是时间的分配,也就是在每个点上旋转所占时间和直走所占时间分别为多长,二者要合理搭配,如果旋转的时间过短,每次旋转角度很小,整体的旋转趋势就不明显,转弯的弧度太小;如果旋转时间过长,小车可能就不会正常的走弧线。11 图 3.1:采用近似插补方案实现小车的转弯过程3.3调速的原理如果需要调速,可以直接调用 SPCE061A 的资源,通过调节的占空比来实现速度的调节。由第 2.4.3 节调速电路分析可知:调速部分直接连接到了 61 板的输出,只要在程序中对相关电压信端口进行合理的设置,在 MOTSP 端就有号,对应的电机电

25、压波形如图 3.2 示:信号产生,加在小车电机两端的电压就是一VCCUo0V图 3.2调速原理图此时加在电机两端的平均电压 Uo=Th/(Th+Tl)*VCC。可以通过调整的占空比,来改变 Th 和 Tl 的比值,从而改变 Uo 的大小。这样就通过资源调节加在电机两端的平均电压,从而改变电机的转速,最终实现调节小车速度的目的。另外也可以利用其他的方式让端口输出如图 3.2 所示的波形,即种方案做过多的说明。模拟的,在这里就不对这3.4 语音识别原理简介语音识别主要分为“训练”和“识别”两个阶段。在训练阶段,单片机对到的语音样本进行分析到的语音样本也进行类处理,从中提取出语音特息,建立一个特征模

26、型;在识别阶段,单片机对似的分析处理,提取出语音的特息,然后将这个特息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,则输入的语音被识别。语音识别的具体流程如图 3.3 所示:12 ThTl语音特征模型图 3.3 语音识别流程说明框图13 开始N识别出语音指令Y返回 识别过程执行对应动作获取识别结果初始化识别器开始返回 中断服务定时语音开始训练成功NY返回训练过程执行训练,获取训练结果初始化RAM4流程4.1 主程序流程图以配套资料中的语音识别程序(Car_Demo)为例,说明语音识别小车的实现过程,图的主程序工作流程。4.1 所示为小车开始Y已经训练过N进入识有识别重新训等待复位图

27、 4.1 主程序流程图流程说明:语音识别小车的程序流程如上图所示,分为四大部分来说明:初始化部分、训练部分、识别部分、重训操作。初始化部分:初始化操作将 IOB13IOB10 设置为输出端,用以控制电机,将 IOA 的低 8 位设置为下拉的输入端,用来连接按键。训练部分:训练部分完成的工作就是建立语音模型。程序一开始就会去判断小车是否被训练过,如果没有训练过则会要求对其进行训练,并且会在训练成功之后将训练的模型到 Flash 当中,在以后使用时就不需要重新训练了;如果已经训练过会把在 Flash 中的模型调出来装载到辨识器中。识别部分:在识别环节当中,如果辨识结果是名字,直接置待命标志,然后等

28、待动作命令。只有检测到待命标志,小车才会根据相应的辨识结果执行动作,如果没有待命标志即使识别到动作命令也不会执行动作。小车在执行完对应令之后,将清除待命标志,结束待命状态。14 清模型别模式Y结果N练结果为名称Y YN区Y是否待命状态执行对应动作N置待命标志N保存训练结果装载语音模型训练小车初始化重训操作:考虑到有重新训练的需求,所以在这里设置了重新训练的按键,程序运行时循环扫描该按键,什么时间检测到此键按下,则将擦除语音模型位后,程序重新从头开始执行,当检测到语音模型其进行训练。区首单元(0 xe000)所在的页,等待复位到来。复区首地址为 0 x f(擦除后的值)时会要求重新对在程序的代码

29、中有详细的注释,请参看资料中的例程 Car_Demo。4.2 程序中需明的几个问题在这个程序中有几个地方不易理解,需要特别说明一下:首先,小车有没有经过训练是怎么知道的?在这里利用了一个特殊的 Flash 单元语音区的首单元(该示例程序中为 0 xe000 单元),Flash 在初始化以后,如果没有进行过写操作,那么该单元的内容为“0 x f”。如果进行过训练并成功语音模型后为“0 x0055”(该值由辨识器自动生成)。这样就可以根据这个单元的值来判断是否经过训练。其次,为什么已经训练过的系统在重新运行时还要进行模型装载?在首次训练完成之后,辨识器中保存着训练的模型,但是系旦复位辨识器中的模型

30、就会丢失,所以在重新运行时必须把在 Flash 中的语音模型装载到辨识器中去。第三,为什么要设置待命标志,也就是为什么要先叫名字再发指令才能触发小车动作?这有两方面的原因:一是比较符合人的思维过程,比如想要一个人做什么事情,那么首先要把这个人叫过来,然后才告诉他要去做什么事情;另外一个原因是从可靠性的角度出发,因为语音识别不可避免的存在一定的误差,而在动作前加了一道屏障,这样就大大减小了因错误识别导致小车错误动作的几率。第四,关于语音的一些具体问题,关于语音的一些具体问题请参看 SPCE061A 相关书籍中关于语音的详细介绍。15 5 如何使用5.1 连接硬件正确连接控制板并将控制板固定到车体

31、上:固定后的实物如图 5.1。图 5.1 连接控制板在连接控制板和车体时需要注意的几个地方:车体与控制板的电源连接,在车体的尾部有一个红色的小开关,开关的前端为电池盒电源输出,后端与控制板的 J13 相连接。在连接时注意 J13(图 5.1 的 A)的 1 端接正电源,2 端接地。控制板与 61 板的电源连接,61 板的供电是经过稳压模块稳压之后由 J14(图 5.1 的B)输出,在连接时注意 J14 的 1 端与 61 板的正电源相接,2 端与 61 板的地相接。3 电机与控制板的连接,电机分别接到控制板的 J1 和 J3,图 5.1 中 C 为 J3,D 为 J1。J1 接左侧电机,J3

32、接右侧电机,电机的白色(或红色)端子接 1 端,蓝色端子接 2 端。在连接时注意左右不能接反,1、2 端子也不能接反。连接好控制板以后,再将四个铜柱安装到控制板上,这四个铜柱是连接控制板和 61 板用的。如果采用 IO 排针向下的 61 板则可以直接将 61 板安装到控制板上,然后再拿螺丝固定 61 板即可。连接好的实物如图 5.2 所示。如果使用的是 IO 排针在上的 61 板(如图 2.3 所示),还需要用排线把 61 板的 IOB15IOB8和控制板的 IOB15IOB8 连接起来。连接好 61 板和控制板后,还需要注意以下几点:PROBE 跳线,61 板的 S5(图 5.2 中A 示)

33、标有 1、2、3 三个端子,如果使用 Ez-PROBE 则短接2、3 端子,如果使用并口或者 USB-PROBE 则短接 1、2 端子;喇叭连接线,喇叭连线不分反正直接插在 61 板的 SPK 处即可,图 5.2 中 B 所示;16 3 DAC1 输出,声音的输出通道,必须把 J1(如图 5.2 中 C 示)靠近 SPY0030 功放的一针和中间一针短接,否则不能听到。4 61 板的 I/O 输出电压选择 J5(图 5.2 中 D 示),61 板的 IO 输出电压有两种可选模式:03.3V 输出或者 05.5V 输出,短接 J5 的 3V 与 Vio 则选择 03.3V 输出,短接 J5 的

34、5V 与 Vio 则选择 05.5V输出。为了驱动的可靠性建议采用 05.5V 输出。图 5.2 连接 61 板5.2 代码硬件连接完成之后,检查无误,接下来就可以程序了。具体的步骤为:第一步:打开集成开发环境,点击菜单 FileOpen ,在弹出的框中找到小车资料的 Demo 文件夹,再进入到 CarDemo 文件夹,选择其中的“CarDemo.spj”文件,打开该工程。(注意:如果看不到CarDemo.spj,请在弹出的框中选择打开类型为 spj 或者所有文件)第二步:点击菜单 ProjectSelect Body,或者直接点击图标打开如所图 5.3 示的框:图 5.3 Select Bo

35、dy框17 第三步:在弹出的确定。框中选择 Body Name 为 SPCE060A_061A,选择 Probe 为 Auto,点击 OK 按钮第四步:点击 IDE图标,选择 Use ICE 模式。上的第五步:按 F8 快捷按钮,代码。5.3 训练小车成功程序以后,去掉线并复位系统(如果使用 EZ-Probe 还应将Probe 选择跳线 S5 拔去),小车就会提示对它进行训练。训练采用应答式训练,每条指令的训练次数为两次,每一条命令的训练过程都是一样的,以“前进”为例说明:步骤一:小车提示“前进”步骤二:告诉小车“前进”步骤三:小车提示:“请再说一遍”(重复训练提示音)步骤四:再次告诉小车“前

36、进”(重复训练一次)这是一个完整的训练过程,如果训练成功,小车会自动进入下一条指令的训练,并会提示下一条指令对应的动作(后退,左拐,右拐等);如果没有训练成功,小车会提示“说什么暗语呀”或者“没有听到任何声音”等信息,这样的话就要重复刚才所说的四个步骤,直到成功为止。整个的训练过程共有 5 次这样的训练,依次为:名称前进后退左拐右拐。整个的训练流程如图5.4 所示:开始训练N训练第三条成功训练名称YY训练第四条成功训练第一YY训练结束训练第二Y图 5.4 小车训练流程18 训练第二训练第一训练名训练成功提示条指令条成功 N训练第四条指令N条指令条成功N训练第三条指令称成功N5.4 声控小车训练

37、完小车以后怎样让小车动起来,怎样进行声控操作呢?这个过程又分为两步:第一步:叫小车的名字,小车在识别出名字以后会有一个回应信号“Yeah!”,随即进入待命状态。小车只有听到名字以后才能进入待命状态,才可以接受对它发出的动作指令信号。第二步:说前进,或者,在叫了名字以后,小车进入待命状态,这时就可以接受指令了。可以直接对小车、左拐、右拐等。小车如果识别出指令同样会有一个回应信号,告知你它要执行的动作,然后执行该动作,动作执行完毕小车会停下来,并结束待命状态。以上是一个完整令执行过程,如果还想让它执行其它动作,那么只需要重复上述步骤就可以了。注意小车是待命工作,所以每一次必须是“名字+指令”模式小

38、车才会执行动作。5.5 重新训练在实际的使用过程当中,可能会对训练的结果不满意,或者其他人也想对它进行训练、控制。这样就要求小车具有能够被重新训练的功能。为此,把 61 板的 KEY3 键定义为重新训练按钮,系统运行之后就会不断的扫描 61 板的 KEY3 键。如果检测到 KEY3 键按下,那么程序首先会把语音模型的区的0 xe0000 xe100 单元(一页)擦除,并会进入一个死循环等待复位的到来。复位到来之后,程序检测到训练标志(0 xe000 单元)内容为 0 xf,认为小车没有经过训练,就会要求对它进行新的训练。19 6 应用举例接下来将介绍一个具体的程序实例,通过这个实例来说明小车究

39、竟是怎样控制的,怎样来完成前进,后退和转弯等功能的。6.1 一个简单的前进实例通过这个简单的控制实例,将会了解到小车动作的实现原理,掌握怎样通过简单的“0”、“实现小车的前进,后退等各种动作。1”组合来6.1.1实例源代码该实例对应的源代码如下所示,也可以到附带的 Demo 文件夹中去找。6.1.2源代码说明程序比较简单,下面逐句说明指令的功能。首先: #define#define #define #defineP_IOB_DataP_IOB_Dir P_IOB_Attrib(unsigned(unsigned (unsigned*)0 x7005*)0 x7006*)0 x7008*)0 x

40、7012P_Watchdog_Clear (unsigned以上是宏定义操作,在程序的开头对常用的单片机资源端口进行定义,在以后的程序中就可以直接引用这些宏名来代替端口地址完成端口操作。这样做的好处:一是可读性强,宏名能够直接表达出端口的含义;二是易于修改,如果需要重新分配端口,可以在宏定义部分修改,而不必在程序中逐一修改。上面定20 #defineP_IOB_Data (unsigned *)0 x7005 #defineP_IOB_Dir (unsigned *)0 x7006 #defineP_IOB_Attrib(unsigned *)0 x7008 #defineP_Watchdog

41、_Clear (unsigned *)0 x7012main()*P_IOB_Dir = 0 x f;*P_IOB_Attrib = 0 x f;/设置 IOB 为同相输出*P_IOB_Data = 0 x2800;/前进 while(1)*P_Watchdog_Clear=0 x0001; /清看门狗义了一些用到的硬件资源包括 IO 端口和看门狗资源。第二:*P_IOB_Dir = 0 x f;*P_IOB_Attrib = 0 x f;/设置 IOB 为同相输出端这两句共同完成 B 口的初始化工作,通过这两句把 B 口初始化为同相的输出口,以后直接通过 B 口来向外输出 0、1 电平。第三

42、:*P_IOB_Data = 0 x2800;/前进这是整个程序的部分,正是通过这条指令来完成数据输出的。执行完这条指令以后,对应的 B 口的 16 位数据为 0010 1000 0000 0000,其中 B 13 到 B10 四位为 1010,此时对应的左电机正转,右电机也是正转,这样就实现了小车的前进功能(参看表 2.2),同样还可以通过向 P_IOB_Data 写不同的数值来实现不同的功能,具体的数值请参照表 2.2第四:*P_Watchdog_Clear = 0 x0001; /清看门狗;这是一条清看门狗的操作,在实际的系统中,为了保证系统能够稳健的运行,引入看门狗资源。必须在看门狗的计数器溢出之前对它进行重新赋值,否则看门狗计数器就会溢出,造成系统复位。在这里让程序进入一个循环,在循环中不停地清看门狗这样系统就不会复位。6.1.3具体的操作步骤第一步:在 Demo 文件夹里找到 EX1 子文件夹,打开文件夹,找到 ex1.spj 工程文件,双击打开;第二步:点击菜单 ProjectSelect Body,或者直

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论