MyException - 我的异常网
当前位置:我的异常网» 单片机 » 实际项目请问:单片机驱动步进电机,由上位机通过串

实际项目请问:单片机驱动步进电机,由上位机通过串口通讯控制

www.myexceptions.net  网友分享于:2013-03-28  浏览:84次
实际项目请教:单片机驱动步进电机,由上位机通过串口通讯控制
学单片机不久,基本能做流水灯、逻辑控制之类的。最近有朋友交来一个项目,上位机通过串口和单片机通讯,单片机接驱动芯片带步进电机。上位机程序由别人用VC写,给了通讯协议如下。

单片机用的是89C2051, P1.0、P1.1控制1号步进电机,P1.0输出脉冲,P1.2输出高/低电平作方向信号;P1.2、P1.3控制2号步进电机,同理是P1.2输出脉冲,P1.2输出方向信号。脉冲数和方向信号由上位机指定。

看了一些书上讲串口的内容,都是把端口的状态或是某个存储单元的内容发送及接收,对应这个项目感觉毫无头绪,主要是帧结构还不太理解,校验、响应码什么的在单片机中怎么实现?请各位老师看一下,能给个示例程序吗提供点思路吗?

步进电机控制通讯接口协议

说明:1,按照节1进行数据定义

  2,串口通讯参数为:9600bps,8,1,无奇偶校验

1,通讯数据帧结构

包头标识 包长 数据 校验
 0x7f Sum1 Sum2

1)每包数据以0x7f为数据开头标识;
2)“包长”为数据字段+校验字段 的数据字节长度;
3)数据通讯采用“呼叫-应答”处理模式,由上位机呼叫,下位机应答处理模式;
4)包头标识,包长字段分别为1字节长度,校验为2字节长度,数据字段长度由以下具体协议决定;
5)校验 方式为 包头标识+包长+数据字段 的求和。校验和= Sum1*256+ Sum2.

2,通讯协议(数据字段部分定义)步进电机输出

上位机请求
地址 功能码 转角方向1 转角增量1 转角方向2 转角增量2
0x01 0x02 0/1 Δ1 Δ2 0/1 Δ3 Δ4
、 
说明:
1)转角方向,1-顺时针,0-逆时针
2)转角增量1=Δ1*256+Δ2; 转角增量2=Δ3*256+Δ4
  转角单位为度;转角增量数据应少于300,否则下位视为无效数据

下位机响应
地址 功能码 响应码
0x01 0x01 R

说明:
响应码:0-正确完成,1-无效数据,2-校验和错

------解决方案--------------------
单片机的串口通讯,只需要设置好相关参数,如波特率、通信端口设置等,即可在相应的寄存器中写入发送数据,或触发后读相应寄存器得到数据。在调试的时候,利用示波器,可以事半功倍。

串口的帧格式是自己在相关的寄存器中设置决定的,一般设置为8位数据,即8个BYTE的数据,校验位一般是经过设置后自动添加的。

http://download.csdn.net/source/1172712
------解决方案--------------------
网上有本书: 单片机模块开发实例导航 有实例代码可以参考
------解决方案--------------------
这种协议大都是自定协议,很简单
8个字节通常用固定的特殊头字节和特殊尾字节作为通讯开始和结束的标志,以防范通讯错位(头字节和尾字节不要用相同的数值,以免错位)
剩余的六个字节,根据协议需求内容的多少,一般要有该帧的数据类型(是命令帧还是数据帧),该帧所传输的数据(即通讯的是什么命令或数据,此处的命令或数据也是用数值指代,通讯双方约定好命令意义,如约定0x01为正转,约定0x02为反转,那么直接通讯0x01或0x02即可代表相应命令,接收端根据约定执行相应命令),如为数据帧的话,则还有相应的数据值(例如在之前的字节里分别却认为数据帧格式,转角数据值,则后续的字节里应有转角的数据量,此处需要注意的是,一个字节最大值为255,如超过,则需要用两个字节来表示该数据量,可表示65535的范围)
如果你即将编写的协议,比较简单,可以把命令动作集中在一个帧内解决,这样可以减少通讯的开销
下位机的回应,也是上述的方法相同的
你的疑惑,我在最初接触通讯的时候也有的,其实只要记住一点就能明白了,通讯的精髓,是双方约定好各个命令和数据的含义,利用已明了其指代的数值进行通讯工作。不明意义的数值,是不应该出现的,若出现,硬件问题造成的不明意义数值,应尽力加以解决以降低其出现概率达到可以接受的程度,在操作中对其不予作用或回复出错提示帧。软件问题造成的不明意义数值,应完全解决。这也是整个系统的容错能力的表现,在设计时应该预先考虑到
------解决方案--------------------
先调试好串口通信,然后再根据客户所定的协议,控制步进机,这就是头绪,简单的编程.

文章评论

为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
编程语言是女人
编程语言是女人
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
代码女神横空出世
代码女神横空出世
 程序员的样子
程序员的样子
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
鲜为人知的编程真相
鲜为人知的编程真相
Java程序员必看电影
Java程序员必看电影
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
总结2014中国互联网十大段子
总结2014中国互联网十大段子
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员必看的十大电影
程序员必看的十大电影
中美印日四国程序员比较
中美印日四国程序员比较
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
如何成为一名黑客
如何成为一名黑客
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我的丈夫是个程序员
我的丈夫是个程序员
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员的鄙视链
程序员的鄙视链
每天工作4小时的程序员
每天工作4小时的程序员
10个调试和排错的小建议
10个调试和排错的小建议
程序员都该阅读的书
程序员都该阅读的书
漫画:程序员的工作
漫画:程序员的工作
我是如何打败拖延症的
我是如何打败拖延症的
那些争议最大的编程观点
那些争议最大的编程观点
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
老程序员的下场
老程序员的下场
程序员和编码员之间的区别
程序员和编码员之间的区别
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员应该关注的一些事儿
程序员应该关注的一些事儿
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有