- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机与PC串行通信在实时控制系统中的应用
单片机与PC串行通信在实时控制系统中的应用摘要:单片机与PC串行通信可用于实时控制系统中。本文首先简单介绍了实时控制系统中的微处理器系统,接着定义了串口通信协议,并在此基础上采用多线程编程工具CserialPort类,用VC++编写基于对话框的MFC串口通信程序来控制移动机器人的行进。通过实验验证,该串口通信设计方案能较好地控制移动机器人,达到了预期效果
关键字:PC机 单片机 通信协议 CserialPort类 VC++
1 引言
对于传统的移动机器人,多采用红外遥控的方式控制移动机器人的行进,而目前移动机器人的自主行进方式还不太成熟,所以采用串口通讯的方式来控制移动移动机器人的行进也是不错的选择。并且串口通讯简单灵活易控制,通讯过程中所采用的协议具有统一的标准。因此,无论是在工控系统、遥感控制、实时控制系统中都得到了广泛应用
2 实时控制系统介绍
实时控制系统主要包括上位机(PC机)、单片机、串口通信模块以及2.4G的无线摄像头视频采集模块。该系统主要实现功能是利用2.4G的无线摄像头采集移动机器人周边的环境,根据不同的环境给单片机发送不同指令,实现方法是利用串口通信把上位机(PC机)所发送指令通过串口发送到单片机,进而远程控制移动机器人的行进
3 串行通信设计
串行通信设计包括选择合适的微处理器系统、制定串口通信协议、串口通信编程、人机控制界面。其主要目的是通过串口通信把PC机发送的不同组合指令给单片机,单片机解析出相应指令,根据指令来控制机器人的前、后、左、右运动
3.1 微处理器系统。AT89C2051是Atmel 公司生产的与MCS-51系列兼容的单片机。内含:一个精密模拟比较器、2k字节的FlashEEPROM、15根I/O引线、128字节RAM、1个五向量两级中断结构、2个16位定时器/计数器,1个全双工串行口等。由于该系统用于简单的移动机器人控制,且从性价比方面考虑,AT89C2051完全满足设计的要求
3.2 串口通信协议。通讯口设置为“9600,N,8,1”,控制指令为:88HT88H ,T有四种可能,分别为01H、02H、03H、04H,对应的控制分别为前、后、左、右。其中确认帧为67H。当单片机收到的控制指令为所定义的格式时,即接收到的信号无差错,确定为控制机器人行进,单片机就发送确认帧67H给PC机,如果在某一时间间隔内未收到确认帧就重新发送指令
3.3 串口通信编程。PC机通过串口发送指令给单片机,通过串口发送指令就必须涉及到串口通信程序。对串口通信编程的方式很多,如Cserial 类、Windows API串口编程、MSCOMM控件、Qt串口、多线程编程工具CserialPort类,在此选用了CSerialPort类。CSerialPort类是基于多线程的,由Remon Spekreijse提供的免费串口类。在该类中,其主程序工作流程仍然是打开串口、配置串口、读写操作以及关闭串口
3.3.1 设置串口参数InitPort()。串口的通信参数一般涉及到波特率、串口号、奇偶校验方式、数据位、停止位等。在CserialPort类中用串口初始化函数InitPort来设置串口参数
3.3.2 串口通信检测StartMonitoring()。在串口通信中,对于串口接收的一端,因为不知道何时数据到来,也不知道有多少数据需要被接收。因而需要一个串口通信检测线程来检测串口事件的响应(串口接受数据、流控制事件以及其他串口事件)。在此就串口接收数据而言,通过开启串口通信检测线程StartMonitoring()来随时检测串口是否接受到数据,一旦检测到该事件就以消息方式来通知主程序,激发消息处理函数来进行数据处理。对于串口发送的一端,可直接向串口发送数据
3.3.3 串口发送数据WriteToPort()。在打开串口并启动串口通信检测线程后,可调用WriteToPort()来发送数据。而对串口接收一端通过编写串口接收函数即可
3.3.4 停止或暂停线程检测StopMonitoring()。用来暂停或停止对串口的检测
3.3.5 关闭串口ClosePort()。关闭串口和停止或暂停线程检测有很大的区别,即使停止了对串口的检测,但串口资源仍然被暂时,为了释放该资源,就必须调用关闭串口函数。一旦关闭串口后,要想重新对串口通信则必须从InitPort()开始
4 控制界面设计
对移动机器人的控制方式即通过键盘或按钮控制来发送指令,键盘控制是利用键盘上的上下左右键控制,按钮控制则通过界面上点击四个方向控件(前进、后退、左转、右转)来发送指令,这些指令分别对应的是移动机器人的前进、后退、左转、右转
5 室内行走实验
基于前面所述的串口通信系统
文档评论(0)