c语言实训设计报告巡游机器人的设计与实现_第1页
c语言实训设计报告巡游机器人的设计与实现_第2页
c语言实训设计报告巡游机器人的设计与实现_第3页
c语言实训设计报告巡游机器人的设计与实现_第4页
c语言实训设计报告巡游机器人的设计与实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、 设计题目:巡游机器人的设计与实现目 录任务书一、 项目计划与小组成员分工二、 软硬件平台介绍三、 硬件设计说明四、 软件设计说明(包括程序流程图,源代码添加注释)五、 项目总结与体会 “巡游机器人的设计与实现”任务书一、题目:巡游机器人的设计与实现基于工程对象的c语言编程实训二、实训目的用c语言编写程序实现对实际工程对象的控制,完成给定的任务。从而提高学生c语言编程的综合能力,同时,对学生进行早期的工程训练。设计一个基于8 位单片机的小型舵机轮式机器人,从给定游览图场地的起始点出发,遍历游览抽签决定的若干景点,在尽可能短的时间内游历完并回到出发点。三、任务描述1、任务要求:巡游场地如 图1

2、所示,机器人在5分钟内,从“长沙”出发点出发以尽量短的时间游历8个景点,并最后返回起点。8个游历景点包括:南昌、杭州、南京、徐州、济南、石家庄、郑州、武汉。本次设计分两个阶段进行,19周调试并研究案例程序,20周实现特定的游览任务。20周周四进行验收答辩。2、验收规则: 验收前将机器人贴好编号放到指定位置; 抽签决定验收顺序; 每台机器人有两次运行机会,取最好成绩作为最终验收成绩; 每个景点游历到给2分,每台机器人总成绩 (景点分值(每个景点1分) 回出发点分值(2分)。必须巡线行走,不允许盲走,脱离黑线行走超过2秒视为任务结束;重复游历同一个景点,只记分1次。四、成绩评定:项目完成效果及答辩

3、占54%,实训过程评价占32%,设计报告占14%。五、需提交的成果:1、运行成功的机器人系统一套2、设计报告一份,验收前电子版发送至 jiaoxue6666,打印版验收时上交。内容包括: 封面 成绩单 任务书 目录 软硬件平台介绍 硬件设计说明 软件设计说明(包括程序流程图,源代码添加注释) 项目总结与体会六、参考资料1、c程序设计(第四版) 谭浩强 编著 清华大学出版社2、c51单片机应用与c语言程序设计(第2版) 秦志强 编著 电子工业出版社3、c51机器人游中国说明文档4、参考案例代码 you_shen_zhen.c、yzgdemo.c。5、图1 巡游机器人场地 一项目计划与小组成员分工

4、巡游路线:长沙南昌杭州南京蚌埠徐州济南石家庄郑州武汉长沙二硬件平台介绍:主板:承载单片机,提供端口。单片机:储存程序,接收传感器的反馈并根据程序语句进行处理,将运动语句传递给舵机。舵机:接收主板的信息并根据信息进行相应的运动。传感器:对地面进行扫描,将扫描结果传递给主机。led灯:直观的反映出每个传感器的状态。usbasp下载器:将计算机的程序下载到机器人里。电池:作为机器人运行的能源。三软件平台介绍:keil u vision4 ide集成开发环境avr-fighter 单片机isp下载编程软件串口调试软件四硬件设计说明:两个舵机分别连接到主板的p10和p11端口。4个传感器分别连接4个le

5、d灯,每个led灯反映其所对应的传感器状态,传感器分别接在p14、p15、p16和p17接口。电池连接到主板的dc6v接口。如图:五软件设计说明:1.策略:定义一个变量i,每两个城市当成一条线路,每当小车到达一个城市后都会有传感器为1001的情况反馈回来以这种情况作为转折点,决定小车的拐弯策略通过while语句判断i的值使小车成功转入另一条线路用main函数重复调用当i等于12即小运动车回到长沙停止。2.程序流程图 主函数int main()void follow_line()switch(qtistate)每两个城市之间线路不同的巡线策略并且在到达一个城市后遇到1001的情况时相对应的做出拐

6、弯策略并改变i的值while()通过判断i的值来进入不同的switch()i的值源代码#include #include #include #define uint unsigned int #define uchar unsigned char uchar qtistate ;void forward1(void) /向前慢走子程序 p1_1=1; delay_nus(1600); p1_1=0; p1_0=1; delay_nus(1400); p1_0=0; delay_nms(20);void forward2(void) /向前慢走子程序 p1_1=1; delay_nus(1550

7、); p1_1=0; p1_0=1; delay_nus(1450); p1_0=0; delay_nms(20);void left_turn(void) /左转90度程序 int i; for(i=1;i=10;i+) p1_0=1; delay_nus(1300); p1_0=0;p1_1=1; delay_nus(1300); p1_1=0;delay_nms(20); delay_nus(1500); p1_1=0; p1_0=1; delay_nus(1400);p1_0=0; delay_nms(20);void right_turn(void) /右转90度程序 int i;

8、for(i=1;i=10;i+)p1_0=1; delay_nus(1700); p1_0=0;p1_1=1; delay_nus(1700);p1_1=0;delay_nms(20);void right(void) /右转子程序全速p1_1=1; delay_nus(1700); p1_1=0; p1_0=1; delay_nus(1500); p1_0=0; delay_nms(20);void right1(void) /小幅度右转子程序 /全速 p1_1=1; delay_nus(1600); p1_1=0; p1_0=1; delay_nus(1500); p1_0=0; dela

