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
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