# Ayuda: Puerto paralelo y Shift Registers



## ballonatic (May 13, 2011)

Buenas tardes a toda la comunidad de Foros de electrónica, diferentes temas de aquí me han sido de gran ayuda y ahora decido plantear un problema que tengo.

Para empezar, tengo que hacer un proyecto en ensamblador manipulando hardware, he decidido manejar el puerto paralelo y diseñar un circuito para manejarlo desde el.

El circuito consiste en una serie de Shift Registers 74164 que convierten de serie a paralelo ( yo se que uds sabrán mas que yo). Lo que estoy intentando hacer es manipular 4 displays!, cada display sera controlado por un pin del puerto paralelo individualmente.

Lo que estoy tratando de hacer es manipular el pulso de reloj del 74164 con otro pin del puerto paralelo. Quiero saber si es posible esto?, en resumen ya lo he hecho pero no me funciona el pulso de reloj, esta totalmente de-sincronizado.

Ya que según yo envió un bit por un pin y envió un pulso de reloj(desde otro pin) para que este bit se registre, y consecutivamente completando el byte y la salida va a un display alimentado con otra fuente ( uso opto-acopladores para proteger el puerto paralelo) pero esto funciona aleatoria mente (obviamente no, estoy haciendo algo mal), parece ser que a veces me registra 3 bits ,4 o hasta los 8 bits cuando yo supuestamente solo he enviado un solo un pulso de reloj (bajada de reloj) para registrar solo un bit.

He usado el simulador LiveWire para crear y simular el circuito y funciona perfectamente como yo desearia que funcionara, pero al momento de hacerlo con el puerto paralelo es otra historia

Les agradesco su ayuda!, les adjunto el circuito: (Lo siento debido al internet publico lento en el que estoy no pude subir foro, llegando a mi casa lo subo sin falta)

Gracias


----------



## MrCarlos (May 13, 2011)

Hola ballonatic


En espera de tu circuito desarrollado con el SoftWare LiveWire.
No olvides mencionar qué SoftWare utilizas para manejar el Puerto Paralelo.

saludos
a sus ordenes


----------



## ballonatic (May 13, 2011)

Hola MrCarlos gracias por responder!.

Aqui les adjunto la imagen:









Ademas el software que utilizo para manejar el puerto yo lo estoy desarrollando, primero estoy haciendo pruebas con Visual Basic y la libreria IO.DLL, ya cuando tenga un circuito funcional lo tengo que hacer en lenguaje ensamblador.

Espero y se alcance a ver!, la fuente de voltaje VccLPT estoy "Simulando" al puerto paralelo con esos switches lo que hago con los switches en el simulador funciona perfecto (mandar bits y bajadas de reloj) pero al hacer exactamente lo mismo programandolo en visual basic los pulsos de reloj no se me respetan ( por así decirlo )

Gracias


----------



## MrCarlos (May 13, 2011)

Hola ballonatic

Con cierta dificultad pero todo se ve bien en el diagrama que adjuntaste.

Estuve analizando tu circuito y veo que tienes una mezcla de circuitos TTL y CMOS. El LiveWire toma todos los circuitos lógicos como que son de una sola familia, pero no todos, así que al armarlo en la realidad no siempre funciona este tipo de mezclas. Esta puede ser una de las causas por lo que no funciona bien tu circuito.

Es, tambien probable, que el SoftWare que estás desarrollando con Visual Basic tenga algunos problemas. Creo, si mal no recuerdo, hay un protocolo el cual hay que cumplir antes de enviar o recibir datos por el puerto paralelo.

Le agregué un botón de Reset a tu circuito y sí, efectivamente funciona tal cual lo mencionas en tu mensaje.
Por lo tanto es más viable que el programa sea el que tiene problemas por solucionar. Y claro, cuando lo armes utiliza solo circuitos CMOS o TTL, o Bien TTL que sean compatibles con los CMOS, estos son los TTL que traen las Siglas 74HCxxx.

