Vous êtes sur la page 1sur 23

Objetivos

Mostrar el armado de un circuito simple mediante el puerto paralelo para encender y


apagar leds de una maqueta (casa).
Usar el Turbo c++ u otro programa similar que sea capaz de encender y apagar led`s
de una maqueta (casa).
Marco terico
Para hablar encendido y apagado de leds mediante el uso del programa del Turbo ++! hay
que decir primero.
Turbo C
Turbo C era un entorno de desarrollo integrado y compilador desarrollado
por "orland para programar en lengua#e .
$u primera %ersi&n es de '()*! a la que siguieron las %ersiones '.+ y ,.-! de '()(. .ue el
compilador m/s popular para desarrollar en en entornos M$012$. $e le considera el
primer 314 para disponible para dicha plata5orma.
Fases de un programa en Turbo C
6as 5ases de un programa en Turbo se pueden resumir en7
4dici&n
ompilaci&n
4nlazado
4#ecuci&n
6a 4dici&n de un programa consiste! simplemente! en editar el c&digo 5uente del programa!
Turbo incluye un editor para este e5ecto.
6a ompilaci&n del programa consiste en con%ertir el c&digo 5uente en c&digo ob#eto.
4l 4nlazado consiste en enlazar el c&digo ob#eto para obtener el c&digo e#ecutable.
.inalmente! la 4#ecuci&n consiste precisamente en e#ecutar el programa.
El entorno de Turbo C
4l entorno de Turbo 5acilita la edici&n! compilaci&n y el enlazado de los programas! ya
que incluye un editor y herramientas para compilar y enlazar los programas! para con5igurar
el entorno de Turbo ! primero hay que conocerlo! a continuaci&n se e8plican las
caracter9sticas m/s importantes del entorno...
El editor de Turbo C
4l editor de Turbo es una poderosa herramienta que nos 5acilita enormemente la edici&n
de un programa! es como un editor de te8to cualquiera! pero! para los que est/n
acostumbrados a los editores que 5uncionan ba#o :indo;s! tal %ez se encuentren con una
5orma di5erente de editar te8to! por e#emplo! para seleccionar un bloque de te8to! en el
editor de Turbo ! se presiona la combinaci&n de teclas T<6+=+" al inicio del bloque
que se desea seleccionar! y la combinaci&n T<6+=+= al 5inal del mismo. 1espu>s! con
ese bloque seleccionado! se pueden hacer di%ersas cosas! como7
T<6+=+?7 4limina el bloque.
T<6+=+@7 Mue%e el bloque.
T<6+=+7 opia el bloque.
1e cualquier 5orma! es con%eniente que se 5amiliaricen con el editor de Turbo a medida
que aprenden a programar! es decir! no es necesario aprender a usar el editor al '--A.
El Debugger de Turbo C
4n ocasiones! un programa que est/ l>8ica y sint/cticamente bien escrito! puede no dar los
resultados correctos! estos resultados pueden deberse a errores comunes de programaci&n!
tales como errores l&gicos! comBnmente llamados bugs! aunque e8isten otros tipos de
errores! tales como errores en tiempo de e#ecuci&n (tema del que nos ocuparemos m/s
adelante)! el debugger de Turbo nos ayudar/ a detectar y corregir dichos errores l&gicos.
Por e#emplo! si deseamos monitorear en todo momento el %alor de una %ariable (;atch)
presionaremos la combinaci&n T<6+.*! y posteriormente! podremos e#ecutar el programa
l9nea por l9nea (.*) o 5unci&n por 5unci&n (.)).
Puerto paralelo.
@amos a dar ciertos detalles sobre el puerto paralelo7
Un puerto paralelo es una inter5az entre una computadora y un peri5>rico cuya principal
caracter9stica es que los bits de datos %ia#an #untos en%iando un byte completo o m/s a la
%ez. 4s decir! se implementa un cable o una %9a 59sica para cada bit de datos 5ormando un
bus.
4l cable paralelo es el conector 59sico entre el puerto paralelo y el peri5>rico. 4n un puerto
paralelo habr/ una serie de bits de control en %9as aparte que ir/n en ambos sentidos por
caminos distintos.
4n contraposici&n al puerto paralelo est/ el Puerto serie! que en%9a los datos bit a bit por el
mismo hilo.
4l sistema operati%o gestiona las inter5aces de puerto paralelo con los nombres 6PT'! 6PT,
y as9 sucesi%amente! las direcciones base de los dos primeros puertos es7
6PT' C -DE*).
6PT, C -D,*)
6a estructura consta de tres registros7 de control! de estado y de datos.
4l registro de control es un bidireccional de F bits! con un bit de con5iguraci&n que no tiene
cone8i&n al e8terior! su direcci&n en el 6PT' es -8E*G.4l registro de estado! se trata de un
registro de entrada de in5ormaci&n de + bits! su direcci&n en el 6PT' es -DE*(.4l registro
de datos! se compone de ) bits! es bidireccional. $u direcci&n en el 6PT' es -DE*).
Conector DB25.
6a descripci&n de este conector se da a continuaci&n7
4l 1ataport se usa como salida
4l $tatusport se usa como entrada
4l ontrolport se usa de las dos 5ormas anteriores
Los LEDs.
641 es la abre%iatura en lengua inglesa para 6ight 4mitting 1iode! que en su traducci&n al
espaHol corresponder9a a 1iodo 4misor de 6uz.
Un 641 consiste en un dispositi%o que en su interior contiene un material semiconductor
que al aplicarle una pequeHa corriente el>ctrica produce luz. 6a luz emitida por este
dispositi%o 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 dispositi%os comunes emisores
de luz.
4l color que adquiera la luz emitida por este dispositi%o depender/ de los materiales
utilizados en la 5abricaci&n de este. 4n realidad depender/ del material semiconductor! que
dar/ una luz que puede ir entre el ultra%ioleta y el in5rarro#o! incluyendo en el medio toda la
gama de colores %isibles al o#o humano.
Materiales
+ leds de di5erentes colores
' Protoboard
onector macho y hembra (' metro o metro y medio)
+ resistencias de ' IJKL
ables de cobre de di5erentes colores
Turbo ++
Maqueta de una casa.
Procedimiento
4s recomendable tener unos cuantos leds m/s y unas cuantas resistencias m/s! por si acaso.
on esos antecedentes ahora %amos a e8plicar los detalles del circuito7
4l ircuito
1onde dice MPin puerto paraleloM puede ser cualquier Pin del , al (. No ol%idar hacer una
cone8i&n al pin ,+ que es tierra
4l circuito consiste en un led con una resistencia! la resistencia se usa para
limitar la intensidad y no pedir m/s de la que el puerto paralelo es capaz de dar (+ mG).
uando se acti%e el pin el led se encender/.
4n este proyecto lo que se quiere mostrar es como! con un simple circuito! se puede
controlar mediante la computadora una 5ila de 641s los que se %an a encender en una
secuencia que nosotros %amos a controlar con un pequeHo programa escrito en el lengua#e
de programaci&n Turbo ++.
4l circuito que se %a armar ser/ montado sobre una plaqueta! la cual conduce la corriente
el>ctrica! llamada MprotoboardM.
omo nuestro ob#eti%o es controlar los diodos 641s con la computadora! esto es
encenderlos y apagarlos segBn como queramos. 6os 641s son diodos que tienen la
capacidad de emitir luz cuando circula una corriente por ellos. 4sta corriente debe ser del
orden de los '- mG (miliampers). Para limitar la corriente que pasa por los 641s se usan
las resistencias que se oponen al paso de ella.
Para controlar un circuito e8terno con la computadora se usar/ el puerto paralelo de ella!
para conectar el puerto con el circuito se necesitar/ el cable paralelo o conector 1"0,+.
4l paso siguiente es soldar cable 5ino UTP a los pines internos del conector. omo los pines
est/n numerados del nBmero ' al ,+! solo usaremos los pines numerados del , al (! tambi>n
se tiene que soldar un cable al pin ,+ (que es el pin de masa o tierra el>ctrica) para tener
una descarga a tierra comBn! para nuestro circuito y la computadora.
Una %ez construido el cable se lo puede conectar al protoboard.
$olo se deben usar cinco entradas y cinco salidas! ya que son solo cinco 641s los que
controlamos.
6as cinco salidas est/n conectadas por medio de una resistencia limitadora de corriente a
una 641 cada una. 4stas resistencias son de un %alor de 'IJKL y permite que circule una
corriente de '- mG (miliampere) por cada diodo.
6as siguientes im/genes pueden ayudar a apreciar me#or la cone8i&n del circuito7
'. ircuito armado en el protoboard para la prueba inicial.
*ota! " #in de $ue todo #uncione bien se recomienda primero solo armar en el
circuito con un solo led a #in de $ue el programa no sea engorroso % #in de &eri#icar el
armado de los circuitos % de &eri#icar $ue la estructura de control este bien 'ec'o.
4l siguiente paso es escribir las directi%as y comandos en el programa7
Oinclude
Oinclude
main()
P
int aC-!bC-!cC-!dC-!eC-Q
menu7RR5loat 8!pQ
int opcion!op'Q
RRsystem(MclsM)Q
clrscr()Q
cout S S Mtttontrolar las luces de una %i%iendannn'.t$alann,.t1ormitorio
'nnE.t1ormitorio ,nnF tocinann+ t"anonnT.t$alirnn4sco#a una opcion...MQ
cinUUopcionQ
s;itch(opcion)P
case '7 RRsystem(MclsM)Q
clrscr()Q
cout S S Mttt $alan'.t 4ncender nn,.tGpagar nnE.t<egresar al menu nnopcion7 MQ
;hile(')P
cinUUop'Q
i5(op'CC')Pcout S S M6uz encendidaMQ
aC-8-'Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CC,)Pcout S S Mluz apagadaMQ
aC-Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CCE)Pgoto menuQRRcout S S Mttt6uz encendidaMQ
V
V
case ,7RRsystem(MclsM)Q
clrscr()Q
cout S S Mttt1ormitorio 'n'.t4ncendernn,.tGpagarnnE. t<egresar al menu nnopcion7 MQ
;hile(')P
cinUUop'Q
i5(op'CC')Pcout S S Mluz encendidaMQ
bC-8-,Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CC,)Pcout S S M6uz apagadaMQ
bC-Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CCE)Pgoto menuQRRcout S S Mttt6uz encendidaMQ
V
case E7 RRsystem(MclsM)Q
clrscr()Q
cout S S Mttt 1ormitorio ,nn'.t4ncendernn,.tGpagar nnE.t<egresar al menunnopcion7 MQ
;hile(')P
cinUUop'Q
i5(op'CC')Pcout S S Mluz encendidaMQ
cC-8-FQ
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CC,)Pcout S S M6uz apagadaMQ
cC-Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CCE)Pgoto menuQ RRcout S S Mttt6uz encendidaMQ
V
V
case F7 RRsystem(MclsM)Q
clrscr()Q
cout S S Mttt ocinan'.t4ncendernn,.tGpagarnnE. t@ol%er al menu nnopcion7 MQ
;hile(')P
cinUUop'Q
i5(op'CC')Pcout S S Mluz encendidaMQ
dC-8-)Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CC,)Pcout S S Mluz apagadaMQ
dC-Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CCE)Pgoto menuQ RRcout S S Mttt6uz encendidaMQ
V
V
case +7 RRsystem(MclsM)Q
clrscr()Q
cout S S Mttt "anon'.t4ncender nn,.tGpagarnnE.t@ol%er al menunnopcion7 MQ
;hile(')P
cinUUop'Q
i5(op'CC')Pcout S S M6uz encendidaMQ
eC-8'-Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CC,)Pcout S S M6uz apagadaMQ
eC-Q
outport(-8E*)!a+b+c+d+e)Q
V
i5(op'CCE)Pgoto menuQ RRcout S S Mttt6uz encendidaMQ
V
V
case T7RRsystem(MclsM)Q M)Q
clrscr()Q
cout S S Mhasta pronto... nMQ
breaJQ
V
RRsystem(MpauseM)Q
getch()Q
return(-)Q
V
V
$i todo sali& bien con los comandos entonces se compilara y e#ecutara teniendo en cuenta
de no cometer errores cerrar bien los corchetes! %eri5icar que no 5alta ningBn signo! punto o
algBn otro s9mbolo al transcribirlo y tendra que salir como se muestra en la imagen7
4scogemos una opci&n y aparecer/ la siguiente imagen7
Ggregamos alguna im/genes de la casa y el circuito7


Gutor7
6eer m/s7 http7RR;;;.monogra5ias.comRtraba#os)(Rtutorial0encendido0y0apagado0
ledsRtutorial0encendido0y0apagado0leds.shtmlOi8zz,h5W4T+<=
(sando el puerto paralelo de una PC

Pro%ecto! 3nter5az para el Puerto
Fec'a! E de $etiembre de ,---
"utor! Todorobot
)*P+,T"TE! ?a est/ disponible la nue%a %ersi&n del so5t;are de control para :indo;s (8! NT! ,---
y XP

)ntroducci-n!
4l puerto paralelo de una P es ideal para ser usado herramienta de control de motores! rel>s! 641Ys! etc. 4l
mismo posee un bus de datos de ) bits (Pin , a () y muchas seHales de control! algunas de salida y otras de
entrada que tambi>n pueden ser usadas 5/cilmente.
6as PYs generalmente poseen solo uno de estos puertos (6PT') pero con muy poco dinero se le puede
adicionar una tar#eta con un puerto paralelo (6PT,).
4n reglas generales la direcci&n he8adecimal 6PT' es igual a -8E*) ())) en decimal) y -8,*) (TE, en
decimal) para el 6PT,. 4sto se puede %eri5icar 5/cilmente en el setup de la P o bien en el cartel que
generalmente la P muestra en el momento del booteo. Puede darse el caso que el 6PT' asuma la direcci&n
-8E" ((+T en decimal) y el 6PT, -8E*)! en ese caso habr/ que tratar de corregir el setup yRo los #umper de
las tar#etas en caso que sea posible. 1e lo contrario se puede modi5icar el so5t;are que %eremos mas adelante
para aceptar esas direcciones.

Bre&e descripci-n del puerto paralelo!
4l puerto paralelo de un P posee un conector de del tipo 1",+ hembra cuyo diagrama y seHales utilizadas
podemos %er en la siguiente 5igura7


$i deseamos escribir un dato en el bus de salida de datos (pin , a () solo debemos escribir el byte
correspondiente en la direcci&n he8adecimal -XE*) ())) en decimal) cuando traba#amos con el 6PT' y
-8,*) (TE, en decimal) cuando traba#amos con el 6PT,. 6os distintos pins (bits) de salida correspondientes al
bus de datos no pueden ser escritos en 5orma independiente! por lo que siempre que se desee modi5icar uno se
deber/n escribir los ocho bits nue%amente.
Para leer el estado de los pins de entrada ('-! ',! 'E y '+) se debe realizar una lectura a la direcci&n
he8adecimal -8E*( ())( en decimal) si traba#amos con el 6PT' o bien leer la direcci&n -8,*( (TEE en
decimal) si traba#amos con el 6PT,. 6a lectura ser/ de%uelta en un byte en donde el bit T corresponde al pin
'-! el bit + corresponde al pin ',! el bit F corresponde al pin 'E y el bit E corresponde al pin '+.
4n la siguiente tabla se puede %er lo antedicho en una 5orma m/s 7
Escritura: Salida de Datos
Escritura en direccin 0x378 (LPT1) o 0x278 (LPT2)
DAT
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
D!2"
Pin 9 Pin 8 Pin 7 Pin 6 Pin 5 Pin 4 Pin 3 Pin2
#$" TTL 7 TTL 6 TTL 5 TTL 4 TTL 3 TTL 2 TTL 1 TTL 0
#$% No usar ZP T ZP + ZP F ZP E ZP , ZP ' ZP -

Lectura: Entrada de Datos
Lectura en direccin 0x37& (LPT1) o 0x27& (LPT2)
DAT BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
D! 2"
No
usar
Pin
10
Pin
12
Pin
13
Pin
15
No
usar
No
usar
No usar
#$'
No
usar
3nput
E
3nput
,
3nput
'
3nput
-
No
usar
No
usar
No usar


)nter#a.!
En la arc'i&o )PP/01C),C()T.PDF podemos apreciar el circuito correspondiente a la inter#a. para el
puerto paralelo.
La inter#a. nos pro&ee 2 salidas TTL3 4 salidas de potencia 55//ma) % cuatro entradas TTL. Es
importante tener en cuenta $ue las salidas TTL entregan una tensi-n de 5& % solo se les puede e6igir un
m7nimo de corriente3 apenas su#iciente para acti&ar un transistor o bien un par de compuertas TTL.
"s7 mismo las entradas TTL deben ser alimentadas con una tensi-n m86ima de 5& o de lo contrario el
c'ip resultar8 da9ado. Esta tensi-n se obtiene desde :DD a tra&;s del regulador (0 542/5).
Las 4 salidas de potencia no son mas $ue la ampli#icaci-n mediante un arra% de transistores Darlington
5(L2//<) de las salidas TTL / a = 5la salida 4 no es usada). Este c'ip puede drenar una corriente
m86ima de 5//ma3 lo $ue es su#iciente para acti&ar un LED3 un rel; % 'asta un motor DC de ba>o
consumo 5tipo motor de grabador).
La teor7a de #uncionamiento es mu% simple3 solo se usan unas compuertas del tipo Bu##er 54?@C2?5)
para poder conectarnos con seguridad al puerto paralelo3 % un arra% de transistores Darlington
5(L2//<) para brindar una salida de ma%or potencia.
Cabe aclarar $ue los dos integrados 4?@C2?5 se alimentan del regulador de &olta>e 42/53 el cual se
encarga de reducir la tensi-n de entrada 5:DD) a 5& 5:cc). La tensi-n :DD debe estar comprendida
entre A % 02&.
La tensi-n de entrada :@@ alimenta directamente al (L2//< para obtener ma%or &olta>e en caso de
$uerer mane>ar un rel; o bien un pe$ue9o motor. La tensi-n :@@ debe estar comprendida entre < %
05&. :@@ podr8 conectarse directamente a :DD 5% de esa #orma usar solo un #uente de alimentaci-n)
siempre $ue esto no pro&o$ue problemas de ruido.
En los siguientes diagramas se pueden apreciar un e>emplo de cone6ionado de un LED % un ,el; a las
salidas de potencia. En #orma an8loga podr7amos conectar tambi;n un pe$ue9o motor DC.



Programa para mane>o de la inter#a.!
El siguiente es un programa 'ec'o en Bbasic en donde se puede apreciar como se debe traba>ar con el
puerto paralelo % como se puede sacar pro&ec'o de la inter#a..
Para &isuali.arlo o ba>arlo a la PC 'aga clicC a$u7. Tambi;n puede ba>ar el e>ecutable 5.e6e)
directamente si as7 lo desea 'aciendo clicC a$u7.
El #uncionamiento de este so#tDare es mu% simple % b8sico. Primero le solicitar8 $ue eli>a el puerto a
usar 5LPT0 o LPT2). Luego puede elegir ELeer PortE para recuperar el estado de los pins de entrada 5/
a <) o bien EEscribir PortE para cambiar el estado de los pins de salida 5/ a 4). ,ecuerde $ue si
cambiamos el pin de salida / 3 tambi;n se altera el mismo pin en la salida de potencia 5solo pins / a =3 el
4 no tiene salida de potencia).
*ediante el an8lisis de este programa Basic se puede intentar 'acer programas mas elaborados en
lengua>es m8s modernos.
Programa EControl para la )PP/0E para FA6 1 T 1 2/// 1 GP
"$u7 puedes ba>ar un programa reali.ado en :isualBasic 5&ersi-n =./) $ue te permitir8 controlar las
salidas % &er el estado de las entradas disponibles en la )nter#a. para Puerto Paralelo compatible con
FindoDs A53 A23 *E3 T3 2/// % GP.
Para ba>arlo a tu PC 'as clicC a$u7. Tambi;n puede ba>ar los #uentes 'aciendo clicC a$u7.
En nuestra secci-n D+FL+"D podr8s encontrar las DLL necesarias para man>ar el puerto paralelo
desde el entorno FindoDs. La misma est8 siendo utili.ada en el programa EControl para la )PP/0E
arriba mencionado.

Conclusi-n!
Esta inter#a. es tan sencilla como Htil3 %a $ue nos permite reali.ar todo tipo de pruebas sin la necesidad
de usar un microcontrolador. I de paso nos permite tomar e6periencia en el mane>o de se9ales
mediante e$uipos microprocesados.
Podemos por e>emplo conectar un pe$ue9o robot % tomar datos de sus sensores % anali.ar las decisiones
a tomar mediante un programa 'ec'o en cual$uier lengua>e de PC actual.

)*P+,T"TE
"l conectar o desconectar la inter#a. al puerto paralelo de la PC3 se debe asegurar de
$ue tanto la PC como la inter#a. se encuentren apagadas. Caso contrario el puerto
paralelo de la PC podr7a llegar a da9arse permanentemente.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package biseccion;
/**
*
* @author Jose Eduardo
*/
public class Biseccion {
priate double ar!,ar";
double ar#,ar$;
priate int con%&;
priate double 'a,'b;
public oid llena(double a,double b){
'a%a;
'b%b;
// *+stem.out.println('a,-a.ui-,'b);

/
public oid 0uncion(){
i0(con%%&){
ar!%('a,'b)/#;
con,,;
/else{
ar"%('a,'b)/#;
/
//*+stem.out.println(ar",-a.ui-,ar!);
/
public oid ecuacion(){
double a,b;
a%1ath.sin(ar!);
ar#%a,(#*ar!)23;
ar$%1ath.sin('a),(#*'a)23;
i0(ar#*ar$4&){
'a%ar!;
*+stem.out.println(-'a-,'a);
/else{
'b%ar!;
// *+stem.out.println('b);
/
/
public oid com(){
double res;
// res%((ar"2ar!)/ar")*3&&;
res%1ath.abs(((ar"2ar!)/ar")*3&&);
*+stem.out.println(-resultado-,res);
*+stem.out.println(-ar"-,ar");
i0(res5%3){

/else{
ar!%ar";
ecuacion();
0uncion();
com();
/
/
/**
* @param args the command line arguments
*/
public static oid main(*tring67 args) {
// T898 code application logic here
//*+stem.out.println(1ath.sin(2#));
Biseccion met%ne: Biseccion();
int a%2#,b%#;
met.llena(a,b);
met.0uncion();
met.ecuacion();
met.0uncion();
met.com();


/
/

Vous aimerez peut-être aussi