controlador LED en 74HC164 - necesita explicación

2

Estoy construyendo un termómetro con un gráfico de barras de luz larga (¿es esa la palabra correcta?). Será 60x 0805 LEDs. Quiero usar el microcontrolador PIC16F1503 de bajo costo con solo 12 pines de E / S.

Tengo pocos registros de turnos de 74HC164 de repuesto, así que decidí usarlos en este proyecto. Estaba buscando algunas ideas y encontré este controlador LED de 7 segmentos:

Enlace de la imagen original

Lamentablemente, la página con descripción está en chino o japonés.

¿Puede alguien explicar cómo funciona en general?

No entiendo por qué el siguiente registro de turnos está conectado a la última salida del registro anterior.

    
pregunta Kamil

2 respuestas

4

Un registro de desplazamiento como el que usted mencionó tomará 8 bits secuencialmente (uno a la vez) y los emitirá en paralelo en sus 8 salidas. Puede encadenar dos de estos entrelazando el último bit del primer registro con la entrada en serie del siguiente. Lo que obtienes entonces es el equivalente a un registro de desplazamiento de 16 bits. Puede encadenar varios registros como este, cada uno de los cuales agrega 8 bits a la configuración.

Lo que hace esto posible es que, cuando ingresas el noveno bit en el primer registro de desplazamiento, el primer bit ingresado (que ahora está en la octava posición) se empuja al siguiente registro de desplazamiento y así sucesivamente.

En la imagen que has mostrado, hay 8 registros de desplazamiento vinculados en cadena, que te permiten ingresar 64 bits y controlar 8 pantallas de 7 segmentos sin la necesidad de multiplexar los segmentos.

A continuación se muestra una animación de cómo funciona un registro de desplazamiento (gracias a totymedli por el gran gif animado). La imagen se publicó originalmente en esta respuesta en Arduino StackExchange .

Enlaanimaciónanterior,elpuntorojoenlaesquinasuperiorizquierdaeslaentradaserialdelregistrodedesplazamiento.Cadavezqueelreloj(pequeñopuntoverdequepulsacercadelaesquinainferiorizquierda)sube,elregistrodedesplazamientoinsertarálaentradaenelprimerbityempujarátodoslosotrosbitsunaposiciónaladerecha.Eloctavobitseinsertafueradelregistrodedesplazamientoensubitdedesbordamiento(nosemuestraenlaanimación).Imagineahoraqueestebitdedesbordamientosealimentaaunaentradaseriederegistrodesegundoturno.Esotepermitiráintroducirotros8bitsenlacadena.

Séquenoessucaso,perohaymásinformaciónsobrecómomanejarunregistrodecambiossimilar(LS74HC595)conArduinosen esta respuesta mía .

Aquí hay algunos enlaces que encontré en Google para controlar su registro de turnos con PIC:

respondido por el Ricardo
1

Hay una forma potencialmente mejor, en realidad de dos maneras. Permítanme comenzar señalando que, para reducir la cantidad de LEDs ENCENDIDOS, tendrá que cambiar un patrón completamente nuevo a su pantalla, y esto producirá una cierta cantidad de imágenes fantasma.

Alternativa 1: en lugar de un dato y una línea de reloj, vincule la entrada del registro de desplazamiento a alto y conduzca una línea de reloj y una línea de restablecimiento. Luego, cuando desee cargar datos nuevos, reinicie todos los registros de desplazamiento y luego cambie el número apropiado de pulsos de reloj. Esto producirá un ligero parpadeo en la parte ON del gráfico de barras, pero generalmente será mejor que una iluminación fantasma de la parte OFF.

Alternativa 2 - Reemplace los HC164 con HC194. Ate la entrada izquierda alta y la entrada derecha baja. Ahora proporcione un reloj y una línea de dirección. En el encendido, gire a la izquierda 60 veces para desactivar todas las salidas. Luego, desplácese a la derecha el número correcto de veces para mostrar el tamaño de barra que desea. A partir de entonces, si desea aumentar la longitud de la sección ON, simplemente gire a la derecha tantas veces como sea necesario. Para disminuir la longitud de ON, gire a la izquierda. Esto cambiará la longitud de ENCENDIDO según sea necesario sin ningún parpadeo o fantasma.

    
respondido por el WhatRoughBeast

Lea otras preguntas en las etiquetas