viernes, 19 de noviembre de 2010

Practica usando el puerto paralelo


OBJETIVO GENERAL
“Identificar los comando básicos para control de puertos por medio de un lenguaje de programación”

JUSTIFICACIÓN
La realización de esta práctica es de gran importancia ya que al implementar el control del puerto paralelo podemos entender cómo se pueden utilizar estos tipos de puertos para controlar diversos dispositivos desde la computadora.
PARTES Y MATERIALES
  • Protoboard
  • Fuente: Batería 9V DC.
  • Resistencias de 1/4W:
    • R3: 3 de 2.2 K
    • R2: 8 de 4.7 K
    • R1: 8 de 330
  • 8 Leds.
  • 2 circuitos integrados 74LS04.
  • 1 circuito regulador LM7805.
  • 2 condensadores electrolíticos
  • 3 pulsadores.
  • 1 conector DB25 macho.
  • Cable para unir del conector DB25
Resistencias de 1/4W:
    • R3: 3 de 2.2 K
    • R2: 8 de 4.7 K
    • R1: 8 de 330
La resistencia es el componente electrónico diseñado para introducir una resistencia eléctrica determinada entre dos puntos de un circuito. En el propio argot eléctrico y electrónico, son conocidos simplemente como resistencias.
Es un material formado por carbón y otros elementos resistivos para disminuir la corriente que pasa. Se opone al paso de la corriente.
Led:
 
Es un dispositivo que en su interior contiene un material semiconductor que al aplicarle una pequeña corriente eléctrica produce luz. La luz emitida por este dispositivo es de un determinado color que no produce calor, por lo tanto, no se presenta aumento de temperatura como si ocurre con muchos de los dispositivos comunes emisores de luz.


Circuitos integrados 74LS04




Circuito regulador LM7805

Es el regulador de voltaje más común, y muy usado en diseños empotrados.

Condensador Electrolítico:
Es un dispositivo que almacena energía eléctrica, es un componente pasivo. Está formado por un par de superficies conductoras en situación de influencia total (esto es, que todas las líneas de campo eléctrico que parten de una van a parar a la otra), generalmente en forma de tablas, esferas o láminas, separadas por un material dieléctrico (siendo este utilizado en un condensador para disminuir el campo eléctrico, ya que actúa como aislante) o por el vacío, que, sometidos a una diferencia de potencial


Pulsadores
  
Elemento que permite el paso o interrupción de la corriente mientras es accionado. Cuando ya no se actúa sobre él vuelve a su posición de reposo.

Conector DB25 macho


Es un conector analógico de 25 clavijas de la familia de conectores D-Subminiature (D-Sub o Sub-D).

Cable para unir del conector DB25

    MARCO TEÓRICO
Existen dos métodos básicos para transmisión de datos en las computadoras modernas. En un esquema de transmisión de datos en serie un dispositivo envía datos a otro a razón de un bit a la vez a través de un cable. Por otro lado, en un esquema de transmisión de datos en paralelo un dispositivo envía datos a otro a una tasa de n número de bits a través de un número de cables a un tiempo. Sería fácil pensar que un sistema en paralelo es n veces más rápido que un sistema en serie, sin embargo esto no se cumple, básicamente el impedimento principal es el tipo de cable que se utiliza para interconectar los equipos.
Un sistema de comunicación en paralelo puede utilizar cualquier número de cables para transmitir datos, la mayoría de los sistemas paralelos utilizan ocho líneas de datos para transmitir un byte a la vez, como en todo, existen excepciones, por ejemplo el estándar SCSI permite transferencia de datos en esquemas que van desde los ocho bits y hasta los treinta y dos bits en paralelo. Un típico sistema de comunicación en paralelo puede ser de una dirección (unidireccional) o de dos direcciones (bidireccional). El más simple mecanismo utilizado en un puerto paralelo de una PC es de tipo unidireccional y es el que analizaremos en primer lugar. Distinguimos dos elementos: la parte transmisora y la parte receptora.
FUNCIONAMIENTO


El circuito trabaja de acuerdo con la información que recibe del puerto paralelo del ordenador.

En este caso se utilizó visual Basic 6 y con la librería io.dll para controlar el puerto paralelo.

Lo que hace el programa es que manda en código binario al circuito el cual lo recibe el circuito integrado que es el que se encarga de direccionar la corriente para que prenda el led que corresponde al código binario.