saludos
a sus ordenes


----------



## ballonatic (May 14, 2011)

Enserio muchas gracias por estar respondiendo MrCarlos, yo en realidad de electrónica no se mucho! pero me gusta bastante, así que si hago una prueba con un un shift register compatible con CMOS  seria un 74HC164 ?. Gracias por esta información, mañana mismo iré a comprar solo un shift register para hacer la prueba!, igual antes me revisare la programación que he hecho en visual basic. Y otra pregunta, el pulso de reloj lo puedo manejar a mi antojo!? o tiene que ser constante (mismo tiempo entre subidas y bajadas)?

Gracias!


----------



## MrCarlos (May 14, 2011)

Hola ballonatic

Sí, efectivamente el 74HC164 sería compatible con los circuitos de la familia CMOS.

Bueno, el pulso lo puedes manejar a tu antojo, como mencionas, Pero yo te sugeriría que en reposo, el LED, en el correspondiente Optoacoplador estuviera encendido. De tal suerte que las entradas Clock de los 74HC164 estarían a nivel bajo y cuando quieras registrar las entradas de los PIN’s 2, 3, 4 y 5 apagarás ese LED por un instante muy corto.
Por lo tanto, solo en la simulación, yo cambiaría el botón NO que tienes por uno NC. Y en el programa haría otro tanto para que ese LED permaneciera encendido cuando el sistema está en reposo.

saludos
a sus ordenes


----------



## ballonatic (May 16, 2011)

Hola MrCarlos!

Me he comprado un 74HC164 y al parecer me salio defectuoso, el datasheet es exactamente el mismo y simplemente he quitado el 74LS164 y puesto el HC y ni un led del display se ha prendido le mando señal, clock! y nada!. 
Quiero pensar que esta defectuoso!, ya hasta mañana tendre que ir a otra tienda a comprar otro, o que opinas al respecto?
Saludos MrCarlos


----------



## MrCarlos (May 16, 2011)

Hola ballonatic

Seguramente sabes o has oído que los CMOS son muy susceptibles a las descargas electrostáticas.
Hay que manejarlos con mucho cuidado pues se pueden dañar con el simple hecho de tocar sus terminales. 

Por otra parte: analizaste las hojas de datos del 74HC164 ?

Probablemente este 74HC164 no pueda proporcionar la corriente suficiente para encender los LED’s de los Display’s que estás utilizando. Este circuito puede proporcionar cuando mucho 25mAmp. Cuanta corriente requieren tus Display’s para encender ?.
Probablemente por ahí está el problema por lo que no encienden.

saludos
a sus ordenes


----------



## ballonatic (May 17, 2011)

Hola compañero!

Pues la hora de entrega se acerca y yo aun sigo atorado! mira Carlos hice una prueba!:

Utilice el mismo circuito que tenia al principio con el 74LS164 y pues prendian leds descordinadamente y todo como lo tenia antes y con un multimetro revise voltajes de las salidas del 74LS164 y todo bien, aproximadamente salian 4 v. , la hoja de datos del 74HC164 es identica al LS por lo tanto solo quite el shift register anterior y puse el HC164 y no prende ningun led!, cheque voltajes y no, nada de voltaje!.
Podemos deducir que lo descompuse o me vino defectuoso?

Saludos


----------



## MrCarlos (May 17, 2011)

Hola ballonatic

Lo Que yo creo, principalmente, es que el 74HC no puede encender los LED's del Display.
pero sí, es probable que se descompuso por el manejo.

creo que el HC no puede encender los LED's porque dices en tu mensaje que checaste el voltaje y no lo hay.

Agrega un Buffer no inversor entre el HC y los displays. uno para cada segmento.

saludos
a sus ordenes


----------



## ballonatic (May 17, 2011)

Gracias por tus soluciones MrCarlos.

Hoy al ir a la tienda de electrónica mencionaron lo mismo que tu! así que no es posible que encienda los leds!, esperemos que ya con los buffers ( un 74HC125 ) ande todo esto!, si no ya tendré que buscar otra pequeña opción, pero yo se que se puede 

