Documente Academic
Documente Profesional
Documente Cultură
Porta Paralela
Introduo
Porta Paralela
Pgina 1 de 1
Home ndice
Introduo Modelos de Porta Paralela Extenso do Cabo Paralela Endereos da Porta Paralela Registradores O conector DB25 O conector Centronics 36 pinos Lista dos componentes utilizados para desenvolver os circuitos Classes e funes em C/C++, para implementar seus programas Acessando a Impressora atravs da BIOS Ligando e desligando aparelhos externos atravs da Porta Paralela Recebendo sinais externos atravs da Porta Paralela
INTRODUO
A porta paralela uma interface de comunicao entre o computador e um perifrico. Quando a IBM criou seu primeiro PC (Personal Computer) ou Computador Pessoal, a idia era conectar a essa Porta uma impressora, mas atualmente, so vrios os perifricos que utilizam-se desta Porta para enviar e receber dados para o computador (exemplos: Scanners, Cmeras de vdeo, Unidade de disco removvel e outros). Se voc conhece um pouco de eletrnica e domina uma linguagem de programao como: C/C++/C++Builder, Pascal/Delph ou mesmo o Visual Basic, poder desenvolver um programa que controle um aparelho conectado Porta paralela, ou um programa de transferncia de arquivos entre dois computadores, utilizando um cabo paralelo como meio de transmisso. O seu conhecimento de Eletrnica servir para voc desenvolver sua prpria placa Eletrnica, que ser conectada ao DB25 da porta paralela. Est pgina lhe fornecer conhecimentos sobre a porta paralela, que o far compreender e utiliz-la, de uma maneira no convencional, isto , no somente para ser utilizada com uma impressora, mas tambm como qualquer outro aparelho, que o usurio tenha conhecimento sobre seu funcionamento, desejando control-lo atravs de seu Personal Computer, como diz a IBM. Ateno! A Porta Paralela est ligada diretamente placa me de seu computador. Muito cuidado ao conectar circuitos eletrnicos a essa porta, pois, uma descarga eltrica ou um componente com a polaridade invertida, poder causar danos irreparveis ao seu computador, seja coerente.
www.rogercom.com/pparalela/introducao.htm
1/19
13/01/14
Porta Paralela
TERMO DE RESPONSABILIDADE No me responsabilizo por nenhum dano causado tanto no equipamento, como na montagem/instalao inadequada dos circuitos. *** Boa pesquisa...
www.rogercom.com/pparalela/introducao.htm
13/01/14
Porta Paralela
Endereo da Porta 378 hexadecimal 278 hexadecimal 888 decimal 632 decimal
REGISTRADORES
Utilizando a Porta Paralela conectada a uma impressora, os endereos tero nomes sugestivos, como segue abaixo: Nome Registro de Dados Registro de Status Registro de Controle Endereos LPT1 378h 379h 37Ah Endereos LPT2 278h 279h 27Ah Descrio Envia um byte para a impressora Ler o Status da impressora Envia dados de controle para a impressora
O CONECTOR DB25
O DB25 um conector que fica na parte de trs do gabinete do computador, e atravs deste, que o cabo paralelo se conecta ao computador para poder enviar e receber dados. No DB25, um pino est em nvel lgico 0 quando a tenso eltrica no mesmo est entre 0 0,4v. Um pino se encontra em nvel lgico 1 quando a tenso eltrica no mesmo est acima de 3.1 e at 5v. A figura abaixo mostra o conector padro DB25, com 25 pinos, onde cada pino tem um nome que o identifica:
DB25 que fica atrs do Micro
www.rogercom.com/pparalela/introducao.htm
3/19
13/01/14
Porta Paralela
www.rogercom.com/pparalela/introducao.htm
4/19
13/01/14
Porta Paralela
Nmero do Pino
1 2 ao 9 10 11 12 13 14 15 ao 18
www.rogercom.com/pparalela/introducao.htm
Descrio Strob
Dados (D0...D7)
13/01/14
Porta Paralela
19 ao 30 31 32 33 34 a 35 36
GROUND
Init Error
GROUND No conectato
Select In
Descrio
Componentes
LEDs
Resistores Diodos
Capacitores
Circuitos Integrados
www.rogercom.com/pparalela/introducao.htm
6/19
13/01/14
Porta Paralela
Motor de passo
Transistores
Rel
Foto-transistors e sensores
Matriz de contato
Distplay
www.rogercom.com/pparalela/introducao.htm
7/19
13/01/14
Porta Paralela
13/01/14
Porta Paralela
//--------------------------------------------------------------------------class TBinario { public: char * __fastcall IntToStrBin(unsigned short int num); }; //--------------------------------------------------------------------------char * __fastcall TBinario::IntToStrBin(unsigned short int num) { unsigned short int BYTE[8] = { 0x01,0x02,0x04,0x08, 0x10,0x20,0x40,0x80 }; unsigned short int cont,bit=7; static char buf[10]; //para armazenar a string de nmeros binrios. for( cont = 0; cont <= 7; cont++ ) { if( (num & BYTE[cont]) == BYTE[cont] ) buf[bit] = '1'; else buf[bit] = '0'; bit--; } buf[8] = NULL; return(buf); }
J para desenvolver programas no Sistema Operacional MS-DOS, utilize as funes descritas abaixo, encontradas nos compiladores da Borland com: Turbo C e o Borland C++.
Funes para serem compiladas em 16 bits Funes dos compiladores Turbo C ou C++Borland(R) ------------------------------------------------------------------------------Ler um byte de uma Porta do computador: unsigned char inportb(int portid); Onde: portid o endereo da porta que se quer receber um byte. Retorno: O byte lido da porta capturado assim: unsigned char RetByte = inportb(nmero_da_porta_que_se_quer_ler); ------------------------------------------------------------------------------Envia um byte para uma Porta do computador: void outportb(int portid, unsigned char value ); Onde: portid o endereo da porta que se quer enviar um byte. value um byte a ser enviado para a porta.
www.rogercom.com/pparalela/introducao.htm
9/19
13/01/14
Porta Paralela
13/01/14
Porta Paralela
CIRCUITO-1 A princpio o objetivo do circuito-1 de ligar e desligar oito LEDs, conectados atravs de uma cabo Porta Paralela. No esboo abaixo, observe que o terminal do catodo (K) dos LEDs esto ligados aos terminais dos resistores, que estes por si, esto ligados atravs do cabo aos pinos do DB25. Se invertidos, o circuito no funcionar. Observe a enumerao da pinagem do conector DB25. Circuito-1
Lista de componentes: 1 (um) Cabo Paralelo - o mesmo utilizado pela impressora; 8 (oito) Resistores (R1 a R8) todos de 470 ohm (amarelo, violeta e marrom); 8 (oito) LEDs (L1 a L8) comuns de qualquer cor. Geral: fios, fero de soldar, solda etc. Cdigo fonte em C/C++ O programa abaixo pode ser compilado e executado para acender e apagar os LEDs do circuito-1.
//www.rogercom.com //rogercom@rogercom.com //-----------------------------------------------------------------------------------------------------------#include <stdio.h> #include <conio.h> #include <dos.h> #define LPT1 0x378 int main(void) { unsigned char Valor=128; //Em binrio: 10000000 while ( Valor > 0 ) { outportb(LPT1, Valor); // Envia para a Porta LPT1 printf("\nPressione uma tecla para ascender o prximo
www.rogercom.com/pparalela/introducao.htm 11/19
13/01/14
Porta Paralela
LED..."); getch( ); Valor = Valor >> 1; //A cada passagem, o bit 1 movido para a direita } }
Este programa, envia Porta Paralela oito bytes, um a cada vez que o usurio pressionar uma tecla. A sequncia de bytes geradas vista na tabela abaixo:
Decimal Hexadecimal 128 64 32 16 8 4 2 1 80 40 20 10 8 4 2 1 Binrio 10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001 Pino/Fio ativo (5V) 9 - D7 8 - D6 7 - D5 6 - D4 5 - D3 4 - D2 3 - D1 2 - D0 Cada bit do byte enviado Porta Paralela est relacionado com um pino do DB5, e um fio do cabo paralelo, fisicamente. Ao enviar um byte, que o(s) bit(s) esteja(m) ligado(s) ou desligado(s), os LEDs acende(ro) ou apaga(ro) conforme os estados dos bits. Comentrio
Para saber como o computador agrupa os bits num byte, observe o esquema abaixo: BYTE
No esquema acima observe que cada nibble equivale a 4 bits; e a contagem dos bits feita da direita para a esquerda (0,1,2,3...).
CIRCUITO-2 Com o circuito-2, voc pode controlar atravs da Porta Paralela mais quatro aparelhos eletro/eletrnico, enviando sinais para o registrador 37Ah. Ao enviar um byte para este registrador, mantenha os 4 ltimos bits (nibble alto) inalterados, para no interferir no registrador 378h. Quando for trabalhar com o endereo do registrador 37Ah, tenha sempre em mente que para ativar os sinais Slct In, AutoFeed e Strob, ser necessrio colocar os bits em 0 (zero), porque eles trabalham de forma invetida, 0 (zero) ativa, 1 (um) desativa. Somente o Init trabalha na sua forma normal.
www.rogercom.com/pparalela/introducao.htm 12/19
13/01/14
Porta Paralela
Os bits do byte de CONTROLE tambm so conhecidos como; C3 (Slct In), C2 (Init), C1 (Auto Feed) e C0 (Strob). A letra C significa registrador de CONTROLE, e o nmero significa a posio do bit no byte; juntos, formam um nome sugestivo para os sinais. OBS.: Quando o nome de um bit de Controle estiver com uma linha em cima, indica que o sinal ser ativo com 0 (zero). __ __ __ Ex.: C3 (Slct In), C1 (Auto Feed) e C0 (Strob).
Tabela descritiva dos sinais de CONTROLE
__ __ __ C3 C2 C1 C0 Descrio/nmero dos nenhum pino pinos: relacionado 17 16 14 1 Posio dos bits: Byte em binrio: Byte em Decimal: 7 6 5 4 0 0 0 0 3 1 15 2 1 1 1 0 1
Circuito-2
Lista de componentes: 1 (um) Cabo Paralelo - o mesmo utilizado pela impressora; 4 (quatro) Resistores (R1 a R4) todos de 470 ohm (amarelo, violeta e marrom); 4 (quatro) LEDs (L1 a L4) comuns de qualquer cor. Geral: fios, fero de soldar, solda etc. Cdigo fonte em C/C++. O programa abaixo testa o circuito-2. O seu funcionamento simples. Ao execut-lo, em primeiro lugar ser enviado um byte Porta Paralela que ligar todos os LEDs. Em seguida voc pressionar uma tecla para enviar mais outro byte, agora este ligar somente o LED 1 e assim sucessivamente, at seja enviado o ltimo byte, que apagar todos os LEDs.
//www.rogercom.com //rogercom@rogercom.com
www.rogercom.com/pparalela/introducao.htm 13/19
13/01/14
Porta Paralela
//-----------------------------------------------------------------------------------------------------------#include <stdio.h> #include <conio.h> #include <dos.h> #define BIT0LIGALED1 3 // 0000 1010 #define BIT1LIGALED2 15 // 0000 1001 #define #define #define #define BIT2LIGALED3 9 // 0000 1111 BIT3LIGALED4 10 // 0000 0011 LIGATODOS 4 // 0000 0100 DESLIGATODOS 11 // 0000 1011
int main(void) { outportb(0x37A,LIGATODOS); //Liga todos os LEDs getch(); outportb(0x37A,BIT0LIGALED1); //Liga LED 1 getch(); outportb(0x37A,BIT1LIGALED2); getch(); outportb(0x37A,BIT2LIGALED3); getch(); outportb(0x37A,BIT3LIGALED4); getch(); outportb(0x37A,DESLIGATODOS); //Desliga todos os LEDs }
CIRCUITO-3 A princpio, o objetivo do circuito-3, de ligar e desligar aparelhos eletro/eletrnicos como: motores, portas e portes eltricos, fechaduras eltricas, rdios, televises, etc. Mas voc pode muito bem atravs de um programa de computador controlar braos de robs, temporizadores, controles automticos e muito mais.
Circuito-3
www.rogercom.com/pparalela/introducao.htm
14/19
13/01/14
Porta Paralela
No circuito acima, o chip 74LS541 usado para proteger a Porta Paralela de altas correntes. Ele alimentado com 5v, diferente da outra parte do circuito que controla o rel, que precisa de 12v para ser acionado. Os contatos do rel devem suportar 220v/10A, para que voc possa acionar aparelhos de potncia. Neste circuito voc pode controlar at oito aparelhos simultaneamente, a partir das sadas S1 a S8. Se voc desejar controlar mais que um aparelho, adicione mais circuitos, idnticos ao da sada S1, s demais sadas (S2 a S8). Ateno! O circuito acima trabalha ligado a Rede eltrica 110/220v. Tome muito cuidado ao conectar os componentes, um fio ligado na posio errada fatal, tanto para voc como para seu computador. Seja coerente, se voc no conhece o suficiente de eletro/eletrnica, solicite a ajuda de um profissional. Lista de componentes: 1 (um) Cabo Paralelo - o mesmo utilizado pela impressora; 1 (um) LED verde; 1 (um) diodo 1N4148; 1 (um) Resistor R1: 2,2K ohm (vermelho, vermelho e vermelho); 1 (um) Resistor R2: 470 ohm (amarelo, violeta e marrom); 1 (um) Transstor BD 137; 1 (um) Circuito integrado buffer 74LS541; 1 (um) Rel 12 volts na bobina - cargas at 220v/10A 1 (uma) fonte de alimentao estabilizada de 5 a 12volts; Geral: fios, fero de soldar, solda etc.
www.rogercom.com/pparalela/introducao.htm
15/19
13/01/14
Porta Paralela
A Porta Paralela, no modo padro, tm cinco entradas. Isso til quando voc precisa capturar sinais do mundo externo para dentro do computador. Como por exemplo, saber se um sensor esta ativo ou no; se um alarme foi disparado, etc. As cinco entradas atravs do conector DB25 so: Ack no pino 10, Busy no pino 11, Paper end no pino 12, Slct out no pino 13 e Error no pino 15. Portanto voc poder enviar para o computador cinco bits de uma s vez. Os bits do byte de STATUS tambm so conhecidos como; S7 (Busy), S6 (Ack), S5 (Paper end), S4 (Slct out), e S3 (Error). A letra S significa registrador de STATUS, e o nmero significa a posio do bit no byte; juntos, formam um nome sugestivo para os sinais. OBS.: Quando o nome de um bit de Status estiver com uma linha em cima, indica que o sinal ser ativo com 0 (zero). __ Ex.: S7 (Busy). Usando as funes inportb() ou Recebe() da classe TPorta, j comentadas nesta pgina, voc poder ler o registrador de Status da Porta Paralela, e saber se o sinal em um determinado pino est alto ou baixo (0-zero ou 1-um) no sistema binrio. As funes inportb() e Recebe() lem um byte atravs da Porta Paralela. Se voc quiser saber se um determinado pino est com o sinal alto ou baixo, ter de converter este byte em binrio para saber o estado do mesmo. Nem todos os bits do byte recebido atravs das funes inportb() ou Recebe() so vlidos, como eu j mencionei, so somente cinco as entradas no registrador de Status da Porta Paralela, e cada entrada est relacionada com um bit. Ao ler o registrador de Status, os bits nas posies 0, 1 e 2 no devem ser levados em conta, porque no esto relacionados com nenhum pino do DB25, mesmo assim far parte do byte recebido. A tabela abaixo mostra o significado de cada bit do byte recebido, atravs das funes inportb( ) ou Recebe( ), usando o Circuito 4 conectado Porta Paralela. Observe que os bits, Ack, Paper end, Slct out e Error, trabalham de maneira normal, diferente de Busy, que s ativado quando tiver um sinal 0 (zero) no pino 11:
Tabela descritiva dos sinais de STATUS
__ S7 S6 S5 S4 S3 Nenhum pino relacionado Descrio/nmero dos nestas pinos: posies do byte 11 10 12 13 15 Byte lido em binrio: Byte lido em Decimal: 0 1 1 1 1 126 1 1 0
CIRCUITO-4 Com o circuito-4 conectado Porta Paralela voc poder enviar sinais para dentro de seu computador atravs das entradas E1 a E 5. Para enviar um bit atravs da entrada E1, ligue-a direto ao negativo da fonte de
www.rogercom.com/pparalela/introducao.htm 16/19
13/01/14
Porta Paralela
alimentao (0v), ou instale um interruptor para ficar mais prtico. Como o circuito abaixo utiliza um Circuito Integrado buffer, que tem o poder de amplificar o sinal recebido, voc poder estender os cabos conectados as entradas (E1 a E5) a mais ou menos 20m de distncia. Faa testes.
Circuito-4
Ateno! Para enviar dados para dentro de seu computador atravs do circuito acima, use as entradas E1 a E5, com tenso eltrica negativa (0V) da fonte de alimentao em uso. Para enviar um bit com valor (1), ligue a respectiva entrada ao negativo. Para enviar um bit com valor (0), desligue a respectiva entrada do negativo. Lista de componentes: 1 (um) Cabo Paralelo - o mesmo utilizado pela impressora; 5 (cinco) Capacitores cermicos de (C1 a C5) todos de 100nF; 1 (um) Circuito Integrado 74LS541 (buffer); 1 (uma) fonte de alimentao estabilizada de 5 volts; Geral: fios, fero de soldar, solda etc. Cdigo fonte em C/C++. O programa abaixo, l a Porta Paralela LPT1 ininterruptamente enquanto nenhuma tecla seja pressionada, e exibe na tela do computador, o valor recebido em decimal.
//www.rogercom.com //rogercom@rogercom.com //-----------------------------------------------------------------------------------------------------------#include <stdio.h> #include <conio.h> #include <dos.h> int main(void)
www.rogercom.com/pparalela/introducao.htm 17/19
13/01/14
Porta Paralela
{ unsigned char RetByte; //Para armazenar o valor recebido da Porta Paralela. while ( ! kbhit( ) ) //Faz enquanto nenhuma tecla for pressionada. { RetByte = inportb(0x379); //Ler um byte da Porta Paralela (0x379)LPT1. printf("%u\n",RetByte); } }
Cdigo fonte em C/C++. O programa abaixo, foi escrito para o Sistema Operacional MS-DOS, mas pode ser adaptado para outros sistemas. Ele l a Porta Paralela LPT1 ininterruptamente enquanto nenhuma tecla for pressionada, e exibe na tela do computador o estado de cada bit do byte recebido a cada ciclo do lao while().
//www.rogercom.com //rogercom@rogercom.com //-----------------------------------------------------------------------------------------------------------#include <stdio.h> #include <conio.h> #include <dos.h> #define BIT0 0x01 // No usado #define BIT1 0x02 // No usado #define BIT2 0x04 // No usado #define BIT3 0x08 // Error #define BIT4 0x10 // Slct out #define BIT5 0x20 // Paper End #define BIT6 0x40 // Ack #define BIT7 0x80 // Busy int main(void) { int x=10, y=5; //Coluna e Linha do vdeo unsigned char Byte; //Para armazenar o byte recebido da Porta Paralela clrscr(); gotoxy(30,1); printf("RECEBENDO SINAIS..."); gotoxy(30,20); printf("Pressione uma tecla para sair..."); gotoxy(x, y); printf("Bit 3 - Error....:"); gotoxy(x,y+1); printf("Bit 4 - Slct out.:"); gotoxy(x,y+2); printf("Bit 5 - Paper End:"); gotoxy(x,y+3); printf("Bit 6 - Ack:.....:"); gotoxy(x,y+4); printf("Bit 7 - Busy.....:"); while ( ! kbhit() ) //Executa enquanto nenhuma tecla for pressionada. { Byte = inportb(0x379); //Ler um byte da Porta Paralela if((Byte & BIT3) == 0){ // Error: 0000-1000 gotoxy(x+20,y); printf("INATIVO"); }else { gotoxy(x+20,y); printf("ATIVO ");
www.rogercom.com/pparalela/introducao.htm 18/19
13/01/14
Porta Paralela
} if((Byte & BIT4) == 0){ // Slct out: 0001-0000 gotoxy(x+20,y+1); printf("INATIVO"); }else { gotoxy(x+20,y+1); printf("ATIVO "); } if((Byte & BIT5) == 0){ // Paper end: 0010-0000 gotoxy(x+20,y+2); printf("INATIVO"); }else { gotoxy(x+20,y+2); printf("ATIVO "); } if((Byte & BIT6) == 0){ // Ack : 0100-0000 gotoxy(x+20,y+3); printf("INATIVO"); }else { gotoxy(x+20,y+3); printf("ATIVO "); } if((Byte & BIT7) == 0){ // Busy: 1000-0000 gotoxy(x+20,y+4); printf("INATIVO"); }else { gotoxy(x+20,y+4); printf("ATIVO "); } } clrscr(); }
http://w w w .rogercom.com Copyright, 1999-200 6 ROGERCOM - Antonio Rogrio Messias - rogercom@rogercom.com Todos os Direitos Reservados - All Rights Reserved.
www.rogercom.com/pparalela/introducao.htm
19/19