Está en la página 1de 20

MANEJO DEL PUERTO PARALELO

UNIVERSIDAD TECNICA DE AMBATO

FACULTAD DE INGENIERIA EN SISTEMAS ELECTRONICA E


INDUSTRIAL

CARRERA DE INGENIERIA EN ELECTRONICA Y COMUNICACIONES

“INTERFAZ DE PC”
Modulo

PUERTO PARALELO

TEMA:

“SEMAFORO CON EL SOFTWARE NETBEANS USANDO EL PUERTO


PARALELO”

INTEGRANTES:

 David Acurio
 Cristian Almagro
 Oscar Arias
 Roberto Murillo
 Luis Sánchez
AMBATO-ECUADOR

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 1
MANEJO DEL PUERTO PARALELO

INFORME DEL PROYECTO

I. TEMA:

“SEMAFORO CON EL SOFTWARE NETBEANS USANDO EL PUERTO


PARALELO”

II. OBJETIVOS:

OBJETIVO GENERAL

 El objetivo de este proyecto es desarrollar una interfaz de control para el


funcionamiento de un semáforo mediante comunicación con puerto paralelo
db25 que permita desarrollar su funcionamiento, lectura y transmisión de
datos.

OBJETIVOS ESPECIFICOS:

 Realizar código para la implementación del semáforo por medio de puerto


paralelo mediante el uso del software netbeans
 Diseñar una interfaz gráfica que permita el control de un semáforo
mediante el uso del puerto paralelo db25.
 Implementar el circuito de control que permita el funcionamiento del
semáforo.

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 2
MANEJO DEL PUERTO PARALELO

III. RESUMEN

El presente proyecto trata de resolver la comunicación necesaria que se debe realizar para la
implementación del puerto paralelo, sobre la cual habrá una implementación de un circuito
de control que permita vigilar el funcionamiento del semáforo encargada de abastecer el
control necesario de dicho puerto para la transmisión y verificación de datos , para lo cual se
utilizara el puerto paralelo db25, tres leds y la interfaz gráfica necesaria para su
funcionamiento.

Las comunicaciones en paralelo se realizan mediante la transferencia simultánea de


todos los bits que constituyen el dato (byte o palabra). Presentan la ventaja de que la
transmisión puede ser más rápida.

IV. PALABRAS CLAVE

 Puerto paralelo
 Db25
 Control de puerto

V. INTRODUCCION

El uso del puerto paralelo en la actualidad es muy limitado, y este es catalogado por
algunas personas como obsoleto, existen actividades específicas que utilizan la
comunicación paralela para mejorar su trabajo. Su salida paralela de datos de 8 bits nos
permite usarlo con mayor facilidad que una comunicación serial.

JAVA hoy por hoy es la plataforma de desarrollo más usada, esto por la portabilidad
que nos ofrece el uso de la máquina virtual, entre otras cosas. Por eso me parece
importante aprender a usar el puerto paralelo con este lenguaje. El programa usado es
Netbeans IDE 8.0.1.
Lo que deben saber de la conexión del PP es que los pines del 2 al 9 son las salidas,
siendo el pin 9 el más significativo y el 2 el menos significativo. Del pin 18 al 25 son
tierra. Los demás pines son de control y de entrada de datos como se indica en la
imagen [1].
VI. METODOLOGIA

Este proyecto tiene como metodología tres componentes:

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 3
MANEJO DEL PUERTO PARALELO

 Investigación: Búsqueda de información, asesoría del instructor o ayuda de personas


externas que nos ayuden a cumplir con el objetivo del proyecto.
 Implementación: Realizar el código, simulaciones en netbeans java 8.0.1 para luego
trabajar en la implementación del proyecto.
 Pruebas: Cumplir con lo propuesto del proyecto y hacer las mejoras que podrían
haber en este.

Como proyecto finalizado se entregara una evidencia con un informe sobre todo lo utilizado
en el proyecto.

VII. MARCO TEORICO

PUERTO PARALELO
El puerto paralelo en un PC Todos los ordenadores tipo PC están equipados, al menos, con una
tarjeta de interface paralelo, frecuentemente junto a un interface serie. Como sistema
operativo, el DOS puede gestionar hasta cuatro interfaces de puertos paralelo, LPT1 , LPT2 ,
LPT 3 y LPT4, además, reserva las siglas PRN como sinónimo del LPT 1, de modo que puede ser
tratado como un archivo genérico. En el byte 0040:0011 del BIOS almacena el número de
interfaces de puertos paralelo que se hayan instalado en el equipo. La dirección de
entrada/salida de cada uno de los puertos paralelo y el número de puertos instalados en un PC
se muestra en la pantalla inicial de arranque del equipo es frecuente, casi estándar que las
direcciones de los dos primeros puertos paralelos sean las siguientes:

LPT1 = 0x378 Hexadecimal


LPT2 = 0x278 Hexadecimal

Las tarjetas del puerto paralelo tiene una estructura muy simple; consta de tres registros: de
control, de estado y de datos. Todas las señales que intervienen en el puerto tienen asociado
un bit en uno de esos registros, de acuerdo con las funciones asignadas a cada línea en
particular [2].
Descripción del conector físico
La conexión del puerto paralelo al mundo exterior se realiza mediante un conector
hembra DB25. Observando el conector de frente y con la parte que tiene mayor número de pines
hacia arriba, se numera de derecha a izquierda y de arriba a abajo, del 1 al 13 (arriba) y del 14 al
25 (abajo).

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 4
MANEJO DEL PUERTO PARALELO

En este conector:
8 líneas (pines) son para salida de datos (bits de DATOS). Sus valores son únicamente
modificables a través de software, y van del pin 2 (dato 0, D0) al pin 9 (dato 7, D7).
5 líneas son de entrada de datos (bits de ESTADO), únicamente modificables a través del
hardware externo. Estos pines son: 11, 10, 12, 13 y 15, del más al menos significativo.
4 líneas son de control (bits de CONTROL), numerados del más significativo al menos: 17, 16,
14 y 1. Habitualmente son salidas, aunque se pueden utilizar también como entradas y, por
tanto, se pueden modificar tanto por software como por hardware.
Las líneas de la 18 a la 25 son la tierra.
En la siguiente tabla se detallan la nomenclatura y descripción de cada línea. La columna
"Centronics pin" se refiere a las líneas del conector tipo Centronics usado en las impresoras. La
columna E/S se refiere al dato visto desde el lado del PC [3].

DB25 Centronics Tipo


Señal Descripción
pin pin (E/S)

Si está bajo más de 0.5 µs, habilita a la impresora


1 1 S Strobe
para que reciba los datos enviados.

2 2 S D0 Bit 0 de datos, bit menos significativo (LSB)

3 3 S D1 Bit 1 de datos

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 5
MANEJO DEL PUERTO PARALELO

4 4 S D2 Bit 2 de datos

5 5 S D3 Bit 3 de datos

6 6 S D4 Bit 4 de datos

7 7 S D5 Bit 5 de datos

8 8 S D6 Bit 6 de datos

9 9 S D7 Bit 7 de datos, bit más significativo (MSB)

Un pulso bajo de ~11µs indica que se han recibido


10 10 E Ack datos en la impresora y que la misma está
preparada para recibir más datos.

11 11 E Busy En alto indica que la impresora está ocupada.

12 12 E PaperEnd En alto indica que no hay papel.

13 13 E SelectIn En alto para impresora seleccionada.

Si está bajo, el papel se mueve una línea tras la


14 14 S AutoFeed
impresión.

En bajo indica error (no hay papel, está fuera de


15 32 E Error
línea, error no det.).

Si se envía un pulso en bajo > 50 µs la impresora


16 31 S Init
se reinicia.

En bajo selecciona impresora (en gral. no se usa,


17 36 S Select
ya que SelectIn se fija a alto).

18-25 19-30,33 GND Masa retorno del par trenzado.

18-25 16 Masa lógica

18-25 17 Masa chasis

El nombre de cada señal corresponde a la misión que cumple cada línea con relación a la
impresora, el periférico para el que fue diseñado el puerto paralelo. Las señales activas a nivel
bajo aparecen con la barra de negación (por ejemplo, Strobe). Cuando se indica alto o bajo se
refiere a la tensión en el pin del conector. Alto equivale a ~5V en TTL y bajo a ~0V en TTL.
Lo que deben saber de la conexión del PP es que los pines del 2 al 9 son las salidas, siendo el
pin 9 el más significativo y el 2 el menos significativo. Del pin 18 al 25 son tierra. Los demás
pines son de control y de entrada de datos como se indica en la imagen.
Lo primero que debemos hacer es cargar la librería jnpout32pkg.jar al proyecto que estamos
realizando. También debemos copiar el archivo jnpout32pkg.dll dentro de la carpeta de

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 6
MANEJO DEL PUERTO PARALELO

Windows WINDOWS\system32. Estos dos archivos podrán ser descargados al final del post
[4].

