Port LPT : brochage. Ministère de l'Éducation et des Sciences de la Fédération de Russie Établissement d'enseignement budgétaire de l'État fédéral Description lpt

Dmitri Ivanov, 21 septembre 2009 L'article a été révisé et mis à jour le 23 janvier 2012

Durant l'existence de ce site, on me pose souvent la même question, qui peut être décrite approximativement ainsi :



En conséquence, j'ai décidé de décrire ce problème plus en détail et d'écrire un article. Oui, en effet, vous devez maintenant rechercher des PC fixes dotés d'un port LPT (c'est-à-dire que toutes les « mères » ne sont pas désormais équipées d'un port LPT). Il n’est pas du tout nécessaire de parler d’ordinateurs portables. Les modèles modernes n'utilisent pas du tout les ports LPT. Seules les machines très chères et spécialisées, comme DELL, peuvent « se vanter » de disposer de ce port.

De plus, vous pouvez désormais acheter librement des appareils appelés adaptateurs LPT-USB.

Les instructions indiquent que cet appareil est entièrement compatible avec diverses imprimantes, scanners, etc. Nous connectons l'adaptateur au port USB et installons les pilotes. Regardons le gestionnaire de périphériques. Très probablement dans le fil "Ports LPT/COM" rien n'est apparu (bien qu'il y ait des exceptions). Il y aura très probablement une nouvelle branche avec un appareil étrange avec un nom, par exemple : LPT1USB ou dans la section Périphériques USB une entrée étrange sur "Prise en charge des périphériques USB pour les imprimantes LPT". Essayons de donner un exemple tiré des articles ci-dessus. Et ce n’est pas le cas : rien ne fonctionne. Nous essayons l'adresse du port LPT1 - rien ne fonctionne. Essayons l'adresse du port LPT2. Malheureusement, une telle modernisation de l'adresse dans les demandes ne mène à rien non plus - les LED ne se sont pas allumées et ne s'allument pas.

Pour comprendre ce qui se passe ici, revenons un instant au port LPT « fer natif » habituel - LPT1, qui « dépasse » de la carte mère. Allons dans le gestionnaire de périphériques et regardons les propriétés de notre port. Là, nous verrons une telle image. Il est clairement visible que le système a enregistré l'adresse d'E/S de base 0x378 et le numéro de demande d'interruption 7. Tout est correct.

Passons maintenant au niveau programmation. Dans les exemples des articles ci-dessus, en contournant le système de protection des E/S à l'aide de méthodes légales et illégales, nous avons directement communiqué avec un registre d'E/S réel, auquel est attribuée l'adresse 0x378. Tout est clair ici. N'oublions pas non plus que Windows recommande de travailler avec le port LPT à l'aide d'appels de fonction API - OpenFile(), WriteFile(), ReadFile(). C'est exactement ce que font les applications qui utilisent le port LPT pour échanger des informations via une interface parallèle avec des périphériques externes (une imprimante, par exemple). Il n'a aucune tâche de définir un bit de registre Données unité logique. Elle (l'application) a juste besoin d'envoyer un paquet de données, et qui sera là quelles lignes, et en même temps "le tirer" et le lire n'est pas très intéressé. Ces opérations sont effectuées par le pilote du port LPT du système. Il est chargé en mémoire au démarrage du système d'exploitation. Quand on appelle la fonction Fichier Ouvert("LPT1", ....) nous accédons essentiellement au pilote de port, qui est symboliquement nommé LPT1. Le pilote effectue un tas de travaux différents - refuse l'accès au port à d'autres processus, configure les paramètres du protocole de transfert de données, implémente réellement ce transfert, mais en fin de compte, tout se résume au contrôle direct des bits de port LPT individuels au niveau du noyau du système d'exploitation.

Essayons maintenant de travailler avec notre adaptateur USB-LPT. Commençons, aussi étrange que cela puisse paraître, par les appels API. Lançons Fichier Ouvert("LPT1USB", ...)(en fonction de la manière dont cet adaptateur est appelé dans le gestionnaire de périphériques, s'il est appelé). Ce qui se produit? Le fait est que maintenant nous ne travaillerons pas avec le pilote du port OS LPT, mais avec le pilote de cet adaptateur ! C'est ça l'astuce ! Il reçoit un paquet de données de notre application utilisateur et, dans le format requis, envoie ce paquet via le pilote USB du système au contrôleur USB, dont les « pattes » dépassent de la prise LPT externe sur le fil (enfin, c'est un « explication approximative »). Vous voyez, il n'y a aucune indication d'accès aux registres aux adresses 0x378 (0x278), car ils n'existent tout simplement pas !

Par conséquent, lorsque vous essayez d'exécuter les exemples de cette section et d'accéder directement aux adresses 0x378 (si ce « pseudo-port » s'appelait LPT1USB ou quelque chose comme ça), 0x278 (LPT2_...), etc. Il ne se passe rien. Ils n’existent tout simplement pas ! Mais un programme qui fonctionne via des appels API ne remarquera rien - tout le travail de bas niveau est effectué par le pilote, et quel pilote et où iront les paquets de données (au port d'E/S réel ou au contrôleur hôte USB) - l'application s'en fiche ! Essayez d'ouvrir les propriétés du "pseudo-port" dans le Gestionnaire de périphériques. Vous n'avez pas d'onglet ressources ? Oui, mais y a-t-il des valeurs inappropriées ou l'onglet est-il désactivé ? En fait, c'est le cas.



Pourquoi 99% ? Parce qu'il existe des adaptateurs USB-LPT faits maison qui sont détectés par Windows comme un port LPT1 à part entière et se voient attribuer une adresse tout à fait ordinaire 0x378. Les appels directs vers les broches de port sont réussis ! Cependant, il s'agit d'une conception très non standard (principalement le pilote, qui intercepte les appels vers l'adresse de base du port LPT1). Tout cela n'est pas très fiable (mise à jour du système d'exploitation - et la conception perd sa fonctionnalité) et ne peut être recommandé que pour une utilisation limitée.