En el caso del programa se manejan lo que son los botones para decidir que led va a encender, aunque también se pueden mandar una sumatoria de código binario para encender más de un solo led.
Por ejemplo si nosotros quisiéramos que el led número 1 encendiera, el botón en visual mandaría una orden, con el número 1 al circuito. Si quisiéramos que solo encendiera el led número 5 el botón mandaría una orden pero con el numero 16 (la librería se encarga de reconocer los números en decimal para que el ordenador se los envía al circuito integrado en forma binaria).
Pero si quisiéramos que al presionar el botón se prendieran los dos leds tendríamos que hacer una sumatoria de los números decimales en este caso 1+5 =6, 6 será nuestro nuevo número para enviarlo se encenderán los dos leds.




DIAGRAMA ELECTRICO

 






INTERFAZ







      
  
Creado en visual Basic 6



IMÁGENES DEL FUNCIONAMIENTO

Solo se indica que prendan los leds amarillos en este caso vemos que la posición 1 se encuentra el led que se encuentra más a la izquierda, se puede visualizar que los leds que enciendes son los que se encuentran en la posición 2 y la posición 6 por lo que tenemos que 2+32= 34, 34 es el número que se va enviar al presionar el botón en la interfaz de visual.

 

Aquí tenemos los leds rojos



Tambien se manejó secuencias, en la imagen también se ven los leds rojos pero en realidad iban prendiéndose cada colores respetando un intervalo de tiempo. 

 

CODIGO EN VISUAL BASIC 6

Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)

Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte

Dim a, b, c, d, e, f As Integer


Private Sub btnLed10_Click()
    PortOut &H378, 0
    Me.Timer1 = False
    Me.tmrSemaforo = False
    Me.tmrMotor = False
    Me.tmrSecuencia2 = False
    Me.tmrSecuencia3 = False
    a = 0
    b = 0
    c = 0
    d = 0
    e = 0
    f = 0
    Me.imgApagAmarillo.Visible = True
    Me.imgApagRojo.Visible = True
    Me.imgApagVerde.Visible = True
    Me.imgPrendiAmarillo.Visible = False
    Me.imgPrendiRojo.Visible = False
    Me.imgPrendiVerde.Visible = False
End Sub

Private Sub btnLed5_Click()
    If Me.imgApagAmarillo.Visible = True And Me.imgApagVerde.Visible = True Then
        PortOut &H378, 96
        Me.imgPrendiAmarillo.Visible = True
        Me.imgPrendiVerde.Visible = True
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = False
        Me.imgApagVerde.Visible = False
        Me.imgApagRojo.Visible = True
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
       



Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub

Private Sub btnLed6_Click()
    If Me.imgApagAmarillo.Visible = True Then
            PortOut &H378, 32
            Me.imgPrendiAmarillo.Visible = True
            Me.imgPrendiVerde.Visible = False
            Me.imgPrendiRojo.Visible = False
            imgApagAmarillo.Visible = False
            Me.imgApagVerde.Visible = True
            Me.imgApagRojo.Visible = True
        Else
            PortOut &H378, 0
            Me.imgPrendiAmarillo.Visible = False
            Me.imgPrendiVerde.Visible = False
            Me.imgPrendiRojo.Visible = False
            imgApagAmarillo.Visible = True
            Me.imgApagVerde.Visible = True
            Me.imgApagRojo.Visible = True
        End If
End Sub

Private Sub btnLed7_Click()
    If Me.imgApagVerde.Visible = True Then
        PortOut &H378, 64
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = False
        Me.imgApagRojo.Visible = True
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub

Private Sub btnLed9_Click()
    If Me.imgApagAmarillo.Visible = True And Me.imgApagVerde.Visible = True And Me.imgApagRojo.Visible = True Then
        PortOut &H378, 255
        Me.imgPrendiAmarillo.Visible = True
        Me.imgPrendiVerde.Visible = True
        Me.imgPrendiRojo.Visible = True
        imgApagAmarillo.Visible = False
        Me.imgApagVerde.Visible = False
        Me.imgApagRojo.Visible = False
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub

Private Sub btnMotor_Click()
    If Me.imgApagRojo.Visible = True Then
        PortOut &H378, 128
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = True
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = False
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub

