欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

小车课程设计-王水根

  • 资源ID:109582333       资源大小:84.50KB        全文页数:20页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

小车课程设计-王水根

Harbin Institute of Technology课程设计说明书论文课程名称:单片机课程设计 设计题目:智能控制小车院 系:电气学院自动控制与测试系班 级:0801101设 计 者:王水根学 号:1083420213指导 胡瑞强设计时间:哈尔滨工业大学课程设计考核表题目: 智能声控小车学生_ 王水根 _ 0801101 _1083420213实验部分考核考核内容分值得分基本设计任务的完成情况40附加设计任务的完成情况10对教师提问的回答情况10总结报告评分评分内容分值得分内容完整、字数达标20层次清晰、重点突出、分析透彻10书写规范、文字流畅5有独特见解、有一定的创新5总成绩: 指导教师签字:哈尔滨工业大学课程设计任务书 姓 名: 王水根 院 系:电气工程与自动化学院 专 业: 测控技术与仪器 班 号:0801101 任务起至日期: 2011 年 8 月 22 日至 20XX 9 月2 日课程设计题目: 智能声控小车已知技术参数和设计要求:已知技术参数:1. 凌阳SPCE061A型单片机最小开发系统一套,包括电源接口、IO接口、音频输出接口、MIC输入接口与程序下载接口;2. 小车额定工作电压4.5V<3节干电池>. 设计要求:1. 正确焊接电路板,完成单片机最小系统的调试;2. 利用61板实现语音控制小车的基本功能,包括前进、倒车、左拐和右拐的功能; 3.根据自己能力,完成小车附加功能.工作量: 总工作时间为10天; 完成凌阳SPCE061A型单片机最小系统的焊接与调试工作;设计程序流程图并编写、调试程序;车体与单片机最小系统连接调试,完成设定的功能;最后撰写开题报告和结题报告各一份.工作计划安排:1>2011.8.22201:电路板焊接、查阅资料,学习凌阳单片机;2>2011.8.252011.8.26:熟悉凌阳单片机集成开发环境、设计程序流程图,编写程序;3>2011.8.292011.8.30:调试程序,完成设定要实现的功能;4>2011.8.312011.9.1:撰写课程设计报告、准备验收.5>2验收 同组设计者与分工:同组人:田序昌分工:田序昌负责电路板焊接与测试,以与前期基本功能程序的实现;王水根本人负责后期拓展功能的实现与程序调试 指导教师签字_ 年 月 日 教研室主任意见: 教研室主任签字_ 年 月 日*注:此任务书由课程设计指导教师填写20 / 20单片机课设报告一、课设目的与要求1课题目的通过设计一个由单片机控制的智能小车来熟悉模块化编程方法,掌握单片机C语言的程序设计和调试方法,并理解单片机的原理、结构、指令、运行模式功能模块与应用开发方法.2课题意义与单片机发展现状语音处理技术是一门新兴的技术,它不仅包括语音的录制和播放,还涉与语音的压缩编码和解码,语音的识别等各种处理技术.以往做这方面的设计,一般有两个途径:一种方案是单片机扩展设计,另一种就是借助于专门的语音处理芯片.普通的单片机往往不能实现这么复杂的过程和算法,即使勉强实现也要加很多的外围器件.专门的语音处理芯片也比较多,像ISD系列、PM50系列等,但是专门的语音处理芯片功能比较单一,想在语音之外的其他方面应用基本是不可能的.SPCE061A是凌阳科技推出的一款16位'nSP结构的微控制器.该芯片带有硬件乘法器,能够实现乘法运算、内积运算等复杂的运算.它不仅运算能力强,而且处理速度快,单周期最高可以达到49MHz.SPCE061A内嵌32K字的FLASH程序存储器以与2K的SRAM.同时该SOC芯片具有ADC和DAC功能,其MIC_ADC通道带有AGC自动增益环节,能够很轻松的将语音信号采集到芯片内部,两路10位的电流输出型DAC,只要外接一个功放就可以完成声音的播放.以上介绍的这些硬件资源使得该SPCE061A能够单芯片实现语音处理功能.借助于SPCE061A的语音特色,我们开发出了这款语音控制小车.小车不仅具有前进、后退、左转、右转停车等基本功能;同时配合SPCE061A的语音特色,实现语音控制功能.3设计要求小车采用语音识别技术,可通过语音命令对其行驶状态进行控制.基本设计任务:前进、倒车、左拐、右拐、停车的功能.附加设计任务:S型前进、左转圈和右转圈二、课题设计的主要内容和具体实施方案(1) 主要内容1可以通过简单的I/O操作实现小车的前进、后退、左转、右转等功能;2配合SPCE061A的语音特色,利用系统的语音播放和语音识别资源,实现语音控制的功能;3可以在行走过程中声控改变小车运动状态(2) 实施方案方案论证:方案一:采用MCS-51系列单片机实现,由于有语音识别和语音播放功能,所以需要扩展语音识别模块和语音播放模块,这样必然造成端口的资源紧张,所以还必须加入接口扩展芯片.该实现方案结构如下图所示.方案二:采用SPCE061A实现语音控制小车方案,由于SPCE061A内部具有语音识别和语音播放功能,所以只需要扩展基本的MIC和语音功放即可,该方案结构如下图所示.比较以上两个方案,方案二结构简单,易于操作,故选则方案二.方案实施:系统的结构框图如下图:系统组成主要包括以下两部分:SPCE061A精简开发板、语音小车控制电路板.图中的语音输入部分MIC_ IN、按键输入KEY、声音输出部分的功率放大环节等已经做到了精简开发板61板上,为我们使用提供了很大的方便.在电机的驱动方面,采用全桥驱动技术,利用四个I/O端口分为两组分别实现两个电机的正传、反转和停三态运行.系统控制方案小车的运动控制采用语音控制和中断定时控制相结合,通过语音触发小车动作,小车动作之后,随时可以通过语音指令改变小车的运动状态.在每一次动作触发的同时启动定时器,如果小车由于某些原因不能正常的接收语音指令,则只要定时时间到,中断服务程序会发出指令让小车停下来.车体结构介绍语音控制小车为四轮结构,其中前面两个车轮由前轮电机控制,在连杆和支点作用下控制前轮左右摆动,来调节小车的前进方向.在自然状态下,前轮在弹簧作用下保持中间位置.后面两个车轮由后轮电机驱动,为整个小车提供动力,所以又称前面的轮子为方向轮,后面的两个轮子为驱动轮,如下图所示.小车的行走原理:直走:由小车的结构分析,在自然状态下,前轮在弹簧作用下保持中间状态,这是只要后轮电机正转小车就会前进.倒车:倒车动作和前进动作刚好相反,前轮电机仍然保持中间状态,后轮电机反转,小车就会向后运动.左转:前轮电机逆时针旋转规定为正转,后轮电机正转,这时小车就会在前后轮共同作用下朝左侧前进.右转:前轮电机反转,后轮电机正转,这时小车就是会在前后轮共同作用下朝右侧前进.小车控制板原理图:控制板主要包括:接口电路、电源电路和两路电机的驱动电路.小车基本的运行状态与输入的对照表如下系统软件设计系统的总体程序流程如下图语音识别小车的主程序分为四大部分:初始化部分、训练部分、识别部分、重训操作.初始化部分:初始化操作将IOB8IOB11设置为输出端,用以控制电机.训练部分:训练部分完成的工作就是建立语音模型.程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,并且会在训练成功之后将训练的模型存储到FLASH,在以后使用时不需要重新训练;如果已经训练过会把存储在FLASH中的模型调出来装载到辨识器中.由于凌阳单片机的局限性,每次最多只能识别5条指令,因此在训练时对8条指令预先分为第一、第二两组,每组4条指令.当程序检测到训练标志位BS_Flag内容为0xffff,就会要求操作者对它进行训练操作,训练采用两次训练获取结果的方式,以训练名字为例:小车首先会提示:给我取个名字吧,这时你可以告诉它一个名字比如小车;然后它会提示:请再说一遍,这时再次告诉它名字小车,如果两次的声音差别不大,小车就能够成功的建立模型,名称训练成功;如果没能够成功的建立模型,小车会告知失败的原因并要求重新训练.成功训练名称后会给出下一条待训练指令提示音:前进,参照名称训练方式训练前进指令.依次训练小车的名称前进指令倒车指令左转指令右转指令S型前进指令左转圈指令右转圈指令,全部训练成功子程序返回,训练结束.识别部分:设定Result为辨识结果,team为组别标识变量.预先加载第一组语音模型team=0,程序运行到左转函数后随即加载第二组语音模型.语音识别首先获取辨识器的辨识结果,判断是否有语音触发,如果有语音触发则会返回识别结果Result的值.如果Result是第二组team=1里面的命令,则该命令无效,跳出循环等待下一次命令;如果Result是第一组team=0里面的命令,则根据相应的名称执行相应的动作,并且重新设定team的值.为方便跳转,主程序里设置名称指令、前进指令、后退指令执行完毕后team清0,左拐指令执行完毕后team置1,加载第二组语音模型.同理,在team置1的情况下,Result只识别第二组team=1的命令,对第一组无视.第二组的命令里面,右拐指令、S型前进指令、左转圈指令执行完毕后team置1,右转圈指令执行完毕后team清0,重新加载第一组命令.以此类推.虽然已经有了前进、后退以与倒车等语音控制指令,但是考虑环境的干扰因素,小车运行时的噪音影响和有效距离的限制,小车运行后可能接收不到语音指令而一直运行.为了防止出现这种情况,加入了时间控制,在启动小车运行的同时启动定时器,定时器时间到停止小车的运行,该定时器借助于2Hz时基中断完成,可以在程序中修改uiTimeset参数来控制运行时间,当uiTimeset=3时,运行时间为1.5s,以此类推.注:查阅光盘资料,在转弯之前首先让前轮朝目标方向的反方向偏转,然后再让前轮朝目标方向偏转,据说这样这样前轮的摆动范围更大,惯性更大,转向效果会更好,但实际操作历来感觉效果一般.重训操作:考虑到有重新训练的需求,设置了重新训练的按键61板的KEY3,循环扫描该按键,一旦检测到此键按下,则将擦除训练标志位0xe000单元,并等待复位.复位后,程序重新执行,当检测到训练标志位为0xffff时会要求重新对其进行训练.三:课程设计中发现的问题与解决方案由于电路板焊接与调试以与前期程序基本功能的实现均由谢思哲实现,我这儿提出的都是加上拓展功能时出现的各种问题:1制作音频文件时程序始终播放不了.解决方法:一开始以为是文件太大了识别不了,结果发现自己录的音频文件比系统自带的还小,不是这个原因;后来发现是之前用window自带的录音机格式转换的时候把格式弄错导致,改回去便可.2添加命令时,需要添加相应的音频文件,导致各种串音.解决方法:经老师点拨,在Resource.asm文件里最下面的添加文件顺序必须与左侧Resource对话框里的音频文件顺序一致,而且必须把添加的文件全部放在最后,不能因为训练命令的原因而认为会"提早"被调用而放在前面,这样会造成串音.四、课程设计的心得体会这次课程设计在上学期的51单片机的基础上第一次接触全新的开发板和编译环境,加强对单片机运作原理的理解.同时,贯穿整个课设的查询资料大大锻炼了我的搜寻资料的能力.同时,这是我第一次使用集成语音传感系统的单片机开发板,是对于新鲜事物的一种尝试,对我以后更深入探索电子元件世界会有帮助的.五、参考资料凌阳61板产品资料 凌阳大学计划六、鸣谢谢谢学校、学院给我们提供了动手实践单片机的机会,更感谢课设过程中胡瑞强老师的悉心指导与帮助.附:源程序/=/ 工程名称:Car_Demo/ 功能描述:实现小车的语音控制/ 涉与的库:CMacro1016.lib/ bsrv222SDL.lib/sacmv26e.lib/ 组成文件:main.c/Flash.asm, hardware.asm,ISR.asm / hardware.h,s480.h, hardware.inc/硬件连接:IOA0-KEY1/IOA1-KEY2/IOA2-KEY3/IOB8-前进/IOB9-倒车/IOB10-左拐/IOB11-右拐/维护记录:2005-12-12 v1.0/=#include "s480.h"#include "bsrsd.h"#defineP_IOA_Data <volatile unsigned int *>0x7000 #define P_IOA_Dir <volatile unsigned int *>0x7002#define P_IOA_Attrib <volatile unsigned int *>0x7003#define P_IOB_Data<volatile unsigned int *>0x7005 #define P_IOB_Dir<volatile unsigned int *>0x7007 #define P_IOB_Attrib<volatile unsigned int *>0x7008 #define P_TimerA_Data<volatile unsigned int *>0x700A #define P_TimerA_Ctrl<volatile unsigned int *>0x700B #define P_TimerB_Data<volatile unsigned int *>0x700C #define P_TimerB_Ctrl<volatile unsigned int *>0x700D #define P_Watchdog_Clear<volatile unsigned int *>0x7012 #define P_INT_Mask<volatile unsigned int *>0x702D #define P_INT_Clear<volatile unsigned int *>0x7011 #define NAME_ID 0x100 /名字#define MAND_GO_ID 0x101 /前进#define MAND_BACK_ID 0x102 /倒车#define MAND_LEFT_ID 0x103 /左拐#define MAND_RIGHT_ID 0x104 /右拐#define MAND_S_ID 0x105 /S型前进#define MAND_LL_ID 0x106 /左转圈#define MAND_RR_ID 0x107 /右转圈#define S_NAME0/给我取个名字吧#define S_ACT11/前进#define S_ACT22/倒车,请注意#define S_ACT33/左拐#define S_ACT44/右拐#define S_RDY5/Yeah#define S_AGAIN6/请再说一遍#define S_NOVOICE7/没有听到任何声音#define S_CMDDIFF8/说什么暗语呀#define S_NOISY8/说什么暗语呀#define S_START9/准备就绪,开始辨识#define S_GJG10/拐就拐#define S_DCZY11/倒车,请注意#define S_WAY 12 /S型前进#define S_LL13/向左转圈#define S_RR14/向右转圈extern unsigned int BSR_SDModel100;/外部变量BSR_SDModel100,辨识器自带extern void F_FlashWrite1Word<unsigned int addr,unsigned int Value>extern void F_FlashErase<unsigned int sector>unsigned int uiTimeset = 3;/运行时间定时,调整该参数控制运行时间unsigned int uiTimecont; /运行时间计时/=/ 语法格式:void Delay<>/ 实现功能:延时/ 参数:无/ 返回值:无/=void Delay<>unsigned int i;for<i=0;i<0x3Fff;i+>*P_Watchdog_Clear=0x0001;/=/ 语法格式:void PlaySnd<unsigned SndIndex,unsigned DAC_Channel>/ 实现功能:语音播放函数/ 参数:SndIndex-播放语音资源索引号/DAC_Channel-播放声道选择/ 返回值:无/=void PlaySnd<unsigned SndIndex,unsigned DAC_Channel>BSR_StopRecognizer<>/停止识别器SACM_S480_Initial<1>/初始化为自动播放SACM_S480_Play<SndIndex, DAC_Channel, 3>/开始播放一段语音while<<SACM_S480_Status<>&0x0001>!= 0>/是否播放完毕?SACM_S480_ServiceLoop<>/解码并填充队列*P_Watchdog_Clear=0x0001;/清看门狗SACM_S480_Stop<>/停止播放BSR_InitRecognizer<BSR_MIC>/初始化识别器/=/ 语法格式:int TrainWord<int WordID,int SndID>/ 实现功能:训练一条指令/ 参数:WordID-指令编码/SndID-指令提示音索引号/ 返回值:无/=int TrainWord<unsigned int WordID,unsigned int SndID>int Result;PlaySnd<SndID,3>/引导训练,播放指令对应动作while<1>Result = BSR_Train<WordID,BSR_TRAIN_TWICE>/训练两次,获得训练结果if<Result=0>break;switch<Result>case -1:/没有检测出声音PlaySnd<S_NOVOICE,3>return -1;case -2: /需要训练第二次PlaySnd<S_AGAIN,3>break;case -3:/环境太吵PlaySnd<S_NOISY,3>return -3;case -4:/数据库满 return -4;case -5: /检测出声音不同PlaySnd<S_CMDDIFF,3>return -5;case -6: /序号错误return -6;default:break;return 0;/=/ 语法格式:void TrainSD_one<>/ 实现功能:第一组训练函数/ 参数:无/ 返回值:无/=void TrainSD_one<>BSR_DeleteSDGroup<0>/清除内存while<TrainWord<NAME_ID,S_NAME> != 0> ; /训练名称while<TrainWord<MAND_GO_ID,S_ACT1> != 0> ; /训练第1个动作while<TrainWord<MAND_BACK_ID,S_ACT2> != 0> ; /训练第2个动作while<TrainWord<MAND_LEFT_ID,S_ACT3> != 0> ; /训练第3个动作/=/ 语法格式:void TrainSD_two<>/ 实现功能:第二组训练函数/ 参数:无/ 返回值:无/=void TrainSD_two<>BSR_DeleteSDGroup<0>/清除内存while<TrainWord<MAND_RIGHT_ID,S_ACT4> != 0> ;/训练第4个动作while<TrainWord<MAND_S_ID,S_WAY> != 0> ; /训练第5个动作while<TrainWord<MAND_LL_ID,S_LL> != 0> ; /训练第6个动作while<TrainWord<MAND_RR_ID,S_RR> != 0> ; /训练第7个动作/=/ 语法格式:void StoreSD_one<>/ 实现功能:第一组存储语音模型函数/ 参数:无/ 返回值:无/=void StoreSD_one<> unsigned int ulAddr,i,mandID,g_Ret;F_FlashWrite1Word<0xef00,0xaaaa> F_FlashErase<0xe000> F_FlashErase<0xe100> F_FlashErase<0xe200> ulAddr=0xe000; /*for<mandID=0x100;mandID<0x104;mandID+>g_Ret=BSR_ExportSDWord<mandID>while<g_Ret!=0>/模型导出成功?g_Ret=BSR_ExportSDWord<mandID>for<i=0;i<100;i+>/保存语音模型SD1<0xe000-0xe063> F_FlashWrite1Word<ulAddr,BSR_SDModeli>ulAddr+=1;/=/ 语法格式:void StoreSD_two<>/ 实现功能:第二组存储语音模型函数/ 参数:无/ 返回值:无/=void StoreSD_two<> unsigned int ulAddr,i,mandID,g_Ret;F_FlashWrite1Word<0xef00,0xaaaa>F_FlashErase<0xe300> F_FlashErase<0xe400> F_FlashErase<0xe500> ulAddr=0xe300; /*for<mandID=0x105;mandID<0x109;mandID+>g_Ret=BSR_ExportSDWord<mandID>while<g_Ret!=0>/模型导出成功?g_Ret=BSR_ExportSDWord<mandID>for<i=0;i<100;i+>/保存语音模型SD1<0xe000-0xe063> F_FlashWrite1Word<ulAddr,BSR_SDModeli>ulAddr+=1;/=/ 语法格式:void LoadSD_one<>/ 实现功能:装载第一组命令/ 参数:无/ 返回值:无/=void LoadSD_one<> unsigned int *p,k,jk,Ret,g_Ret;BSR_DeleteSDGroup<0>/清除内存p=<int *>0xe000;for<jk=0;jk<4;jk+>for<k=0;k<100;k+>Ret=*p;BSR_SDModelk=Ret;/装载语音模型p+=1;g_Ret=BSR_ImportSDWord<>while<g_Ret!=0>/模型装载成功?g_Ret=BSR_ImportSDWord<>/=/ 语法格式:void LoadSD_two<>/ 实现功能:装载第二组命令/ 参数:无 / 返回值:无/=void LoadSD_two<> unsigned int *p,k,jk,Ret,g_Ret; BSR_DeleteSDGroup<0>/清除内存p=<int *>0xe300;for<jk=0;jk<4;jk+>for<k=0;k<100;k+>Ret=*p;BSR_SDModelk=Ret;/装载语音模型p+=1;g_Ret=BSR_ImportSDWord<>while<g_Ret!=0>/模型装载成功?g_Ret=BSR_ImportSDWord<>/=/ 语法格式:void GoAhead<>/ 实现功能:前进子函数/ 参数:无/ 返回值:无/=void GoAhead<> /前进 PlaySnd<S_ACT1,3>/提示*P_IOB_Data=0x0100;/前进*P_INT_Mask |= 0x0004;/以下为中断定时操作_asm<"int fiq,irq">uiTimecont = 0;/=/ 语法格式:void BackUp<>/ 实现功能:后退子函数/ 参数:无/ 返回值:无/=void BackUp<> /倒退PlaySnd<S_DCZY,3>/提示*P_IOB_Data=0x0200;/倒退*P_INT_Mask |= 0x0004;/以下为中断定时操作_asm<"int fiq,irq">uiTimecont = 0;/=/ 语法格式:void TurnLeft<>/ 实现功能:左转子函数/ 参数:无/ 返回值:无/=void TurnLeft<> /左转PlaySnd<S_GJG,3>*P_IOB_Data=0x0900;/右转Delay<>*P_IOB_Data=0x0500;/左转Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>*P_INT_Mask |= 0x0004;/以下为中断定时操作_asm<"int fiq,irq">uiTimecont = 0;/=/ 语法格式:void TurnRight<>/ 实现功能:右转子函数/ 参数:无/ 返回值:无/=void TurnRight<> /右转PlaySnd<S_GJG,3>/语音提示*P_IOB_Data=0x0500;/左转Delay<>*P_IOB_Data=0x0900;/右转Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>*P_INT_Mask |= 0x0004;/以下为中断定时操作_asm<"int fiq,irq">uiTimecont = 0;/=/ 语法格式:void S_loop<>/ 实现功能:停车子函数/ 参数:无/ 返回值:无/=void S_loop<> /S形路线 unsigned int i; PlaySnd<S_WAY,3> for<i=0;i<4;i+> *P_IOB_Data=0x0500; Delay<> *P_IOB_Data=0x0800; *P_IOB_Data=0x0800; Delay<> *P_IOB_Data=0x0500; *P_INT_Mask |= 0x0004;/以下为中断定时操作 _asm<"int fiq,irq">uiTimecont = 0; /=/ 语法格式:void L_circle<>/ 实现功能:左转圈子函数/ 参数:无/ 返回值:无/=void L_circle<> /向左转圈PlaySnd<S_LL,3>*P_IOB_Data=0x0900;/右转Delay<>/延时*P_IOB_Data=0x0500;/左转Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>*P_INT_Mask |= 0x0004;/以下为中断定时操作_asm<"int fiq,irq">uiTimecont = 0;/=/ 语法格式:void R_circle<>/ 实现功能:右转圈子函数/ 参数:无/ 返回值:无/=void R_circle<> /向右转圈PlaySnd<S_RR,3>/语音提示*P_IOB_Data=0x0500;/左转Delay<>/延时*P_IOB_Data=0x0900;/右转Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>Delay<>*P_INT_Mask |= 0x0004;/以下为中断定时操作_asm<"int fiq,irq">uiTimecont = 0;/=/ 语法格式:void Stop<>/ 实现功能:停车子函数/ 参数:无/ 返回值:无/=void Stop<> /停车*P_IOB_Data=0x0000;/停车PlaySnd<S_RDY,3>/语音提示/=/ 语法格式:void BSR<void>/ 实现功能:辨识子函数/ 参数:无/ 返回值:无/=void BSR<void>int Result;/辨识结果寄存int team = 0; /组别鉴定Result = BSR_GetResult<>/获得识别结果if<Result>0>/有语音触发?*P_IOB_Data=0x0000;/临时停车switch<team>case 0:BSR_DeleteSDGroup<0>/初始化存储器RAMLoadSD_one<>/装载第一组命令switch<Result>case NAME_ID:/识别出名称命令Stop<>/停车待命team = 0;break;case MAND_GO_ID:/识别出第一条命令GoAhead<>/执行动作一:直走team = 0;break;case MAND_BACK_ID:/识别出第二条命令BackUp<>/执行动作二:倒车team = 0;break;case MAND_LEFT_ID:/识别出第三条命令TurnLeft<>/执行动作三:左转team = 1;BSR_DeleteSDGroup<0>/初始化存储器RAMLoadSD_two<>/装载第二组命令break; default:break;case 1:switch<Result>case MAND_RIGHT_ID:/识别出第四条命令TurnRight<>/执行动作四:右转team = 1;break;case MAND_S_ID: /识别出第五条命令S_loop<>/执行动作五:S型前进team = 1;break;case MAND_LL_ID: /识别出第六条命令L_circle<>/执行动作六:向左转圈team = 1;break;case MAND_RR_ID: /识别出第七条命令R_circle<> /执行动作七:向右转圈team = 0;/LoadSD_one<>/装载第一组命令break;default:break;default:break;/=/ 语法格式:void IRQ5<void>/ 实现功能:中断服务子函数/ 参数:无/ 返回值:无/=void IRQ5<void>_attribute_<<ISR>>/运动定时控制void IRQ5<void> if<uiTimecont+ = uiTimeset>*P_IOB_Data = 0x0000;*P_INT_Clear = 0x0004;/=/ 语法格式:int main<void>/ 实现功能:主函数/ 参数:无/ 返回值:无/=int m

注意事项

本文(小车课程设计-王水根)为本站会员(仙***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!