Chip Directory
Mirror sites
Mailing list
Have this site translated
 Datasheet Archive
 Embedded Systems
Host site

The PC's parallel port

The parallel printer port on the PC, also called Centronics port.

local Parallel port FAQ
www.doc.ic.ac.uk/~ih/doc/par/ Many parallel port projects
www.beyondlogic.org/ At Beyond Logic
ftp.ee.ualberta.ca/pub/cookbook/comp/ibm/pport094.doc.Z Information about the IBM-PC parallel Port
ftp.ee.ualberta.ca/html/cookbook/comp/ibm/pport094.doc.Z Information about the IBM-PC parallel Port
iglou.com/members/ITU/pc-int/ Information on parallel port interfacing
www.repairfaq.org/filipg/LINK/PORTS/F_Parallel.html
et.nmsu.edu/~etti/winter97/computers/logic/logic.html Using a PC as logic analyzer
junitec.ist.utl.pt/einfo/pc/interface.html#parallel
www.ee.washington.edu/eeca/text/para-port.html
www.lvr.com/parport.htm Jan Axelson's site

Books

title order at Amazon USA price indication
Parallel Port Complete: Interfacing design and communication, includes EPP, ECP, IEE-1284 ISBN: 0965081915 $32
Programming the Parallel Port: Interfacing the PC for data acquisition and process control ISBN: 0879305134 $36
Use of a PC Printer Port for Control and Data Acquisition ISBN: 0965335704 $15
Build Your Own Low-Cost Data Acquisition and Display Devices ISBN: 0830643486 $20
The Parallel Port Manual Vol. 2: Use of a PC printer port for control and data acquisition ISBN: 0965335755 $19
Detecting the World: Capturing physical measurements with C++ ISBN: 0879305592 $36

Mailing list discussions


Date:    19960221
From:    Adrian Ball
To:      Motorola 68HC11 Apps mailing list
Subject: PC parallel ports

Is it possible to control the output pins on a typical PC parallel port directly? I've managed to access the 8 data lines as digital outputs and 4 other pins as digital inputs. It seems to me that I should be able to talk to 4 more pins. Is there some port (i.e. base address + x) I can talk to to configure all 16 pins (preferable controlling which are inputs and which are outputs)?

There are 3 registers associated with each parallel port, the registers having slightly different functionality depending on whether or not you have an enhanced (bi-directional) port.

03BC-03BF ----	parallel printer port, same as 0278 and 0378

03BC    w(/r)   data port
03BD    r       status port (inputs)
                 bit 7 = 0  busy (pin 11)
                 bit 6 = 0  acknowledge (pin 10)
                 bit 5 = 1  out of paper (pin 12)
                 bit 4 = 1  printer is selected (pin 13)
                 bit 3 = 0  error (pin 15)
                 bit 2 = 0  IRQ has occurred (internal, optional)
                 bit 1-0    reserved

03BE    r/w     control port (outputs)
                 bit 7-6    reserved
                 bit 5 = 1  data port direction = read (enhanced only)
                 bit 4 = 1  enable IRQ (internal)
                 bit 3 = 1  select printer (pin 17)
                 bit 2 = 0  initialize printer (pin 16)
                 bit 1 = 1  automatic line feed (pin 14)
                 bit 0 = 1  strobe (pin 1)

Be aware that the filtering provided on a printer port varies widely between different PCs. If you intend to your device to be able to talk to a variety of PCs, it would be a good idea to pull apart a printer and do the filtering and tracking similar in your device. Also, dont try to drive any signals too fast (stick to filtered 74LS* drivers), and ensure that your front end logic is immune to incomming glitches. If your device is a dongle (ie no cable) most of these issues disappear, except for the variety of filtering provided in the PCs.

In short, BEWARE!, using a printer port can be a big can of worms.


Date:    19960221
From:    Mark Harrison
To:      Motorola 68HC11 Apps mailing list
Subject: PC parallel ports

