5487|6

280

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

【解密06】基于51单片机的无线遥控坦克DIY 之 坦克主程序 [复制链接]

【解密-软件】
       我们说硬件是载体软件是灵魂,前面已经介绍了遥控坦克的硬件部分接下来我们该去实现它的软件部分了,说简单就是写程序控制我们的坦克完成预计功能。看过前面文字的朋友知道我们的硬件系统分为两部分,它们是坦克系统和手柄系统,我们要分别为这两个系统编写程序。首先我们先设计一下坦克一端的软件架构,如图6-1。

       从图中我们能看出坦克一端在不断的接收命令,如果有命令发来就解析命令然后执行命令,如果没有命令那么继续下一次接收命令,总之坦克一旦上电就在不停的接收命令直到关闭电源。这里给出部分源程序作为参考,考虑到有些朋友不太熟悉程序设计为不影响大家对原理的理解,在代码中使用了很多注释和伪代码甚至插入很多中文信息,如图6-2。

       从图中我们可以清晰的看出程序的执行过程,系统在无止境的循环接收命令、解析命令、执行命令。其中红色方框部分是这段程序的主体,我们会发现它的核心就是控制电机的旋转,那么如何通过程序来控制电机的旋转呢,这就要回忆一下前面介绍的硬件电路了(《遥控坦克DIY过程解密(02)》),如图6-3。

       根据L9110的工作时序图以及我们的硬件原理图,我们可以清楚的看出要想让电机旋转我们只要让单片机的两个IO引脚P10、P11输出反相就可以了,如果转化成代码如图6-4所示。

       上图中红色方框中表示的是对一个马达的控制,对另外2个马达的控制方法也是一样的,进行到这里我们已经可以通过程序来控制电机的旋转了,只要正确的协调3个马达的旋转方向,我们就可以让我们的坦克完成前进、后退、左转、右转、炮塔顺时针旋转以及炮塔逆时针旋转这几个功能。
       那么系统是如何知道已经接收到数据的呢?只要有2种方法,一种方法是对NRF24L01的状态不断进行查询,另一种方法是当NRF24L01接收到数据以后主动通知MCU,根据我们的硬件原理图同时为了提高系统执行效率,我们采用第二种方法,代码如图6-5、6-6。
  
       当接收到数据传输模块触发的中断后,我们去读取传输模块的状态,如果接收到数据我们就设置一个标志,图6-2的程序会不断查询这个标志,一旦发现有数据发送来,就可以对数据进行解析了。
       当然这里面我们省略了初始化硬件、定时器以及传输模块的详细步骤,如果大家在DIY过程中也遇到到了具体技术问题,可以随时翻阅资料或学习,当然也可以与“@ZiShi”进行交流。
       如果要让坦克正常解析接收到的命令,我们可以定义一些简单的协议,如图6-7。

       有了命令列表,通信双方就可以根据这个“协议”进行通信了,假如坦克一端接收到0X00,那么坦克就全速向前冲,如果坦克一端接收到0X02,那么坦克就会左转,大家还可以自己扩充这个命令列表,让自己的坦克完成更多的功能。
       坦克一端的程序原理已经介绍完毕了,后面我们还会继续介绍遥控手柄一端的程序原理。
       今天先到这里……

最新回复

根据楼主的提示做了坦克端程序,另外把PWM功能加入  详情 回复 发表于 2015-9-24 18:00
点赞 关注(1)
 

回复
举报

11

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
收藏下 谢谢了

点评

多谢支持啦  详情 回复 发表于 2015-9-1 23:37
 
 

回复

280

帖子

0

TA的资源

纯净的硅(中级)

板凳
 

多谢支持啦
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
不知道如何收藏
 
 
 

回复

280

帖子

0

TA的资源

纯净的硅(中级)

5
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

6
 
根据楼主的提示做了坦克端程序,另外把PWM功能加入

点评

赞一个  详情 回复 发表于 2016-5-17 12:05
 
 
 

回复

280

帖子

0

TA的资源

纯净的硅(中级)

7
 
swisor 发表于 2015-9-24 18:00
根据楼主的提示做了坦克端程序,另外把PWM功能加入

赞一个
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表