基于51单片机的四足机器人

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深圳大学期末考试试卷

开/闭卷开卷A/B卷N/A

课程编号1303270001

1303270002 课程名称EDA技术与实践(2) 学分2、0命题人(签字) 审题人(签字) 2015 年10 月20 日

设计考试题目:完成一个集成电路或集成系统设计项目

基本要求: 2-3位同学一组, 完成一个完整的集成电路设计项目或就是一个集成系统设计项目。

规格说明:

1.题目自定。

1)集成电路设计项目

i.若为IC设计项目需要完成IC设计的版图。

ii.若采用FPGA实现数字集成电路设计,需要进行下板测试。

2)集成系统设计项目,需使用FPGA开发板或嵌入式开发板,完成一个完整的集成系

统作品。

3)作品需要课堂现场演示,最后提交报告,每个小组单独一份报告,但需阐述各个成员

的工作。

2.评分标准:

2015年第二学期,建议作品内容:

•完成一个行走机器人,基本要求

o2-8只脚

o能行走

o可以用单片机,嵌入式,FPGA方案

一、设计目的:

通过设计一个能够走动的机器人来增加对动手能力,与对硬件电路设计的能力,增强软件流程设计的能力与对设计流程实现电路功能的能力,在各个方面提升自己对电子设计的能力。

二、设计仪器与工具:

本设计就是设计一个能走动的机器人,使用到的仪器与工具分别有:sg90舵机12个、四脚机器人支架一副、单片机最小系统一个、电容电阻若干、波动开关一个、超声遥控模块一对、杜邦线若干、充电宝一个。

三、设计原理:

本次设计的机器人就是通过51单片机控制器来控制整个电路的。其中,舵机的控制就是通过产生一个周期为20毫秒的高电平带宽在0、5到2、5ms 之间的pwm信号来控制。12路Pwm信号由单片机的定时器来产生。51单片机产生12路pwm信号的原理就是:以20毫秒为周期,把这20毫秒分割成8个2、5ms,因为,每个pwm信号的高电平时间最多为2、5ms,然后在前六个2、5ms中分别输出两个pwm信号的高电平,例如,在第一个2、5ms 中输出第一个与第二个pwm信号的高电平时,首先开始时,把信号S1、S2都置1,然后比较两个高电平时间,先定时时间短的高电平时间,把高电平时间短的那个信号置0,再定时两个高电平时间差,到时把高电平时间长的按个信号置0,然后,定时(2、5-较长那个高电平时间),在第二个2、5ms开始时,把S3、S4置1,接下来与上面S1、S2一样,以此类推,在六个2、5ms 中输出12路pwm信号来控制舵机。原理图如图1、

通过超声模块来控制机器人前进、后退、向前的左转、向前的右转、向后的左转、向后的右转几个动作。

控制模块电路,D0,D1,D2,D3分别为超声接受模块的输出,输出为高电平,要加NPN作为开关。

四、设计步骤:

1、设计好硬件电路,焊接51单片机的最小系统与各个硬件电路。

2、设计好软件的流程图,如图2。

3、写产生12路控制舵机的pwm信号的程序并在proteus中测试,如

图3。

4、设计出行走步态,四脚机器人的步态就是采用对角的相互前进来实现

的,如图4。

5、写出流程图中各个模块的软件,包括前进函数、后退函数、左转与

右转的函数,并逐个烧到单片机中测试。

6、按流程图把各个函数组合到主函数中,完成所有软件的编写,并烧

到单片机中测试,并不断的调试。

图2、流程图

图3、在proteus里测试并调试pwm信号

初始状态:

先迈一对脚迈另一对并

另一对支撑身体前进

图4,行走步态

五、遇到的问题及解决:

1、此设计的pwm信号输出使用定时器来产生每个信号的高电平与低

电平,每次定时时间到,都会会关掉定时器并执行中断函数,在此过程中会

消耗一定的时间,等到给定时器赋值下一次定时时间并开始定时时,就会

产生一定的时间延时,造成每次高电平时间都会变长一点,且总的加起来

会使20ms周期变长,因此,需要稍微减小高电平的定时时间,并结合

proteus仿真确定最准确值。

2、由于机器人的四个脚都就是自己组装的,可能会有存在不平衡与对称,

当对角的两只脚同时向前迈同一个角度时,会使机器人向一个方向偏转

而不沿直线前进,这时要结合实际测试来调整机器人的各个脚的前迈角

度来使机器人平衡的沿直线前进,比如,一只脚迈多点,另一边的脚迈少

点。

六、心得与体会:

通过这次设计,我更加的熟悉基本的硬件电路与软件的设计,特别就是软件的流程图设计。更加熟悉软硬件电路结合的测试与调试。

六、实验实物图:

设计代码:

#include

#define uchar unsigned char

#define uint unsigned int

uint pwm[12],p_min1,p_max1,p_min2,p_max2,p_min3,p_max3,p_min4,p_max4,p_min5,p_max5, p_min6,p_max6,p1,p2,p3,p4,p5,p6,p11,p21,p31,p41,p51,p61;//高电平带宽

sbit s0=P2^0;//12路输出信号

sbit s1=P2^1;

sbit s2=P2^2;

sbit s3=P2^3;

sbit s4=P2^4;

sbit s5=P2^5;

sbit s6=P2^6;

sbit s7=P2^7;

sbit s8=P0^6;

sbit s9=P0^4;

sbit s10=P0^2;

sbit s11=P0^0;

sbit up=P1^0;

sbit right=P1^4;

sbit left=P1^2;

sbit down=P1^6;

uchar s_num,f,b,r,l,back_flag;forward_flag;

void back();//后退

void forward(); //前进

void back_right(); //后右转、前左转

void back_left(); //后左转、前右转

void scan_key();//遥控监控

void labor_init();//机器人的初始状态

void delay(uint i) //延时函数,延时一秒

相关文档
最新文档