注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
@ZiShi的个人空间
https://home.eeworld.com.cn/space-uid-466323.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
【解密06】基于51单片机的无线遥控坦克DIY 之 坦克主程序
已有 1099 次阅读
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
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
We Want U!加入英飞凌,让梦想起航!
直播预告 | 详解绝对压力传感器芯片的机械结构设计、工艺控制、曲线校正和EMC性能
MATLAB中用于激光雷达处理的算法解析
示波器免费送啦~RIGOL有奖直播|示波器、可编程直流电源应用分享
这种无电容的新型DRAM,能掀起新革命?
聊聊云计算标准背后的秘密 | 硬创公开课
新增数据手册
SA20A54
LCGDF5T20EYU
3060-824-2003
ABL2-70.0000MHZ-S-N4W-I-T
TSL3A221J-B216R
ABLS2-24.0100MHZ-A3R-F
热搜器件
0603R-11NK
T491A106K016ZTAC00
P120PK-Y20BR50K
STC15W204S
3240140
CMF5519K600BERE70
推荐下载
艾伯特InceptionV3_RethinkingtheInceptionArchitectureforComputerVision[aibbt.com]
umh8n
微带线设计原理
BF561视频编码板套件V1.10说明书
ADS_LTCC_filter
电容在EMC设计中的重要性
推荐关注
SSD201/202D修改默认自启动脚本的方法,触觉智能保姆级攻略来了
VMware环境下,同时烧录固件检测不到设备如何解决?触觉智能鸿蒙开发板演示
四脚晶振怎么区分有源无源
上汽大通汽车CAN数据解析开发服务及技术商用领域详细解析
【Follow me第二季第4期】2.必做任务之点灯+串口打印
【Follow me第二季第3期】DAC配置生成波形及性能测试(二)使用ADC采样DAC模块输出...