Aussi étrange que cela puisse paraître, il existe une solution. Vous pouvez toujours ajouter un véritable port LPT à votre ordinateur de bureau ou portable. Tout d’abord, oubliez tout de suite les adaptateurs USB. Pour résoudre ce problème, il est nécessaire d'acheter PCI-LPT adaptateur pour PC de bureau (nécessite un emplacement PCI libre) ou PCMCIA-LPT adaptateur pour ordinateur portable (voir photo ci-dessous).


Il n'y a aucun problème lors de l'utilisation de ces appareils. Ils sont définis comme de véritables ports LPT « natifs ». L'entrée correspondante sera ajoutée à l'onglet du gestionnaire de périphériques "Ports LPT/COM". L'accès direct aux broches du port fonctionnera.

Un port d'interface parallèle a été introduit dans le PC pour connecter une imprimante - port LPT (Line PrinTer - imprimante en ligne).

L'adaptateur d'interface parallèle est ensemble de registres, situé dans l’espace E/S. Les registres de ports sont adressés par rapport à l'adresse de base du port, dont les valeurs standard sont 386h, 378h et 278h. Le port a externe 8 bits bus de données 5 bits pneu signaux État et 4 bits bus de signaux de commande.

Le BIOS prend en charge jusqu'à quatre ports LPT (LPT1-LPT4) avec son service d'interruption INT 17h, qui assure la communication avec les imprimantes via l'interface Centronics. Avec ce service, le BIOS effectue la sortie de caractères, l'initialisation de l'interface et de l'imprimante, ainsi que l'état de l'imprimante. vote.

Interface Centronique

Le terme Centronics fait référence à la fois à l'ensemble des signaux et du protocole de communication, ainsi qu'au connecteur 36 broches installé sur les imprimantes. Le but des signaux est indiqué dans le tableau. 1.

Tableau1.

Signaux d'interface Centronics

But

Stroboscope de données. Les données sont capturées par un niveau de signal faible

Lignes de données. Données 0 (broche 2) - bit le moins significatif

Acquitter - une impulsion de confirmation d'octet (une demande de réception de la suivante). Peut être utilisé pour générer une demande d'interruption

Occupé. La réception des données n'est possible que lorsque le niveau du signal est faible

Un niveau élevé signale la fin du papier

Signale que l'imprimante est allumée

Traduction automatique de ligne.

Erreur : fin de papier, erreur hors ligne ou erreur d'imprimante interne

Initialisation

Sélection de l'imprimante (niveau bas). Lorsque le niveau est élevé, l'imprimante ne perçoit pas les autres signaux d'interface

Fil d'interface commun

Direction

(entrée/sortie) par rapport à une imprimante.

L'interface Centronics est prise en charge par la plupart des imprimantes dotées d'une interface parallèle ; son analogue domestique est l'interface ; IRPR-M.

Port LPT traditionnel

Le port SPP (Standard Parallel Port) traditionnel est un port unidirectionnel sur la base duquel le protocole d'échange Centronics est implémenté dans le logiciel. Le port offre la possibilité de générer une demande d'interruption matérielle basée sur une impulsion à l'entrée ACK#. Les signaux de port sont émis vers connecteurDB-25S(prise) installé directement sur la carte adaptateur (ou la carte système) ou connecté à celle-ci avec un câble plat. Le nom et la fonction des signaux du connecteur de port (Tableau 2) correspondent à l'interface Centronics.

Tableau 2.

Connecteur de port LPT standard

Contacter DB-25S

Fil de boucle

But

18, 20, 22, 24, 26

* I/O définit la direction de transmission (entrée/sortie) du signal du port ; 0/I désigne les lignes de sortie dont l'état est lu en lisant sur les ports de sortie correspondants.

**Le symbole « \ » marque les signaux inversés (1 dans le registre correspond à un niveau de ligne bas).

***L'entrée Ack# est connectée par une résistance (10kOhm) à l'alimentation +5V.

Le port standard a trois registres de 8 bits, situés aux adresses adjacentes dans l'espace E/S, en commençant par l'adresse de base du port (BASE).

Registre de données (DR) - registre de données, adresse = BASE. Les données écrites sur ce port sont sont affichés aux lignes de sortie de l’interface. Les données lues dans ce registre, selon le circuit de l'adaptateur, correspondent soit à des données précédemment enregistrées, soit à des signaux sur les mêmes lignes.

Registre de statut (SR) -registre de statut représentant Port d'entrée 5 bits signaux d'état de l'imprimante (bits SR.4-SR.7), adresse = BASE+1 BitSR.7 est inversé - un niveau de signal faible correspond à une seule valeur de bit dans le registre, et vice versa.

Objectif des bits du registre d'état(les nombres de contacts du connecteur sont indiqués entre parenthèses) :

