51单片机与PC机通信资料
51单片机与PC机通信资料(精选9篇)
51单片机与PC机通信资料 第1篇
用PComm开发PC机与单片机的通信程序
摘要:介绍了分布式控制系统中上位PC机与下位单片机异步串行通信的通信协议;同时介绍了在VC++6.0环境下用PComm编写的PC机通信程序来实现上位机和下位机异步串行通信的方法,给出了PComm编程实例和下位机程序模块流程图。关键词:分布式控制系统;异步;串行通信;PComm
在由一台PC机(上位机)和多台单片机(下位机)构成的分布式控制系统中,单片机主要负责实时数据采集,并将初步处理后的数据通过串行口传送给PC机?以便由PC机串行口的命令对单片机进行控制,同时通过打印机或显示器向用户随时提供各种统计报表和整个控制过程的具体数据。在这样的分布式控制系统中,单片机与微机之间的多路通信是整个系统的关键,本文将介绍在提高通信的准确性、可靠性和效率的前提下,用PComm开发PC机与单片机的通信程序的解决方案。
1通信协议
为了保证可靠的通信,必须有一套完善的通信协议。分布式控制系统中的每台单片机均有唯一的番号。通信开始时,先由PC机呼叫被叫单片机的番号,单片机在接收到微机的呼叫后,首先判断是不是自己的番号,如果是,则发送呼叫应答信号,否则不予理睬。微机在接收到呼叫应答信号之后,将向单片机发出通信命令字符串。以下是上位PC机协议的格式:
单片机号单片机号命令码命令码停止标志
其中,单片机号代表现场第几台单片机,占用1个字节,发送两次的目的是为了防止干扰;命令码则代表上位机向下位机发布的工作命令,它也占用1个字节,发送两次的目的也是为了防止干扰。而停止标志则表明一次命令发送完毕。使用时可依据该标志判断上位机的命令是否发送完毕。
下位机协议格式如下:
数据块校验位
该格式中,数据块为下位机上传到上位PC机的数据。校验位则用于PC机对收到的数据进行奇偶校验(占1个字节)。校验正确后,可将数据写入内存,否则发出数据传输错误信息,以要求单片机重新传输数据。
另外,作为一个完整的通信协议,只有上述约定还不够,还必须在发送和接收数据的时间间隔上加以限制。否则,很可能由于某些原因而造成无限制的等待对方应答,使整个系统处于工作不正常状态,或者延误其它动作的处理。具体时间限制可根据通信内容、CPU处理速度,再加上适当的余量来确定。
2单片机通信程序设计
设计单片机通信程序时,必须充分发挥单片机的效率。由于单片机多应用于实时性较强的控制场合,因此,应将及时响应和控制对象的动作放在优先考虑的位置,以尽量减少通信等辅助性操作所占用的CPU时间。基于上述考虑,笔者在设计单片机通信程序时,将通信程序分为接收中断处理程序、发送中断处理程序和通信处理程序3部分,并将这3部分程序巧妙地进行组合,从而构成整个单片机的通信程序。
2.1接收中断处理程序
接收中断处理程序主要负责接收微机发送到单片机接收缓冲区(不对数据进行处理,以减少中断占用的时间)的数据,当接收到规定的`字符数或在一定等待时间内无后续数据之后,置接收完毕标志,以表明接收缓冲区中有待处理的数据并请求通信处理程序对其进行处理。其流程图如图1所示。
2.2发送中断处理程序
发送中断处理程序主要负责向微机发送数据,发送中断一般处于禁止状态,只有在通信处理程序将需要发送的数据写入单片机的发送缓冲区,并将发送中断置为允许方式后,发送中断才开始工作,并将缓冲区数据逐一发送给微机。当发送完指定长度的数据后(发送缓冲区为空),发送中断处理程序将发送中断置为禁止(关闭)状态,直到通信处理程序将其再一次开放。其流程如图2所示。
2.3通信处理程序
考虑到尽量减少通信中断程序所占用的CPU时间,通信处理程序被放在普通主循环中调用。只有在接收到上位机送来的一串数据,且接收完毕标志为“ON”时,才能真正进行处理,否则不进行处理。这样就可利用送信后等待微机回答的时间进行别的处理,从而消除了空等待时间,提高了CPU的利用率。通信处理程序可根据通信处理状态的不同来分别执行不同的路径。在进入相应路径后,首先对接收缓冲区的内容进行正确性检查,检查正确后再根据通信要求或协议规定对缓冲区的内容进行处理(包括内存的写入和读出),同时重新组织数据到发送缓冲区以向微机发送数据,最后退出通信处理程序以执行其它的程序。待接收中断程序重新接收到数据并将接收完标志置为“ON”后,可重新进入通信处理程序进行处理。
3PC机通信程序设计
在VC++6.0环境下,利用PC机串口进行通信的常用方法有两种?第一是调用WindowsAPI?Appli-cationProgramInterface?函数;第二是使用ActiveX的MSComm控件。第一种方法需声明及调用许多API函数,十分烦琐。而第二种方法是将API函数封装起来,这种方法虽较为简便,但不能满足复杂情况下的通信要求。本文将介绍另外一种用PComm处理PC机的串口通信方法。
PComm是一种用于处理多进程/多线程的串口通信软件开发工具,它提供了许多基于API函数的命令集来处理串口通信,可以在VisualC++、VisualBasic、Delphi5.0等多种开发工具下使用,且具有传输速度快、使用灵活方便等特点,能够满足复杂情况下的串口通信要求。
3.1Pcomm的主要命令码
PComm的主要命令码有以下几种:
●sioopen(port);
用于设置并打开串口,其中port的1、2、3、4分别代表COM1、COM2、COM3、COM4。当返回值为0时,表示串口已经打开,否则为串口打开出错。
●sioclose(port);
关闭串口,当返回值为0时,表示串口已经关闭,否则为串口关闭出错。
●sioioctl(port?baud?mode);
用于设置串口波特率、校验位、数据位、停止位等参数。
●siogetch();
从串口输入缓冲区读出一个字符,返回值为0表示已收到数据。
●sio-read(port?buf?len);
用于从串口输入缓冲区读出一串字符,buf代表字符串数组len代表数组长度,返回值为0表示未收到字符,大于0代表收到字符的个数。
●sio-SetReadTimeouts?port?TotalTimeouts(Inter-valTimeouts);
在设定的等待时间内连续读串口输入缓冲区,TotalTimeouts代表设定的等待时间,IntervalTimeouts代表每次读出的间隔时间。
●sio-flush(port?func);
用于清空缓冲区。当func为0时清空输入缓冲区,为1时清空输出缓冲区,为2时清空输入输出缓冲区。
●sio-putch(port?term);
用于向串口缓冲区发送一个字符,返回值为0时表示发送正确,否则表示发送错误。
●sio-write(port?buf?len);
用于从串口缓冲区发送一串字符,buf代表字符串数组,len代表数组长度。
3.2实现过程
在用Pcomm处理PC机的串口通信时,其实现过程如下:
(1)启动VC++6.0,新建一个基于对话框的应用程序TxRx。同时增加静态文本、编辑框和按钮控件,并为它们添加相应的变量。其属性见表1。
表1TxRx应用程序的属性
控件ID变量名类型按钮IDC_TRSMITT发送按钮EditIDC_TXDATAM_TxDataCstringEditIDC_RXDATAM_RxDataCstring
(2)将Pcomm.h和Pcomm.lib加入到工程中,并在TxRxDlg.cpp文件中加入#include“Pcomm.h”头文件,此后便可调用其提供的通信命令集。
(3)在TxRxDlg.cpp文件中添加有关程序代码,也就是在OnInitiDialog??函数中的TODO语句后加入以下代码:
//TODO?Addextrainitializationhere
intret?port=1?
ret=sioopen?port??//打开串口1
sioDTR?port?0??//置DTR为低电平
sioioctl?port?B19200?PNONE|BIT8|STOP1??//设置波特率为19200,8位数据位,
1位停止位,无校验位。
3.3数据通信
下面举例说明PC机如何通过串口向单片机发送并接收数据。
voidCTXRXDlg??SendRecv??//收发数据子函数
{
while?1?
{
intret1?
sioflush?port?2;//清空串口输入输出缓冲区
sio-write(port,1,5);
向串口缓冲区发送5个字符
sio-SetReadTimeouts(port,40,1);
//在40ms内每隔1ms读一次串口
ret1=sio-read(port,RecvBuf,1);
if(ret1>0)
{
sio-close(port);
break;
}
//若收到数据,关闭串口,跳出循环
else;
//若未收到数据,对串口再一次发数据并再次查询接收。
}
}
4结束语
本文给出了分布式控制系统中上位PC机与下位单片机之间进行异步串行通信的解决方案。此方案在实际运行过程中,运行稳定,通信性能良好,从而较好地解决了上位机与下位机之间的通信问题。
★ 程序开发中微服务架构和容器的结合运用论文
51单片机与PC机通信资料 第2篇
3.1串行通信协议的制定
PC机与基因扩增仪的通信中需要实时的数据交互,因此必须保证通信的质量。而通信质量的保证很大程度上依赖于制定的通信协议的可靠性和高效性。本设计自定义了一种具备高效传输性的面向字节的通信协议,它使用的算法简单、变换效率高、可靠性强。在发送端中,其每一帧的格式如表1所示。
本设计中的通信是以帧为传送格式来创建同步过程的。每一帧都用2byte来表示它的开始标志和结束标志,称为BeginMark和EndMark,分别由固定值01H和0DH来表示,命令部分由A(41H)~Z(5AH),a(61H)~z(7AH)构成,占用1byte,数据部分根据命令的不同会有较大差别,且长度不固定,用来完成发送开关量信息、参数设定、打印信息发送等功能。部分命令就已确保了数据部分的长度,而在某些命令下数据长度是可变的,这时候需要在数据部分加入数据长度信息。在帧校验部分,本设计采用了异或和的校验方式,将从开始标志到数据部分的所有信息进行异或运算,最终的结果作为帧校验,占用1byte。
在接收端,收到信息后,会对接受到的信息进行解析,首先会对接收到的数据进行校验计算,与接受到的`帧校验进行对比,如果一致,则证明数据完整可靠,再进行命令部分和数据部分的解析,如果数据格式全部正确,则接收端会反馈给发送端正确接收的应答命令(ACK帧)如表2,并且执行相应的命令。如果数据格式错误,则反馈给发送端未正确识别命令(NAK帧)如表3,并且附含错误码来指明出错部分。
3.3通信软件的设计
3.3.1下位机程序设计流程图
下位机接收数据并可以在接受并处理上位机发送来的请求,完成相应的工作,软件设计流程图如图3所示:
3.3.2上位机程序设计
上位机可通过指令读取PCR状态信息,可以曲线直观显示下位机传输的数据,并且具有保存功能;并且可发送命令对下位机进行设置,命令语句如下:
4设计实现结果
上位机软件实现结果程序调试成功后,上位机正确获取基因扩增仪部分数据,如表4。
4结束语
本文针对新兴ARM型基因扩增仪的功能上的不足,利用OK6410开发板串口通信模块和Qtcreator环境下使用的第三方串行通信控件qextserialport,自定义严谨的通信协议,完成对基因扩增仪外部控制命令操作,使PC机与PCR仪可以根据人们需求进行实时数据的准确传输与控制。完善了ARM型基因扩增仪的通信功能,使其适应当前社会发展要求。实验表明,该设计可靠性强,稳定性好,具有一定的参考价值。当然,该文方法也存在不足之处,对远距离传输具有一定的局限性,以后可考虑在远距离通信中用无线等方式实现。
参考文献:
[1]张丽萍.基因扩增仪(PCR仪)温度校准装置的研究[D].天津:天津大学,.
[2]刘晖亮.一种车间设备层多串口信息测控终端软件系统的研究与开发[D].重庆:重庆大学,.
[3]霍亚飞.Qt及QtQuick开发实战精解[M].北京:北京航空航天出版社,2012.
[4]李敏.RS-232多串口扩展器件SP2538及其应用[J].国外电子器件,,4(4).
51单片机与PC机通信资料 第3篇
1. 串行通信的概念
串行通信分为异步和同步两种方式。在单片机中使用的串行通信都是异步方式。而异步通信采用的是异步传送格式,其字符格式如图1所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用l位 (低电平) ,用来表示字符开始。其后为7或8位的数据编码,第8位通常作为奇偶校验位。共有3种可能,即奇校验、偶校验和无校验,可根据需要选定。最后为停止位 (高电平) 用来表示字符传送结束。上述字符格式通常作为一个串行帧,若无奇偶校验位,即为常见的10位帧格式。
2. 串行通信的优点
与并行通信相比,串行通信有着明显的优势。
(1)串行通信只需要一条通信信道,电路简单,成本低廉,容易实现。而并行通信信道较多,电路复杂。
(2)虽然串行通信的信道只有一条,但是传输速率很快。由于并行通信的信道之间干扰较强,而且在产生数据错误后需要全部重发,而串行通信在数据出错的情况下只需重发出错位,因此串行通信的速度要快于并行通信。
(3)串行通信支持数据的异步传输。并行通信对数据传输设备和接受设备的同步性要求很高,不利于计算机同外围设备的通信,因此计算机同外围设备的通信基本采用串行传输。
因此,当今的计算机系统在与外围设备连接时,几乎全部采用串行通信协议。
现在的计算机提供了各种各样的串口,他们支持不同的通信协议,有着不同的功能。目前计算机提供的串口有RS-232, RJ45, USB2.0等。
3. PC机同单片机通信存在的问题
目前,51单片机同PC机的通信在大多数情况下仍然是使用RS-232 (DB-9) 串口作为通信接口实现的。而随着USB接口技术的成熟和使用的普及,由于USB接口大有着一系列RS-232 (DB-9) 串口无法比拟的优点,RS-232 (DB-9) 串口正在逐步的为USB接口所替代。而在现在的大多数笔记本电脑中,出于节省物理空间和用处不大等原因,RS-232 (DB-9) 串口已不再设置,这就约束了基于RS-232 (DB-9) 串口与PC机联络的单片机设备的使用范围。
4. USB接口同RS-232 (DB-9) 串口的比较
通过USB接口和RS-232 (DB-9) 的比较,不难发现:
(1) USB接口支持即插即用和热插拔,而RS-232 (DB-9) 串口不支持即插即用和热插拔,设备安装后需重启计算机方可使用。
(2) USB接口的传输速率较快,可达480Mbps (V2.0) ,而RS-232 (DB-9) 串口的最高速率仅为19200波特。
(3) USB接口占用体积较小,插拔方便;而RS-232 (DB-9) 串口的的插拔需要使用改锥,且在机箱后操作,比较麻烦。
综上可知,USB接口取代RS-232 (DB-9) 串口的趋势不可逆转。
(二)基于USB接口的51单片机和PC机通信模块的设计
1. 设计思路
使用USB-RS232转接芯片实现PC机同单片机物理层的连接,通过编写单片机指令实现数据帧格式的匹配。
2. USB转接芯片的选择
目前常用的USB转接芯片包括PL2303, CH341, CP2101, FT232等。在综合考虑了各方面因素后,CH341成为了本次电路设计的首选芯片。
CH341是南京沁恒电子公司生产的USB总线的转接芯片,通过USB总线提供异步串口,打印口,并口及常用的2线和4线等同步串行端口。其特点有:
(1)提供全速USB设备借口,兼容USB2.0,外围设备只需要晶体和电容;
(2)可通过外部的低成本串行EPROM定义厂商ID,产品ID,序列号等;
(3)成本低廉,可直接转换原串口外围设备;
(4)采用SOP-28封装,串口应用还提供小型的SSOP-20封装。
正是由于在PC机同单片机通信电路中,USB转接芯片CH341具有以上其他芯片无法比拟的优点,同时价格低廉并且提供中文技术支持,因此它成为了本电路USB转接芯片的最优选择。本电路采用的是SSOP-20封装的CH341T,其引脚图如图2所示。其中,芯片的驱动程序由南京沁恒电子公司提供。
3. 硬件电路设计
CH341T提供全速USB设备接口,兼容USB2.0,外围器件只需要电容和晶体,电路如图3所示。
其中,电源电压为5V, USB接口的差分数据线对与CH341T的UD-和UD+直接相连。CH341T提供TTL电平,同AT89C51可直接采用简单的3线连接(RXDTXD;TXDRXD;GNDGND)。在5V电源的情况下,V3口需要外接0.01uF的退耦电容。TEN#为串口发送数据使能端,低电平有效。CH341T必须使用12Mhz的晶振,否则无法正常工作。为保证单片机能够产生与计算机匹配的波特率,单片机采用11.0592Mhz的晶振。
4. 硬件驱动程序安装
通过登录南京沁恒电子公司网站http://www.winchiphead.com/download/index.htm可下载CH341T驱动程序CH341SER.EXE,在确认驱动程序和硬件电路无误后,打开驱动程序。弹出安装对话框后选择INSTALL,设备将自动安装驱动程序。安装完成后计算机将提示安装成功。
将硬件电路通过USB接口连接至计算机,计算机自动识别并弹出新硬件安装对话框,选择自动安装,驱动程序即可成功安装至计算机。在计算机设备管理器中,可显示刚刚安装成功的USB串口。如图4所示。
5. 单片机指令的编写
为实现单片机同PC机的简单通信功能,需要通过汇编指令使单片机完成一定的工作来验证USB接口通信的畅通。若要使单片机串口能够同PC机正常通信,单片机和USB接口需要使用相同的通信协议,在设备管理器中,可设置串口破特率为9600。而在单片机中,通过软件设置串口波特率为9600,工作方式为方式一,每接收一个8位数据,将数据保存并回送至计算机,以此来实现对USB通信畅通与否的测试。程序流程图如图5所示。
根据程序流程图,单片机的指令代码如下:
6. USB通信模块的调试
调试方法
串口调试工具(ComTools)是一款功能强大的串口调试免费软件。其主要功能如下:
(1)支持COM1COM8串口的数据发送和接收,可重复发送和接收数据;
(2)支持HEX格式数据和ASC格式数据的串口发送和接收;
(3)可自定义数据格式,校验位,可自定义数据传输速率;
(4)可自动记录发送和接收的数据并保存。
使用串口调试工具可以方便的通过计算机向USB串口通信模块发送数据并记录所接收的数据。因此,本次USB通信模块的调试使用该串口调试工具完成PC机同单片机的通信。
打开串口调试工具。首先选择串口设置,设置串口为设备管理器中对应的串口(COM4),设置波特率为9600,数据长度为8位,停止位为1位。在发送文本框中输入2字节16进制数据,点击发送向串口发送16进制8位数据。观察接收文本框,可以发现,计算机成功接收到单片机回送的8位数据。
在清空发送文本框后,经过多次的重复操作观察确认,每一次都能正确接收数据。为了进一步测验系统的稳定性,在拔掉USB通信模块后重新插入,计算机能够自动识别串口,重新打开串口调试工具后仍然能够正确的发送和接收。因此,该USB通信模块的数据准确性和系统的稳定性都得到了验证。
该USB通信模块具有以下特点:
(1)通过USB接口实现串口通信,能够在USB接口上完成以往需要使用RS-232 (DB9) 进行通信的计算机设备的通信;
(2)支持热插拔,驱动程序一次安装即可永久使用,不必在每次插拔后重启计算机;
(3)硬件电路简单,外围器件少,制作方便,成本低廉;
(4)可移植性强,支持绝大多数型号的单片机;可扩充性好,用户可根据需要扩充各种功能,可自定义厂商ID和产品序列号。
由此可见,我们的设计初步达到了目的。
(三)结束语
USB接口逐步取代RS-232 (DB-9) 串口已是大势所趋,单片机同计算机的USB通信在实际工作中的应用范围也将越来越广。本文所介绍的单片机和PC机的USB通信方法,电路简单,兼容性好,可移植性强,故可作为单片机同计算机的USB通信模块广泛应用于工业和电子产品的开发中。
摘要:针对基于RS-232 (DB-9) 串口的单片机同PC机通信中的一些问题, 文章介绍了一种简单可行的实现基于USB接口的单片机与PC机通信的方法, 提供了基于USB接口的单片机同PC机的通信模块, 编写了简单的串口测试程序, 验证了电路的可行性。
关键词:USB接口,单片机,PC机
参考文献
[1]卢超.单片机与PC机的通信设计[J].工矿自动化, 2007-5.
[2]南京沁恒电子公司.CH341芯片中文版说明书[EB/OL].http://www.Winchip head.com/download/index.htm.
[3]董建国, 戚云军, 何运兰.基于USB总线的PC机与单片机的通信[J].信息技术, 2003-11.
51单片机与PC机通信资料 第4篇
关键词:单片机;RS-232;PC机;实时数据采集
中图分类号:TP368 文献标识码:A 文章编号:1674-7712 (2012) 16-0066-01
一、单片机与PC机串行通信的硬件系统连接
二、串口通信的通信协议
考虑到小型分散测控系统采用主从式控制结构的实际情况,可将多个单片机的通信模式设置为模式1与PC机进行远程串行通信。当PC机启动通信功能并对某一单片机实现功能控制时,将每一片单片机设置一个片识别地址,也就是站号,只有当PC机发送的信号中的地址位与单片机中的片识别地址相一致时,该单片机才能根据接收信号对PC机做出响应,按系统要求向PC端发送应答数据。
具体的寻址实现可以采用软件查找方法:单片机可以提供位寻址区,假如该单片机的寻址标志位被置为“1”,表示该单片机可以对PC端的数据进行接收;假如寻址标志位为“0”,表示该单片机无法响应PC端请求。通过对标志位的判断结果决定是否将单片机地址与PC机地址进行比较,只有地址一致的单片机才可以将寻址标志位置为“1”,然后退出中断服务程序;其他未响应单片机则直接退出中断服务程序。
在发送端和接收端的信息传输中需要进行信息校验,以保证传输信息的正确性和可靠性,一般情况下课采用累加和校验。只有校验结果正确时,收发端才能正确响应数据帧,进行数据的发送与接收,否则将反馈信息传输出错,要求发送端对数据进行重新发送。为防止“锁死”现象的出现,该校验方法需要限定重发次数,在限定次数内发送的数据可被认定为有效,超出限定次数可认为发送失败,跳过该数据传输,或结束通信返回失败信号。
三、相应的软件编程实现
在实现程序上,单片机端的通信程序采用MSC51汇编语言编程,通过中断响应的方式实现数据通信,其通信方式可通过技术手册获得;PC机端的通信程序可以采用VB编程方式实现数据通信,其通信方式采用事件驱动方式。通过MSCComm控件可以对串口进行初始化、收发数据等串行通信功能实现。
四、结语
在实际的工业过程中单片机与PC机的通信应用非常广泛。本文系统具有一定的通用性,在实际应用中可根据实际需要对相关部分进行修改,满足实际要求。实践表明,本文系统稳定可靠,能够满足单片机与PC机串行通信中的实时采集数据和控制的要求。
参考文献:
[1]甄任贺,俞寿益.单片机与PC机串行通信的实现方法[J].广东技术示范学院学,2004,6.
[2]潘方.RS 232串口通信在PC机与单片机通信中的应用[J].现代电子技术,2012,35.
51单片机与PC机通信资料 第5篇
关键词:ECP协议 互锁握手 虚拟外设
引言
扩展能力端口模式ECP(Extented Capability Port)是一种IEEE 1284标准的工作模式之一。它能实现双向数据传输,具有DMA传输、数据RLE压缩、双向寻址等功能。它要求主机外设双方的硬件都必须实现状态机的功能,即自动产生各种控制信号。ECP模式是唯一定义了寄存器实现的IEEE 1284传输协议。在计算机端操作ECP并行协议,仅需对相应的寄存器进行读写就会触发硬件完成各种时序。ECP模式的数据传输率可以达到2~4MB/s。
(本网网收集整理)
SX52BD是SX系列产品,是采用CMOS工艺制造的、可配置的通信控制器。它是一种高速单片机,指令大都是单周期的,其工作频率可达到50MHz。由于其特有速度,设备可实现虚拟外设(软件代替硬件的功能)。本文讲述的通信就是基于此完成的`。
1 ECP协议
ECP传输通过标准并行端口实现。其DB25接口的引脚定义如下:
1―HostClk; 2~9―双向D1~D8;
10―PeriphClk; 11―PeriphAck;
12―nAckReverse; 13―Xflag;
14―HostAck; 15―nPeriphRequest;
16―nReverseRequest; 17―IEEE1284Active;
18~25―各信号地。
ECP模式分以下8个操作阶段。
①模式商议阶段。主机把ECP的能力请求值放到数据总线上,然后置IEEE 1284 Active为高,HostAck为低。外设应该置PeriphClk为低,nPeriphRequest为高,Xflag为高,nAckReverse为高。主机置HostClk为低,然后置HostClk和HostAck为高,表示已经确认了一个兼容于ECP模式的外设。接着,外设置nAckReverse为低,PeriphAck为低,Xflag为高,PeriphClk为高。接口进入设置阶段。
②ECP设置阶段。主机置HostAck为低,外设置nAckReverse为高,响应主机。接口进入正向空闲阶段,可以开始传输数据。
③正向空闲阶段。外设置PeriphAck为低,主机检测到此信号可开始传输数据。
④ECP正向传输阶段。主机将数据放到数据总线上,置HostClk为低。外设置PeriphAck为高,应答。主机置HostClk为高,外设接收数据并置PeriphAck为低,完成这次传输。
这种握手方式即互锁握手(interlocked handshake)。互锁握手是指每一个控制信号的跳变都由接口对方相互应答。使用这种方式,外设可以控制传输的时间以满足它进行操作的需要。
⑤ECP正向到反向转换阶段。在正向空闲阶段,主机置8位数据总线为高阻状态,并设置HostAck为低。为等待最小建立时间后,置nReverseRequest为低。外设置nAckReverse为低应答,进入反应空闲阶段。
看上去相当复杂,但PC端操作却很简单,仅需对后面介绍的寄存器读写即可。单片机端略微复杂,但也只需对I/O口置位、复位、读取,编程并不难。
2 SX52BD单片机简介
SX52BD片内程序存储器容量为4096字节,数据存储器容量为2628位。SX52BD具有5个8位I/O端口A、B、C、D、E,2个带8位预定标器的16位定时器,1个带预定标器通用8位定时器,1个模拟比较器,1个brownout检测器及看门狗定时器,1个内部RC振荡器。端口A、B、C为双向I/O口;端口B可作为唤配置、比较器、定时器1的输入;端口C可作为定时器2的输入;端口D、E仅做输入用。
SX52BD有3种不同的寻址方式:间接寻址、直接寻址、半直接寻址。对寄存器寻址模式的选取依赖于指令中5位“fr”的值。
*间接模式:fr=00h
*直接模式:(fr bit 4=0)fr=01h~0Fh
*半直接模式:(fr bit 4=1)fr=10h~1Fh
51单片机与PC机通信资料 第6篇
摘要:目前大多数数字信号处理器(DSP)芯片上未提代通用异步串行收发器(UART),只提供2~3个同步串行接口,其与微机及其它设备进行串行通信时,必须在DSP上扩展异步串行接口。以美国TI公司TMS320C54XX系列DSP为例,采用MAXIM公司的MAX3111异步串行收发器,研究了理想的接口扩展方案。论述了这种方案的软、硬件实现。该方案硬件连接简单,软件编程方便,可实现DSP与PC机间的串行通信,具有很高的工程应用价值。
关键词:异步串行收发器 多通道缓冲串行接口 DSP McBSP SPI UART
DSP在电子工业领域得到了越来越广泛的应用。在DSP应用系统设计中,必不可少的是各种通信接口的设计。与并行接口相比,串行接口的最大特点是减少了器件引脚数目,降低了接口设计复杂性。串行数据传输可分为同步和异步两种模式。通用PC机的RS-232接口为通用异步接口UART(Universal Asynchronous Receiver and Transmitter),而MOTOROLA公司的串行外围设备接口SPI、队列SPI(QSPI)、PHILIPS公司的内部IC总线(I2C),National公司的微总线(MICROWIRE)均为同步串行协议。(本网网收集整理)
目前几乎所有的数字信号处理器都提供了一个或多个串行接口,然而,多数DSP芯片提供的是同步串口。在实际的应用中,也需要DSP能够与外设进行异步串行通信,如与PC机进行串行数据传输就要求DSP系统具UART串行接口。针对这种情况,本文研究并实现了一种简单、可靠的异步串口扩展方法。
1 扩展方案
综合分析DSP应用系统中扩展异步串行接口的方案,其基本方法和优缺点如下:
(1)在DSP的并行总线上扩展UART芯片(如TI公司的TL16C552),用硬件实现异步数据传输。优点是软件实现简单,缺点是在总线上还需扩展其它设备,这样做使目标系统复杂化,增大系统体积。
(2)利用DSP的McBSP和DMA,在不扩展其它硬件的情况下,用软件实现异步数据传输格式。这种方法的优点在于硬件简单,但软件复杂,加大了CPU的负担,所以不适合通信数据量大的场合。
(3)利用DSP的McBSP同步串行接口,在扩展适当硬件的情况下,将同步数据变换为UART异步数据格式进行传输。这样,就充分利用了DSP的片上资源,使硬件系统尽量简单化。
综合考虑硬件连接和软件编程的方便性,本文采用第三种方案,应用美国MAXIM公司的MAX3111串行异步收发器,与DSP的McBSP口直接连接。硬件上无需任何其它外围器件,同时由于异步数据的发送和接收由MAX3111以硬件方案实现,所以软件编程需要考虑的也只是DSP与MAX3111之间的同步数据通信。这样,用最简单的硬件连接和软件编程就能实现同步到异步的串行数据格式转换。
2 SPI接口协议及DSP的多通道缓冲串行接口
2.1 SPI接口协议
串行外围设备接口(SPI)是MOTOROLA公司提出的一个同步串行外设接口,允许CPU与各种外围接口器件以串行方式进行通信、交换信息。它使用4条线:串行时钟线(SCK)、主机输入/从机输出线(MISO)、主机输出/从机输入线(MOSI)、低电平有效的使能信号线(CS)。这样,仅需3~4根数据线和控制线即可扩展具有SPI接口的各种I/O器件。其典型的接口示意图如图1所示。
2.2 McBSP的功能与特点
TMS320C54XX系列DSP芯片都具有2~3个高速、全双工、多通道缓冲串行接口(McBSP),其方便的数据流控制可使其与大多数同步串行外围设备接口。McBSP是在标准串行接口的基础上对功能进行扩展的,除具有标准串口的功能特点外,其灵活性体现在如下几个方面:
(1)双缓冲区发送,三缓冲区接收,允许连续数据流传输;
(2)可与SPI、IOM-2、AC97等兼容设备直接接口;
(3)可编程帧同步、数据时钟极性,支持外部移位时钟或内部频率可编程移位时钟;
(4)拥有相互独立的数据发送和接收帧同步脉冲和时钟信号;
(5)多通道发送和接收,最多可达128个通道,速度可为100Mbit/s。
2.3 McBSP的SPI方式
TMS320C54XX系列DSP芯片的McBSP串口工作于时钟停止模式时与SPI协议兼容。当将McBSP配置为时钟停止模式时,发送器和接收器在内部得到同步,这时McBSP可作为SPI的主设备或从设备。发送时钟信号(BCLKX)对应于SPI协议中的串行时钟信号(SCK),发送帧同步信号对应于从设备使能信号(CS)。在这种方式下对接收时钟信号(BCLKR)和接收帧同步信号(BFSR)将不进行连接,因为它们在内部与BCLKX和BFSX相连接。McBSP工作于SPI模式的主机时,与其它SPI器件接口如图2所示。
3 MAX3111通用异步收发器
3.1 MAX3111功能特点
MAX3111通用异步收发器是MAXIM公司专门为小型微处理系统进行最优化设计的UART,它包括一个振荡器和一个可编程波特率发生器;具有一个可屏蔽的中断源;另具有一个8字节的接收FIFO(先入先出)缓冲器。它应用SPI/MICROWIRE接口技术直接与主控制器进行通信,线路简单、体积小,通信速率可达230kbit/s。另外其内部除具有UART之外,还包括两个RS-232电平转换器,这样无需再接入普通的MAX232进行电平转换,即可应用一个芯片实现微控器(具有SPI/MICROWIRE接口)与PC机或其它设备之间的异步数据传输。
3.2 对MAX3111的操作
MAX3111通过SPI接口与主设备进行16位数据的全双工同步通信,即主设备传送16位数据给MAX3111的同时,也可接收到MAX3111发送的16位数据。主设备在MOSI线上向MAX3111发送的16位串行数据序列中包括传输格式控制字,如波特率设备、中断屏蔽、奇偶校验位等,同时还有发送的数据字。MAX3111在MISO线上向主设备发送的16位数据序列中除了接收到的数据外,还包括中断标志等状态位。所以通过16位的实时数据传输,主设备可获得MAX3111工作状态信息,同时对其具有完全控制权利。这样,两个设备的控制、状态、数据信息的实时通信就保证了数据传输的可靠性和稳定性。
4 DSP与MAX3111的接口设计
DSP的McBSP串行接口工作于SPI模式时可直接与MAX3111进行连接,从而实现与RS-232设备进行异步数据传输。此时DSP作为SPI协议中的主设备,其接口电路如图3所示。
DSP的发送时钟信号(BCLKK)作为MAX3111的串行时钟输入,发送帧同步脉冲信号(BGSX)作为MAX3111的片选信号(CS)。BDX与DIN连接作为发送数据线,BDR与DOUT连接作为接收数据线。MAX3111的TX与T1IN连接,RX与R1OUT连接,以便利用其片内的转换器实现UART到RS-232电平的转换。MAX3111的中断信号(IRQ)与DSP的外部中断相连。
在SPI串行协议中,主设备提供时钟信号并控制数据传输过程。由MAX3111接口电路时序图(图4)可知,必须设置DSP的`McBSP于适当的方式才能保证与MAX3111的时序相配合。
MAX3111要求在数据传输过程中CS信号必须为低电平,在传输完毕后必须为高电平。此信号由McBSP的BFSX引脚提供,因此必须正确设置DSP的帧脉冲发生器,使之在每个数据包传输期间产生帧同步脉冲,即在数据包传输的第一位变为有效状态,然后保持此状态直到数据包传输结束。
McBSP的采样率发生器产生适当频率的时钟信号,由BCLKX引脚输出,保证主从设备间的同步数据传输。因此必须正确设置DSP的采样率发生器时钟源(CLKSM)和时钟降频因子(CLKGDV)。根据SPI传输协议,必须正确设置数据发送延迟时间(XDATDLY)。由图4可知MAX3111要求在SCLK变高之间的半个周期开始传输数据。
所以必须为McBSP选择合适的时钟方案,即设置McBSP的时钟停止模式。在本应用中采用McBSP的时钟停止模式2(CLKSTP=11b,CLKXP=0),这样即可保证与MAX3111的时序相配合。
5 DSP的异步通信软件的设计
考虑到应用系统软件的可移植性和可读性,数据传输软件采用C语言进行编写,这样,可以利用DSP开发软件CCS2.0所提供的DSP/BIOS中的芯片支持库函数(CSL)。CSL提供C语言可调用的DSP外围接口库函数,其中包括DMA模块、McBSP模块、TIMER模块等。应用这些库函数可大大提高程序可读性,缩短软件开发周期。在本文所提到的应用中,主要调用MCBSP模块。数据传输软件主要包括以下几部分。
(1) McBSP串口初始化
如上所述,在本应用中应将TMS320C54XX DSP的McBSP串行口配置为SI模式,以DSP作为主设备。表1给出了应设置的寄存器或寄存器位的值,未涉及的寄存器保持其默认值即可。
表1 McBSP设置为SPI模式时相关寄存器值
位名称位 值描 述所在寄存器CLKSTP11b使能McBSP的时钟贪婪模式,并使其在SCLK变高之前半周期开始传输数据SPCR1CLKXP0设置BCLKX信号的极性PCRCLKXM1设置BCLKX引脚信号为输出(SPI主设备)PCRRWDLEN1000~101b设置接收数据包的长度(必须与XWDLEN1的值相等)RCR1XWDLEN1000~101b设计发送数据包的长度(必须与RWDLEN1的值相等)XCR1CLKSM1采样率发生器时钟源CPU时钟SRGR2CLKGDV1~255设置采样率发生器的将频因子SRGR1FSXM1设置BFSX引脚信号为输出PCRFSGM0在每个数据包传输期间,BFSX信号都有效SRGR2FSXP1设置BFSX信号为低电平有效PCRXDATDLY01b提供正确BFSX信号启动时间XCR2RDATDLY01b提供正确的BFSX信号启动时间RCR2
根据表1,调用CSL的McBSP配置库函数即可完成McBSP的初始化。
McBSP_Handle hport0; /*声明指向McBSP的句柄*/
McBSP_Config PortConfig={ /*定义寄存器设置结构*/
0x1800, /*设置串口控制寄存器1的值*/
0x0000, /*设置串口控制寄存器2的值*/
0x0040, /*设置接收控制寄存器的值*/
};
hport0=MCBSP_open(0,MCBSP_OPEN_RESET);/*打开第一个McBSP串口*/
MCBSP_config (hport0,&PortConfig);/*按结构设置McBSP的各寄存器*/
(2)MAX3111工作模式及波特率设置
在进行通信之前,DSP必须首先根据命令序列格式向MAX3111写入配置命令字,之后才能进行正确的数据传输,如8位数据位、一位停止位、无奇偶校验位、波特率为115200、使能接收和发送中断的异步数据传输。DSP对MAX3111进行配置的简要过程为:
McBSP_start(hport0, /*McBSP开始数据传输*/
McBSP_SRGR_START|MCBSP_SRGR_FRAMESYNC
|McBSP_RCV_START|MCBSP_XMIT_START,0x200
);
while(!McBSP_xrdy(hport0));/*等待发送寄存器为空*/
McBSP_write16(hport0,0x6E0B); /*向MA3111写入配置命令字*/
(3)中断服务程序
在进行中断方式数据传输时,需要注意的是:虽然DSP的McBSP有自身的发送和接收中断,但由于McBSP与MAX3111之间的同步串行数据传输速率高于MAX3111将数据以一定波特率(最高230kbps)异步发送的速率,因此如果应用McBSP的发送中断,将造成发送数据的丢失。同时,在SPI协议中,数据的传输是由SPI主设备发起的,所以在SPI方式下的McBSP并不能产生接收中断。因此,本方案应用的关键之一是将MAX3111的IRQ中断信号连接至DSP的一外部中断,以实现中断方式下可靠、正确的数据传输。
51单片机与PC机通信资料 第7篇
1 51单片机与网络控制器的连接
RTL8019AS 网络接口芯片是台湾 Realtek 公司的代表性产品之一,该芯片基于 ISA 总线结构,性能稳定且价格低廉,在工业企业领域有非常广泛的应用[ 1 ]。
1.1 RTL8019AS接口芯片的主要特性
RTL8019AS芯片主要优点有:
一是支持热插拔(即插即用)的动态检测;
二是完全兼容当前主流的NE2000 模式并可在8 位与 16 位两种模式下工作;
三是有跳线与非跳线两种模式可供选择;
四是支持全双工通信模式,双工通信时信道的传输速率可达到10Mbps;
五是内置数据预取功能;
六是内置 16K 字节的闪存;
七是支持 8/16两种前端总线工作模式,内置8 个中断申请线,同时有16 个I/O地址可供选择。
1.2 51单片机与RTL8019AS连接实现网络通信的电路设计
1.2.1 RTL8019AS 与 93C46 接口电路
93C46接口电路内部存储容量为1Kbits,是四线串行接口EEPROM。RTL 8019 AS芯片在上电或者初始化复位时,首先要从该芯片中读取预设的配置信息才能完成初始化。 93C46 内部存储器的前三个地址空间用于存放 RTL8019AS芯片的上电初始化信息;后5个地址空间用于记录本机地址;0AH-11H 的地址空间分配给制造商存储产品的信息;
12H~7FH 的地址空间用于记录即插即用信息。RTL 8019 AS 的EECS引脚连接93C46的CS引脚,EESK引脚连接SK引脚,EEDI引脚连接DI,EEDO引脚连接DO引脚,即由EECS 提供片选信号,EESK 提供时钟信号,EEDI 与 EEDO 定义为串行数据I/O通道。
1.2.2 RTL8019AS 与 SST89E564RD 接口电路的.硬件连接
SST 系列单片机是美国 SST公司生产的一种中高端51系列单片机,SST89 E564RD 单片机是其SST系列单片机中的一个型号。将RTL8019AS 的SD0-SD7 引脚与SST89E564RD 的P0.0-P0.7引脚相连,相连后的引脚通过锁存器与A0-A7引脚相接,同时将74HC573的A0-A5引脚与 RTL 8019AS 的SA0-SA5引脚相接,将SST89E564RD的P0口用作D/A端口。
此外,SST89E564RD的 P2.0-P2.6 引脚与 静态存储芯片TMS62256 的高7位地址线引脚相接,组合成访问 TMS的15位地址总线。将SST 89E564 RD的SMEMRB 引脚接+5V,同时将IOCHDRY引脚悬空,JP 引脚为跳线模式,IOCS 16B引脚接地,使 RTL8019AS 工作在 8 位模式[ 2 ]。
1.3 网络接口电路的地址定义
RTL8019AS中 SA0-SA19 的连接方式如下:SA5-SA7以及SA10-SA19 接 GND,SA8-SA9 接+5V电压,SA0-SA4 接74HC573的A0-A5引脚。SST 单片机可以通过 P0.0-P0.4来选中RTL8019AS 的 32 个I/O端口并相应地对其进行R / W操作。此外,将RTL8019AS 的IORB 和 IOWB 引脚分别与SST89E564RD单片机的 RD 和 WR 相连作为R/W选通信号。
51单片机与PC机通信资料 第8篇
文中将使用PIC单片机的同步∕异步串行模块(USART)和计算机进行串口通信。PC机的通信软件采用Visual C++6.0编写,具体是利用MSComm控件完成与PIC单片机的通信。
1 异步串行通信的概念
PIC单片机与PC机之间的异步串行通信采用RS-232串行接口电路实现,利用PC机的串行接口进行数据传输。在异步通信中,数据是逐帧传送的,其格式如图1所示。
在帧格式中,一个字符由4部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始位“0”,然后是5~8位数据,接下来是奇偶校验位,最后是停止位“1”。起始位“0”信号只占用1位,用来通知接收设备一个待接收的字符开始到来。在不传送字符时,线路上应保持为“1”。接收端不断检测线路的状态,若连续为“1”以后又检测到一个“0”,就知道要发来一个新字符,应立即准备接收[2]。
2 接口器件介绍
2.1 电平转换芯片
PC机与PIC单片机通信使用RS-232串行总线标准。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平电压范围为5~15 V,负电平为-15~-5 V。当无数据传输时,线上为TTL电平,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平为3~12 V 与-12~-3 V之间。如此高的电压是不能和单片机直接相连的,所以必须进行电平转换。文中利用MAX232实现电平转换[3]。MAX232芯片是由德州仪器公司推出的一款兼容RS-232标准的芯片。该器件包含2个驱动器、2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。
2.2 信号接口介绍
PC机都有串行接口,一般用RS-232接口。与RS-232相匹配的连接器有DB-25、DB-15和DB-9,其引脚也各不相同。文中使用的是DB-9连接器,作为提供I/O卡或主板上COM1 和COM2两个串行接口的连接器,提供异步通信的9个信号。
3 硬件电路设计
3.1 PC机与PIC单片机的串行通信原理图
PC机与PIC单片机串行通信原理如图2所示,整个系统由3个部分组成。由于PC机与PIC单片机串行通信时采用RS-232协议,因此无论是单片机向PC发送数据,还是PC机向单片机发送数据都必须通过MAX232进行电平转换[4]。在电路连接时,PC机的串口输出应对应PIC单片机的串口输入。
3.2 系统电路连接图
整个系统电路连接图可分为两个部分,PIC单片机串口与MAX232之间的连接以及MAX232通过DB-9型连接器和PC机串口的连接,如图3所示。将PIC单片机的“RC6/TXD”引脚和MAX232的“T1IN”引脚相连;单片机的“RC7/RXD”引脚和
MAX232的“R1OUT”引脚相连,即将单片机的输入引脚和MAX232的输出引脚相连;将单片机的输出引脚和MAX232的输入引脚相连。
MAX232通过DB-9型连接器和PC机的串口相连,具体实现应选用标准的串口线将MAX232 同PC机的COM1口连接。
4 程序设计
整个程序设计分为两部分,分别是PC机的通信程序和PIC单片机的通信程序。由于PIC单片机的通信程序采用汇编语言编写,其编写过程在各种环境下大同小异。
VC实现串行通信有3种途径,利用MSComm控件或者是利用CSerialPont类进行串口通信,还可用WinAPI函数对串口进行操作[5]。以下重点介绍在Visual C++6.0开发环境下利用MSComm控件实现串行通信的方法。
编程是采用基于对话框的主体程序框架结构,串口通信部分采用MSComm控件完成。具体步骤如下。
(1)创建工程。
打开Visual C++6.0编程环境,新建一个工程,并输入相应的工程名和该工程所在的路径。
(2)添加相应的资源。
为能在友好的界面下对程序进行操作,必须为应用程序添加相应的资源,文中只添加了通信程序必要的控件。添加两个“EDIT”控件;一个用来输入发送给单片机的数据;一个用来显示接收到的单片机传来的数据。添加一个“发送”按钮用来确定何时发送。文中的串口通信通过MSComm控件完成,所以还需要添加MSComm控件。添加完MSComm控件后,还需对其进行相关设置。对MSComm控件的设置一定要根据计算机外围的单片机来设置合理的参数,否则无法保证正常的串口通信。文中MSComm控件的设置界面如图4所示。
(3)添加成员变量。
应用程序上的控件负责接收输入或者显示输出,应用程序后台的成员变量来管理这些数据,添加好资源后还要使控件和成员变量关联起来。成员变量添加界面如图5所示。
(4)消息映射。
当单片机通过串口向PC机发送数据或者单击“发送”按钮,都是激发了Windows消息,应用程序的窗口将收到这些消息。收到消息后,检查应用程序是否处理这些消息函数,为处理这些函数必须添加相应的消息映射。
(5)添加程序执行代码。
PC端的Visual C++程序的程序流程如图6所示。
添加消息映射后只给出了一个处理这些消息的函数的框架,具体的处理代码必须由用户添加。
编译之后,PC机上的应用程序运行结果如图7所示。
将要发送的数据写到发送数控件中,单击“发送”按钮,则PC机通过串口将数据发送给单片机。如果单片机将数据发送给PC机,则程序将自动把接收到的数据显示在接收数控件中。
5 结束语
PIC单片机与PC机的串行通信被广泛应用于各种控制系统中。文中提出了一种实现该串行通信的方法,并给出了具体的电路原理图和通信程序。实践证明,利用VC开发通讯系统,从底层到上层直接面向用户,具有较强的调试功能。因此文中为PC机与PIC单片机串行通信的实现提供了良好的参考。
摘要:PIC系列单片机作为一款外设丰富性能优良的单片机,被广泛应用于各种控制系统。在微机测控系统中,用作上位机的PC机系统与用作下位机的单片机之间经常要进行信息交换。为此提出了一种基于Visual C++的PIC18F452单片机与PC机之间串行通信的实现方法,给出了硬件电路图和通信源程序,调试实验表明,硬件设计与软件开发达到了预期的功能要求。该方法为PIC单片机与PC机间串行通信的应用提供了良好的参考。
关键词:PIC单片机,串行通信,Visual C++
参考文献
[1]江和.PIC系列单片机C程序设计与PROTEUS仿真[M].北京:北京航空航天大学出版社,2010.
[2]于万民,王哈力,郑洪平.PC机与PIC单片机串行通讯的实现[J].现代电子技术,2003(18):26-28.
[3]吴正民.PIC单片机与PC串行通信的实现[J].广东教育学院学报,2003,23(2):101-105.
[4]李朝青.PC机及单片机数据通信技术[M].北京:北京航空航天大学出版社,2000.
51单片机与PC机通信资料 第9篇
关键词: SerialPort;串行通讯;波特率
1 引言
PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通讯,是许多测控系统中常用的一种通信解决方案。
在Microsoft.Net技术广泛应用的今天人们采用了许多方法在Visual Studio.Net中来编写串口通讯程序:第一种方法是通过采用Visual Studio 6.0中原来的MSComm控件,这是最简单、最方便的方法,但需要注册;第二种方法是自己用API写串口通信;第三种方法是采用微软推出的最新版本Visual Studio 2005开发工具,NET Framework 2.0类库中包含的SerialPort类,方便地实现了所需要串口通讯的多种功能。本文着重讨论了Visual Studio 2005开发工具中SerialPort类的设计方法。
2 SerialPort类常用属性、方法和事件
2.1 命名空间
System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问。
2.2 串口的通讯参数
①通讯端口号:
[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM端口,该属性返回类型为String。
②通讯格式:
SerialPort类分别用[BaudRate]、[Parity]、[DataBits]、[StopBits]属性设置通讯格式中的波特率、校验位、数据位和停止位。
2.3 串口的打开和关闭
SerialPort类中打开关闭串口相应的是调用类的Open()和Close()方法。
2.4 数据的发送和读取
SerialPort类调用重载的Write和WriteLine方法发送数据,其中WriteLine可发送字符串并在字符串末尾加入换行符。读取串口缓冲区的方法有许多,其中除了ReadExisting和ReadTo,其余的方法都是同步调用,线程被阻塞直到缓冲区有相应的数据或大于ReadTimeOut属性设定的时间值后,引发ReadExisting异常。
2.5 DataReceived事件
DataReceived事件在接收到了[ReceivedBytesThreshold]设置的字符个数或接收到了文件结束字符并将其放入了输入缓冲区时被触发。
3 PC机与8051实现串行通讯需要解决的问题
3.1 TTL电平与RS232电平的转换
89C51单片机采用的是TTL电平且采用正逻辑[1],而PC机采用RS232与外部设备进行通讯,RS232采用负逻辑,因此MCS51单片机串行口与PC机的RS232接口相连进行通讯时必须进行电平的转换。通常采用MAX232电平转换芯片。
3.2 单片机与PC机通讯时波特率的设定
PC机与51单片机双方进行通讯时必须采用相同的波特率,PC机的波特率默认为9600b/s, 51系列单片机有两个定时/计数器,四种工作方式,一般用定时器工作于方式2(可重新装载的8位定时器/计数器)作为定时波特率发生器。因此单片机与PC机进行异步通讯时的波特率可由公式3.1得出:
其中SMOD是单片机电源控制寄存器(PCON)中的位7,开机(RESET)时,SMOD的设定值为0,亦可用指令“ANL PCON,#7FH”清除为0。fosc为单片机的晶振频率。根据需要的波特率即可得计数初值TH1。
4 单片机与PC机通讯时通讯协议的约定及部分初始化程序
在单片机与PC机的通讯中,单片机一般作为下位机负责从控制对象采集数据(如压力、流量等),上位机则进行现场可视化检测。传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。以下给出单片机和VC# 环境下部分的通讯程序。
4.1 串口通讯协议约定
波特率为9600b/s,无奇偶校验位,传输的数据位为8位,停止位为1位,用串行口工作于方式1。单片机的晶振频率fosc=11.059MHz,定时器T1工作于方式2作为波特率发生器,根据计数初值的计算公式(3.1)可得计数初值TH1为0FDH 。
4.2 单片机的串行通讯程序
单片机串行通讯程序,给出了初始化程序:
ORG0000H
AJMP START;转到初始化程序
ORG0023H
AJMP PGUART ;转到串行中断服务子程序
START: MOVSP,#60H ;堆栈指针初始化
MOVP0,#0FFH ;端口初始化
MOVP1,#0FFH
MOVP2,#0FFH
MOVP3,#0FFH
MOVTMOD,#20H;定时器T1工作于模式2,自动重装载
MOVTH1,#0FDH;TH1、TL1初值为"0FDH",9600bps
MOVTL1,#0FDH
MOVSCON,#50H;串行口工作于方式1,允许接收
SETB TR1 ;启动定时器T1
SETB ES ;允许串行口中断
SETB EA ;开总中断
MAIN:...... ;主程序处理其他任务,等待串口中断
AJMP MAIN
PAUSE:...... ;串口中断服务子程序,接收处理数据
RETI
END
4.3 上位机的串行通讯程序
例:发送及接收数据的程序:
private void button1_Click(object sender, EventArgs e)
{
string a;
SerialPort Ser1 = new SerialPort("com1", 9600, Parity.None, 8, StopBits.One);
Try
{
Ser1.Open();
}
catch (InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
if (textBox1.Text == "")
{
MessageBox.Show("Err");
Ser1.Close();
}
else
{
a=textBox1.Text;
try
{
//p.WriteLine(a);
p.Write(a);
}
catch(InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
textBox2.Text = Ser1.ReadByte().ToString();
Ser1.Close();
}
}
5 结束语
单片机与上位机的通讯在工业现场中应用的比较广泛,本文对C#提供的串行通讯SerialPort类来实现PC机与51单片机的通讯进行了探讨。实践证明,这种方案是可行的,能保证双方通讯正常。
参考文献
[1]蔡朝洋.单片机控制实习与专题制作.北京航空航天大学出版社.
51单片机与PC机通信资料
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。