BluePink BluePink
XHost
Servere virtuale de la 20 eur / luna. Servere dedicate de la 100 eur / luna - servicii de administrare si monitorizare incluse. Colocare servere si echipamente de la 75 eur / luna. Pentru detalii accesati site-ul BluePink.
LABORATOR

Controlul portului paralel

  << Back

Portul paralel este de departe cea mai populara interfata a calculatorului. Acest port a fost multa vreme nereglementat de vreun standard, abia începând din 1994 transferul pe acest port a fost reglementat de standardul IEEE 1284.

Acesta defineste comunicatia paralela bidirectionala de mare viteza între calculatorul PC si perifericele externe.

Initial portul paralel a fost proiectat în vederea conectarii la calculator a imprimantelor, dar poate fi folosit si ca un port de intrare/iesire de uz general, pentru cuplarea la calculator a oricarui dispozitiv extern (care se potriveste caracteristicilor de intrare/iesire ale portului).

Portul paralel poate fi identificat în BIOS ca LPT1, LPT2, LPT3 si i se poate seta o adresa si o întrerupere. Astfel, portul LPT1  poate primii adrese în domeniul 378h – 37Fh, iar LPT2 în domeniul 278h – 27Fh .

  Portul paralel utilizeaza un conector mama DB-25S aflat pe panoul din spate al calculatorului. Acesta prezinta 25 de pini din care 17 de semnal si 8 de masa. Pinii de semnal sunt împartiti în : pini de control (4), pini de stare (5), pini de date (8). În tabelul alaturat sunt prezentate semnalele portului paralel standard.

Numarul pinului

Tipul semnalului

Directie (în/out)

Registru

1

nStrobe

In / Out

Control

2

Data 0

Out

Data

3

Data 1

Out

Data

4

Data 2

Out

Data

5

Data 3

Out

Data

6

Data 4

Out

Data

7

Data 5

Out

Data

8

Data 6

Out

Data

9

Data 7

Out

Data

10

nAck

In

Status

11

Busy

In

Status

12

Paper Out / Paper End

In

Status

13

Select

In

Status

14

nAuto - Line feed

In / Out

Control

15

nError / nFault

In

Status

16

nInitialize

In / Out

Control

17

nSelect-Printer / nSelect-In

In / Out

Control

18 - 25

Împamântare

Gnd

-

În continuare sunt prezentate doua aplicatii ce utilizeaza portul paralel. În ambele cazuri testarea s-a realizat cu ajutorul unei placi de test . (vezi figura 1).

 

Figura 1. Placa de test

Prima aplicatie presupune crearea unui program în mediul de dezvoltare LabWindows/CVI, prin a carei interfeta grafica se comanda cele 8 linii de date ale portului paralel. Aplicatia realizeaza aprinderea sau stingerea ledurilor de pe placa de test. Interfata aplicatiei este prezentata în figura 2. 332 239

 

Figura 2. Aplicatie comanda port paralel

 A doua aplicatie este o interfata grafica (vezi figura 3) ce a fost realizata în mediul de dezvoltare Matlab7 si care prin intermediul portului paralel comanda deplasarea controlata a unui motor pas cu pas. Comanda celor 4 bobine ale motorului pas cu pas a fost simulata initial pe placa de test si apoi pe un motor pas cu pas. Datorita preciziei sale motorul pas cu pas este folosit cu precarere în cazul robotilor, dar se întâlneste si în constructia unitatii de discheta si chiar a celei de CD-ROM.

 

   Alaturi este prezentat o parte din codul sursa în Matlab, si anume cel pentru comanda motorului pas cu pas la dreapta si respectiv la stânga.

Pentru mai multe amanunte puteti contacta autorii.

% --- Executes on button press in pushbutton1.

% ================================================

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

pasi=get(handles.edit1,'STRING');

pasin=STR2DOUBLE(pasi);

if (pasin==0)

%set(handles.edit1,'string',['nu e text'])

set(handles.edit1,'string',['0']);

else

dio=digitalio('parallel',1);

addline(dio,0:7,'out');

x=0;

for i=1:pasin

x=x+1;

set(handles.activex3,'value',i);

if x==5

x=1;

end;

if x==1

set(handles.activex1,'value',i);

putvalue(dio.line(1),1);

putvalue(dio.line(1),0);

elseif x==2

set(handles.activex1,'value',i);

putvalue(dio.line(2),1);

putvalue(dio.line(2),0);

elseif x==3

set(handles.activex1,'value',i);

putvalue(dio.line(3),1);

putvalue(dio.line(3),0);

elseif x==4

set(handles.activex1,'value',i);

putvalue(dio.line(4),1);

putvalue(dio.line(4),0);

end;

end;

set(handles.edit1,'string',['0']);

end;

 

% --- Executes on button press in pushbutton2.

% ================================================

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

pasi=get(handles.edit1,'STRING');

pasin=STR2DOUBLE(pasi);

if (pasin==0)

%set(handles.edit1,'string',['nu e text']);

set(handles.edit1,'string',['0']);

else

dio=digitalio('parallel',1);

addline(dio,0:7,'out');

x=5;

for i=1:pasin

x=x-1;

if x==0

x=4;

end;

if x==1;

set(handles.activex1,'value',i);

putvalue(dio.line(1),1);

putvalue(dio.line(1),0);

elseif x==2

set(handles.activex1,'value',i);

putvalue(dio.line(2),1);

putvalue(dio.line(2),0);

elseif x==3

set(handles.activex1,'value',i);

putvalue(dio.line(3),1);

putvalue(dio.line(3),0);

elseif x==4

set(handles.activex1,'value',i);

putvalue(dio.line(4),1);

putvalue(dio.line(4),0);

end;

end;

set(handles.edit1,'string',['0']);

end ;

  Pentru mai multe amanunte puteti contacta autorii

Bibliografie

1. www.mathworks.com

2.Mircea Popa, Marius Marcu - "Porturile paralel si serie ale calculatorului PC" ; Editura Orizonturi Universitare, Timisoara 2001;

  Ing. Buzera Marius, Ing. Stefan Viorel ; buzeram@rdslink.ro

Pentru mai multe amanunte puteti contacta autorii.

<< Back