SR.7-Busy - affichage inversé de l'état de la ligne Occupé (11) ;

SR.6 -ACK (Acknowledge) - affiche l'état de la ligne Ack# (10).

SR.5 -PE (Paper End) - affiche l'état de la ligne Paper End (12).

SR.4-Select - affiche l'état de la ligne Select (13). Une seule valeur correspond au signal pour allumer l'imprimante.

SR.3-Erreur - affiche l'état de la ligne Erreur (15).

SR.2 - PIRQ - indicateur d'interruption pour le signal Ack# (uniquement pour le port PS/2). Le bit est effacé si le signal Ack# a provoqué une interruption matérielle. La valeur unique est définie par réinitialisation matérielle et après lecture du registre d'état.

SR - réservé.

Registre de contrôle (CR) - registre de contrôle, adresse=BA5E+2. Comme le registre des données, ceci Port de sortie 4 bits peut être écrit et lu (bits 0-3), mais son tampon de sortie est généralement de type collecteur ouvert. Cela vous permet d'utiliser plus correctement les lignes de ce registre comme entrée lors de leur programmation à un niveau élevé. Les bits O, 1, 3 sont inversés : une seule valeur dans le registre correspond à un niveau de signal faible, et vice versa.

Objectif des bits du registre de contrôle :

CR - réservé.

CR.5 - Direction - bit de contrôle de direction de transmission (pour les ports PS/2 uniquement). L'écriture d'un bit transforme le port de données en mode d'entrée.

CR.4 -ACKINTEN (Ack Interrupt Enable) - une valeur unique permet une interruption lorsque le signal tombe sur la ligne Ackff - le signal de demande d'octet suivant.

CR.3 - Select In - une valeur de bit unique correspond à un niveau bas à la sortie de sélection (17) - un signal qui permet à l'imprimante de fonctionner via l'interface Centronics.

CR.2 - Init - la valeur du bit zéro correspond à un niveau bas à la sortie Imt# (16) - signal de réinitialisation du matériel de l'imprimante.

CR.1 - Auto LF - une valeur de bit unique correspond à un niveau bas à la sortie Auto LF# (14) - un signal de saut de ligne automatique (LF - Line Feed) à la réception d'un octet de retour chariot (CR - Carriage Return ).

CR.O -Strobe - une seule valeur de bit correspond à un niveau bas à la sortie Strobeff (1) - le signal stroboscopique des données de sortie.

