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):
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.