基于51系列单片机的音乐智能寻迹避障小车的设计与控制_第1页
基于51系列单片机的音乐智能寻迹避障小车的设计与控制_第2页
基于51系列单片机的音乐智能寻迹避障小车的设计与控制_第3页
基于51系列单片机的音乐智能寻迹避障小车的设计与控制_第4页
基于51系列单片机的音乐智能寻迹避障小车的设计与控制_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

科科 学学技技术术学学院院 SCIENCE sbit MIC=P16; sbit musicdecode=P20; sbit QDdcmotor_IA=P21; sbit QDdcmotor_IB=P22; sbit FXdcmotor_IA=P23; sbit FXdcmotor_IB=P24; uchar xunjidecode=0x00; uchar kjflag=0; /*函数声明*/ void musicdelay(uint z); void stopcar(); void kjstopdecode(); void ZUOZHUANcar(); void ZUOZHUANdecode(); void QJcar(); void QJdecode(); void backcar(); void backdecode(); void YOUZHUANcar(); void YOUZHUANdecode(); void bzdecode(); void showmusiccar(); 18 void musicdelay(uint z) uint x,y; for(x=z;x0;x-) for(y=60;y0;y-); void stopcar() QDdcmotor_IA=0; QDdcmotor_IB=0; FXdcmotor_IA=0; FXdcmotor_IB=0; void kjstopdecode() uint i; for(i=4;i0;i-) musicdecode=1;/1 musicdelay(1); /*每个脉冲信号 0.5ms,一组共 32.2ms*/ musicdecode=0; /2 musicdelay(1); musicdecode=1; /3 musicdelay(3); musicdecode=0; /4 musicdelay(1); musicdecode=1; /5 musicdelay(3); musicdecode=0; /6 19 musicdelay(1); musicdecode=1; /7 musicdelay(3); musicdecode=0; /8 musicdelay(1); musicdecode=1;/9 musicdelay(3); musicdecode=0; /10 musicdelay(1); musicdecode=1;/11 musicdelay(3); musicdecode=0; /12 musicdelay(1); musicdecode=1;/13 musicdelay(3); musicdecode=0; /14 musicdelay(3); musicdecode=1;/15 musicdelay(1); musicdecode=0; /16 musicdelay(1); musicdecode=1;/17 musicdelay(3); 20 musicdecode=0; /18 musicdelay(1); musicdecode=1;/19 musicdelay(3); musicdecode=0; /20 musicdelay(1); musicdecode=1;/21 musicdelay(3); musicdecode=0; /22 musicdelay(3); musicdecode=1; /23 musicdelay(1); musicdecode=0; /24 musicdelay(1); musicdecode=1;/25 musicdelay(3); musicdecode=0; /26 musicdelay(3); musicdecode=1;/27 musicdelay(1); musicdecode=0; /28 musicdelay(3); 21 musicdecode=1;/29 musicdelay(1); musicdecode=0; /30 musicdelay(3); musicdecode=1;/31 musicdelay(1); musicdecode=0; /32 musicdelay(3); void ZUOZHUANcar() FXdcmotor_IA=1; FXdcmotor_IB=0; / musicdelay(20); QDdcmotor_IA=1; QDdcmotor_IB=0; musicdelay(125); QDdcmotor_IA=0; QDdcmotor_IB=0; / musicdelay(15); void ZUOZHUANdecode() uint i; for(i=4;i0;i-) musicdecode=1;/1 musicdelay(1); musicdecode=0; /2 musicdelay(1); musicdecode=1; 22 /3 musicdelay(3); musicdecode=0; /4 musicdelay(1); musicdecode=1; /5 musicdelay(3); musicdecode=0; /6 musicdelay(1); musicdecode=1; /7 musicdelay(3); musicdecode=0; /8 musicdelay(1); musicdecode=1;/9 musicdelay(3); musicdecode=0; /10 musicdelay(1); musicdecode=1;/11 musicdelay(3); musicdecode=0; /12 musicdelay(3); musicdecode=1;/13 musicdelay(1); 23 musicdecode=0; /14 musicdelay(1); musicdecode=1;/15 musicdelay(3); musicdecode=0; /16 musicdelay(1); musicdecode=1;/17 musicdelay(3); musicdecode=0; /18 musicdelay(1); musicdecode=1;/19 musicdelay(3); musicdecode=0; /20 musicdelay(1); musicdecode=1;/21 musicdelay(3); musicdecode=0; /22 musicdelay(3); musicdecode=1; /23 musicdelay(1); musicdecode=0; /24 musicdelay(1); 24 musicdecode=1;/25 musicdelay(3); musicdecode=0; /26 musicdelay(3); musicdecode=1;/27 musicdelay(1); musicdecode=0; /28 musicdelay(3); musicdecode=1;/29 musicdelay(1); musicdecode=0; /30 musicdelay(3); musicdecode=1;/31 musicdelay(1); musicdecode=0; /32 musicdelay(3); void QJcar() QDdcmotor_IA=1; QDdcmotor_IB=0; musicdelay(125); QDdcmotor_IA=0; QDdcmotor_IB=0; /musicdelay(15); FXdcmotor_IA=0; FXdcmotor_IB=0; 25 void QJdecode() uint i; for(i=4;i0;i-) musicdecode=1;/1 musicdelay(1); musicdecode=0; /2 musicdelay(1); musicdecode=1; /3 musicdelay(3); musicdecode=0; /4 musicdelay(1); musicdecode=1; /5 musicdelay(3); musicdecode=0; /6 musicdelay(1); musicdecode=1; /7 musicdelay(3); musicdecode=0; /8 musicdelay(3); musicdecode=1;/9 musicdelay(1); musicdecode=0; /10 26 musicdelay(1); musicdecode=1;/11 musicdelay(3); musicdecode=0; /12 musicdelay(1); musicdecode=1;/13 musicdelay(3); musicdecode=0; /14 musicdelay(1); musicdecode=1;/15 musicdelay(3); musicdecode=0; /16 musicdelay(1); musicdecode=1;/17 musicdelay(3); musicdecode=0; /18 musicdelay(1); musicdecode=1;/19 musicdelay(3); musicdecode=0; /20 musicdelay(1); musicdecode=1;/21 musicdelay(3); 27 musicdecode=0; /22 musicdelay(3); musicdecode=1; /23 musicdelay(1); musicdecode=0; /24 musicdelay(1); musicdecode=1;/25 musicdelay(3); musicdecode=0; /26 musicdelay(3); musicdecode=1;/27 musicdelay(1); musicdecode=0; /28 musicdelay(3); musicdecode=1;/29 musicdelay(1); musicdecode=0; /30 musicdelay(3); musicdecode=1;/31 musicdelay(1); musicdecode=0; /32 musicdelay(3); 28 void backcar() QDdcmotor_IA=0; QDdcmotor_IB=1; musicdelay(200); QDdcmotor_IA=0; QDdcmotor_IB=0; / musicdelay(10); FXdcmotor_IA=0; FXdcmotor_IB=0; void backdecode() uint i; for(i=4;i0;i-) musicdecode=1;/1 musicdelay(1); musicdecode=0; /2 musicdelay(1); musicdecode=1; /3 musicdelay(3); musicdecode=0; /4 musicdelay(1); musicdecode=1; /5 musicdelay(3); musicdecode=0; /6 musicdelay(3); musicdecode=1; 29 /7 musicdelay(1); musicdecode=0; /8 musicdelay(1); musicdecode=1;/9 musicdelay(3); musicdecode=0; /10 musicdelay(1); musicdecode=1;/11 musicdelay(3); musicdecode=0; /12 musicdelay(1); musicdecode=1;/13 musicdelay(3); musicdecode=0; /14 musicdelay(1); musicdecode=1;/15 musicdelay(3); musicdecode=0; /16 musicdelay(1); musicdecode=1;/17 musicdelay(3); musicdecode=0; /18 30 musicdelay(1); musicdecode=1;/19 musicdelay(3); musicdecode=0; /20 musicdelay(1); musicdecode=1;/21 musicdelay(3); musicdecode=0; /22 musicdelay(3); musicdecode=1; /23 musicdelay(1); musicdecode=0; /24 musicdelay(1); musicdecode=1;/25 musicdelay(3); musicdecode=0; /26 musicdelay(3); musicdecode=1;/27 musicdelay(1); musicdecode=0; /28 musicdelay(3); musicdecode=1;/29 musicdelay(1); 31 musicdecode=0; /30 musicdelay(3); musicdecode=1;/31 musicdelay(1); musicdecode=0; /32 musicdelay(3); void YOUZHUANcar() FXdcmotor_IA=0; FXdcmotor_IB=1; / musicdelay(20); QDdcmotor_IA=1; QDdcmotor_IB=0; musicdelay(125); QDdcmotor_IA=0; QDdcmotor_IB=0; void YOUZHUANdecode() uint i; for(i=4;i0;i-) musicdecode=1;/1 musicdelay(1); musicdecode=0; /2 musicdelay(1); musicdecode=1; /3 musicdelay(3); 32 musicdecode=0; /4 musicdelay(1); musicdecode=1; /5 musicdelay(3); musicdecode=0; /6 musicdelay(1); musicdecode=1; /7 musicdelay(3); musicdecode=0; /8 musicdelay(1); musicdecode=1;/9 musicdelay(3); musicdecode=0; /10 musicdelay(3); musicdecode=1;/11 musicdelay(1); musicdecode=0; /12 musicdelay(1); musicdecode=1;/13 musicdelay(3); musicdecode=0; /14 musicdelay(1); 33 musicdecode=1;/15 musicdelay(3); musicdecode=0; /16 musicdelay(1); musicdecode=1;/17 musicdelay(3); musicdecode=0; /18 musicdelay(1); musicdecode=1;/19 musicdelay(3); musicdecode=0; /20 musicdelay(1); musicdecode=1;/21 musicdelay(3); musicdecode=0; /22 musicdelay(3); musicdecode=1; /23 musicdelay(1); musicdecode=0; /24 musicdelay(1); musicdecode=1;/25 musicdelay(3); 34 musicdecode=0; /26 musicdelay(3); musicdecode=1;/27 musicdelay(1); musicdecode=0; /28 musicdelay(3); musicdecode=1;/29 musicdelay(1); musicdecode=0; /30 musicdelay(3); musicdecode=1;/31 musicdelay(1); musicdecode=0; /32 musicdelay(3); void bzdecode() uint i; for(i=4;i0;i-) musicdecode=1;/1 musicdelay(1); musicdecode=0; /2 musicdelay(1); musicdecode=1; /3 musicdelay(3); 35 musicdecode=0; /4 musicdelay(1); musicdecode=1; /5 musicdelay(3); musicdecode=0; /6 musicdelay(1); musicdecode=1; /7 musicdelay(3); musicdecode=0; /8 musicdelay(1); musicdecode=1;/9 musicdelay(3); musicdecode=0; /10 musicdelay(1); musicdecode=1;/11 musicdelay(3); musicdecode=0; /12 musicdelay(1); musicdecode=1;/13 musicdelay(3); musicdecode=0; /14 36 musicdelay(1); musicdecode=1;/15 musicdelay(3); musicdecode=0; /16 musicdelay(3); musicdecode=1;/17 musicdelay(1); musicdecode=0; /18 musicdelay(1); musicdecode=1;/19 musicdelay(3); musicdecode=0; /20 musicdelay(1); musicdecode=1;/21 musicdelay(3); musicdecode=0; /22 musicdelay(3); musicdecode=1; /23 musicdelay(1); musicdecode=0; /24 musicdelay(1); musicdecode=1;/25 musicdelay(3); 37 musicdecode=0; /26 musicdelay(3); musicdecode=1;/27 musicdelay(1); musicdecode=0; /28 musicdelay(3); musicdecode=1;/29 musicdelay(1); musicdecode=0; /30 musicdelay(3); musicdecode=1;/31 musicdelay(1); musicdecode=0; /32 musicdelay(3); void showmusiccar() uint i; for(i=4;i0;i-) musicdecode=1;/1 musicdelay(1); musicdecode=0; /2 musicdelay(1); musicdecode=1; /3 38 musicdelay(3); musicdecode=0; /4 musicdelay(1); musicdecode=1; /5 musicdelay(3); musicdecode=0; /6 musicdelay(1); musicdecode=1; /7 musicdelay(3); musicdecode=0; /8 musicdelay(1); musicdecode=1;/9 musicdelay(3); musicdecode=0; /10 musicdelay(1); musicdecode=1;/11 musicdelay(3); musicdecode=0; /12 musicdelay(1); musicdecode=1;/13 musicdelay(3); musicdecode=0; 39 /14 musicdelay(1); musicdecode=1;/15 musicdelay(3); musicdecode=0; /16 musicdelay(1); musicdecode=1;/17 musicdelay(3); musicdecode=0; /18 musicdelay(1); musicdecode=1;/19 musicdelay(3); musicdecode=0; /20 musicdelay(3); musicdecode=1;/21 musicdelay(1); musicdecode=0; /22 musicdelay(3); musicdecode=1; /23 musicdelay(1); musicdecode=0; /24 musicdelay(1); musicdecode=1;/25 40 musicdelay(3); musicdecode=0; /26 musicdelay(3); musicdecode=1;/27 musicdelay(1); musicdecode=0; /28 musicdelay(3); musicdecode=1;/29 musicdelay(1); musicdecode=0; /30 musicdelay(3); musicdecode=1;/31 musicdelay(1); musicdecode=0; /32 musicdelay(3); void main() while(1) xunjidecode=P1; if(BZ=0) / 遇到障碍物停车,鸣放喇叭 stopcar();bzdecode(); else switch(xunjidecodebackdecode();break; else stopcar();break;/停止 case 0x01:if(kjflag=1) YOUZHUANcar();YOUZHUANcar();YOUZHUANdecode();break; /偏左、应右转 并右转演示 else stopcar();break;/停止 case 0x02:if(kjflag=1) YOUZHUANcar();YOUZHUANdecode();break;/偏左、应右转 并右转演示 else stopcar();break;/停止 case 0x03:if(kjflag=1) YOUZHUANcar();YOUZHUANcar();YOUZHUANdecode();break;/偏左、 应右转 并右转演示 else stopcar();break;/停止 case 0x04:if(kjflag=1) QJcar();QJdecode();break; /基 本居中、前进 并前进演示 else stopcar();break;/停止 case 0x06:if(kjflag=1) YOUZHUANcar();YOUZHUANdecode();break;/偏左、应右转 并右转演示 else stopcar();break;/停止 case 0x08:if(kjflag=1) QJcar();QJdecode();break; /基 本居中、前进 并前进演示 else stopcar();break;/停止 case 0x0C:if(kjflag=0) 42 kjflag=1;kjstopdecode(); QJcar();QJdecode();break;/居中、前进 并前 进演示 case 0x10:if(kjflag=1) ZUOZHUANcar();ZUOZHUANdecode();break;/偏右、应左转 并 左转演示 else stopcar();break;/停止 case 0x18:if(kjflag=1) ZUOZHUANcar();ZUOZHUANdecode();break;/偏右、应左转 并 左转演示 else stopcar();break;/停止 case 0x20:if(kjflag=1) ZUOZHUANcar();ZUOZHUANcar();ZUOZHUANdecode();break;/偏右、 应左转 并左转演示 else stopcar();break;/停止 case 0x30:if(kjflag=1) ZUOZHUANcar();ZUOZHUANcar();ZUOZHUANdecode();break;/偏右、 应左转 并左转演示 else stopcar();break;/停止 case 0x3F:stopcar();showmusiccar();if(kjflag=1)kjstopdecode();kjflag=0;break;/到达终点,停止 并停车演示 第五章 性能测试与分析 5.1 传感 PCB 板传感信号的测量 仪器:数字万用表,电源,黑白挡板。 RPR220 传感信号测量: 在有白色挡板挡住时哥哥信号以为低电平,黑色挡板挡住时,应为高电平,前低电平最 好 2V 以下,高电平 3.75V 以上,因为单片机要识别其为“0”还是“1” 。 注:检测信号应一级一级检测,且芯片不能先插,若发现某个不正常时也应从前面开始 检测。 驻极体传感信号测量: 因为采用了三级管 2 级放大,有电路可知当物声音时输出应为高电平,有声音时电平 为“低” 。 43 避障传感信号测量: 当传感器前方有障碍物时输出为低电平,且传感器会有指示灯亮,在这里我们用到的 传感器可以调感应距离,所以还得调好参数。 5.2 控制 PCB 板测量 仪器:示波器,电源。 1 先检测时钟信号,用示波器观察时会发现有上下变化的跳动的线,这说明晶振产生了振 荡。 2 复位信号测量,当按下按键时应为高电平复位。 5.3 小车跑道测试 小车跑道测试项目:启动、速度、直行、转弯、倒车、相应音乐演示等。 启动:在由程序可知小车只有在中间 2 个管检测到黑线且有声音时才启动。所以测试启动 是否正常,检测有时正常,为了稳定修正时屏蔽了声音信号。 速度:速度控制是在小车可以稳定在跑道演示时去调节 PMW 波来提高速度。 直行:在小车检测到较小的黑线偏转时小车应能及时修正行进路线,使小车行进稳定,不 会左右摆动。 转弯:当检测前方要转向时,观察转向是否正常,是否通过连贯。 倒车:当小车跑出跑道时,应倒车回到跑道上,继续寻迹前进。 音乐:小车启动,转向,倒车灯都会有相应的音乐提示,观察是否正常。 实训体会: 从过这次训练,我们复习了课本知识,也在实训中学会了去运用课本知识,比如,模

温馨提示

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

评论

0/150

提交评论