Demande d'interruption matérielle(généralement IRQ7 ou IRQ5) est généré par la chute du signal négatif sur la broche 10 du connecteur d'interface (ACK#) lorsque CR.4 = 1. L'interruption est générée lorsque l'imprimante accuse réception de l'octet précédent.

Procédure de sortie d'octet via l'interface Centronics via un port standard comprend les étapes suivantes (le nombre requis d'opérations sur le bus processeur est indiqué entre parenthèses) :

Sortie d'un octet vers le registre de données (1 cycle IOWR#).

Entrée du registre d'état et vérification de l'état de préparation de l'appareil (bit SR.7 - signal BUSY).

Dès réception de l'état de préparation, la sortie définit le stroboscope de données dans le registre de contrôle et la sortie suivante supprime le stroboscope (2 cycles lOWRff).

Le port standard est hautement asymétrique : alors qu'il y a 12 lignes (et bits) qui fonctionnent normalement comme sortie, seules 5 lignes d'état fonctionnent comme entrée. Si une communication bidirectionnelle symétrique est requise, elle fonctionne sur tous les ports standards mode grignotage - Mode Nibble. Dans ce mode, également appelé Hewlett Packard Bitronics, 4 bits de données sont transmis simultanément, la cinquième ligne est utilisée pour l'établissement de liaison.

L'un des ports informatiques les plus anciens est le port LPT ou port parallèle. Et bien que le port LPT ne soit plus visible sur toutes les cartes mères, les lecteurs pourraient néanmoins être intéressés de savoir de quoi il s'agit.

Tout d’abord, regardons le nom du port. Peut-être que tout le monde ne sait pas ce que signifie l'abréviation LPT. En fait, LPT est l’abréviation de Line Print Terminal. Ainsi, il devient clair que le port LPT était principalement destiné à connecter des imprimantes. C'est pourquoi le port LPT a un autre nom : port d'imprimante. Bien qu'en théorie, d'autres appareils puissent être connectés au LPT.

Le port LPT a une longue histoire. Il a été développé par Centronics (c'est pourquoi ce port est souvent appelé port Centronics), qui fabriquait des imprimantes matricielles avant l'ère du PC, au début des années 1970. Et au début des années 1980, le port LPT a commencé à être utilisé par IBM dans ses ordinateurs et est devenu pendant un certain temps le port standard pour connecter des appareils à haut débit (à l'époque).

Apparition du port parallèle à l'arrière de l'ordinateur

L'interface LPT a existé dans plusieurs éditions. Dans la version originale, le port LPT était unidirectionnel, c'est-à-dire qu'il ne pouvait transmettre des données que dans une seule direction : vers un périphérique. Bien entendu, cette situation ne convenait pas aux utilisateurs, car certaines imprimantes nécessitaient un transfert de données dans les deux sens. Par conséquent, l'interface LPT a ensuite été améliorée à plusieurs reprises jusqu'à ce que sa norme internationale IEEE 1284 soit développée. Conformément à cette norme, l'interface du port parallèle prenait en charge plusieurs modes de fonctionnement et était également compatible avec les normes plus anciennes. De plus, l'interface dans sa version finale prenait en charge des taux de transfert de données relativement élevés - jusqu'à 5 Mb/s.

Comment fonctionne le port parallèle

Le port LPT est dit parallèle car le câble qui y est connecté transmet les données en parallèle, c'est-à-dire simultanément le long de plusieurs conducteurs. Cette propriété distingue un port parallèle d'un autre port d'ordinateur : un port COM série.

Il y a 8 conducteurs qui transmettent les données elles-mêmes dans le câble Centronics. De plus, le câble contient plusieurs lignes à travers lesquelles les signaux de commande sont transmis.

Bien que le port parallèle soit principalement utilisé pour connecter des imprimantes, il existait cependant d'autres utilisations. Tout d'abord, en utilisant le port LPT, vous pouvez connecter directement deux ordinateurs à l'aide d'un câble Interlink spécial. Avant l'utilisation généralisée des cartes réseau Ethernet, une telle connexion, même si elle n'offrait pas à l'utilisateur des vitesses de transfert de données élevées, était néanmoins souvent le seul moyen de connecter deux ordinateurs. Il existe également des clés électroniques conçues pour se connecter au port LPT.

Câble pour le transfert de données entre ordinateurs - Interlink

Comme pour de nombreux autres périphériques de la carte mère, les modes de fonctionnement des ports parallèles peuvent souvent être configurés via la configuration du BIOS. En règle générale, les options du BIOS telles que Parallel Port, Parallel Port IRQ, Parallel Port DMA, etc. sont utilisées à cet effet.

Connecteur de port parallèle de la carte mère et câble Centronics

Le connecteur du port LPT est généralement situé directement sur la carte mère, jusqu'au milieu des années 1990. il était généralement présent sur une multicarte insérée dans un slot d'extension, sur lequel se trouvaient également d'autres ports de l'ordinateur. La sortie du port est un connecteur femelle à 25 broches appelé connecteur DB25.

Multicarte ISA avec LPT (DB25 - « mère ») et un port de jeu à bord.

Pour se connecter à l'imprimante, un câble spécial est utilisé - un câble Centronics. Une extrémité (fiche) du câble Centronics est connectée au port, l'autre (également fiche) est connectée à un connecteur spécial sur l'imprimante. Le dernier connecteur comporte 36 broches. Par conséquent, une caractéristique du câble Centronics est qu’il possède des connecteurs différents des deux côtés.

Apparition du câble Centronics.

Bien que le connecteur du câble de la carte mère soit souvent appelé connecteur Centronics, à proprement parler, le connecteur Centronics n'est qu'un connecteur à 36 broches pour la connexion à l'imprimante et non à la carte mère. Le connecteur du câble permettant de se connecter au port est appelé connecteur Amphénolstacker, du nom du fabricant américain de connecteurs Amphénol qui l'a développé.

Caractéristiques du port parallèle

Étant donné que le port LPT prend en charge le transfert de données parallèle, ce port était considéré dans les premiers PC comme l'un des ports informatiques les plus rapides. La transmission de données sur plusieurs lignes rend l'interface LPT beaucoup plus proche en architecture des bus informatiques. Cependant, cette circonstance impose également une limitation de la longueur du câble qui, en raison des interférences se produisant dans le câble, ne peut excéder 5 m.

La tension maximale utilisée dans les lignes de signal du port est de +5 V. Pour une transmission de données simple, seules dix lignes de signal sont nécessaires - il s'agit de 8 lignes de données, une ligne de signal stroboscopique, c'est-à-dire un signal indiquant que le port est prêt à transmettre des données. , et une ligne occupée . Les lignes restantes sont utilisées pour la compatibilité avec la norme Centronics.

Port LPT de type « femelle » avec numérotation des contacts.

Brochage du connecteur de port parallèle DB25 :

  • 1 – Stroboscope de données
  • 2-9 – Données, bits 0-7
  • 10 – Accusé de réception (Confirmation de l'imprimante)
  • 11 – Occupé
  • 12 – Fin du papier
  • 13 – Sélectionner (Imprimante active)
  • 14 – Alimentation automatique
  • 15 – Erreur
  • 16 – Init (initialisation de l'imprimante)
  • 17 – Sélectionnez l'entrée
  • 18-25 – Terre

Conclusion

Le port LPT est une interface d'ordinateur personnel qui est désormais considérée comme obsolète et ne bénéficie pas d'un support significatif de la part des fabricants de matériel informatique et de logiciels. Cependant, le port parallèle est toujours utilisé avec succès dans de nombreux modèles d'ordinateurs et d'imprimantes plus anciens.

Il est donc temps d'écrire un programme simple illustrant comment lire et écrire des données sur un port LPT. Pour l'instant, nous l'écrirons dans la version console, afin qu'au stade de la compréhension et de l'analyse de ce programme, nous n'ayons pas à « fouiller » dans les profondeurs du code sous Windows (ne vous inquiétez pas, le prochain article le fera être consacré spécifiquement à une application dotée d’une interface visuelle).


Avant de passer à l'écriture d'un programme, nous devons comprendre le port LPT, voir en quoi il consiste et comment nous pouvons l'utiliser à nos propres fins. Si nous parlons au niveau domestique, nous pouvons dire qu'un port LPT est un ensemble de contacts sur lesquels nous pouvons régler la tension à 0 ou +5 V (0 et 1 logiques) à partir du programme ou cela peut être fait par un externe. appareil de l’extérieur.



Voyons quels contacts nous pouvons opérer et lesquels nous ne pouvons pas. Le dessin ci-dessous va nous y aider (il n'a pas été dessiné par moi, l'auteur m'est inconnu. Mais il est très bien, je l'utilise moi-même tout le temps).

La figure montre que les broches du port peuvent être divisées en quatre groupes : "en terre" conclusions. Ils sont marqués en noir (pins 18-25). Tous sont reliés les uns aux autres, vous pouvez donc utiliser n'importe lequel d'entre eux comme terrain pour votre développement.

Les broches du soi-disant registre sont marquées en rouge Données(broches 2 à 9). Par registre, nous entendons (au niveau quotidien) l'association d'un groupe de contacts portuaires LPT. Il y en a 8 dans le registre des données. C'est le registre le plus judicieux - il nous permet, à la fois depuis le programme et depuis un périphérique externe, de définir le 0 ou le 1 logique sur ses contacts, c'est-à-dire c'est bidirectionnel. C'est exactement ce que nous avons utilisé dans notre premier programme. Port.exe- connecté la LED à la 2ème broche du port (comme vous pouvez maintenant le voir, cette broche appartient au registre de données et est son bit zéro) et à la broche 25 (masse), et en utilisant le programme nous avons contrôlé l'alimentation en tension de la broche 2 par rapport au sol. Pour accéder à ce registre, vous devez connaître son adresse : 0x378- en système hexadécimal ou 888 en décimal.


Sur la figure, il est indiqué &H378 - c'est la même chose que 0x378, c'est juste que la première désignation est inhérente au langage Pascal et autres, mais nous écrivons en C.


Se souvenir à nouveau du programme Port.exe, notez que nous avons accédé au registre en utilisant la fonction suivante _outp(Address, 0); , où la variable Adresseétait auparavant défini comme 888. Maintenant, il est clair que nous indiquions par là les fonctions _outp(), que nous souhaitons travailler spécifiquement avec le registre de données.

Continuons à regarder le port. Il reste deux autres registres. Vient ensuite le registre Statut(broches 10-13, 15). Il s'agit d'un registre unidirectionnel. Il ne peut être contrôlé que « de l’extérieur », via un appareil externe (cela signifie modifier les données qu’il contient ; vous pouvez lire depuis n’importe quel registre dans n’importe quelle direction). Il a une adresse 0x379- en système hexadécimal ou 889 en décimal. Et inscrivez-vous Contrôle(contacts 1, 14, 16-17). Il ne possède que 4 contacts et ne peut être contrôlé que par un programme. Son adresse: 890 dans le système décimal.



Voyons maintenant comment les données sont écrites et lues dans les registres du port LPT, c'est-à-dire Comment pouvons-nous définir les broches requises sur 0 ou 1 ?


Écriture/lecture de données dans le registre de données

Voyons donc tout de suite un problème pratique. Je veux la broche numéro 3 du port LPT (bit D1 du registre Données) le 1 logique a été défini (c'est-à-dire pour qu'il y ait +5 V entre lui et la masse) et les broches restantes de ce registre (broches de port 2,4-9) étaient des zéros. Nous écrivons le code :

Adresse internationale = 888 ; données int = 2 ; Out32(Adresse, données);

J'ai utilisé la fonction Sortie32() bibliothèques entrée32.dll, on va s'y habituer, parce que... Nous analyserons d'autres exemples en utilisant cette bibliothèque. Si ce code est exécuté, il s'avère qu'il y a +5 V sur la broche 3 du port et que zéro est suspendu à 2,4-9. Comment est-ce arrivé?

Commençons par comprendre : nous passons le nombre 888 comme premier paramètre à la fonction Out32() Comme vous le savez déjà, il s'agit de l'adresse du registre du port Data LPT. La fonction sait désormais où écrire les données. Ensuite, nous passons le chiffre 2 comme deuxième paramètre, c'est-à-dire valeur à écrire sur le port. Veuillez noter que deux est dans le système de nombres décimaux. Que se passe-t-il ensuite ? Pour une meilleure visualisation du processus, nous convertissons le nombre 2 du système numérique décimal au système binaire. Chaque chiffre d'un nombre binaire, de droite à gauche, est écrit dans l'ordre dans le registre, en commençant par le chiffre de poids faible D0 (broche 2 du port) et en terminant par le chiffre haut D7 (broche 9). Si vous convertissez le nombre 2 de décimal en binaire et ajoutez 8 chiffres au nombre (selon le nombre de chiffres dans le registre), vous obtiendrez 00000010 . Le chiffre zéro d'un nombre binaire est 0 (à l’extrême droite) est écrit dans D0, puis 1 est écrit dans D1. Et ainsi de suite jusqu'à la fin, les 8 chiffres.

Eh bien, êtes-vous un peu fatigué en lisant ? Maintenant, cela deviendra plus clair. Allons au registre Données Notons le nombre 245. Nous écrivons le code :

Adresse internationale = 888 ; données int = 245 ; Out32(Adresse, données);

Encore une fois, nous convertissons 245 en système de nombres binaires et écrivons les chiffres du nombre dans les bits correspondants du registre de droite à gauche. En conséquence, nous obtenons qu'il y a une tension de +5 V sur les broches du port LPT numérotées 2,4,6-9, et de zéro sur les broches 3.5.

Eh bien, maintenant je pense à écrire des données dans le registre Données nous l'avons compris. Il convient de noter que la plage de nombres décimaux pouvant être écrits dans le registre Données est compris entre 0 avant 255 . Notre registre est de 8 bits, ce qui signifie que le nombre maximum de combinaisons de 0 et 1 sur ses broches est de 2 8 -1=256-1=255.


Lecture de données

Lisons maintenant les données précédemment écrites sur le port, à savoir, découvrons les statistiques actuelles du registre Données. Nous voulons savoir quelles broches de registre Données Maintenant, le niveau de tension est élevé et il est faible. Vous vous souvenez ci-dessus, nous avons écrit le numéro 245 dans le port ? Récupérons-le du port maintenant. Nous écrivons le code :

Adresse internationale = 888 ; données entières ; données = Inp32 (Adresse);

Entrée32()- c'est une fonction pour lire les données du port de la bibliothèque entrée32.dll. Le seul paramètre est l'adresse du registre à partir duquel nous voulons lire les données. En sortie, il renvoie un nombre décimal correspondant au contenu actuel du registre. En exécutant ce code, la variable données contiendra le nombre 245. Qu’est-ce que cela signifie ? Pour le comprendre, nous convertissons le nombre 245 de décimal en binaire et nous pouvons affirmer en toute sécurité qu'aux broches du port 2,4,6-9 il y a maintenant +5 V et aux broches 3,5 0 V. (voir figure ci-dessus)


Écriture/lecture de données dans le registre de contrôle

Gérons maintenant le registre de contrôle. Il est unidirectionnel ; seul notre programme peut y écrire des données. Notez plusieurs caractéristiques de ce registre. Premièrement, il ne contient que quatre broches fonctionnelles. Cela signifie que vous pouvez écrire un nombre compris entre 0 et 2 4 -1=16-1=15. Deuxièmement, il présente une particularité très désagréable : certaines de ses sorties sont inversées, c'est-à-dire si vous écrivez 1 sur cette broche, alors elle est définie sur 0. Et vice versa, vous lisez 1, mais en fait il y a 0. Par conséquent, la signification des données écrites et des données lues n'est pas tout à fait évidente. Voici un exemple d'écriture d'un nombre dans le registre de contrôle. Nous écrivons le code :

Adresse internationale = 890 ; données int = 10 ; Out32(Adresse, données);

Et un exemple de lecture :

Adresse internationale = 890 ; données entières ; données = Inp32 (Adresse);

Écriture/lecture de données dans le registre d'état

Je suis enfin arrivé au registre Statut. Il est unidirectionnel, les données ne peuvent y être écrites dispositif externe, c'est à dire. Dans le programme, nous ne pouvons lire que le contenu de ce registre. Après avoir lu les données de Statut, et en les convertissant en nombre binaire, il est tout de suite assez difficile de comprendre ce qui se passe réellement avec les tensions aux sorties de ce registre. Premièrement, il a également des broches inversées, et deuxièmement, les bits de travail sont les nombres 4 à 7 et 0 à 3 ne sont pas utilisés, et donc le nombre est écrit plutôt intelligemment.

La question se pose, comment y installer ces données ? Assez facile. Pour l'instant, vous agirez comme un périphérique externe. Exécutez ce code.

Adresse internationale = 889 ; données entières ; données = Inp32 (Adresse);

Vous obtiendrez un numéro. Maintenant, prenez un conducteur et connectez-le à l'une des broches de terre du port (18-25) avec une broche de registre. Statut(10-13, 15), par exemple avec le dixième. Et relisez. Vous recevrez un numéro différent. Retirez le conducteur. Après lecture, vous obtiendrez le numéro d'origine. Comment ça fonctionne? Initialement, toutes les broches de ce registre ont un niveau de tension élevé de +5 V. Lorsque nous avons connecté l'une de ses broches à la terre, la tension sur celle-ci est devenue nulle, c'est-à-dire zéro logique. Vous pouvez essayer de court-circuiter d'autres broches de registre Statutà la terre, court-circuitez-en plusieurs à la fois.

Il convient de noter que dans de telles expériences avec le registre Statut Une situation pas tout à fait claire se présente avec les autres broches du port LPT. Après la première fermeture des terminaux Statut, les sorties commencent à clignoter Données Et Contrôle. Cela est dû au fait que le port LPT est conçu pour connecter une imprimante et que les broches Statut il est utilisé pour fournir à l'ordinateur certaines informations de service. Modifications des épingles Statut enregistre le pilote système du système d'exploitation. Il réalise également des actions de réponse, qui nous sont observables sous la forme de changements périodiques dans l'état d'autres conclusions. Vous ne pouvez rien y faire. En général, je ferme simplement une ligne de registre au début de mon travail avec le port. Statut au sol et attendez environ une minute jusqu'à ce que le conducteur « se calme ». Après cela, le port est gratuit, et de nouvelles opérations sur le registre Statut ne conduisent pas à des processus incontrôlés dans le port.


© Dmitri Ivanov
2005-2006

L'ordinateur traite les signaux dans des flux parallèles, il lui est donc plus facile de « communiquer » avec des ports externes parallèles plutôt qu'avec des ports externes série. En 1984, le PC IBM incluait pour la première fois un port parallèle. Il a été conçu comme un moyen de connecter des imprimantes matricielles, d'où le nom LPT - Line Printer ou Line Printer Terminal. Plus tard, l'interface USB haute vitesse a commencé à être utilisée pour les imprimantes et le port LPT a commencé à être progressivement remplacé par les spécifications informatiques. Les esprits comparent le LPT à une valise sans poignée - c'est dommage de la jeter et impossible à transporter. Cependant, le « vétéran » est encore capable de beaucoup de choses, si, bien sûr, il est présent dans un ordinateur particulier.

Le connecteur du port LPT possède 25 broches. La norme « de facto » est considérée comme une prise DB-25F dans l'ordinateur et une fiche DB-25M dans le câble de retour (Tableau 4.2). La numérotation des contacts des fiches et des prises est reflétée (Fig. 4.7, a, b).

Tableau 4.2. Disposition du signal dans le connecteur du port LPT à 25 broches

Décodage

Direction

Entrée sortie

Entrée sortie

Confirmation

Préparation

Pas de papier

Transfert automatique

Entrée sortie

Initialisation

Entrée sortie

Sélection d'entrée

Entrée sortie

Riz. 4.7. Vue de face des connecteurs du port LPT 25 broches : a) Prise DB-25F dans l'ordinateur ; b) Branchez le DB-25M dans le câble de connexion.

Initialement, les lignes portuaires LPT étaient des SPP (Standard Parallel Port) unidirectionnelles. Certains d'entre eux fonctionnaient uniquement pour l'entrée, d'autres uniquement pour la sortie, ce qui, en termes d'ensemble de signaux et de protocole d'échange, correspondait à l'interface de l'imprimante Centronics. En 1994, une nouvelle norme d'interface parallèle, IEEE 1284, a été approuvée, fournissant des lignes bidirectionnelles et trois modes de fonctionnement : SPP, EPP (Enhanced Parallel Port), ECP (Extended Capabilities Port).

Les niveaux de signal électrique du port LPT coïncident avec les puces logiques conventionnelles « cinq volts ». Auparavant, les ordinateurs utilisaient des puces tampon TTJl de la série 74LSxx, plus tard des puces CMOS et des LSI, à peu près équivalentes à la série 74ACxx. Dans ce dernier cas, nous pouvons grosso modo supposer que le niveau BAS est de 0,1 à 0,2 V et le niveau HAUT de 4,5 à 4,9 V.

La norme régule une charge de 14 mA pour chaque sortie tout en maintenant une tension d'au moins +2,4 V HIGH et d'au plus +0,4 V LOW. Cependant, sur différentes cartes mères, les tampons de sortie du port LPT peuvent avoir des capacités de charge différentes, y compris celles inférieures à la norme (port « faible »).

Conditions requises pour connecter les câbles connectés au port LPT :

Les fils de signal doivent être associés à un fil GND commun ;

Chaque paire doit avoir une impédance de 56 à 68 Ohms dans la plage de fréquences de 4 à 16 MHz ;

Si un câble plat est utilisé, les fils de signal doivent alterner physiquement avec le fil GND commun (blindages locaux) ;

Le niveau de diaphonie entre les signaux ne dépasse pas 10 % ;

Le câble doit avoir un blindage couvrant au moins 85 % de la surface extérieure. Aux extrémités du câble, le blindage doit être annelé et relié au contact de masse du connecteur ;

Dans le connecteur du câble, vous pouvez souder des résistances série C2-23 (OMJIT-O.125) avec une résistance de 100...300 Ohms sur les broches 1...17 (Fig. 4.8). Cela protégera l'ordinateur des courts-circuits accidentels dans la charge et réduira la « sonnerie » haute fréquence aux bords du signal.

Riz. 4.8. Schéma électrique d'un câble LPT avec résistances « anti-sonnerie ».

Les schémas de connexion de MK à un port LPT peuvent être divisés en trois groupes :

Réception de signaux d'un ordinateur (Fig. 4.9, a...h) ;

Transmettre des signaux à un ordinateur (Fig. 4.10, a...e) ;

Réception/transmission de signaux simultanément (Fig. 4.11, a…e).

Certaines simplifications ont été apportées aux schémas. Le signal d'entrée est principalement « DO » et le signal de sortie est « ASK », bien qu'il puisse y en avoir d'autres répertoriés dans le tableau. 4.2. Sur chaque ordinateur spécifique, les performances des circuits faits maison doivent être vérifiées expérimentalement, ce qui est dû à la présence de ports LPT « forts » et « faibles » en termes de capacité de charge.

Riz. 4.9. Schémas d'entrée des signaux du port LPT vers le MK (début) :

a) la résistance R1 limite le courant d'entrée. Les éléments R2, C1 peuvent être absents, mais ils réduisent la « sonnerie » sur les fronts de signal avec un long câble ;

b) le transistor tampon VT1 inverse le signal. La diode VD1 est facultative, mais elle protège le transistor contre l'application par erreur d'une tension négative importante. Si vous n'installez pas la résistance R2, le circuit restera opérationnel, cependant, lorsque le câble est débranché du port LPT, un faux déclenchement du transistor VT1 dû à des interférences externes et des interférences est possible ;

c) la diode VD1 coupe les interférences et augmente le seuil de réponse du transistor VT1. La résistance R1 ferme de manière fiable le transistor VT1 au niveau BAS du port LPT ;

d) l'élément logique tampon DD1 a une sortie à collecteur ouvert. Les fronts de signal sont formés par les éléments R1, C1. Vous pouvez remplacer l'onduleur DD1 par un répéteur K155LP9 en apportant les modifications appropriées dans le MK et le programme informatique ;

e) Le déclencheur Schmitt DD1 (remplacement - K555TL2) augmente l'immunité au bruit. Plus la résistance des résistances R1, R2 est faible, plus la raideur des fronts du signal est grande. Lorsque le câble du port LPT est déconnecté, la résistance R1 empêche l'entrée de la puce DD1 de « rester en l'air » ;

