特定人语音控制机器人设计.doc_第1页
特定人语音控制机器人设计.doc_第2页
特定人语音控制机器人设计.doc_第3页
特定人语音控制机器人设计.doc_第4页
特定人语音控制机器人设计.doc_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

前言 随着科学技术的发展,现如今单片机已渗透到我们生活的各个领域,几乎很难找到那个领域没有单片机的踪迹。导弹的导航装置,飞机上的各种仪表控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。机器人在当今社会里已经不在是一个陌生的名词,在许多领域都采用了机器人来代替人类操作,给生产,科研等带来了极大的方便。 本次毕业设计通过采用“61”板实现对机器人的控制,完成一些简单的动作。在本次毕业设计中得到了韩全力老师的辛勤指导,在此表示衷心的感谢!也对在本次课程设计中提供无私帮助的老师及同学表示感谢!目录第一章、单片机及61板简介.1.1、单片机.1.2、 61板.1.3 如何从PC机上下载程序.第二章 机器人.2.1 机器人简介.2.2 系统总体方案介绍.2. 3编写程序.个人总结.参考文献. 第一章、单片机及61板简介1.1、单片机1.1.1 定义单片微型计算机(Single-Chip Microcomputer),简称单片机。就是将微处理器(CPU)、存储器(存放程序或数据的ROM和RAM)、总线、定时器/计数器、输入/输出接口(I/O口)和其他多种功能器件集成在一块芯片上的微型计算机。单片机的主要特点有:(1)可靠性高(2)便于扩展(3)控制功能强(4)低电压、低功耗(5)片内存储容量较小,除此之外,单片机还具有集成度高、体积小、性价比高、应用广泛、易于产品化等特点。1.1.2 单片机发展阶段(1)第一阶段(19741976年):制造工艺落后,集成度低,而且采用了双片形式。典型的代表产品有Fairchild公司的F8系列。其特点是:片内只包括了8位CPU,64B的RAM和两个并行口,需要外加一块3851芯片(内部具有1KB的ROM、定时器/计数器和两个并行口)才能组成一台完整的单片机。(2)第二阶段(19771978年):在单片芯片内集成CPU、并行口、定时器/计数器、RAM和ROM等功能部件,但性能低,品种少,应用范围也不是很广。典型的产品有Intel公司的MCS-48系列。其特点是,片内集成有8位的CPU,1KB或2KB的ROM,64B或128B的RAM,只有并行接口,无串行接口,有1个8位的定时器/计数器,中断源有2个。片外寻址范围为4KB,芯片引脚为40个。(3)第三阶段(19791982年): 8位单片机成熟的阶段。其存储容量和寻址范围增大,而且中断源、并行I/O口和定时器/计数器个数都有了不同程度的增加,并且集成有全双工串行通信接口。在指令系统方面增设了乘除法、位操作和比较指令。其特点是,片内包括了8位的CPU,4KB或8KB的ROM,128B或256B的RAM,具有串/并行接口,2个或3个16位的定时器/计数器,有57个中断源。片外寻址范围可达64KB,芯片引脚为40个。(4)第四阶段(1983年至今): 16位单片机和8位高性能单片机并行发展的时代。16位机的工艺先进,集成度高,内部功能强,运算速度快,而且允许用户采用面向工业控制的专用语言,其特点是,片内包括了16位的CPU,8KB的ROM,232B 的RAM,具有串/并行接口,4个16位的定时器/计数器,有8个中断源,具有看门狗(Watchdog),总线控制部件,增加了D/A和A/D转换电路,片外寻址范围可达64KB,本次设计采用凌阳大学开发的16位单片机SPCE061A。近年来出现的32位单片机,是单片机的顶级产品,具有较高的运算速度。1.2、 61板1.2.1、 61板的组成和作用61板是以16位单片机SPCE061A为核心的精简开发仿真实验板,大小相当于一页扑克牌,是凌阳大学计划专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片机项目初期研发使用。61板的主要特点是:简单、易学、实用。“61”板实物图如图1.1:图1.1实物图图1.2 61板的结构图POWER5v&3V供电电路PLL锁向环外部电路Power电源指示灯Sleep睡眠指示灯RESET复位电路K4复位按键PROBE在线调试器串行5pin接口S5EZ-PROBE和PROBE切换的拨断开关J12、J3耳机插孔和两pin喇叭插针DAC一路音频输出电路,采用SPY0030集成音频放大器MIC麦克风输入电路OSC32768晶振电路VREFA/D转换外部参考电压输入接口R/C芯片其他外围电阻、电容电路K1K3扩展的按键:接IOA0IOA2SPCE061A61板核心:16位微处理器PORTA/B32个I/O口图1.3 功能指示(一) 输入/输出(I/O)接口61板将SPCE061A的32个I/O口全部引出:IOA0IOA15,IOB0IOB15,对应的引脚为:A口,4148、53、5460;B口,51、8176、6864。而且该I/O口是可编程的,即可以设置为输入或输出:设置为输入时,分为悬浮输入或非悬浮输入,非悬浮输入又可以设置为上拉输入或是下拉输入;在5V情况下,上拉电阻为150K,下拉电阻为110K;设置为输出时,可以选择同相输出或者反相输出。 (二) 音频输入/输出接口正如我们在前面介绍的61板具有强大的语音处理功能,如图2所示,X1是语音的MIC输入端,带自动增益(AGC)控制,J12和J3都是语音输出接口,一个是耳机插孔另一个是两pin的插针外接喇叭,由DAC输出引脚21或22经语音集成放大器SPYOO30放大,然后输出,SPY0030是凌阳的芯片,相当于LM386,但是比386音质好,它可以工作在2.46.0V范围内,最大输出功率可达700mW(386必须工作在4V以上,而且功率只有100mW)。(三) 在线调试器(PROBE)和EZ-PROBE接口图2中J4为PROBE的接口,该接口有5PIN,其中两个分别是地(VSS)和3.3v电源(VCC),我们就是通过PROBE一端接PC机25针并口,一端连接它来调试、仿真和下载程序的。这样,就不需要再用仿真器和编程器了,只要按图2所示将其连接好,就可以通过它在PC机上调试程序,并且在线仿真,最后将程序下载到芯片中,即完成了程序的烧写。图2中的J11是EZ-PROBE的接口,我们提供一根转接线用作EZ-PROBE的下载,一端连接PC机的25pin并口,另外一端接61板的5pin EZ-PROBE接口,参见图2。(四) 电源接口图2中J10是电源接口,61板的内核SPCE061A电压要求为3.3V,而I/O端口的电压可以选择3.3V也可以选择5V。所以,在板子上具有两种工作电压:5V和3.3V。对应的引脚中15、36和7必须为3.3V, 对于I/O端口的电压51、52、75可以为3.3V也可以是5V,这两种电平的选择通过跳线J5来选择。61板的供电电源系统采用用户多种选择方式: 1、 DC5V电池供电我们可以用3节电池来供电,5V直流电压直接通过SPY0029(相当于一般3.3V 稳压器)稳压到3.3V,为整个61板提供了4.5V和3.3V两种电平的电压。 2、 DC5V稳压源供电我们可以直接外接5V的直流稳压源供电,5V电压再通过SPY0029稳压到3.3V。3、 DC3V供电我们可以提供直流3.3V电压为实验板进行供电,此时整个板子只有3.3V电压,I/O端口电压此时只有一种选择。 需要注意的是由于SPY0029最大输出电流为50mA,所以如果需要外接一些模组时要先考虑一下是否合适。 (五)外部复位复位是对61板内部的硬件初始化,61板本身具有上电复位功能,即只要一通电就自动复位,另外,还具有外部复位电路,即在引脚6上外加一个低电平就可令其复位。如图2中的REST按键。1.2.2 61板核心部件 SPCE061A特性简介SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机,使用它可以非常方便灵活的实现语音的录放系统,该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。两路10位精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。另外凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件:特性: 16位nSP微处理器; 工作电压:内核工作电压VDD为3.03.6V(CPU),IO口工作电压VDDH为VDD5.5V(I/O); CPU时钟:0.32MHz49.152MHz; 内置2K字SRAM; 内置32K闪存ROM; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电小于2A3.6V; 2个16位可编程定时器/计数器(可自动预置初始计数值) 2个10位DAC(数-模转换)输出通道; 32位通用可编程输入/输出端口; 14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; 锁相环PLL振荡器提供系统时钟信号; 32768Hz实时时钟; 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; 具备串行设备接口; 低电压复位(LVR)功和低电压监测(LVD)功能; 内置在线仿真板(ICE,In- Circuit Emulator)接口。 1.2.3 61板检测的具体步骤 第一步、连接电源,可以连接3节电池,也可以直接接5V的稳压源现象:当电源接通时,红色的发光二极管会点亮。同时会有语音提示:欢迎进入自检模式,此时因为还没有连线,所以会听到:I/O测试失败的警告,所以就要进行第二步的操作;第二步、用连线分别将I/OA口的低8位和IOB口的低8位相连,IOA口的高8位和IOB口的高8位相连,然后按下REST复位键现象:当按下复位键后,程序从第一调开始运行开始执行,语音提示欢迎进入自检模式,当听到语音:I/O测试成功后,进行第三步操作; 第三步、按K1键进行睡眠功能测试现象:如果测试成功,会看到绿色的发光二极管亮灭一下,并有语音提示睡眠测试成功,否则提示睡眠测试失败,然后进行第四步操作;第四步、按下K2键进行A/D转换的测试现象:语音提示:A/D测试成功,否则提示A/D测试失败,进入最后一步操作; 第五步、拔掉第一步测试时的连接线,并按下K3键测试MIC输入及D/A转换输出是否正常;现象:可以在MIC上轻轻的拍几下,同时听是否有声音输出,如果有,则说明MIC输入和D/A转换输出部分正常。图1.6 检测流程图1.3 如何从PC机上下载程序(一)、 接电源61板配套有电池盒,将电池盒的插头插到61板的5V座上,这时电源指示灯(红色发光二极管)就被点亮了。若未被点亮时,应先排除故障再使用。(二)、 接喇叭或者耳机61板配套有喇叭,将喇叭插到电路板上标有J3和SPK的两PIN方针座上,不分反正,插上就可以使用。这时按复位键,会有语音播放。(三)、 接下载线 下载线大口(25pin)端接PC机的并口上,另一端接在61板的Ez_probe接口上,在probe与ez_probe之间有一个逻辑开关,扳到ez_probe方向。表示在线调试器选择ez_probe。(四)、 输入程序凌阳十六位单片机指令系统共有41条指令。 例如:指令代码为:R1 = 0xffff;P_IOA_Data = R1,代码的功能就是将16个A口全部输出高电平。集成开发环境也支持标准C语言。例如完成1到100的累加程序。步骤如下:第一步:双击系统桌面IDE182图标,进入系统开发环境。第二步:新建项目文件:用鼠标左键单击 File 下拉菜单 New 弹出New对话框。在File文本框中输入项目名称 Example1,在location下选择项目文件存储路径:E:ZxyProgram Example1新建项目后的 Workspace 窗口 结果: 生成了新项目Example第三步:新建C文件点击菜单 File 下拉菜单 New 弹出New对话框,在File文本框中输入C文件名称main,点击OK后,main.c的编辑窗口就显示出来。第四步:将代码写入main.c的窗口处例:/= / 函数: main()/ 描述:主函数/=int F_CleaWatchdog();int main() int i, G_Sum=0;for (i=0;i 0) if(uiActivated) uiTimerCount = 0; switch(uiRes) case NAME_ID: switch(uiBS_Team) case 0: /第一组的第一个命令(杰克)。 /播放Ok,Less go,Yeah PlaySnd(OK, 1); break; case 1:/第二组的第一个命令(开始)。 PlaySnd(OK, 1); PlaySnd(LETUSGO, 1); PlaySnd(YEAH, 1); /播放Ok,Less go break; case 2:/第三组的第一个命令(准备)。 PlaySnd(OK, 1); /播放Ok break; break; case Command_One_ID: switch(uiBS_Team) case 0:/第一组的第二个命令(开始)。/导入第二组命令,修改uiBS_Team为1,播放Wo,Ho,Hoo,Hooo,跳出循环。 ImportFiveCommand(Group2); uiBS_Team = 1; PlaySnd(HO, 1); PlaySnd(HOO, 1); PlaySnd(HOO, 1); PlaySnd(HOOO, 1); goto Loop; break; case 1:/第二组的第二个命令(向前走)。 /播放喀咔声音,控制电机向前走。 Robot_Go(1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; case 2:/第三组的第二个命令(向左瞄准) /播放旋转声音,头部电机向左转 Robot_HeadTurnLeft(1); PlaySnd(TURNHEAD, 1); PlaySnd(TURNHEAD, 1); PlaySnd(TURNHEAD, 1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; uiActivated = 0;/杰克为触发命令,每完成一个动作需要出发一次。break;case Command_Two_ID: switch(uiBS_Team) case 0:/第一组的第三个命令(准备)。/导入第三组命令,修改uiBS_Team为2,播放Wo,Ho,Hoo,Hooo,跳出循环。 ImportFiveCommand(Group3); uiBS_Team = 2; PlaySnd(HO, 1); PlaySnd(HOO, 1); PlaySnd(HOO, 1); PlaySnd(HOOO, 1); goto Loop; break; case 1: /第二组的第三个命令(倒退)。 /播放喀咔声音,控制电机向后走。 Robot_Backup(1); ImportFiveCommand(Group1); uiBS_Team = 0; break; case 2: /第三组的第三个命令(向右瞄准) /播放旋转声音,头部电机向右转。 Robot_HeadTurnRight(1); PlaySnd(TURNHEAD, 1); PlaySnd(TURNHEAD, 1); PlaySnd(TURNHEAD, 1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; uiActivated = 0; break;case Command_Three_ID: switch(uiBS_Team) case 0: /第一组的第四个命令(跳舞)。 /跳舞,清看门狗,时间比较长。 Robot_Dance(2); break; case 1: /第二组的第四个命令(左转)。 /播放旋转声音,向左旋转。 Robot_TurnLeft(1); PlaySnd(WALK, 1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; case 2:/第三组的第四个命令(发射)。 /播放咚咚声音,发射飞盘。 Robot_Shoot_Prepare(5); Delay(1500); Robot_Shoot2(3); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; uiActivated = 0; break; case Command_Four_ID: switch(uiBS_Team) case 0:/第一组的第五个命令(向前滑行) /在来一曲。 Robot_DanceAgain(2); break; case 1:/第二组的第五个命令(右转)。/播放声音,向右旋转,导到第一组命令,设置uiBS_Team为0,推出循环。 Robot_TurnRight(1); PlaySnd(WALK, 1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; case 2:/第三组的第五个命令(向后滑行)。/连续发射飞盘,导到第一组命令,设置uiBS_Team为0,推出循环。 Robot_Shoot_Prepare(5); Delay(1500); Robot_Shoot_Five(3); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; uiActivated = 0; break; else if(uiRes = NAME_ID) uiActivated = 1; uiTimerCount = 0; PlaySnd(OK, 1); /播放应答OK。 else if(uiActivated) if(+uiTimerCount 700) uiActivated = 0; uiTimerCount = 0; PlaySnd(HOOO, 1); uiKey = *P_IOA_Data;uiKey = uiKey&0x0004;if(uiKey = 0x0004)F_FlashErase(0xfd00);/擦除标志位 。 文件名称:robot_function.c功能描述:机器人语音训练和执行相关动作的实现#include bsrSD.h#include s480.h#include robot.h#include BackGroundPlaying.h#include ultrasonic_App.hvoid RobotSystemInit(void);unsigned int IsFirstDownLoad(void);void FormatFlash(void);void TrainFiveCommand(void);void SaveFiveCommand(unsigned int uiAddr);void ImportFiveCommand(unsigned int uiAddr_Import);unsigned int TrainWord(unsigned int WordID,unsigned int SndIndex);void Robot_DanceAgain(unsigned int n);void Robot_Dance(unsigned int n);void Robot_Go(unsigned int n);void Robot_Backup(unsigned int n);void Robot_TurnLeft(unsigned int n);void Robot_TurnRight(unsigned int n);void Robot_HeadTurnLeft(unsigned int n);void Robot_HeadTurnRight(unsigned int n);void Robot_Shoot_Prepare(unsigned int n);void Robot_Shoot2(unsigned int n);void Robot_Shoot_Five(unsigned int n);int Robot_CheckEnemy();extern void F_FlashErase(int);extern void F_FlashWrite1Word(unsigned int,unsigned int);extern void Delay(unsigned int n);extern void Set_IOA_Bit(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int);extern void Set_IOB_Bit(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int);/=/语法格式:void RobotSystemInit(void)/实现功能:初始化机器人电机驱动相关IO/参数:无/返回值:无/=void RobotSystemInit(void)*(volatile unsigned int *)0x7013 = 0x0088;Delay(500);*P_IOA_Data = 0xfffb;*P_IOA_Attrib = 0xfffb;*P

温馨提示

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

评论

0/150

提交评论