En la clase que realiza el manejo del puerto en nuestro proyecto, debemos hacer la importación:
import jnpout32.*;
Además se debe crear un objeto de tipo pPort:
pPort puerto= new pPort( );
Este objeto tiene algunos métodos que nos servirán para el ingreso y salida de datos desde
nuestro proyecto. El método que es utilizado para la salida de datos es:
puerto.output(direccion,valor);
Donde dirección y valor son variables de tipo short, y dirección debe ser declarada de la
siguiente manera:
short direccion= 0x378;
No debemos confundir la x de la dirección con el símbolo * de la multiplicación. Es la letra
equis minúscula [1].

Se debe tomar en cuenta antes de su implementación lo siguiente:


El puerto de datos (DATA), permite transmitir un byte (8 bits) de datos. Cada uno de los bits se
corresponde con uno de los pines D0 a D7. Por tanto, en conjunto, se pueden transmitir valores
entre 0 y 255 en formato binario. Por ejemplo, para transmitir el 139, 10001011 en binario, se
pondrán a 5Voltios los pines D7, D3, D1 y D0. Este puerto puede configurarse para servir tanto
de entrada como de salida de datos.
El puerto de control (CONTROL) es sólo de salida y se corresponde con los pines C0 a C3, con
lo que en principio nos permite trasmitir valores entre 0 y 16. En un principio este puerto se
utilizaba para pasarle comandos inmediatos a la impresora como el salto de línea o el reset y los
pines conservan los nombres que se les dieron en esa época. Y por razones históricas tambien,
C0, C1 y C3 están invertidos, lo que quiere decir que invierten la salida y, al contrario que los
pines normales, representan el 0 con 5 voltios y el 1 con 0 voltios. Por ejemplo, el 6 es 0110 en
binario, pero como los bits 0, 1 y 3 están invertidos tendríamos C3, C2 y C0 a 5 voltios y C1 a
0. Por último tenemos el puerto de estado (STATUS). Se usaba originalmente para recibir el
estado de la impresora, también ha heredado los nombres de los pines de aquella época y
también presenta algún pin invertido. Es un puerto sólo de entrada, así que no lo vamos a usar
por el momento. Pero vete familiarizándote con él [4].

VIII. MATERIALES
 Puerto paralelo db25
 Tres leds rojo, amarillo, verde.
 Programa netbeans java 8.0.1
 Cables.
 Protoboard

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 7
MANEJO DEL PUERTO PARALELO

IX. DESARROLLO

En esta sección prestamos las líneas de código para la elaboración de nuestro diseño.

Desbloquear el puerto de la impresora.


Para desbloquear el puerto de la impresora ingrese al panel de control y haga clic en sistema y
seguridad.

Luego clic en hardware y sonido

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 8
MANEJO DEL PUERTO PARALELO

Clic en administrador de dispositivos:

Ahora seleccione puerto de impresora:

Clic al botón derecho del mouse y elegir propiedades:

ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ 9
MANEJO DEL PUERTO PARALELO

En configuración de puerto, seleccione usar cualquier tipo de interrupción.

Aceptar todo y terminar. Con lo que tenemos habilitado el puerto a nivel sistema operativo.
Paso 2.- Copiar archivos.- Descargue el archivo comprimido javacomm20-win32--ok.rar ,
descomprima este archivo e inicie las copia de la siguiente manera. De la carpeta FilecomAPI,
copie el archivo parport.dll a la carpeta bin de READY TO PROGRAM.

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
0
MANEJO DEL PUERTO PARALELO

Ahora copiar el archivo UserPort.sys a Windows.

Asegúrese de dejar el archivo en el directorio drivers:

Realice las siguiente copias de los archivos al disco duro:

 win32com.dll: guardarlo en la carpeta de ..\Java\jdk1.5.0_02\jre\bin


 javax.comm.properties: copiarlo en la carpeta \Java\jdk1.5.0_02\jre\lib
 comm.jar: copiarlo en la carpeta ..\Java\jdk1.5.0_02\jre\lib\ext

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
1
MANEJO DEL PUERTO PARALELO

Ejecute el programa User Port (En Windows 7 ejecutar como administrador):

y clic en aceptar y clic en salir.


PROGRAMACION EN NETBEANS JAVA 8.0.1
Se realiza el respectivo código en netbeans para la implementación del puerto paralelo:
package aplicacion;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ImageIcon;

import jnpout32.*;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.Timer;

import prueba.*;

/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
2
MANEJO DEL PUERTO PARALELO

/**

* @author mondogo

*/