e) la connexion séquentielle de deux éléments logiques DD11, /)/)/.2 augmente (restaure) la raideur des fronts du signal. La résistance R1 élimine les émissions, les « sonneries » ;

Riz. 4.9. Schémas d'entrée des signaux du port LPT vers le MK (fin) :

g) les données provenant du port LPT sont préalablement placées dans le registre intermédiaire DD1. L'enregistrement s'effectue à un niveau HAUT à l'entrée « C » du microcircuit DD1, le stockage s'effectue à un niveau BAS. Cette solution élimine les interférences, puisque des données aléatoires peuvent être périodiquement émises vers le port LPT, en fonction des pilotes installés sur l'ordinateur. Ils sont éliminés par programme, par exemple en lisant à plusieurs reprises le signal d'entrée des lignes MK ;

h) mise en mémoire tampon du port LPT avec de puissants commutateurs à transistors situés dans la puce DA1 de Texas Instruments. Les résistances R1...R8 peuvent avoir une résistance 10...15 fois inférieure, ce qui vous permet de connecter des puces A4/d'autres composants de l'appareil en parallèle avec les sorties.

Riz. 4.10. Schémas de sortie des signaux du port MK vers le port LPT (début) :

a) connexion directe de la sortie MK sans éléments tampons. Les résistances R1, R2 réduisent la réflexion des signaux dans la ligne. De plus, la résistance R2 protège la sortie MK d'un court-circuit accidentel avec le circuit GND dans les fils du câble de connexion ;

