Vous êtes sur la page 1sur 7

Preparacin de reportes escritos informativos.

Prcticas de La Unidad 3 Modularizacin.


Cruz vila Mara Guadalupe
estrella_dorada26@hotmail.com
Garca Zamudio Mathew
Quintanar Jaramillo Marisol
Jaramilloq_2@hotmail.com
Snchez Echeverri Alejandro
Multmetro
conector 26 pines de presin (DD)

RESUMEN:
Se realiz un circuito en una protoboard con distintos
compontes para la elaboracin de distintas practicas
tales como una serie navidea con leds que prenden
apagan en determinado tiempo este es introducido por el
usuario, una cadena de nmeros binarios los 1s
encienden los leds y los 0s los apagan, tambin e
realiz una prctica que mueve un motor a pasos. Para
que funcionaran estas prcticas realizo un programa en
C#.

Practica 1
1.1 Armar el cable de 25 hilos
1. Quitar un hilo al cable, que no sea el rojo.
2. Poner el cable en el conector DB25, el pin
1 debe ir conectado al cable rojo, una vez
hecho esto presionar el conector, si es de
este tipo sino se tendr que soldar.

PALABRAS CLAVE: circuito integrado, display , LPT,


protoboard, motor a pasos.

INTRODUCCIN
Las practicas realizadas en la unidad de popularizacin
tienen como finalidad hacer que por medio de un
lenguaje de programacin en este caso (visual Studio
2010) y materiales de electrnica atraves de entradas y
salidas de datos por medio del puerto DB25 en la
computadora de escritorio demostrndolo por medio de
diferentes procesos como entrada de un numero
decimal, una cadena de 0 y 1, una serie navidea, un
display de 7 segmentos ocupado para hacer un contador
de 0 al 9 as como tambin hacer girar el motor a pasos.

Material

Figura 1. Cable al DB25 macho


3. Al igual que el conector DB25 ahora
conectaremos el conector de 26 pines.
Primero tenemos que localizar un
tringulo en el conector.

Cable plano de 25 hilos


Cable de interconexin
Protoboat
Resistencias de 1 y de 10k
Display de 7 segmentos
Motor a pasos unipolar
1 x ULN2003
2 x 74hc245
4 x In4148
Diodo zener 12 v
Computadora de escritorio
Visual studio
DB25 macho de presin

Figura 2. Conector de 26 pines.

24 leds

Preparacin de reportes escritos informativos.

Una vez hecho esto pondremos el cable,


conectando la lnea roja en el tringulo. Y
presionar.

1.2 Descripcin del puerto paralelo

El puerto paralelo de una PC es ideal para


ser usado como herramienta de control de
motores, rels, LED's, etc. El mismo
posee un bus de datos de 8 bits (Pin 2 a
9) y muchas seales de control, algunas
de salida y otras de entrada que tambin
pueden ser usadas fcilmente.
Las PC's generalmente poseen solo uno
de estos puertos (LPT1) pero con muy
poco dinero se le puede adicionar una
tarjeta con un segundo puerto paralelo
(LPT2).
En reglas generales la direccin
hexadecimal del puerto LPT1 es igual a
0x378 (888 en decimal) y 0x278 (632 en
decimal) para el LPT2. Esto se puede
verificar fcilmente en el setup de la PC o
bien en el cartel que generalmente la PC
muestra en el momento del booteo. Puede
darse el caso que el LPT1 asuma la
direccin 0x3BC (956 en decimal) y el
LPT2 0x378, en ese caso habr que tratar
de corregir el setup y/o los jumper de las
tarjetas en caso que sea posible.
El puerto paralelo de un PC posee un
conector de salida del tipo DB25 hembra
cuyo diagrama y seales utilizadas
podemos ver en la figura 7.

Frigura 3. Cable al conector de 26 pines

4. Una vez conectado el cable por ambos


extremos, con el multmetro tenemos que
ir identificando los pines que son
continuos en los 2 conectores.

Figura 4. Identificando pines.

5. Una vez identificados los pines, conectar 8


leds a la Protoboard y probar que
funcionan.

Figura 6. Funcionamiento.

Prctica 2
2.1 Entrada de datos con nmeros decimales.

Figura 7. Estructura del puerto DB25.

Si deseamos escribir un dato en el bus de


salida de datos (pin 2 a 9) solo debemos
escribir el byte correspondiente en la direccin
hexadecimal 0X378 (888 en decimal) cuando
trabajamos con el LPT1 y 0x278 (632 en
decimal) cuando trabajamos con el LPT2. Los
distintos pins (bits) de salida correspondientes

Para poder hacer una interfaz entre la


Protoboard y el puerto paralelo usaremos
C#.

Preparacin de reportes escritos informativos.