public class aplicacion extends javax.swing.JFrame {

public int val=-1;

public int tiempo=5;

public Timer timer = null;

private prueba puerto;

private acciones estados;

/**

* Creates new form aplicacion

*/

public aplicacion() {

// abrimos los puertos

puerto=new prueba();

estados=new acciones();

puerto.abrirPuerto("LPT1");

puerto.cerrarPuerto();

ActionListener actListner = new ActionListener() {

public void actionPerformed(ActionEvent e) {

// inicializamos para cambir las imagenes y enviar al puerto

val++;

System.out.println(val);

if (val==0){

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
3
MANEJO DEL PUERTO PARALELO

//cambiamos leds rojo

JFrame frame = new JFrame("Elaprendiz: Componentes con Imagenes");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ImageIcon icon = new ImageIcon(frame.getClass().getResource("/app/red.png"));

ImagePanel panel = new ImagePanel(icon.getImage());

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

//para prender led rojos

estados.rojo();

puerto.escribirPuerto(estados.getByte());

}else if(val==(tiempo*1)){

//cambiamos leds naranjas

JFrame frame = new JFrame("Elaprendiz: Componentes con Imagenes");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ImageIcon icon = new


ImageIcon(frame.getClass().getResource("/app/naranja.png"));

ImagePanel panel = new ImagePanel(icon.getImage());

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

//prender led naranja

estados.naranja();

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
4
MANEJO DEL PUERTO PARALELO

puerto.escribirPuerto(estados.getByte());

}else if(val==(tiempo*2)){

//cambiamos leds verdes

JFrame frame = new JFrame("Elaprendiz: Componentes con Imagenes");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ImageIcon icon = new ImageIcon(frame.getClass().getResource("/app/verde.png"));

ImagePanel panel = new ImagePanel(icon.getImage());

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

//prender led verde

estados.verde();

puerto.escribirPuerto(estados.getByte());

}else if(val==(tiempo*3)){

val=-1;

};

// inicializamos el timer

Timer timer = new Timer(1000, actListner);

timer.start();

initComponents();

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
5
MANEJO DEL PUERTO PARALELO

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

JFrame frame = new JFrame("Elaprendiz: Componentes con Imagenes");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ImageIcon icon = new ImageIcon(frame.getClass().getResource("/app/red.png"));

ImagePanel panel = new ImagePanel(icon.getImage());

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

// TODO add your handling code here:

JFrame frame = new JFrame("Elaprendiz: Componentes con Imagenes");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ImageIcon icon = new ImageIcon(frame.getClass().getResource("/app/red.png"));

ImagePanel panel = new ImagePanel(icon.getImage());

frame.getContentPane().add(panel);

frame.pack();

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
6
MANEJO DEL PUERTO PARALELO

frame.setVisible(true);

val=-1;

tiempo=Integer.valueOf(jSpinner1.getValue().toString());

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

// TODO add your handling code here:

JFrame frame = new JFrame("Elaprendiz: Componentes con Imagenes");

frame.setVisible(false);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ImageIcon icon = new ImageIcon(frame.getClass().getResource("/app/naranja.png"));

ImagePanel panel = new ImagePanel(icon.getImage());

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
7
MANEJO DEL PUERTO PARALELO

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

JFrame frame = new JFrame("Elaprendiz: Componentes con Imagenes");

frame.setVisible(false);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ImageIcon icon = new ImageIcon(frame.getClass().getResource("/app/verde.png"));

ImagePanel panel = new ImagePanel(icon.getImage());

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
8
MANEJO DEL PUERTO PARALELO

INTERFAZ GRAFICA

1
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
9
MANEJO DEL PUERTO PARALELO

X. CONCLUSIONES

Se desarrolló un circuito de control para el funcionamiento de un semáforo por


medio del puerto paralelo para la transmisión y recepción de datos.
Se implementó una interfaz gráfica mediante el uso software netbeans
para la demostración del puerto paralelo db25.
El funcionamiento de este programa y circuito necesita que se desbloquee el puerto
de la impresora.

XI. BIBLIOGRAFÍA

[1] ORGANIZACION PANAMERICANA DE LA SALUD, GUÍA PARA EL DISEÑO Y


CONSTRUCCIÓN DE RESERVATORIOS APOYADOS, Lima, 2004.

[2] RESERVORIOS, BuenosAires, 2010.

[3] ESCUELA POLITECNICA NACIONAL, INTRODUCCION AL SISTEMA


INDUSTRIAL, Quito, 2015.

[4] M. Sarmiento, APARATOS DE MANIOBRA MANUAL, Bogota, 2010.

2
ACURIO_ARIAS_ALMAGRO_MURILLO_SÁNCHEZ
0

También podría gustarte