b) Le déclencheur Schmitt DD1 sert de tampon de protection pour MK en cas d'urgence à la sortie (court-circuit ou haute tension) ;

c) la puce DD1 a une sortie à collecteur ouvert, qui la protège des courts-circuits dans les fils et les connecteurs du câble de connexion ;

d) fournir deux signaux antiphase à l'ordinateur. Objectif - nécessité logicielle ou organisation d'un canal de transmission de données de sauvegarde (contrôle) ;

e) optocoupleur sur les éléments HL1, BL1, qui sont utilisés dans les souris d'ordinateur mécaniques. Le KG/transistor amplifie et inverse le signal. Pour un fonctionnement normal de l'appareil, l'ordinateur doit régler la ligne « D8 » sur un niveau ÉLEVÉ.

Riz. 4.11. Circuits de signaux d'entrée/sortie combinés entre les ports MK et LPT (démarrage) :

a) si l'ordinateur règle la ligne « DO » sur un niveau ÉLEVÉ, alors MK en mode sortie peut générer un signal « ASK » via la résistance R1. Si MK est commuté en mode d'entrée, alors l'ordinateur peut lui transmettre des données via la ligne « DO » via la diode VD1, tandis que la résistance interne « pull-up » MK forme un niveau ÉLEVÉ ;

