RS-232接口引脚信号的定义
9针25针信号方向功能
3 2 TXD O 发送数据
2 3 RXD I 接收数据
7 4 RTS O 请求传送
8 5 CTS I 清除传送
6 6 DSR I 数据通信装置(DCE)准备就绪
5 7 SG 信号公共参考地
1 8 DCD I 数据载波检测
4 20 DTR O 数据终端设备(DTE)准备就绪
9 22 RI I 振铃指示
由于25针与9针连接器并无本质区别,因而容易实现相互转换,所以市场上25针到9针串行转接器都是无源的。
RS-232标准的电气特性参数
项目参数指标
带3~7千欧负载时驱动器的输出电平逻辑0为+3~+25V,逻辑1为-3~-25V
不带负载时驱动器的输出电平-25~+25V
驱动器通断时的输出阻抗>300欧
输出短路电流<0.5A
驱动器转换速率<30V/us
接收器输入阻抗3~7千欧
接收器输入电压-25~+25V
输入开路时接收器的输出逻辑 1
输入经300欧接地时接收器的输出逻辑 1
+3V输入时接收器的输出逻辑0
-3V输入时接收器的输出逻辑 1
最大负载电容2500pF
不能识别的过渡区-3V~+3V
单片机串行端口的工作方式
(1)方式0:8位移位寄存器输入/输出方式,多用于外接移位寄存器以扩展I/O端口,波特
率固定为fosc/12。
(因此好像不需要进行串行口初始化,因为初始化的任务是设定波特率和数据传送方式,在这里已经都固定了)。
在方式0中,串行口作为输出时,只要向串行缓冲器SBUF写入一字节的数据后,串行端口就把此8位数据以fosc/12的波特率,从RXD引脚逐位输出(从低位到高位),(注意:只有在该情况下数据是由RXD输出!)TXD输出频率为fosc/12的同步移位脉冲,数据发送前,尽管不使用中断,中断标志TI还是必须置清0,8位数据发送完后,TI 自动置1,若要再发送,必须用软件将TI清0。
串行端口作为输入时,RXD为数据输入端,TXD仍为同步信号输出端,输出频率为fosc/12同步移位脉冲,使外部数据逐位移入RXD,当接收到8位数据后,中断标志RI 自动置1,若要再接收,必须用软件将RI清0。
(2)方式1(该方式应用最为广泛):10位异步通信方式,包括1个起始位(0电位)+8个数据位(从低位到高位)+1个停止位(1电位)。
波特率由定时器T1的溢出率和SMOD
位的状态确定。
一条写SBUF 指令可以启动数据发送过程,在发送移位时钟(由波特率确定)的同步下,
从TXD 先送出起始位,然后是8位数据位,最后是停止位。
一帧10位数据发送完后,中断标志TI 置位。
在允许接收的条件下(REN=1),当RXD 出现由1到0的负跳变时,即被当成是串行
发送来的一帧数据的起始位,从而启动一次接收过程。
8位数据接收完,并检测到高电平停止位后,即把接收到的8位数据装入SBUF ,置位RI ,一帧数据的接收完成。
方式1的数据传送波特率可以编程设置,使用范围宽:
波特率=2SMOD ×(定时器T1的溢出率)/32 ,SMOD 的取值为0或1
(3)方式2和3:11位异步通信方式,包括1个起始位(0电位)+8个数据位(从低位到
高位)+1个附加的第9位(常用于奇偶校验)+1个停止位(1电位)。
附加的第9位数据:发送时,该第9位数据来自该机SCON 中的TB8,而接收机将接
收到的这第9位数据送入本机SCON 中的RB8。
常用于奇偶校验或在多机通信中作为地址/数据的特征位。
方式2的波特率=2SMOD ×fosc/64
方式3的波特率=2SMOD ×(定时器T1的溢出率)/32
几个小问题
1. 奇偶校验:又称为同位位检查,又分为奇同位(Odd Parity )和偶同位(Even Parity ),
用于检查字符码中1的数目是奇数或偶数。
例如:10011100若设置为偶同位,则由于本身含4个“1”,因此偶同位=0,最终应传送100111000;
10011100若设置为奇同位,则由于本身含4个“1”,因此奇同位=1,最终应传送100111001;
2. 使用多少个数据位合成一个字节必须先行设定,ASCII 码使用8个位形成一个字符,
JIS 码以7个位形成一个字符,工业上常用的PLC 大多只传送文字码,只需要7个位就能将ASCII 码的0~127号字码表示出来,只要7个数据位就足够。
3. 起始位固定为1位,而停止位可以有1、1.5、2个位等多种选择。
接线方法
计算机上为公头连接线上为母
头3(T X D )6(D S R )L (D C D )4(D T R )5(G N D )3(T X D )2(R X D )9(R I )
7(R T S )8(C T S )4(D T R )L (D C D )6(D S R )5(G N D )2(R X D )9(R I )
8(C T S )7(R T S )
电平转换
RS-232原是基于公共电话网的一种串行通信标准,推荐的最大电缆长度为15m (50英尺),即传输距离一般不超过15m,它的逻辑电平以公共地为对称,其逻辑“0”电平规定在+3~+25V
之间,逻辑“1”规定在-3~-25V之间,因而它不仅需要使用正负极性的双电源,而且与传统的TTL等数字电路的逻辑电平不兼容,两者之间必须使用电平转换。
使用单一+5V供电的RS-232收发芯片有美国美信等公司的产品,品种与型号繁多,主要差别在于芯片内部集成的发送器与接收器数量不同,以及有无节能功能的自动掉电或称睡眠模式等。
此外,其中有些芯片需要外接0.1~10uF电容器;有的芯片则在内部集成了电容,因而无需使用或可以少连接外接电容。
下图描述了MAX220/232/232A芯片引脚、内部功能框图及外接电容等信息。
芯片内除了两个发送驱动器和两个接收器外,还有两个电源变换电路,一个升压泵将+5V提高到+10V,另外一个变化器将+10V转换成-10V。
对于外接电容,MAX232要求C1~C5全为1.0uF,MAX220则要求全为0.1 uF,MAX220要求C1,C2与C5为4.7 uF,C3与C4为10 uF。
C
C
T TL/C MO S 输入
T TL/C MO S 输出R S-232输出R S-232输入
为了与+3.3V低电源电压逻辑电路兼容,还有+3V系列的RS-232产品,如MAX3218/3221/3223/3232/3237等,另外,还有 1.8~4.25V宽范围低电压供电产品,如MAX3218,无论是哪类产品,片内的基本器件都是升压电荷泵,发送驱动器与接收器等。
RS-232所使用的电缆通常均有每英尺40~50pF的分布电容,该标准规定最大电容量为2500pF,所以其传输距离只能局限于15m(50英尺)的范围内,其数据传输速率上限只有20kb/s。
由于采用非平衡传输方式,接地问题显得特别重要,当传输电缆两端存在较大的地电位差时,它将与信号叠加而使逻辑0与1之间的实际过渡区变窄,从而有可能造成逻辑电平的误判而使数据传输出错。
RS-232需要较高的正负电源,拥有+-3V的盲区,虽然抗干扰
能力较强,但消耗的电源功率较大。
VB中对RS-232串行发送与接收的编程
‘声明两个字节类型的变量数组
‘一个用于存储输出数据
‘一个用于存储输入数据
Dim OutByte() As Byte
Dim InByte() As Byte
‘使用命令按钮控件
‘使用Input指令将被传送的数据取入
‘将字节数据以16进位表示并存入Buf变量
‘将Buf变量的内容显示到接收的文本框中
Private Sub CmdReceive_Click()
Dim I%,Buf$
Buf=””
InByte=Comm1.Input
For I=Lbound(InByte) To Ubound(InByte)
Buf=Buf+Hex(InByte(i))+Chr(32)
Next I
TxtReceive.Text=Buf
End Sub
‘使用命令按钮控件
‘将使用者的输入字符串先存入Buf变量中
‘使用StrConv将Buf变量作类型转换
‘再将转换完的数组利用Output指令送出
Private Sub CmdSend_Click()
Dim Buf$,I%
Dim S3(1 To 1)As Byte
Buf=Trim(txtSend.Text)
OutByte=StrConv(Buf,vbFromUnicode) ‘转换字符串Buf=Comm1.Input ‘清空输入缓冲区
Comm1.Output=Outbyte ‘送出数据
End Sub。