Yes you can write to the 8 data lines and 4 control lines on the parallel port. You can also read the 5 printer status lines by reading the port's read only status register. Note that the output control lines are inverted, as are 4 of the 5 status lines (BUSY is not inverted). Also note that the ACK line can cause an IRQ7 if enabled by bit 4 of the control port!

I've used this port to communicate with an external device at up to several 100 kbps (using serial data transfer over 5 wires, data out, datain, clock, strobe, and ground). One thing to watch are the 0.0022uf caps to ground on each data output line - they really limit the maximum output rate!. I used the control lines instead because they didn't have the caps - instead they are open collector with a weak pullup to +5V (so they fall really quick but are slow to rise to 5V!) - this was overcome by using additional 1.2K ohms pull ups in the external device - your floppy drive should already have these but may need enabling. It was also necessary to use Schmitt* buffers in the external device to clean up the slow edges of the parallel ports lines and reject crosstalk from other wires in a long cable.

Since the data lines are connected to a 74LS374 output register in IBM's original circuit, and also to 74LS244 buffers to read the data line (all though nobody ever does!), it is possible (but not recomended) to use this port in a bi-directional mode - just set all the output register bits high so they can be forced low by an external device (if it has a low impedance) and read by the input register. The 74LS374 will sink as much current as it can but shouldn't self destruct. Don't try this with boards with VLSI or CMOS* drivers though! A better propersition is to use a real bi-directional port, or wire the output enable of the 74LS374 to one of the printer control lines and tri-state the data port properly when reading from it.


Date:    19980102
From:    Jeremy N.E. Proffitt
To:      Multiple recipients of list CHIPDIR-L
Subject: Parallel Port Interfacing Information and specifications!

Parallel Ports are addressed as 3 bytes in the computer's I/O memory map. With three possible starting locations: 378H, 278H, 3BCH. The first two are normally found on any I/O card, 3BCH for the longest time was only found on monochrome monitor cards.
Anyways, I have interfaced to the parallel port and had great sucess and it's easy (all TTL signals, no MAX232!) But I only know the specs for a plain old parallel port, not in ECP, EPP or BiDirectional mode, althought this works on my 486 with an ECP port just like it's a regular old port on an XT!
The addresses: I will refer to the first address of the 3 byte I/O address range of the parallel port as PORT, the second as CTRL (PORT+1) and the third as STAT (PORT+2). PINS refer to the 25 pin DSUB connector of the parallel port. And ofcourse PORT.0 = LSB of PORT, etc.

PORT = 8 bytes of output on PINS 2-9, 2 being the LSB.  You CAN
         NOT* READ from these pins, just write to them.
PIN 10 = Acknoweldege Output/Input - STAT.6
PIN 11 = Busy Output/Input - STAT.7
PIN 12 = Paper End Output Input - STAT.5
PIN 13 = Select Output/Input - STAT.4
PIN 14 = Auto Feed Input - CTRL.1
PIN 15 = Error Output/Input -STAT.3
PIN 16 = Intialize Paper Input - CTRL.2
PIN 17 = Select Input Input - CTRL.3
PINS 18-25 GROUNDS

That's it for the pins. the Output/Input pins are open collector so to read from them, make sure to write a L into that bit before doing so. Also Some of these output and input pins get inverted. I didn't document well enough on my code to understand which one do or don't, but that's simple to do with debug or d86. I will be putting my electronics lab back together in the next few weeks, so I will have more data by then if anyone is interested.

James, as far as your applicaton, I don't know if the parallel port can handle the frequency of the distance counter, my proposal is this - external counter (4020 is nice) and a comparator to a few shift registers (bg micro* has 74ls299 for 9 cents each, 74323 is very nice but $$$) Anyways, put these together and pulse the input to the computer to reload the shift registers - this way while you are shifting in the new stoping point, you can ignore the comparator. You can try piping 2.5 Mhz on the parallel port (maybe with a divider) but the ISA buss only runs at 8Mhz so more than likely will not work. There are always many possiblities!


Date: 19980101
From: Jeremy

Om 19980101 J. Eduardo Santander wrote:

Can somebody tell me what is the right MAX233 (RS232* driver/receiver) configuration, in order to connect my digital diary to the COM port (DB25). Are there other ways (equally cheap) to communicate digital diary with PC?

