Home Programmering Parallel port programmering
Parallel port programmering PDF Skriv ut E-post
Skrevet av Jens Christoffersen   
torsdag 17. september 2009 09:15
Artikkelindeks
Parallel port programmering
LED-panel
C- program
Video
Alle sider

VÆR FORSIKTIG! KRETSKORT OG UTSTYR KAN BLI SKADET!

 

Parallel port programmering er stas.

Parallel port programmering er gøy.

Med parallelporten kan man gjøre mye rart. Man setter de forskjellinge pinnene til enten high eller low. Men før man begynner, trenger man en kort innføring i paralellporten.

 

Addressen er 3bc, 378 eller 278. Det avgjør BIOS i PC'n. Jeg har satt min addresse til 3bc.

 

 

Porten har 25 pinner:

  1. nStropbe -inn/ut
  2. Data 0 - ut
  3. Data 1 - ut
  4. Data 2 - ut
  5. Data 3 - ut
  6. Data 4 - ut
  7. Data 5 - ut
  8. Data 6 - ut
  9. Data 7 - ut
  10. nAck - inn
  11. Busy - inn
  12. Paper out/Paper End - inn
  13. Select - inn
  14. nAuto/Linefeed - inn/ut
  15. nError/nFault - in
  16. nInitialize - inn/ut
  17. nSelect-Printer/NSelect-In - inn/ut
  18. Ground
  19. Ground
  20. Ground
  21. Ground
  22. Ground
  23. Ground
  24. Ground
  25. Ground

Som du ser, så er pin 2-9 data pin ut, 18-25 er ground. Det er disse vi skal konsentrere oss om.

 

 


 

 

For å sjekke at vi sender de rette signalene til de rette pinnene har jeg laget et lite hjelpeverktøy, med noen LED. Disse lyser eller blinker alt ettersom hvilke signaler vi sender.

 

 

Den andre enden av ledningene stikker vi inn i parallelporten. LED 1 til pin 2, LED 2 til pin 3 osv. Den siste stikker vi inn i pin nr 18, som er ground. Vær forsiktig med hva du gjør, så ikke du ødlegger noe.

 

 


 

Det lille c programmet som liver opp lysene er dette:

 

 

/*
Program for å lyse opp LEDs i en liten krets
Jens Christoffersen
2009
*/

// includes
#include
#include
#include
#include
#include

// definitions
#define base 0x3bc        // parallel port address
#define sleeping 1000000    // time for led to light

main(int argc, char **argv)
{
if (ioperm(base,1,1))    // open the parallel port
fprintf(stderr, "Couldn't get the port at %x\n", base), exit(1);    // error mesg if not open

outb(0, base);            // set all pins to 0 = low

outb(1, base);        // outb = write, 1 = send 1/high to pin 2, base = par port add 3bc
printf ("Pin 2 set to high.\n");    // mesg to screen
usleep(sleeping);    // wait for 1 sec

outb(2, base);
printf ("Pin 3 set to high.\n");
usleep(sleeping);

outb(4, base);
printf ("Pin 4 set to high.\n");
usleep(sleeping);

outb(8, base);
printf ("Pin 5 set to high.\n");
usleep(sleeping);

outb(16, base);
printf ("Pin 6 set to high.\n");
usleep(sleeping);

outb(32, base);
printf ("Pin 7 set to high.\n");
usleep(sleeping);

outb(64, base);
printf ("Pin 8 set to high.\n");
usleep(sleeping);

outb(0, base);            // set all pins to 0 = low
return 0;
}

 

Siden jeg bare hadde en kat 5 kabel tilgjenelig, har jeg utelatt den siste pinnen. Koden for den ville være:

 

outb(128, base);

printf(Pin 9 set to high.\n");

usleep(sleeping);

 

Dette programmet har jeg kompilert med kommandoen:

 

gcc -O light-led.c -o light-led

 

(Jeg har en Ubuntu 9.04 installasjon med build-essentials pakken installert)

 

 



Her ligger det en liten video av vidunderet.

 

Link til video

 

 

 

Lykke til

Comments (0)
Write comment
Your Contact Details:
Comment:
[b] [i] [u] [url] [quote] [code] [img]   
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
Sist oppdatert lørdag 30. januar 2010 07:38
 
Kopirett © 2010 nerdegutta.org. Alle rettigheter reservert.
Joomla! er fri programvare utgitt under GNU/GPL License.