Private Sub btnRojoAmarillo_Click()
    'PortOut &H378, 160
    If Me.imgApagAmarillo.Visible = True And Me.imgApagRojo.Visible = True Then
        PortOut &H378, 160
        Me.imgPrendiAmarillo.Visible = True
        Me.imgPrendiRojo.Visible = True
        Me.imgPrendiVerde.Visible = False
        imgApagAmarillo.Visible = False
        Me.imgApagRojo.Visible = False
        Me.imgApagVerde.Visible = True
    Else
        PortOut &H378, 0
        Me.imgPrendiAmarillo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgPrendiRojo.Visible = False
        imgApagAmarillo.Visible = True
        Me.imgApagVerde.Visible = True
        Me.imgApagRojo.Visible = True
    End If
End Sub


Private Sub btnSalir_Click()
    End
End Sub

Private Sub btnSecuencia_Click()
    If Me.txtVelocidadKitt.Text = "" Or Me.txtVelocidadKitt.Text = "0" Then
        MsgBox "Seleccione algún valor de velocidad mayor a cero"
    Else
         Me.Timer1.Interval = CInt(Me.txtVelocidadKitt.Text)
         Me.Timer1 = True
    End If
End Sub

Private Sub btnSecuencia2_Click()
    Me.tmrSecuencia2.Interval = 1000
    Me.tmrSecuencia2 = True
End Sub

Private Sub btnSecuencia3_Click()
    Me.tmrSecuencia3.Interval = 1000
    Me.tmrSecuencia3 = True
End Sub

Private Sub btnSemaforo_Click()
    Me.tmrSemaforo.Interval = 1000
    Me.tmrSemaforo = True
End Sub


Private Sub btnSMotor_Click()
    Me.tmrMotor.Interval = 1000
    Me.tmrMotor = True
End Sub



Private Sub Timer1_Timer()
    a = a + 1
    lblCuenta.Caption = a
 
    'Secuencia del Kitt
    If a = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf a = 2 Then
        PortOut &H378, 32
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
    ElseIf a = 3 Then
        PortOut &H378, 128
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = False
        Me.imgPrendiRojo.Visible = True
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
    ElseIf a = 4 Then
        PortOut &H378, 32
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
        a = 0
    End If
End Sub

Private Sub tmrMotor_Timer()
    c = c + 1
    d = d + 1
    If c = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf c = 2 Then
        PortOut &H378, 0
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
        c = 0
    End If
    If d = 8 Then
        PortOut &H378, 128
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = False
        Me.imgPrendiRojo.Visible = True
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
        Me.tmrMotor = False
    End If
   
    Me.lblCuenta.Caption = d
End Sub

Private Sub tmrSecuencia2_Timer()
    e = e + 1
     'Secuencia 2
    If e = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf e = 3 Then
        PortOut &H378, 32
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
    ElseIf e = 5 Then
        PortOut &H378, 96
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
        e = 0
    ElseIf (e Mod 2) = 0 Then
        PortOut &H378, 0
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
    End If
End Sub

Private Sub tmrSecuencia3_Timer()
    f = f + 1
    'Secuencia 2
    If f = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf f = 2 Then
        PortOut &H378, 32
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = False
        Me.imgApagVerde.Visible = True
        f = 0
    End If
End Sub

Private Sub tmrSemaforo_Timer()
    b = b + 1
    If b = 1 Then
        PortOut &H378, 64
        Me.imgApagAmarillo.Visible = True
        Me.imgPrendiAmarillo.Visible = False
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf b = 4 Then
        PortOut &H378, 96
        Me.imgApagAmarillo.Visible = False
        Me.imgPrendiAmarillo.Visible = True
        Me.imgApagRojo.Visible = True
        Me.imgPrendiRojo.Visible = False
        Me.imgPrendiVerde.Visible = True
        Me.imgApagVerde.Visible = False
    ElseIf b = 6 Then
         PortOut &H378, 128
         Me.imgApagAmarillo.Visible = True
         Me.imgPrendiAmarillo.Visible = False
         Me.imgApagRojo.Visible = False
         Me.imgPrendiRojo.Visible = True
         Me.imgPrendiVerde.Visible = False
         Me.imgApagVerde.Visible = True
    ElseIf b = 9 Then
         b = 0
    End If
    
End Sub

Private Sub VScroll1_Change()
    Me.txtVelocidadKitt.Text = CInt(VScroll1.Value)
End Sub



1 comentario:

  1. Merit Casino 50 FREE SPINS Bonus $1000!
    Merit Casino 50 FREE SPINS Bonus 바카라사이트 $1000! - Earn 20 FREE 메리트카지노 SPINS every day. $1000 free at Slots.ag. - $1000 Bonus! - $1000 Free! 인카지노 - $1000 Bonus!

    ResponderEliminar