一般的微型计算机都配备有并行打印机端口,它是一个25芯的母接头,通常工作于8位数据输出方式用以驱动打印机、绘图仪等其它外设,同时又对这些设备的状态进行监测,确定外设的工作状态。因此,它既可以进行数据输出,又可以进行数据输入,非常适合于一般的数字I/O,对数字信号进行采集或控制外部的继电器驱动外部机械设施。
并行口结构现笔者对打印机的并行口做一分析,配有两个并口的计算机经系统引导后,初始化过程把并行端口配置成LPTl、LPT2二个输出端口,这二个端口又分配了不同的数据地址、状态地址和控制地址,其地址如表1所示。
并行端口LPLL的管脚分布如表2。在这里笔者把数据端口作为一个输入/输出端口,状态端口作为一个输入端口,控制端口是一个输出端口。
并行口驱动电路对于大多数用户而言,需要电路的驱动能力为电压24V,电流至少为20mA,以便于驱动继电器等;此外,对于大多数输入信号而言,为了防止干扰,一般采用24V作为信号。由于计算机主板提供给打印口的电压为5V,电流只有几毫安,作为输出,根本无法驱动继电器等执行元件,作为输入,又无法与外部信号匹配。为此,笔者设计了此驱动电路,电路如图1所示。本电路中,首要目的是实现电平转换。这里采用光电耦合管TLC521,一是实现5V、24V电平转换,二是隔离计算机主板电路与外部电路,防止外部电路对计算机主板的干扰,造成计算机死机,甚至主板损坏。TLC521仅能实现电平的转换,并不能提高电路的驱动能力,而uLN2803则提供了这种功能。此外,电阻RPl、RP2、RP5、RP6、RP7、RP8为上拉电阻,RP3、RP4、RP9为限流电阻。值得注意的是,电源5V与24V不能共用地。
本电路中,笔者将端口378H(即管脚2-9)均作为输出使用,实际使用中,也可以作为输人,这主要取决于你的。I/O分配。若作为输入,仅需输入部分替代输出部分即可。
计算机对打印口的控制实例电路如图2所示,此电路中,J1为继电器,s1为开关。实现功能为:根据S1输入的状态,控制输出继电器Jl的通断。
程序如下(c语言):
char ch=0,c=O,iostatus=0;
ch=_inp(0x379); ,/读入端口379H状态
c=ch&0x08; //仅保持管脚1 5的状态,屏蔽其它位
if(c!=0) iostatusl=Ox4; //判断其状态,决定管脚16的输出状态
else iostatus&=Oxob;-Outp(Ox37a,iostatus); //输出