Cargar datos en Registro de desplazamiento desde botones

Hola a todos.

Estoy haciendo un proyecto y necesito cargar datos desde un par de botones en un registro de desplazamiento. La idea es que al apretar un botón se agregue un cero y al apretar el otro un uno.
Lo primero que hago es un "anti-rebote" por cada botón, con una red RC y un inversor schmitt trigger. Luego hago una OR de ambos botones (considerando que al apretarlos las señales se pasan a uno) y eso lo uso como clock del shift register. Luego agarro la señal del botón "1" y la conecto a la data del shift register.

En el simulador anda bien, pero el problema es que no estoy seguro de estar cumpliendo el "set-up time" del shift register. A alguien se le ocurre alguna manera de plantearlo? O si es posible (y razonable) demorar el clock con más compuertas?

Muchas gracias,
Gonzalo
 
Hola gzaloprgm

Es difícil adivinar, por ejemplo, cuál Shift Register estás utilizando, qué simulador utilizas.
Luego Dices: La idea es que al apretar un botón se agregue un cero y al apretar el otro un uno.
Sin soltar el Primero ??
Supongo que sí por lo que dices más adelante: (considerando que al apretarlos las señales se pasan a uno).
Pero si los 2 botones están conectados a la OR el estatuto de ésta es: Cualquier 1, en sus entradas, da 1 en su salida así que cualquiera que presiones la salida de la OR será 1.

Qué tal si adjuntas el archivo que se genera con tu simulador. Tendríamos una visión más clara del este asunto.
Además puedes agregar una imagen (BMP, JPG) de tu circuito.

saludos
a sus ordenes
 
Hola... Los botones se aprietan de a uno. El shift register es serie-paralelo. El circuito es este:

ckt.png


En el simulador anda bien (todavía no lo probé en la vida real). La idea es que se genera una señal de clock al apretar cualquiera de los dos botones, y la señal de "data" viene de uno de ellos. Espero que se entienda. Mi duda es cómo retardar el pulso de clock.

Un saludo,
Gonzalo
 
Hola gzaloprgm

Ahora es más claro.
Con el botón superior quieres desplazar un nivel bajo(0).
Con el botón inferior quieres desplazar un nivel alto(1).

Para lograrlo debes retardar el nivel alto en la entrada C1/_>(8) del 74HCT164 con respecto las entradas &(1, 2).
Por ejemplo para desplazar un 0 primero &=0, poco tiempo después C1/_>(8)=1.
Para desplazar un 1 primero &=1, poco tiempo después C1/_>(8)=1.

Lo puedes lograr como se mira en la imagen adjunta.
Nota que el capacitor es de 100 mF solo para que se note la rampa en la entrada C1/_>(8)=1 en el osciloscopio.
Este capacitor y la resistencia asociada deben calcularse para el rango en frecuencia de trabajo de tu circuito.


saludos
a sus ordenes
 

Adjuntos

  • Shift Register.jpg
    Shift Register.jpg
    261.1 KB · Visitas: 8
  • Shift Register.zip
    12.6 KB · Visitas: 5
Atrás
Arriba