9、y_nms(20);void down(void) /停止p1_1=1; delay_nus(1500); p1_1=0; p1_0=1; delay_nus(1500);p1_0=0; delay_nms(20);void get_qti_state(void) /获取传感器反馈信息qtistate = p1&0xf0; void follow_line(void) get_qti_state(); switch(qtistate) int i=0 ;case 0x10: right();/右转 break; case 0x30:right1();/小幅右转 break; case 0x20

10、:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/前进break;case 0x80:left1();/小幅度左转break;case 0xb0:left1();/小幅度左转break;case 0xc0:left1();/小幅左转break;case 0x90:delay_nms(500);forward1();delay_nms(2000);/长沙-南昌i+;while(i=1)get_qti_state();switch(qtistate)case 0x10: right();

11、/右转 break; case 0x30:right1();/小幅右转 break; case 0x20:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/慢前进break;case 0x80:left1();/小幅度左转break;case 0xb0:left1();/小幅度左转break;case 0xc0:left1();/小幅左转break;case 0x00:forward2();/前进break;case 0xa0:forward2();/前进break;case 0x90

12、:delay_nms(500);left_turn();delay_nms(2000);/南昌-杭州i+;while(i=2)get_qti_state();switch(qtistate)case 0x10: right();/右转 break; case 0x30:right1();/小幅右转 break;case 0x70:forward2();/慢前行 break; case 0x20:left1(); /小幅度左转 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/慢前进break; case 0xa0:fo

13、rward2();/慢前进break;case 0x80:left1();/小幅度左转break;case 0xb0:left1();/小幅度左转break;case 0xc0:forward2();/慢前行break;case 0xe0:right1();/小幅度右转break;case 0x00:forward2();/前进break;case 0x90:delay_nms(500);left();delay_nms(2000);/杭州-南京i+;while(i=3)get_qti_state();switch(qtistate)case 0x10: right();/右转 break;

14、case 0x30:right1();/小幅右转 break;case 0x20:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/前进 break; case 0x80:left1();/小幅度左转 break; case 0xb0:left1();/小幅度左转 break; case 0xc0:left1();/小幅左转break; case 0x00:left1();/小幅左转break; case 0xa0:forward2();/前进break; case 0xe0:righ

15、t1();/小幅右转break;case 0x90:delay_nms(500);right1();delay_nms(2000);/南京-蚌埠i+;while(i=4)get_qti_state();switch(qtistate)case 0x10: right();/右转 break; case 0x30:right1();/小幅右转break; case 0x20:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/前进break; case 0x80:left1();/小幅度左

16、转 break; case 0xb0:left1();/小幅度左转 break; case 0xc0:left1();/小幅左转break;case 0xe0:left1();/前进break; case 0x00:forward2();/慢前进break; case 0xa0:right1();/小幅右转 break;case 0x90:delay_nms(500);forward1();delay_nms(2000);/蚌埠-徐州i+;while(i=5)get_qti_state();switch(qtistate)case 0x10: right();/右转 break; case 0

17、x30:right1();/小幅右转 break; case 0x20:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/前进break; case 0x80:left1();/小幅度左转 break; case 0xb0:left1();/小幅度左转 break; case 0xc0:left1();/小幅左转break;case 0x00:forward2();/小幅左转break;case 0x90:delay_nms(500);forward();delay_nms(2000)

18、;/徐州-济南i+;while(i=6)get_qti_state();switch(qtistate)case 0x10: right();/右转 break; case 0x30:right1();/小幅右转 break; case 0x20:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/前进break; case 0x70:forward2();/前进break;case 0x80:left1();/小幅度左转break;case 0xb0:left1();/小幅度左转bre

19、ak;case 0xc0:left1();/小幅左转break;case 0x00:right1();/小幅左转break;case 0xe0:forward2();/前进break;case 0x90:delay_nms(500);left_turn();delay_nms(2000);/济南-天津i+;while(i=7)get_qti_state();switch(qtistate)case 0x10: right();/右转 break; case 0x30:right1();/小幅右转 break; case 0x20:forward2(); /慢前进 break; case 0x4

20、0:forward2(); /慢前进 break; case 0x60:forward2();/前进break;case 0x80:left1();/小幅度左转break;case 0xb0:left1();/小幅度左转break;case 0xc0:left1();/小幅左转break;case 0x00:right1();/小幅左转break;case 0xe0:forward2();/前进break;case 0x90:delay_nms(500);left_turn();delay_nms(2000);/天津-北京i+;while(i=8)get_qti_state();switch(

21、qtistate)case 0x10: right();/右转 break; case 0x30:right1();/小幅右转 break; case 0x20:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/前进break;case 0x80:left1();/小幅度左转break;case 0xb0:left1();/小幅度左转break;case 0xc0:left1();/小幅左转break;case 0x00:right1();/小幅左转break;case 0xe0:fo

22、rward2();/前进break;case 0x90:delay_nms(500);left1();delay_nms(2000);/北京-石家庄i+;while(i=9)get_qti_state();switch(qtistate)case 0x10: right();/右转 break; case 0x30:right1();/小幅右转 break; case 0x20:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/前进break; case 0x80:left1();/小

23、幅度左转 break; case 0xb0:left1();/小幅度左转 break;case 0xc0:left1();/小幅左转 break; case 0xe0:forward2();/前进 break;case 0x90:delay_nms(500);forward2();delay_nms(2000);/石家庄-郑州i+;while(i=10)get_qti_state();switch(qtistate)case 0x10: right();/右转 break; case 0x30:right1();/小幅右转 break;case 0x20:forward2(); /慢前进 break; case 0x40:forward2(); /慢前进 break; case 0x60:forward2();/前进 break; case 0x80:left1();/小幅度左转 break; case 0xb0:left1();/小幅度左转 break;

温馨提示

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

评论

0/150

提交评论