Un saludo! y que tenga un buen dia mañana


----------



## MrCarlos (May 18, 2011)

Hola ballonatic

Analizaste las hojas de datos del 75HC125 ?
Solo puede dar 35mAmp por salida. El parámetro se llama Iout.
Vuelvo a repetir: Cuanta corriente requieren los Display’s que estás utilizando para encender ?.. Por segmento Cuánta I.
Mídela colocando el 74LS164. Con este IC prendían... No ?.

 saludos
a sus ordenes


----------



## ballonatic (May 19, 2011)

Hola MrCarlos!

El tiempo se me ha venido encima y ya que yo queria controlar mas de 2 displays pues creo tendre que hacer otra cosa. Hacerlos con flipflops me hubiera dado credito extra pero lo importante es la programacion en Assembler asi que MrCarlos, que componentes me recomiendas para armar un circuito similar pero con decodificadores a 7 segmentos? y solo 2 displays, ese es mas sencillo y ocuparia los 8 pines del puerto paralelo, no tendras un diagrama que pueda ayudarme? o solo si puedes decirme que circuitos integrados usar.
El fin de semestre se acerca y de las 7 materias ando muy cargado de trabajo asi que no puedo dejar pasar mas tiempo 

Un saludo y te agradesco el tiempo dedicado en mi caso!

Es facil armar uno de estos no?, pero no quiero mezclar CMOS y TTL ya que la verdad no se identificarlos


----------



## MrCarlos (May 19, 2011)

Hola ballonatic

Por tu circuito original veo que solo quieres mostrar en el Display de 16 segmentos lo que llega por el puerto paralelo de la PC.

Como con los IC’s que le has puesto no encienden los Display’s quítalos y en su lugar agrega LED’s  que no requieran mucha corriente. Irían conectados todos a tierra por el cátodo.

Por otra parte, en tu diagrama original tienes unas compuertas NOT(Inversores) de la familia CMOS. Reemplaza estos por el 74LS04.

Crees que con estas ideas soluciones el problema con tu circuito ?

saludos
a sus ordenes


----------



## ballonatic (May 19, 2011)

Los Opto Acopladores que estoy usando son 4N28, de esos esta bien?

Mira la verdad ya deseo hacerlo con decodificador de 7 segmentos para simplificar mas la programación en ensamblador, cuando este en vacaciones me gustaría hacerlo con los shift registers ya que me gusto y quiero ver si puedo hacerlo funcionar, pero ahorita ya estoy corto de tiempo

Estoy haciendo otro diagrama con  un 74LS47 que es el decodificador y pues utilizare los mismos opto acopladores y pues los 8 pins del puerto paralelo! 

PD. No crees que el problema que tengo sea por los opto acopladores? por que si es así, si uso los mismos probablemente tendré fallas!, no existen otros opto acopladores que me puedas decir? como comente estoy usando los 4N28


----------



## MrCarlos (May 19, 2011)

Hola : ballonatic

Creo que los 4N28 no son el problema.
Qué dicen las especificaciones de ese opto-acoplador ?

El LED que corriente requiere para encender ?
El fototransistor qué corriente soporta de Ic(Corriente de colector) ?

Analiza la imagen adjunta.

saludos
a sus ordenes


----------



## ballonatic (May 31, 2011)

Hola MrCarlos

Perdona mi inactividad, pero el fin de semestre se me vino encima y tuve que atender muchos proyectos que tenia en cola.

Te quiero agradecer por toda la atención que diste a mi caso, me impresiono que existan personas como tu que están dispuestas a ayudar.

El proyecto que tenia pensado hacer lo cambie como habia comentado, y utilice simplemente codificadores BCD a 7 segmentos, y funciono de maravilla, solo que lo hice con 2 displays, ya que no me alcanzaba para mas.

Te adjunto una foto del circuito funcionando 

Saludos y gracias por todo


----------

