¿Cargando un registro de desplazamiento sin mostrar su contenido / salida?

0

Estoy haciendo una matriz de LED utilizando dos registros de desplazamiento de 4 bits DM7495N y un registro de desplazamiento de 8 bits. Los registros de 4 bits son para las columnas de ánodo y los de 8 bits se conectan a los transistores que controlan las filas del cátodo. La matriz es de 8 por 8. Esta configuración es necesaria por el attiny85 que estoy usando como microcontrolador, que no tiene inherentemente suficientes pines de E / S para controlar un 8 por 8.

Mi idea es rasterizar la matriz, cargando uno de los registros de 4 bits, mientras que el otro muestra su contenido, luego cambiar y continuar con toda la matriz de esa manera. De esa manera, puedo mantener encendidos 4 LED a la vez para preservar el brillo general de la matriz. El único problema es que no puedo pensar en una forma fácil de cargar uno de los registros de desplazamiento de 4 bits sin mostrar simultáneamente su contenido, que se mostraría como giberish en la matriz terminada.

El attiny85 tiene 5 pines de E / S, a menos que cuente el pin de restablecimiento, que preferiría no usar, ya que requeriría programación de alto / bajo voltaje para reprogramar el microcontrolador. Estoy usando uno de los 5 pines de E / S para controlar los datos que ingresan en los tres registros de desplazamiento. Se están utilizando tres pines más para controlar los pines serie / cambio de los registros de desplazamiento individuales. Eso me deja con un pin de E / S gratis.

¿Hay alguna manera fácil de controlar qué registro de 4 bits se muestra y cuál se está cargando con ese último pin? Pensé en usar un transceptor no-compuerta y algunos transistores adicionales para controlar qué registro de 4 bits recibe una corriente más alta en su línea VCC, de modo que puede estar recibiendo suficiente corriente para recibir el serial del microcontrolador, pero no lo suficiente para alimentar cualquier de los LEDs a los que está conectado. Funcionaría eso? Soy una especie de novato con los registros de turnos y la electrónica en general, así que no estoy seguro.

La otra forma en que he pensado es simplemente tener un transistor para cada salida de los registros de 4 bits, controlando el flujo de corriente a las columnas de ánodo. La puerta no controlaría qué transistores están saturados dependiendo de qué registro se muestra y cuál se está cargando (la entrada de la puerta no también se conectará a las bases de cuatro transistores correspondientes a un registro de 4 bits y la salida de la puerta no). estaría conectado a las bases de los otros transistores correspondientes al otro registro de 4 bits).

Ambos de estos enfoques requerirían un buen número de transistores, lo que me gustaría evitar, considerando que estoy algo restringido en el espacio. Lo siento si esto es difícil de visualizar. Si ese es el caso, entonces podría intentar hacer un esquema. Nunca he intentado hacer un esquema antes, pero podría intentarlo. Cualquier idea sobre cómo podría lograr el efecto que quiero, de la manera más simple posible, sería muy apreciada, ¡o cualquier otra idea! Gracias!

    
pregunta Holden

3 respuestas

0

Puede registrar ese registro de desplazamiento en hasta 25Mhz.

Siendo realistas, si usted tiene todo configurado correctamente en su código, debería poder cargar los registros con la rapidez suficiente para que el estado de transición no sea visible en los LED.

Es posible que desee utilizar el hardware SPI para controlar el registro que sería visible durante los estados de transición (para cambiar el otro de forma invisible, simplemente configure el visible a 0000 antes de actualizar).

Aquí hay un truco que le dará la máxima velocidad de cambio en el registro visible ...

enlace

    
respondido por el bigjosh
1

Puede usar un solo registro de 8 bits en búfer, como un 74LS595 en lugar de dos registros de 4 bits. Cambiaría los nuevos datos y alternaría la línea de retención para mover los datos a los pines de salida. No hay resultados 'giberish'. (Lo que él dijo ... ¡líneas cruzadas en edición!)

    
respondido por el BobT
1

El 7495 es una parte antigua y bastante primitiva. Evita usarlo.

En su lugar, use un registro de desplazamiento con un bloqueo de datos, como 74 (LS / HC) 595 . Este registro de desplazamiento tiene conjuntos separados de registros de "desplazamiento" y "almacenamiento" internamente: puede actualizar el registro de almacenamiento sin afectar la salida, y luego pulsar la entrada RCLK para copiar el registro de desplazamiento en el registro de almacenamiento.

Como beneficio adicional, el '595 es un registro de cambios de 8 etapas, por lo que solo necesitará uno de ellos.

Para abordar otro aspecto de su pregunta:

No te metas con VCC. "Undervolting" una parte digital a menudo hará que se comporte de forma errática. A veces también hará que la parte comience a extraer energía de sus E / S. Esto podría ser desastroso en su situación, ya que el registro de desplazamiento proporciona energía a los LED y terminará consumiendo energía de uno de los pines de E / S del microcontrolador, dañándolo.

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas