29.09.2013 Views

Le port parallèle - Lycée de L'Elorn de Landerneau

Le port parallèle - Lycée de L'Elorn de Landerneau

Le port parallèle - Lycée de L'Elorn de Landerneau

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Le</strong> <strong>port</strong> <strong>parallèle</strong> <strong>de</strong> l'ordinateur PC<br />

<strong>Le</strong> <strong>port</strong> <strong>parallèle</strong> est basé sur une architecture assez ancienne mais très simple à utiliser, ce qui en<br />

fait l'interface <strong>de</strong> prédilection pour tout électronicien amateur. Comme son nom l'indique, il<br />

fournit, entres autres, 8 broches <strong>de</strong> données directement utilisables et ne nécessitant pas <strong>de</strong><br />

circuits d'interfaces supplémentaires pour réaliser <strong>de</strong>s taches simples.<br />

Brochage et performances<br />

<strong>Le</strong> <strong>port</strong> <strong>parallèle</strong> se présente sous la forme d'un connecteur SUBD femelle à 25 broches. Seules<br />

17 broches sont utilisables, les 8 broches restantes sont interconnectées à la masse du PC. <strong>Le</strong><br />

schéma ci-<strong>de</strong>ssous montre le brochage <strong>de</strong> ce <strong>port</strong>.<br />

Voici le nom <strong>de</strong> chaque broche :<br />

connecteur<br />

SUB-D 25<br />

Fonction Niveau <strong>de</strong><br />

repos<br />

Direction Registre<br />

1 Strobe 1 S contrôle<br />

2 donnée D0 0 E/S donnée<br />

3 donnée D1 0 E/S donnée<br />

4 donnée D2 0 E/S donnée<br />

5 donnée D3 0 E/S donnée<br />

6 donnée D4 0 E/S donnée<br />

7 donnée D5 0 E/S donnée<br />

8 donnée D6 0 E/S donnée<br />

9 donnée D7 0 E/S donnée<br />

10 Acknowledge 1 E état<br />

11 Busy 0 E état<br />

12 Paper end 0 E état<br />

13 Select 0 E état<br />

14 Autofeed 1 S contrôle<br />

15 Error 1 E état<br />

16 Initialize 1 S contrôle<br />

17 Select input 1 S contrôle<br />

18-25 Ground (masse)<br />

On retrouve bien 5 lignes en entrée, 4 en sortie, et les 8 lignes <strong>de</strong> données en entrée-sortie<br />

1/4


dans le cas d'un mo<strong>de</strong> bidirectionnel.<br />

STROBE: cette ligne active basse indique à l'imprimante que <strong>de</strong>s données sont présentes sur les lignes<br />

D0 à D7 et qu'il faut les prendre en compte. D0 à D7: c'est le bus <strong>de</strong> données sur lequel véhicule la valeur du caractère à<br />

imprimer. On ne peut écrire sur ce <strong>port</strong>, à moins d'avoir un <strong>port</strong> <strong>parallèle</strong> étendu (c'est le cas pour les <strong>port</strong>s <strong>de</strong> type<br />

ECP/EPP).<br />

ACK: l'imprimante met à 0 cette ligne pour indiquer à l'ordinateur qu'elle a bien reçu le caractère transmis et que ce<br />

<strong>de</strong>rnier peut continuer la transmission.<br />

BUSY: cette ligne est mise à 0 par l'imprimante lorsque son buffer <strong>de</strong> réception est plein. L'ordinateur est ainsi averti<br />

que celle-ci ne peut plus recevoir <strong>de</strong> données. Il doit attendre que cette ligne revienne à 1 pour recommencer à<br />

émettre.<br />

PE: signifie " paper error ". L'imprimante indique par cette ligne à l'ordinateur que l'alimentation en papier a été<br />

interrompue.<br />

SELECT: cette ligne indique à l'ordinateur si l'imprimante est "on line" ou "off line".<br />

AUTOFEED: lorsque ce signal est à 1, l'imprimante doit effectuer un saut <strong>de</strong> ligne à chaque caractère "return" reçu. En<br />

effet, certaines imprimantes se contentent d'effectuer un simple retour du chariot en présence <strong>de</strong> ce caractère.<br />

ERROR: indique à l'ordinateur que l'imprimante a détecté une erreur.<br />

INIT: l'ordinateur peut effectuer une initialisation <strong>de</strong> l'imprimante par l'intermédiaire <strong>de</strong> cette ligne.<br />

SELECT IN: l'ordinateur peut mettre l'imprimante hors ligne par l'intermédiaire <strong>de</strong> ce signal.<br />

MASSE: c'est la masse du PC.<br />

Au point <strong>de</strong> vue <strong>de</strong>s performances électriques, chaque broche du <strong>port</strong> est capable <strong>de</strong> fournir<br />

un courant maximal <strong>de</strong> 12 mA environ. Il faut donc faire attention à la charge que l'on applique et<br />

calculer les résistances <strong>de</strong> limitations adéquates. Une solution pour éviter tout problème <strong>de</strong><br />

consommation est <strong>de</strong> placer un circuit buffer juste à la sortie du <strong>port</strong>. <strong>Le</strong>s niveaux <strong>de</strong> tension sont<br />

compatibles TTL : cela signifie qu'un bit mis à 1 provoquera une mise à +5V sur la broche<br />

correspondante, et un 0 logique mettra cette broche à 0V (la masse du PC). Pour la lecture <strong>de</strong><br />

données, il faut faire un peu plus attention car cela dépend <strong>de</strong> la technologie utilisée. En effet,<br />

certaines broches du <strong>port</strong> possè<strong>de</strong>nt une résistance interne dite <strong>de</strong> "pull-up" (tirage au +5V) sur<br />

leurs broches tandis que d'autres ont leurs sorties dites en "collecteur ouvert" (sans aucune<br />

résistance). Une résistance <strong>de</strong> pull-up à l'entrée <strong>de</strong> ces broches, <strong>de</strong> l'ordre <strong>de</strong> 4,7 K Ohms, rendra<br />

votre montage comptatible sur tous les <strong>port</strong>s <strong>parallèle</strong>s.<br />

2/4


<strong>Le</strong>s registres <strong>de</strong> comman<strong>de</strong><br />

Ces lignes sont commandées directement par un bit, dans trois registres différents, comme<br />

précisé dans la <strong>de</strong>rnière colonne, et dans le tableau suivant, et le niveau <strong>de</strong> repos<br />

correspond au niveau <strong>de</strong> la ligne lorsque le bit dans le registre est à 0, c'est à dire que si le<br />

niveau <strong>de</strong> repos est un le niveau <strong>de</strong> la ligne et le bit correspondant dans le registre sont<br />

inversés.<br />

Registre<br />

<strong>de</strong><br />

données<br />

Adresse<br />

888<br />

Registre<br />

d'état<br />

Adresse<br />

889<br />

Registre<br />

<strong>de</strong><br />

contrôle<br />

Adresse<br />

890<br />

bit 0 D0 Broche n°2<br />

bit 1 D1 Broche n°3<br />

bit 2 D2 Broche n°4<br />

bit 3 D3 Broche n°5<br />

bit 4 D4 Broche n°6<br />

bit 5 D5 Broche n°7<br />

bit 6 D6 Broche n°8<br />

bit 7 D7 Broche n°9<br />

bit 3 Error Broche n°15<br />

bit 4 Select Broche n°13<br />

bit 5 Paper end Broche n°12<br />

bit 6 Acknowledge Broche n°10<br />

bit 7 Busy Broche n°11<br />

bit 0 Strobe Broche n°1<br />

bit 1 Autofeed Broche n°14<br />

bit 2 Initialize Broche n°16<br />

bit 3 Select input Broche n°17<br />

bit 4 Autorisation d'interruption<br />

bit 5 direction données<br />

(0 = sortie, 1 = entrée)<br />

<strong>Le</strong> bit 5 n'est bien entendu adressable que sur les <strong>port</strong>s bidirectionnels.<br />

Différentes adresses peuvent exister pour les registres selon le système, le tableau suivant<br />

en présente les différentes possibilités (0h signifie que les valeurs sont en hexadécimal) :<br />

<strong>port</strong> <strong>de</strong> données 0h956 0h3BC 0h888 0h378 0h632 0h278<br />

<strong>port</strong> d'état 0h957 0h3BD 0h889 0h379 0h633 0h279<br />

<strong>port</strong> <strong>de</strong> contrôle 0h957 0h3BE 0h89A 0h37A 0h634 0h27A<br />

Cependant sur les systèmes actuels le <strong>port</strong> LPT1 se situe toujours à l'adresse 378 et le <strong>port</strong><br />

LPT2 à l'adresse 278<br />

3/4


Programmation du <strong>port</strong> en Visual Basic<br />

<strong>Le</strong> cas <strong>de</strong> Visual Basic est un peu délicat. En effet, aucune fonction n'existe en standard. Pour cela,<br />

nous avons recours aux célèbres DLL qui permettent d'étendre les possibilités du langage. Nous allons<br />

utiliser Inpout.dll qui contient <strong>de</strong>ux fonctions permettant <strong>de</strong> lire et d'écrire dans un <strong>de</strong>s trois registres.<br />

Cette DLL est appelée généralement inpout32.dll sous W98<br />

<strong>Le</strong>s prototypes <strong>de</strong>s fonctions sont les suivants :<br />

Out ADRESSE, VALEUR exemple : Out 888,5 met à 1 les bits D1 et D2<br />

VALEUR = Inp(ADRESSE) exemple : x = inp(889) affecte à x le contenu du registre d'état<br />

Corps du programme "IN_OUT"<br />

Private Sub Command1_Click()<br />

Dim x As Integer<br />

Dim y As Integer<br />

Dim PortAdresse As Long<br />

PortAdresse = Val(Text1.Text)<br />

y = Inp(PortAdresse)<br />

Text3.Text = Str(y)<br />

x = Val(Text2.Text)<br />

Out PortAdresse, x<br />

End Sub<br />

4/4

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!