《第7章PC端接口技术》由会员分享,可在线阅读,更多相关《第7章PC端接口技术(59页珍藏版)》请在金锄头文库上搜索。
1、第7章PC端接口技术1. RS-232串行通信技术2. USB接口技术3. 实践与思考本章主要内容:第7章 PC端接口技术RS-232串行通信技术 目前已经有几种。RS-232标准是目前常用的串行通信接口标准,它是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020Kbps范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都做了明确规定。由于通信设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在计算机通信接口中广泛采用。RS-232串行通信技术 RS-232C标准介绍 简单的串行通信协议的
2、设计 MSComm控件介绍 使用VB开发串行口通信软件 使用VC+开发串行口通信软件RS-232C标准介绍 1.RS-232C中的引脚定义9针RS-232串口(DB9)25针RS-232串口(DB25)引脚简写功 能 说 明 引脚简写功 能 说 明1CD载波侦测(Carrier Detect)8CD载波侦测(Carrier Detect)2RXD接收数据(Receive)3RXD接收数据(Receive)3TXD发送数据(Transmit)2TXD发送数据(Transmit)4DTR数据终端准备(Data Terminal Ready)20DTR数据终端准备(Data Terminal Rea
3、dy)5GND地线(Ground)7GND地线(Ground)6DSR数据准备好(Data Set Ready)6DSR数据准备好(Data Set Ready)7RTS请求发送(Request To Send)4RTS请求发送(Request To Send)8CTS清除发送(Clear To Send)5CTS清除发送(Clear To Send)9RI振铃指示(Ring Indicator)22RI振铃指示(Ring Indicator)RS-232C标准介绍2.RS-232C的电气特性 RS-232C标准对逻辑电平的定义:在TXD和RXD上:逻辑1(MARK)=315V,逻辑0(SPA
4、CE)=+3+15V。在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3+15V,信号无效(断开,OFF状态,负电压)=315V。 RS-232C与TTL转换:EIA-RS-232C是用正负电压来表示逻辑状态的,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。RS-2
5、32C标准介绍左图显示了1488和1489的内部结构和引脚。MC1488的引脚(2)、(4,5)、(9,10)和(12,13)接TTL输入。引脚3、6、8、11输出端口接EIA-RS-232C。MC1498的14的1、4、10、13脚接EIA输入,而3、6、8、11脚接TTL输出。具体连接方法如右图所示。RS-232C标准介绍3.RS-232C接口的电平转换RS-232C电平采用负逻辑,即:逻辑“0”:+5+15V逻辑“1”:515VRS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!常用的电平转换集成电路除了上面所介绍的传输线驱动器MC
6、1488和传输线接收器MC1489。另一种常用的电平转换电路是MAX232,MAX232芯片可完成TTLEIA双向电平转换。图为MAX232引脚图。简单的串行通信协议的设计 PC和单片机最简单的连接是零调制三线经济型。下图给出了采用MAX232芯片的PC和单片机串行通信接口电路,与PC相连采用9芯标准插座。2.PC通信软件1.单片机通信软件MCS-51通过中断方式接收PC发送的数据,并回送。单片机串行口工作在方式1,晶振为6MHz,波特率2400,定时器T1按方式2工作,经计算定时器预置值为0F3H,SMOD=1。参考程序PC方面的通信程序可以用汇编语言编写,也可以用其他高级语言例如VB、VC
7、来编写。汇编语言编写的参考程序MSComm控件介绍 在Windows环境下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在Windows的系统函数中,均包含了支持通信中断的功能。对串口通信而言,Windows为相应的串口设备开放了用户定义的输出缓冲区和输入缓冲区,应用程序只能对输入/输出缓冲区进行操作,数据进出串口的操作均由系统后台完成。以接收为例,系统每接收一个字符就产生一个低级的硬件中断,系统的串口驱动程序将接收到的字符送入输入缓冲区,此时应用程序就可以通过访问输入缓冲区得到接收到的字符信息。M
8、SComm控件介绍Windows为用户提供了两种方式实现串口通信。使用串口通信控件使用Windows的API应用程序接口使用串口通信控件进行串口程序开发极为方便,如果不需要对串口进行高级控制一般多选择使用MSComm控件进行开发。本章介绍在VB下使用MSComm控件进行计算机实验室温控系统串口程序开发。使用串口通信控件 针对串口通信,微软公司专门提供了MSComm控件,使用该控件进行串口通信设计是十分方便的,程序员不必花时间去了解较为复杂的API函数。通过简单修改控件的属性和使用控件提供的方法,就可以实现对串口的配置、完成串口接收和发送数据。使用Windows的API应用程序接口 在Windo
9、ws中,串口是以文件的形式被打开和访问的。串口和串口通信驱动需要使用设备控制块(DeviceControlBlock,DCB)进行配置。应用程序使用API函数CreateFile打开串口,ReadFile读串口,CreateEvent建立事件对象和CloseHandle关闭串口。使用Windows的API应用程序接口MicronsoftCommunicationsControl(MSComm)是Micronsoft公司提供的简化Windows下串口通信编程的ActiveX控件,它为应用程序提供了通过串口收发数据的简便方法。在串口编程中,使用MSComm控件非常方便,仅需通过简单修改控件的属性和
10、使用控件提供的方法,就可以实现对串口的配置,完成串口接收和发送数据等任务。使用Windows的API应用程序接口(1)MSComm控件的通信方法。MSComm控件提供了两种处理通信的方式:事件驱动方式和查询方式。(2)MSComm控件的属性与常数。CommPort属性。设置并返回通信端口号。端口号的范围为116,但如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。RThreshold属性。设置返回要接收的字符数。接收字符后,如果RThreshold属性被设置为0(默认值),则不产生OnComm事件,如果RThreshold被设成n,则接收缓冲区收到
11、n个字符时MSComm控件产生OnComm事件。CTSHolding属性。确定是否通过查询ClearToSend(CTS)线的状态发送数据。该属性在设计时无效,在运行时为只读。使用Windows的API应用程序接口SThreshold属性。设置并返回传输缓冲区中允许的最小字符数。若SThreshold属性被设置为0(默认值)时,数据传输不会产生OnComm事件。而当SThreshold属性被设为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。CDHolding属性。通过查询CarrierDetect(CD)线的状态确定是否有传输。该属性在设计时无效,在运行时为只读。DSRHol
12、ding属性。确定DataSetRead(DSR)线的状态。该属性在设计时无效,在运行时为只读。Settings属性。设置返回波特率、奇偶校验、数据位、停止位参数。当端口打开时,如果属性值非法,则MSComm控件产生错误380(非法属性值)。BBBBPDS各个属性值间用逗号隔开,其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。其默认值为“9600,N,8,1”。Settings属性的设置由4个设置组成,格式如下:InputLen属性。设置并返回Input属性从接收缓冲区中读取的字符数。InputLen属性的默认值是0。设置InputLen为0时,使用Input将使MSComm控
13、件读取缓冲区中全部的内容。使用Windows的API应用程序接口使用Windows的API应用程序接口EOFEnable属性。确定在输入过程中MSComm控件是否寻找文件结尾(EOF)字符。如果找到EOF字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为comEvEOF。语法:object.EOFEnable=valueEOFEnable属性语法包括下列部分:value布尔表达式,确定当找到EOF字符时,OnComm事件是否被激活,如“设置值”中所描述。value的设置值为True:当EOF字符找到时OnComm事件被激活。value的设置值为False(默认):当EOF
14、字符找到时OnComm事件不被激活。当EOFEnable属性设置为False,OnComm控件将不在输入流中寻找EOF字符。说明:使用Windows的API应用程序接口Handshake常数。Handshake常数如表所示。OnComm常数。OnComm常数如表所示常 数值描 述comNone0无握手comXonXoff1XOn/Xoff握手comRTS2Request-to-send/clear-to-send握手comRTSXOnXOff3Request-to-send和clear-to-send握手皆可常 数值描 述comEvSend1发送事件comEvReceive2接收事件comEv
15、CTS3clear-to-send线变化comEvDSR4data-set ready线变化comEvCD5carrier detect线变化comEvRing6振铃检测comEvEOF7文件结束使用Windows的API应用程序接口Error常数。Error常数如表所示。常 数值描 述comEventBreak1001接收到中断信号comEventCTSTO1002Clear-to-send超时comEventDSRTO1003Data-set ready超时comEventFrame1004帧错误comEventOverrun1006端口超速comEventCDTO1007Carrier
16、detect超时comEventRxOver1008接收缓冲区溢出comEventRxParity1009Parity错误comEventTxFull1010传输缓冲区满comEventDCB1011检索端口设备控制块(DCB) 时的意外错误使用Windows的API应用程序接口InputMode常数。InputMode常数如表所示。常 数值描 述comInputModeText0(默认)通过Input属性以文本方式取回数据comInputModeBinary1通过Input属性以二进制方式检取回数据使用Windows的API应用程序接口(3)错误消息(MSComm控件)。表列出MSComm控件可以捕获的错误。值描 述常 数380无效属性值comInvalidPropertyValue383属性为只读comSetNotSupported394属性为只读comGetNotSupported8000端口打开时操作不合法comPortOpen8001超时值必须大于8002无效端口号ComPortInvalid8003属性只在运行时有效8004属性在运行时为只读8005端口已经打开comPor