单片机与PC通信的简化接口设计
发布时间:2008/6/3 0:00:00 访问次数:430
rs -232标准是广泛使用的串行通信标准,但使用的电平与ttl和mos电平完全不同,逻辑“0”至少为+3v,逻辑“1”至少为-3v,而单片机系统则使用ttl电平或mos电平。因此,需要使用接口电路来实现ttl电平或mos电平与rs-232电平之间的转换。目前已有现成的接口芯片可供选用,价格低一些的如mc地488(将ttl电平转换为rs-232c标准电平)和mc1489(将rs-232标准电平转换为ttl电平),但mc1488需要± 12v的供电电压。另外,也有许多使用单一的+5v供电芯片可供选择,如max2003,但此类芯睡价格不菲,且需要若干外围元件。在对体积和成本有较严格的要求时,进一步简化接口电路很有必要。
1 一种简单的接口电路
实用中,单片机与pc的通信通常采用半双工通信,这时,可以采用一种较简单的接口电路(如图 1所示)。在这种电路中,pc机的rxd上的逻辑高电平(小于-3v)是以“偷电”的方式从本身的txd端获得。这种电路的工作原理如下:
pc 机txd端的逻辑电平经t1后变为ttl电平或mos电平。在单片机txd端为逻辑低电平时,光耦的发光二极管发光,使得晶体管导通。其集电极的vcc (一般为+5v)加在pc机的rxd端;而在单片机txd端为逻辑高电平时,光耦的发光二极管不发光,晶体管截止。由于pc机的txd端在空闲时处于逻辑高电平(小于-3v),因此,这个电平便通过电阻r4加到其rxd端。这样,便实现了ttl电平或mos电平到rs-232电平的转换。但需要注意的是,由于pc机的rxd和rxd端通过电阻接到了一起,因此有时会出现pc机自发自收的情况,这一点需要在编程时加以处理。
2 电阻值的确定
图1电路中,r1、r2的取值范围较大,一般只要使得t1正常工作在开关状态下即可。r3的取值可按下式进行计算:
r3=(vcc-vf-vcs)/if
其中vcc是工作电源电压,vcs是单片机txd端的低电平电压(一般取0.2v),vf是光耦中的发光二极管导通时的正向压降(一般为1.1v左右),if是其正常工作电流(一般为10ma)。
r4 取值的合适与否是本电路的关键。取值过小,可能会在单片机发送逻辑低电平时,使pc机的rxd端电平受自身txd端的影响太大而导致电压过低,从而达不到逻辑低电平的要求而不能正确接收;取值过大,则会在单片机发送逻辑高电平时,pc机rxd端受其输入电阻的影响而不能将自身txd端的逻辑电平正确传送过来,这样也不能正确接收。实际上,r4的取值受多种因素的影响,其中包括:光耦中晶体管的特性、r2的值、二极管d的特性、pc机rxd端的输入电阻和输入电平、txd端的输出电阻和输出电平等。而这些因素中,尤以后两乾的影响为甚。
在pc 机系统中,异步通信适配器以ins8250通讯芯片为核心,再配以可进行电平转换的发送器和接收器电路而组成的。不同种类的pc机由于主板设计的不同,其 rs-232的特性也有差异,特别是rxd端的输入电阻和txd端的输出电阻相去甚远。因此,若要用计算的方法得到r4的取值,需要了解各种主板的电路设计,这样非常麻烦。但是对各种常见品牌计算机的rs-232口的特性进行测试却是相对简便的。笔者在各种常见品牌的近百台计算机上进行了测试,得到了可以在各种计算机上可正常使用的r4值,具体取值如表1所列。
表1 pc与单片机通信情况和r4值的关系
测试中,r2取10kω,d 采用in4148,光耦采用til117,其发光二极管的工作电流为10ma(推荐值)。改变r4的取值,检查pc能否和单片机系统进行通信,以及pc机在发送数据时是否被自己接到。实验发现,常用pc机的rs-232口根据外部特性可以分为几大类,现将每一类取一例示于表1中。表中的x1x2x3含义如下:
x1=0表示pc机发送数据时不能通过r4自收。
=1表示pc机发送数据进可以通过r4自收。
x2=0表示pc机发送的数据不能被单片机接收。
=1表示pc机发送的数据可以被单片机接收。
x3=0表示单片机发送的数据不能被pc机接收。
=1表示单片机发送的数据可以被pc机接收。
从表1中可以看出,尽管各种主板特性不同,但都有一段性相同的范围,即r4取12.2kω~20kω时,pc可以和单片机正常通信,且pc发送的数据也可以被它自己接收。这样,在设计电路时可以把r4取成15kω,从而使得该以与各种pc进行通信。但
rs -232标准是广泛使用的串行通信标准,但使用的电平与ttl和mos电平完全不同,逻辑“0”至少为+3v,逻辑“1”至少为-3v,而单片机系统则使用ttl电平或mos电平。因此,需要使用接口电路来实现ttl电平或mos电平与rs-232电平之间的转换。目前已有现成的接口芯片可供选用,价格低一些的如mc地488(将ttl电平转换为rs-232c标准电平)和mc1489(将rs-232标准电平转换为ttl电平),但mc1488需要± 12v的供电电压。另外,也有许多使用单一的+5v供电芯片可供选择,如max2003,但此类芯睡价格不菲,且需要若干外围元件。在对体积和成本有较严格的要求时,进一步简化接口电路很有必要。
1 一种简单的接口电路
实用中,单片机与pc的通信通常采用半双工通信,这时,可以采用一种较简单的接口电路(如图 1所示)。在这种电路中,pc机的rxd上的逻辑高电平(小于-3v)是以“偷电”的方式从本身的txd端获得。这种电路的工作原理如下:
pc 机txd端的逻辑电平经t1后变为ttl电平或mos电平。在单片机txd端为逻辑低电平时,光耦的发光二极管发光,使得晶体管导通。其集电极的vcc (一般为+5v)加在pc机的rxd端;而在单片机txd端为逻辑高电平时,光耦的发光二极管不发光,晶体管截止。由于pc机的txd端在空闲时处于逻辑高电平(小于-3v),因此,这个电平便通过电阻r4加到其rxd端。这样,便实现了ttl电平或mos电平到rs-232电平的转换。但需要注意的是,由于pc机的rxd和rxd端通过电阻接到了一起,因此有时会出现pc机自发自收的情况,这一点需要在编程时加以处理。
2 电阻值的确定
图1电路中,r1、r2的取值范围较大,一般只要使得t1正常工作在开关状态下即可。r3的取值可按下式进行计算:
r3=(vcc-vf-vcs)/if
其中vcc是工作电源电压,vcs是单片机txd端的低电平电压(一般取0.2v),vf是光耦中的发光二极管导通时的正向压降(一般为1.1v左右),if是其正常工作电流(一般为10ma)。
r4 取值的合适与否是本电路的关键。取值过小,可能会在单片机发送逻辑低电平时,使pc机的rxd端电平受自身txd端的影响太大而导致电压过低,从而达不到逻辑低电平的要求而不能正确接收;取值过大,则会在单片机发送逻辑高电平时,pc机rxd端受其输入电阻的影响而不能将自身txd端的逻辑电平正确传送过来,这样也不能正确接收。实际上,r4的取值受多种因素的影响,其中包括:光耦中晶体管的特性、r2的值、二极管d的特性、pc机rxd端的输入电阻和输入电平、txd端的输出电阻和输出电平等。而这些因素中,尤以后两乾的影响为甚。
在pc 机系统中,异步通信适配器以ins8250通讯芯片为核心,再配以可进行电平转换的发送器和接收器电路而组成的。不同种类的pc机由于主板设计的不同,其 rs-232的特性也有差异,特别是rxd端的输入电阻和txd端的输出电阻相去甚远。因此,若要用计算的方法得到r4的取值,需要了解各种主板的电路设计,这样非常麻烦。但是对各种常见品牌计算机的rs-232口的特性进行测试却是相对简便的。笔者在各种常见品牌的近百台计算机上进行了测试,得到了可以在各种计算机上可正常使用的r4值,具体取值如表1所列。
表1 pc与单片机通信情况和r4值的关系
测试中,r2取10kω,d 采用in4148,光耦采用til117,其发光二极管的工作电流为10ma(推荐值)。改变r4的取值,检查pc能否和单片机系统进行通信,以及pc机在发送数据时是否被自己接到。实验发现,常用pc机的rs-232口根据外部特性可以分为几大类,现将每一类取一例示于表1中。表中的x1x2x3含义如下:
x1=0表示pc机发送数据时不能通过r4自收。
=1表示pc机发送数据进可以通过r4自收。
x2=0表示pc机发送的数据不能被单片机接收。
=1表示pc机发送的数据可以被单片机接收。
x3=0表示单片机发送的数据不能被pc机接收。
=1表示单片机发送的数据可以被pc机接收。
从表1中可以看出,尽管各种主板特性不同,但都有一段性相同的范围,即r4取12.2kω~20kω时,pc可以和单片机正常通信,且pc发送的数据也可以被它自己接收。这样,在设计电路时可以把r4取成15kω,从而使得该以与各种pc进行通信。但