Understanding The Parallel Port

On the PC the parallel port uses a 25-pin connector (called DB-25, 25-pin D-sub or 25-pin D-shell), as you can see in Figure 2. On printers, however, a different kind of connector is used, called Centronics, which has 36 pins.

Parallel Port (LPT1)Figure 2: The parallel port.

Besides the eight data bits, there are more signals available on the parallel port. In the table below we list all the basic parallel port signals and their function, as well as their location on both standard 25-pin and Centronics connector. The I/O column indicates if the signal is input (I) or output (O). Input means that the signal must come from the device to the parallel port (i.e., the signal must be provided by your prototype); output means that the signal comes from the parallel port.

Signal Name Pin (25-pin standard connector) Pin (36-pin Centronics Connector) I/O  Description
/STROBE Strobe  01 01 O Indicates if data is ready or not to be transmitted.(0 = Data ready to be transmitted, 1 = Data not ready to be transmitted)
/ACK Acknowledge 10 10 I Indicates that the printer is ready to receive data.
BUSY Busy 11 11 I Indicates that the printer is not ready to receive data.
PE Paper Empty 12 12 I Indicates that the printer has no paper to print on.
SELECT  Select 13 13 I Indicates that the printer is on its “on line” state, ready to get information.
/AUTO FD XT Auto Feed 14 14 O The printer moves the paper to the beginning of the next line.
/ERROR Error 15 32 I Some error occured (printer disabled, paper empty).
/INIT Init 16 31 O Resets the printer and clears its printing buffer.
/SELECT INPUT Select Input 17 36 O Data can only be transferred to the printer when this line is set to “0”.
D0 through D7 D0 through D7 2 through 9 2 through 9 O Data bits.
GND Ground  18 through 25 19 through 30 O Ground.

The parallel port uses three I/O addresses: data (378h), status (379h) and control (37Ah). If you want to send data to the parallel port and get this data outside the computer, just write this data to the parallel port data address. For example, if we want to turn on all our LEDs, all we need to do is to send the value 255 (which is the decimal equivalent for 11111111, i.e., all data bits set to “on”) on the address 378h. Of course we will explain more about this and also the role of the status and control addresses.

Gabriel Torres is a Brazilian best-selling ICT expert, with 24 books published. He started his online career in 1996, when he launched Clube do Hardware, which is one of the oldest and largest websites about technology in Brazil. He created Hardware Secrets in 1999 to expand his knowledge outside his home country.