The parallel port offers an endless possiblity. It offers about 12 outputs and 4 inputs, plenty to do serial output to like 74299 (for which BG micro* has on sale for 9 cents each)
No expensive UART!!!!!
This is easy to do in any programming language. If you need help, I have programing examples in asembly and all the port information. I have done this interfacing before, easy.


Date:    19971226
From:    Rudy Moniaga
To:      Motorola 68HC11 Apps mailing list
Subject: Parrallel Port Control Shareware

Any one who wants to interface to the real world using parallel port can try this shareware. The address of the parallel port is configurable (use lpt1 or lpt2).

This program can be downloaded from:
www.geocities.com/CapeCanaveral/6805/Parallel.htm

If you want to contact me for further info:
r_moniaga@onaustralia.com.au


Date:         19960917
From:         Luiz Marques
Organization: Enautec Ltda.
To:           Multiple recipients of list EDESIGN
Subject:      Bi-directional PC Parallel Ports Standards

I'm interested in additional features of using a bi-directional PC Parallel Port instead of a old uni-directional Centronics port. I've heared about *IEEE 1284* but I don't have none information around these *standard*.

Also the newest HP printers need a IEEE 1284 bi-directional Parallel Port to use all features built-in. I've been with trouble in my HP 680C Deskjet printer. The printer driver tell me the parallel port is not bi-directional. I don't know if is a wrong cable or my PC port did not support IEEE-1284.

Have anyone a wiring diagram for a IEEE-1284 compliant cable and/or a software to verify if the PC port is IEEE-1284 compliant?

The needed information is, at least, the pin funtions, I/O address with bit assignments and DB-25 to Amphenol-36 Centronics cable wiring.

If you know where I can get a copy of IEEE 1284 standard, please let me know.


Date:    19960917
From:    Jean-Francois Larin
To:      Multiple recipients of list EDESIGN
Subject: Re: Bi-directional PC Parallel Ports Standards

Have anyone a wiring diagram for a IEEE-1284 compliant cable and/or a software to verify if the PC port is IEEE-1284 compliant?

I don't know about IEEE-1284, but I know that bi-directionnal ports exists in (at least) two flavors: EPP and ECP. I have a program that tests the ports to find out if they are standtard, EPP or ECP, which I could forward to you (BinHex* or MIME) if you are interested.


Date:    19960917
From:    Tobin Gimber
To:      Multiple recipients of list EDESIGN
Subject: Re: Bi-directional PC Parallel Ports Standards

On 19960917 you wrote:

Also the newest HP printers need a IEEE 1284 bi-directional Parallel Port to use all features built-in. I've been with trouble in my HP 680C Deskjet printer. The printer driver tell me the parallel port is not bi-directional. I don't know if is a wrong cable or my PC port did not support IEEE-1284.

Your cable is probably fine. On most computers now, you can configure the parallel port to be uni-directional or bi-directional by going into the cmos setup of the computer. This is usually done by hitting delete at power up. Inside the cmos setup there should be an option for the parallel port.


Date:    19960917
From:    Herman van den Bergen
To:      Multiple recipients of list EDESIGN <EDESIGN@mercury.cc.uottawa.ca>
Subject: Re: Bi-directional PC Parallel Ports Standards

On 19960917 you wrote:

I'm interested in additional features of using a bi-directional PC Parallel Port instead of a old uni-directional Centronics port. I've heared about *IEEE 1284* but I don't have none information around these *standard*.

For IEEE 1284 try:
www.fapo.com/index.html

A source for economy bidirectional PPs (about$20 retail) see:
www.lavalink.com/SERIALPARALLELPRODS.HTML


Ad for PCI video capturing boards by Dektec.
Goto: Main Mirror About Author
Register: Yourself Company
Feedback: Correction Addition Question
Request quote: Chips (Deutsch) Chips (English) Chips (Nederlands)

Advertisement by Adprov

Viewable with any browser


page modified: 20020421
page compiled: 20080325
site compiled:  Version GIF