.
{

al bus de datos no pueden ser escritos en forma


independiente, por lo que siempre que se desee
modificar uno se debern escribir los ocho bits
nuevamente.
Para leer el estado de los pins de entrada (10,
12, 13 y 15) se debe realizar una lectura a la
direccin hexadecimal 0x379 (889 en decimal)
si trabajamos con el LPT1 o bien leer la
direccin 0x279 (633 en decimal) si
trabajamos con el LPT2. La lectura ser
devuelta en un byte en donde el bit 6
corresponde al pin 10, el bit 5 corresponde al
pin 12, el bit 4 corresponde al pin 13 y el bit 3
corresponde al pin 15.
El primer programa que realizaremos har que
al introducir un nmero en decimal, prendan
los leds correspondientes en binario. Recordar
que son 8 leds por lo que podremos ingresar
hasta el 255.
Empezamos por crear un nuevo proyecto en
Windows Forms de C#.

//libreras necesarias para mandar


salidas al puerto paralelo
[DllImport("inpout32.dll")]
private static extern UInt32
IsInpOutDriverOpen();
[DllImport("inpout32.dll")]
private static extern void
Out32(short PortAddress, short Data);
[DllImport("inpout32.dll")]
private static extern ushort
DlPortReadPortUshort(short PortAddress);
[DllImport("inpoutx64.dll",
EntryPoint = "IsInpOutDriverOpen")]
private static extern UInt32
IsInpOutDriverOpen_x64();
[DllImport("inpoutx64.dll",
EntryPoint = "Out32")]
private static extern void
Out32_x64(short PortAddress, short Data);
[DllImport("inpoutx64.dll",
EntryPoint = "DlPortReadPortUshort")]
private static extern ushort
DlPortReadPortUshort_x64(
short PortAddress);

public Form1()
{
InitializeComponent();
}
private void button1_Click(object
sender, EventArgs e)
{
//out32 es la salida que se va
a mandar, el nmero 888 es la
direccin del puerto paralelo
Out32(888,
Convert.ToInt16(textBox1.Text));
}

Figura 8. Nuevo proyecto de Windows froms de C#.

Agregamos 1 label, 1 combobox y un botn

Al introducir el nmero 255 se deben prender


todos los leds

Figura 10. Circuito funcionando con el nmero 255.

Figura 9. Interfaz del enviar un dato.

Hacemos doble click al botn y pegamos este


cdigo.

Practica 3
3.1 cadena binaria

public partial class Form1 : Form

Preparacin de reportes escritos informativos.

.
contador2 = contador2 / 2;
}
if (contador2 == 0 && contador

Con la interfaz de la prctica anterior


agregamos 1 label, 1 combobox y un botn
para la cadena, damos doble click al botn y
pegamos este cdigo.

== 256)
{

string cadNumero = "",resultado;


cadNumero = textBox2.Text;
int i, iLength;
long iResult = 0;
iLength = cadNumero.Length;
long[] cadena = new
long[cadNumero.Length];
long numero =
long.Parse(cadNumero);
iLength--;
long cifra = 0;
for (int j = cadNumero.Length 1; j >= 0; j--)
{
cifra = numero % 10;
numero = numero / 10;
cadena[j] = cifra;
}

contador = 1;
contador2 = 128;
}
}
private void timer2_Tick(object
sender, EventArgs e)
{
timer2.Interval =
Convert.ToInt32(textBox4.Text);
if (contador3 == 0)
{
Out32(888, 247);
label6.Text = "0";
}
if (contador3 == 1)
{
Out32(888, 65);
label6.Text = "1";
}
if (contador3 == 2)
{
Out32(888, 59);
label6.Text = "2";
}
if (contador3 == 3)
{
Out32(888, 107);
label6.Text = "3";
}
if (contador3 == 4)
{
Out32(888, 77);
label6.Text = "4";
}
if (contador3 == 5)
{
Out32(888, 110);
label6.Text = "5";
}
if (contador3 == 6)
{
Out32(888, 126);
label6.Text = "6";
}
if (contador3 == 7)
{
Out32(888, 67);
label6.Text = "7";
}
if (contador3 == 8)
{
Out32(888, 255);

for (i = 0; i <
cadNumero.Length; i++, iLength--)
{
iResult += cadena[i] *
(long)Math.Pow(2, iLength);
}
resultado =
Convert.ToString(iResult);
Out32(888,
Convert.ToInt16(resultado));
}

private void timer1_Tick(object


sender, EventArgs e)
{
timer1.Interval =
Convert.ToInt32(textBox3.Text);
if (contador <= 128)
{
label5.Text =
Convert.ToString(contador);
Out32(888,
Convert.ToInt16(contador));
contador = contador * 2;
}
if (contador == 256)
{
label5.Text =
Convert.ToString(contador2);
Out32(888,
Convert.ToInt16(contador2));

Preparacin de reportes escritos informativos.

.
label6.Text = "8";
}
if (contador3 == 9)
{
Out32(888, 111);
label6.Text = "9";
}
contador3 = contador3 + 1;

label6.Text = "9";
}
contador4 = contador4 1;
}
if (contador3 == 19 &&
contador4 == -1)
{
contador3 = 0;
contador4 = 9;

if (contador3 > 9)
{
if (contador4 == 0)
{
Out32(888, 247);
label6.Text = "0";
}
if (contador4 == 1)
{
Out32(888, 65);
label6.Text = "1";
}
if (contador4 == 2)
{
Out32(888, 59);
label6.Text = "2";
}
if (contador4 == 3)
{
Out32(888, 107);
label6.Text = "3";
}
if (contador4 == 4)
{
Out32(888, 77);
label6.Text = "4";
}
if (contador4 == 5)
{
Out32(888, 110);
label6.Text = "5";
}
if (contador4 == 6)
{
Out32(888, 126);
label6.Text = "6";
}
if (contador4 == 7)
{
Out32(888, 67);
label6.Text = "7";
}
if (contador4 == 8)
{
Out32(888, 255);
label6.Text = "8";
}
if (contador4 == 9)
{
Out32(888, 111);

}
}
Con la cadena 1111000 se deben de prender
los primeros 4 lets y los siguites 4
apagados como se muestra en la figura.

Figura 10. Cadena 1111000.


Practica 4
4.1 serie navidea
La serie navidea consiste en que los leds
prendan y apaguen como una serie de navidad
de acuerdo con el tiempo que el usuario le
indique.
Para ello realizaremos lo siguiente:
Con la interfaz de las practicas anteriores
agregamos 1 label, 1 combobox y un botn
para la cadena, damos doble click al botn y
pegamos este cdigo.
timer1.Interval =
Convert.ToInt32(textBox3.Text);
if (contador <= 128)
{
label5.Text =
Convert.ToString(contador);
Out32(888,
Convert.ToInt16(contador));
contador = contador * 2;

Preparacin de reportes escritos informativos.

.
}
if (contador == 256)
{
label5.Text =
Convert.ToString(contador2);
Out32(888,
Convert.ToInt16(contador2));
contador2 = contador2 / 2;
}
if (contador2 == 0 && contador
== 256)
{
contador = 1;
contador2 = 128;
}

Out32(888, 107);
label6.Text = "3";
}
if (contador3 == 4)
{
Out32(888, 77);
label6.Text = "4";
}
if (contador3 == 5)
{
Out32(888, 110);
label6.Text = "5";
}
if (contador3 == 6)
{
Out32(888, 126);
label6.Text = "6";
}
if (contador3 == 7)
{
Out32(888, 67);
label6.Text = "7";
}
if (contador3 == 8)
{
Out32(888, 255);
label6.Text = "8";
}
if (contador3 == 9)
{
Out32(888, 111);
label6.Text = "9";
}
contador3 = contador3 + 1;

