Cómo "deserializar" una salida digital a 4 salidas digitales

3

Estoy trabajando en un pequeño proyecto de prueba para mi Arduino y, como parte de él, quiero mostrar un número en un sistema LED de 7 segmentos. Mi primera configuración incluyó solo enlaces directos a la pantalla de 7 segmentos y el control de cada segmento individualmente con el Arduino configurando la salida a LOW para activarlo.

Luego reduje el número de pines requeridos a 4 (5 incluyendo el control de punto decimal) usando un BCD a un chip CMOS de alta velocidad de 7 segmentos (74HC4511) y conectándolo como se muestra en el diagrama a continuación (las puertas NO son logrado mediante el uso de puertas NOR con una entrada conectada a tierra):

simular este circuito : esquema creado usando CircuitLab

Luego puedo controlar la pantalla de 7 segmentos usando el siguiente fragmento de código:

digitalWrite( 1, iVal & 0x0001 != 0 ? HIGH : LOW );
digitalWrite( 2, iVal & 0x0002 != 0 ? HIGH : LOW );
digitalWrite( 3, iVal & 0x0004 != 0 ? HIGH : LOW );
digitalWrite( 4, iVal & 0x0008 != 0 ? HIGH : LOW );
digitalWrite( 5, bDPRequired ? HIGH : LOW );

Sin embargo, esto no es ideal ya que todavía requiere 4 pines; idealmente, me gustaría reducirlo a 1 pin que genera los datos en serie. Mi primer pensamiento fue usar algún tipo de registro de desplazamiento de 4 bits; sin embargo, esto requeriría otro pin de salida para controlar el pulso del reloj, y daría como resultado pantallas espurias durante la transición de un número a otro.

Le agradecería cualquier forma potencial de minimizar el número de pines.

PS: Estoy consciente de que es una mala práctica tener el resistor limitador de corriente en la salida de 5V en lugar de en cada uno de los pines del cátodo en la pantalla de 7 segmentos, ya que dará como resultado una menor emisión de luz a medida que haya más segmentos. están activados.

    
pregunta Thomas Russell

2 respuestas

6

Podría usar un registro de cambios 74HC595 y este circuito, cortesía de Roman Black.

Eso te comprará 8 salidas con un solo chip de 25 centavos.

    
respondido por el Spehro Pefhany
0

Lo único que se me ocurre es que hacer esto con solo un pin es usar un registro de desplazamiento de 1 cable, como DS2408 . Esto te dará 8 salidas usando solo un pin de tu micro. Sin embargo, realmente te sugiero que vayas a dos alfileres. Esto le permitirá utilizar un registro de desplazamiento estándar o I2C a un chip de expansión GPIO, ya que esto será mucho más fácil de programar.

Por cierto, tienes un error en tu esquema. La resistencia debe estar después de su chip de controlador. De lo contrario, su Vcc caerá en voltaje junto con los LED a medida que se enciendan más.

    
respondido por el DoxyLover

Lea otras preguntas en las etiquetas