b) le signal du port LPT est entré dans le MK via un inverseur sur le transistor VT1. Dans ce cas, l'ordinateur doit régler la ligne « D2 » sur un niveau HAUT ; Les informations dans MK sont saisies à partir de la ligne « DO » via la résistance R1. La résistance élevée de la résistance R1 découple physiquement les canaux d'entrée et de sortie ;

Riz. 4.11. Circuits de signaux d'entrée/sortie combinés entre les ports MK et LPT (extrémité) :

b) le signal du port LPT est entré dans le MK via un inverseur sur le transistor VT1, tandis que l'ordinateur doit régler le niveau BAS sur la ligne « DO ». Les informations sont saisies dans le MK via les éléments R1, R3, VT2 ;

d) le signal du port LPT est entré dans le MK via un répéteur sur le transistor VT1, et l'ordinateur doit régler la ligne « DO » sur un niveau ÉLEVÉ. Les informations sont saisies dans MK via un répéteur sur la puce DD1\

g) les signaux "D0" ... "D3" sont entrés dans le MK à un niveau BAS sur la ligne "INIT", tandis que l'ordinateur doit configurer les lignes "D4" ... "D7" comme entrées. Dans les paramètres du BIOS de l'ordinateur, vous devez définir le mode bidirectionnel EPP ou ECP pour le port LPT. Les informations sont transmises à l'ordinateur depuis le MK le long des lignes « D4 » ... « D7 » à un niveau ÉLEVÉ sur la ligne « INIT ». La résistance R1 commute les sorties de la puce DD1 à l'état Z lorsque le câble du port LPT est déconnecté ;

e) le signal du MK au port LPT est entré via le répéteur DD1.2, et l'ordinateur doit régler le niveau HAUT sur la ligne « D2 » et le niveau BAS sur la ligne « D5 ». Les informations sont saisies dans le MK via le répéteur DD1.1 à un niveau BAS sur la ligne « D2 ». L'échantillonnage des signaux aux entrées «E1», «E2» du microcircuit DD1 augmente la fiabilité de la transmission des données.



Avoir des questions?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :