毕业设计论文单片机msp430与pc机串口通讯设计内容摘要:

n switch nRes case 1 UART1_TX_BUF[0] O UART1_TX_BUF[1] K UART1_TX_BUF[2] 13 nTX1_Len 3 设置中断标志进入发送中断程序 IFG2 UTXIFG1 nRX1_Len 0 break case 2 for n 0n nRX1_Lenn UART1_TX_BUF[n] UART1_RX_Temp[n] UART1_TX_BUF[nRX1_Len] O UART1_TX_BUF[nRX1_Len1] K UART1_TX_BUF[nRX1_Len2] 13 nTX1_Len nRX1_Len 3 设置中断标志进入发送中断程序 IFG2 UTXIFG1 nRX1_Len 0 break case 1 UART1_TX_BUF[0] E UART1_TX_BUF[1] R UART1_TX_BUF[2] R UART1_TX_BUF[3] O UART1_TX_BUF[4] R UART1_TX_BUF[5] 13 nTX1_Len 6 设置中断标志进入发送中断程序 IFG2 UTXIFG1 nRX1_Len 0 break 在上面的程序中主要根据 ProcessCMD UART1_RX_TempnRX1_Len 对得到的结果进行处理向 PC 发送响应数据如果接收到的数据有错误则发送 ERROR 数据封装完成后设置 nTx1_Len的长度并通过 IFG2 UTXIFG1发送中断从而使中断处理程序进行数据发送上面程序中 ProcessCMD UART1_RX_TempnRX1_Len 主要处理接收到的数据并返回相应的代码以使主程序处理该函数的具体代码为 int ProcessCMD char pBuf[]int nLen int nTemp 1 int i if nLen 2 return 1 if nLen 5 if pBuf[0] A pBuf[1] T pBuf[2] E pBuf[3] 0 nTemp 1 if pBuf[0] A pBuf[1] T pBuf[2] E pBuf[3] 1 nTemp 2 return nTemp 167。 322 上位机 PC 机程序设计 一上位机串口通讯编程方法的选择 随着 Windows在国内的普及越来越多的微机用户转向了 Windows操作系统所以在 DOS环境下利用汇编语言和 C语言对串口通信的编程方式已经不再被看好在Windows 操作系统下利用 VC++ 60 开发平台对串口通信上位机编程其软件界面非常方便友好编程工作量相对较小只需进行主要应用功能的编程和少量界面控制的编程 [12] 在 Windows 环境下利用 PC 机串口进行通信的常用方法有以下几种一是利用Windows API 通 信 函 数 二 是 利 用 VC 的 标 准 通 信 函 数_inp_inpw_inpd_outp_outpw_outpd 等直接对串口进行操作三是使用 Microsoft Visual C 的通信控件 MSComm 四是利用第三方编写的通信类 [13]本设计将介绍用PComm 开发PC机与单片机的通信程序的解决方案 二 Pm 主要命令码 PComm Professional Comm Tool for PC 串口通信软件包专门运用Windows NT2020XP 如今 WindowsNT2020XP 已被广泛应用 而它提供的 Win32Comm API 却复杂难用 而且没有提供如 Zmodem 等高阶应用函数 这增加了通信软件工程师的负担针对这种状况 MOXA 开发了一套简单易用的程式函数库及功能强大的辅助工具 PCommPComm Pro 支持多种编程语言如 Visual BasicVCDelphi 等并且适用于任何在 Windows NT2020XP 下以 Win 32 COMMAPI 为基础的驱动程式的其他品牌的多串口卡 [14] PComm 的主要命令码有以下几种 [15] 1 sioopen port 用于设置并打开串口其中 port的 1234分别代表 COMCOM2COM3COM4当返回值为 0时表示串口已经打开否则为串口打开出错 2 sio close port 关闭串口当返回值为0时表示串口已经关闭否则为串口关闭出错 3 sio ioctl port baud mode 用于设置串口波特率校验位数据位停止位等参数 4 sio getch 从串口输入缓冲区读出一个字符返回值为0表示已收到数据 5 sioread port buf len 用于从串口输入缓冲区读出一串字符 buf代表字符串数组 len代表数组长度返回值为0表示未收到字符大于0代表收到字符的个数 6 sioSetReadTimeouts port TotalTimeouts IntervalTimeouts 在设定的等待时间内连续读串口输入缓冲区 TotalTimeouts 代表设定的等待时间 IntervalTimeouts 代表每次读出的间隔时间 7 sioflush port func 用于清空缓冲区当 func 为0时清空输入缓冲区为1时清空输出缓冲区为2时清空输入输出缓冲区 8 sioputch port term 用于向串口缓冲区发送一个字符返回值为0时表示发送正确否则表示 发送错误 9 sio write port buf len 用于从串口缓冲区发送一串字符 buf 代表字符串数组 len 代表数组长度 三上位机 PC 机通信协议 分布式控制系统中的每台下位机均有唯一的地址PC机发送数据时先发送被叫单片机地址被叫单片机对地址进行判断地址错误就不予理睬地址正确则向上位机发送呼叫应答信号 [16]PC 机在接收到呼叫应答信号之后将向单片机发出通信命令字符串以下是上位机 PC 机的通讯协议格式 表 32 上位机通讯协议格式 单片机号 单片机号 命令码 命令码 停止标志 其中单片机号代表现场 第几台单片机占用1个字节发送两次的目的是为了防止干扰命令码则代表上位机向下位机发布的工作命令它也占用1个字节发送两次的目的也是为了防止干扰而停止标志则表明上位机一次命令发送完毕使用时可依据该标志判断上位机的命令是否发送完毕 四上位机串口通讯实现过程 在用 PComm 处理 PC 机的串口通信时其实现过程如下 1启动 VC60新建一个基于对话框的应用程序 TxRx同时增加静态文本编辑框和按钮等控件 [17]如图 33 所示 图 33 基于对话框的接收发送数据程序 根据实际需要还可以添加更多控件诸如串口的打开和关闭按钮波特率选 择框以及一些实现更加高级功能的控件等在这里仅添加基本的发送接收等按钮控件 2 按照表 33 为每个控件添加相应的变量 表 33 TxRx 应用程序各控件的属性 控 件 ID 变量名 类 型 按 钮 IDC_TRSMITT 发送按钮 Edit1 IDC_TXDATA M_TxData Cstring Edit2 IDC_RXDATA M_RxData Cstring 发送编辑控件的属性添加过程如图 34 所示其他属性以及其他控件的添加方法类似 图 34 发送编辑控件 ID 属性设置方法 3PComm.h和 PComm. lib 加入到工程中并在 TxRxDlgcpp 文件中加入#include PComm. h 头文件此后便可调用其提供的通信命令集 [18] 4TxRxDlgcpp 文件中添加初始化程序代码也就是在 On InitiDialog 函数中的 TODO 语句后加入以下代码 TODO Add extra initialization here Int ret port 1 ret sio open port 打开串口1 sio DTR port 0 置 DTR 为低电平 sio ioctl port B9600 P NONE| BIT 8| STOP 1 设置波特率 为 96008位数据位1位停止位无校验位 添加结果入图 35 所示 图 35 在 TxRxDlgcpp 里添加初始化程序 四上位机通信程序 对上位机通信程序的设计除了初始化串口外剩下的就是对接收和发送程序的设计了下面是一个简单的接收发送子程序其功能是按照一定时间间隔对串口进行读操作并能够每次向串口缓冲区发送 5 个字符 [19] void CTXRXDlg Send Recv 收发数据子函数 while 1 Int ret1 Sio flush port 2 清空串口输入输出缓冲区 siowrite port15 向串口缓冲区发送5个字符 sioSetreadTimeouts port401 在40ms内每隔1ms读一次串口 ret sioread portRecvBuf1 if ret1> 0 sio close port break 若收到数据关闭串口跳出循环 else 若未收到数据对串口再一次发数据并再次查询接收 以上只是一个简单的接收发送程序在实际应用中根据实现功能的不同还可以设计更加复杂 可操作性更高的程序 结 论 串行通信端口在系统控制的范畴中一直占据着及其重要的地位它不仅没有因为时代的进步而遭淘汰反而在规格上越来越完善应用也越来越广泛作为一种基本而又灵活方便的通信方式串口通信被广泛应用于 PC 与 PC 或者 PC 与单片机之间的数据交换以及其他工业控制与自动控制中 [20]本设计给出了在分布式控制系统中上位PC机与下位单片机 MSP430F149 之间进行异步串行通信的解决方案实现了上位机向多个最多 8 个下位机发送信息以及下位机接收上位机的数据并能够向上位机发送数据的功能本设计方案在实际运行过程中简单方 便稳定可靠较好地解决了上位机与下位机之间的通信问题 本设计利用 PCOMM 开发上位机通信程序具有较大优势虽然上位机程序设计有多种方法包括 DOS 系统 下的 C 语言和汇编 Windows 系统下利用 Windows API通信函数或 VC 的标准通信函数 _inp_inpw_inpd_outp_outpw_outpd 直接对串口进行操作或者利用 Microsoft Visual C 的通信控件 MSComm 以及利用第三方编写的通信类但是这几种方法都过于复杂对程序员要求较高而且可靠性并不是很好而 PCOMM 是由第三方编写的专门针对串口通信 的应用工具包相对于其他方法来说 PComm具有易开发易排难高兼容的特点另外 PComm提供了许多基于函数的命令集来处理串口通信可以在等多种开发工具下使用且具有传输速度快使用灵活方便等特点能够满足复杂情况下的串口通信要求 RS232C 标准规定驱动器允许有2500pF的电容负载通信距离将受此电容限制例如采用 150pFm的通信电缆时最大通信距离为 15m 若每米电缆的电容量减小通信距离可以增加传输距离短的另一原因是 RS232 属单端信号传送存在共地噪声和不能抑制共模干扰等问题因此一般用于 20m 以内的通信 RS485 总线 通信距离几十米到上千米 RS485 采用平衡发送和差分接收因此具有抑制共模干扰的能力加上总线收发器具有高灵敏度能检测低至 200mV 的电压故传输信号能在千米以外得到恢复 RS485 采用半双工工作方式任何时候只能有一点处于发送状态 2020 1 3942 [3] 胡大可 MSP430系列超低功耗 16位单片机原理与应用 北京北京航空航天大学出版社 2020 年 [4] 魏小龙 MSP430 系列单片机接口技术及系统设计实例 北京 北京航空航天大学出版社 2020210223 [5] 沈建华 杨艳琴 翟骁曙 MSP430 系列 16 位超低功耗单片机原理与应用 北京清华大学出版社 2020 年 [6] 胡大可 MSP系列单片机 C语言程序设计与开发 北京北京航空航天大学出版社 2020 年 157178 [7] 秦龙 MSP430 单片机应用系统开发典型实例 中国电力出版社 2020 年120131151169。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。