![]() |
Note della Tabella:
Ma per le applicazioni che faremo noi non ci servirà sapere tutto questo, infatti ci interessano solo i bit di data ovvero dal pin 2 al 9 (e logicamente anche quelli di massa 18-25), ma prima di iniziare a fare il circuito bisogna dire che se usiamo come sistema operativo windows xp non riusciremo a comandare la porta parallela, a meno che non la "sblocchiamo" e per sbloccarla bisogna installare un programma che ci creerà dei file .DLL (scaricabile gratutitamente dal sito www.andreatv1991.altervista.org nella sezione programmi, e si chiama "configura lpt1"); ma non è finita qui, infatti, per poter usare questi file attraverso VB bisogna creare un modulo, e chiamarlo "DLPortIO".bas in cui scriverete quanto segue:
Public Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
Public Declare Function DlPortReadPortUshort Lib "dlportio.dll" (ByVal Port As Long) As Integer Public Declare Function DlPortReadPortUlong Lib "dlportio.dll" (ByVal Port As Long) As Long Public Declare Sub DlPortReadPortBufferUchar Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long) Public Declare Sub DlPortReadPortBufferUshort Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long) Public Declare Sub DlPortReadPortBufferUlong Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long) Public Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte) Public Declare Sub DlPortWritePortUshort Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Integer) Public Declare Sub DlPortWritePortUlong Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Long) Public Declare Sub DlPortWritePortBufferUchar Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long) Public Declare Sub DlPortWritePortBufferUshort Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long) Public Declare Sub DlPortWritePortBufferUlong Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long)
con questo modulo, potremo andare a scrivere e a leggere BYTE nella parallela.
Adesso siamo pronti per provare a fare un piccolo programma che accenda otto led (guardare schema sotto). Per iniziare carichiamo il modulo "DLPortIO.bas" (a noi servirà solo la settima riga, volendo tutto il resto possiamo eliminarlo) perchè con questa riga possiamo mandare un numero compreso tra 0 e 255 alla porta parallela, poi apriamo il form e creiamo 2 pulsanti uno lo chiameremo "TUTTI_OFF" (e serverà a spegnere tutti i led) e l'altro "TUTTI_ON" (che servirà ad accenderli tutti) poi scriveremo nel code:
Private Sub TUTTI_OFF_Click()
DlPortWritePortUchar 888, 0 End Sub Private Sub TUTTI_ON_Click() DlPortWritePortUchar 888, 255 End Sub Adesso proviamo a mandarlo in esecuzione e possiamo notare che tutti gli 8 led collegati alla parallela (guardare schema sotto) si accenderanno.
Come possiamo vedere il programma va a chiamare la settima riga del modulo "DLportIO"(che serve a mandare in uscita un BYTE che scriveremo in decimale dopo la virgola)poi che c’è un 888, questo numero significa che vogliamo comandare la porta parallela, se noi non lo scriviamo il PC non capirà cosa vogliamo comandare e ci darà errore; guardando il codice, oltre al numero 888 ci sono, nella sub TUTTI_OFF uno 0 e nella sub TUTTI_ON un 255, per capire a cosa servono, basti pensare agli 8 pin come un byte, ovvero così
quindi significa che quando premo il tasto TUTTI_OFF il pc converte il numero decimale 0 in binario, quindi
se guardo adesso i led collegati alla parallela li vedo tutti spenti.
Quando invece premerò il pulsante TUTTI_ON il pc converte il 255 in binario, quindi
se guardo adesso i led collegati alla parallela li vedo tutti accesi. Se invece andassimo a cambiare quel 255 in un 3 cosa succederà??? semplice, il pc lo convertirà in binario, quindi
guardando i led collegati alla parallela vedo solo i primi due accesi.
e se invece andassimo a cambiare lo 0 con un 127??? il pc lo convertirà in binario, quindi
guardando i led si accenderanno tutti i led tranne l'ultimo
SCHEMA PER PILOTARE 8 LED
Volevo chiarire che le resistenze sono tutte da 330 ohm, ma vanno anche benissimo da 220 ohm 390 ohm, cambierà solo la luminosità del led.
Per comandare 8 relè al posto dei led basta sostituire al posto dei led + resistenza lo schema qui sotto... da notare: +vcc deve essere data da un alimetazione esterna,(naturalmente se è 5 volt anche il relè deve essere da 5 volt), e deve essere assolutamente messo il diodo di ricircolo, altrimenti il transistor si rompe.
Spero di essere stato abbastanza chiaro, ma adesso tocca a voi, con un po' di imaginazione potete creare tutto quello che volete!!!
La tabella qua sotto riassume la pedinatura e le funzioni dei vari segnali sul connettore lpt (per quanto riguarda la centronics cambia solo la pedinatura)
|
|
|
Lo staff di www.grix.it non si assume responsabilità sul contenuto di questa pagina. |
|
|
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
![]() |