Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas previas exclusivas: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones y sorteos festivos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

74HC595

Descripción general

Generalmente, hay dos formas de controlar una pantalla de 7 segmentos. Una forma es conectar sus 8 pines directamente a ocho puertos en la placa Uno, como hemos hecho anteriormente. O puedes conectar el 74HC595 a tres puertos de la placa UNO y luego la pantalla de 7 segmentos al 74HC595. En este experimento, usaremos esta última forma. De esta manera, podemos ahorrar cinco puertos, lo cual es muy importante considerando los puertos limitados de la placa Uno. ¡Vamos a empezar!

Componentes necesarios

En este proyecto, necesitamos los siguientes componentes.

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Elite Explorer Kit

300+

Elite Explorer Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN A LOS COMPONENTES

ENLACE DE COMPRA

Arduino Uno R4 WiFi

-

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

Pantalla de 7 segmentos

COMPRAR

74HC595

COMPRAR

Conexión

../_images/29-74hc595_bb.png

Diagrama esquemático

En el experimento, MR (pin 10) está conectado a 5V (Nivel ALTO) y OE (pin 1) a GND (Nivel BAJO). Por lo tanto, los datos se ingresan en el borde ascendente de SHcp y entran en el registro de memoria a través del borde ascendente. Usamos la función shiftout() para enviar un dato de 8 bits al registro de desplazamiento a través de DS. En el borde ascendente del SHcp, los datos en el registro de desplazamiento se mueven sucesivamente un bit a la vez, es decir, los datos en Q1 se mueven a Q2, y así sucesivamente. En el borde ascendente de STcp, los datos en el registro de desplazamiento se mueven al registro de memoria. Todos los datos se moverán al registro de memoria después de 8 veces. Luego, los datos en el registro de memoria se envían al bus (Q0-Q7). Así, los 16 caracteres se muestran en la pantalla de 7 segmentos en turno.

../_images/29_74hc595_schematic.png

Código

Nota

  • Puedes abrir el archivo 29-74hc595.ino en la ruta elite-explorer-kit-main\basic_project\29-74hc595 directamente.

  • O copiar este código en Arduino IDE.

Después de cargar el código en la placa uno, deberías ver la pantalla de 7 segmentos mostrar de 0 a 9 y de A a F.

Análisis del código

Establecer los elementos del array

int datArray[16] = {252, 96, 218, 242, 102, 182, 190, 224, 254, 246, 238, 62, 156, 122, 158, 142};

Este array almacena los datos de los 16 caracteres de 0 a F. 252 representa 0, que puedes calcular por ti mismo. Para mostrar 0, el segmento g (el del medio) de la pantalla de 7 segmentos debe estar en nivel bajo (apagado).

Dado que el segmento g está conectado a Q1 del 74HC595, configura tanto Q1 como DP (el punto) en nivel bajo y deja los demás pines en nivel alto. Por lo tanto, los valores de Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 son 1 1 1 1 1 1 0 0.

Cambia los números binarios a decimales: 1x27+1x26+1x25+1x24+1x23+1x22+0x21+1x20=252.

Así que ese es el valor para que se muestre el número 0. Puedes calcular otros caracteres de manera similar.

Mostrar 0-F en la pantalla de 7 segmentos

for(int num = 0; num < 16; num++)

{

  digitalWrite(STcp,LOW); //poner a tierra ST_CP y mantenerlo bajo mientras se transmite

  shiftOut(DS,SHcp,MSBFIRST,datArray[num]);

  //retorna el pin de cierre alto para señalar al chip que ya no necesita escuchar información

  digitalWrite(STcp,HIGH); //activar el ST_CP para guardar los datos

  delay(1000); //esperar un segundo

}

Establece STcp en nivel bajo primero y luego en nivel alto. Generará un pulso ascendente de STcp.

shiftOut() se usa para desplazar un byte de datos un bit a la vez, lo que significa desplazar un byte de datos en dataArray[num] al registro de desplazamiento con el pin DS. MSBFIRST significa mover desde los bits altos.

Después de ejecutar digitalWrite(STcp,HIGH), STcp estará en el borde ascendente. En este momento, los datos en el registro de desplazamiento se moverán al registro de memoria.

Un byte de datos se transferirá al registro de memoria después de 8 veces. Luego, los datos del registro de memoria se envían al bus (Q0-Q7). Verás que un carácter se muestra en la pantalla de 7 segmentos. Luego espera 1000 ms. Después de esa línea, vuelve a for(). El bucle se repite hasta que todos los caracteres se muestren en la pantalla de 7 segmentos uno por uno después de 16 veces.