Practica 5
5.1 Contador display
El contador consiste en que el display
empieza de 0 hasta el 9 y regrese del 9 al
0 la velocidad de los cambios de numero
depende del tiempo que el usuario le
indique.
Para que esto funcione aremos lo
siguiente:
Usaremos la misma interfaz de las
practicas anteriores agregamos 1 label, 1
combobox y un botn para la cadena,
damos doble click al botn y pegamos
este cdigo.
private void timer2_Tick(object sender,
EventArgs e)
{
timer2.Interval =
Convert.ToInt32(textBox4.Text);

if (contador3 > 9)
{
if (contador4 == 0)
{
Out32(888, 247);
label6.Text = "0";
}
if (contador4 == 1)
{
Out32(888, 65);
label6.Text = "1";
}
if (contador4 == 2)
{
Out32(888, 59);
label6.Text = "2";
}
if (contador4 == 3)
{
Out32(888, 107);
label6.Text = "3";
}
if (contador4 == 4)
{

if (contador3 == 0)
{
Out32(888, 247);
label6.Text = "0";
}
if (contador3 == 1)
{
Out32(888, 65);
label6.Text = "1";
}
if (contador3 == 2)
{
Out32(888, 59);
label6.Text = "2";
}
if (contador3 == 3)
{

Preparacin de reportes escritos informativos.

.
Out32(888, 77);
label6.Text = "4";

Practica 6

}
if (contador4 == 5)
{
Out32(888, 110);
label6.Text = "5";
}
if (contador4 == 6)
{
Out32(888, 126);
label6.Text = "6";
}
if (contador4 == 7)
{
Out32(888, 67);
label6.Text = "7";
}
if (contador4 == 8)
{
Out32(888, 255);
label6.Text = "8";
}
if (contador4 == 9)
{
Out32(888, 111);
label6.Text = "9";
}
contador4 = contador4 -

6.1 Motor a pasos

Esta prctica consiste en hacer girar un


motor a pasos unipolar por medio de un
circuito dependiendo el tiempo y un
programa realizado en C#.
Utilizaremos la interfaz de las practicas
anteriores agregamos 1 label, 1 combobox
y 3 botones para la cadena, damos doble
click al botn y pegamos este cdigo.

1;
}
if (contador3 == 19 &&
contador4 == -1)
{
contador3 = 0;
contador4 = 9;
}
}

Conclusin.
Gracias a estos programas aprendimos ha
que podemos mandar seales por medio
del cable DB25 de hacia una protoboat asi
como, tener una mejor idea de cmo
podremos utilizar estas herramientas en
nuestro proyecto final, asi como
comprender mejor el uso de cada uno de
los componentes ya utilizados y tener un
mejor desarrollo.

Figura 11. Contador.

Vous aimerez peut-être aussi