注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
@ZiShi的个人空间
https://home.eeworld.com.cn/space-uid-466323.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
【解密06】基于51单片机的无线遥控坦克DIY 之 坦克主程序
已有 1110 次阅读
2013-2-26 21:12
【解密-软件】
我们说硬件是载体软件是灵魂,前面已经介绍了遥控坦克的硬件部分接下来我们该去实现它的软件部分了,说简单就是写程序控制我们的坦克完成预计功能。看过前面文字的朋友知道我们的硬件系统分为两部分,它们是坦克系统和手柄系统,我们要分别为这两个系统编写程序。首先我们先设计一下坦克一端的软件架构,如图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,那么坦克就会左转,大家还可以自己扩充这个命令列表,让自己的坦克完成更多的功能。
坦克一端的程序原理已经介绍完毕了,后面我们还会继续介绍遥控手柄一端的程序原理。
今天先到这里……
本文含有来自论坛的附件或图片点击查看原帖附件。
本文来自论坛,点击查看完整帖子内容。
收藏
邀请
举报
全部
作者的其他最新日志
•
【Arduino】比“Hello World!”还要简单的程序是“Hello Arduino!”
•
【遥控瓦力】瓦力机器人来了,它也要DIY遥控坦克了
•
2013全国科技活动周
•
子时团队DIY坦克体验报告
•
招募[DIY体验师]一名,希望大家踊跃报名!
•
【北京创客空间分享会】子时DIY,分享现场PPT和现场照片
评论 (
0
个评论)
涂鸦板
您需要登录后才可以评论
登录
|
注册
评论
@ZiShi
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
【公司要闻】力特苏州保险丝工厂举行除草护绿行动
双十一福利放送|N32系列MCU开发板嘉年华!
干货 | 各类电子元器件失效机理分析
今晚23点,骁龙将至
华为海思爆发!明年超越苹果
三谈操作系统
新增数据手册
79428-129HLF
SNAPTACR12RLC09CH02
SLA507Q
1241.1040.6.013
XC6221C08AMR
H0603CA2051CHW-W
热搜器件
SM650A70000AA
S-80808CNNB-B9MT2U
CMF55475K00BEEB70
RNC60H1502FSBSL
CMR05C8R0DPDP
MFR50SFTE52-12K7
推荐下载
PCF8563-02英文手册
简明电工学教程
内部保密的奥林巴斯单反系列SDK2次开发包
期刊论文:利用小波软阈值法除去图像中的统计噪音
新型薄膜电池光伏组件设计技术.pdf
0347、使用PWM得到精密的输出电压.rar
推荐关注
《Linux内核深度解析》-系统调用学习
《Linux内核深度解析》-- 内核互斥技术
电池插入检测电路
过孔的设计孔径是真的很重要,但高速先生也是真的不关心
本地匿名化解决方案:隐私保护、自主掌控和高效运行!
移动式电子汽车衡行业数据分析报告2025