Paso 4: programación
Para la programación debe tener en cuenta algunos conceptos importantes sobre el diseño de hardware y sobre el shift register 74HC595.
La función principal del 74HC595 es transformar 8 bits serie en 8 cambio paralelo-hacia fuera.
Todos los datos de serie van en Pin #14 y en cada señal de reloj los bits van a sus correspondientes pines paralelo-hacia fuera (Qa a Qh).
Si usted continua a enviar más datos, los bits será movido a uno al Pin #9 (Qh') como salida de serie otra vez y gracias a esta funcionalidad se pueden poner otro chips conectados en cascada.
Importante:
En este proyecto tenemos tres ICs del 74HC595. Los dos primeros trabajan para controlar las columnas (con lógica positiva ) y la última para el control de las líneas (con lógica negativa por el funcionamiento de los transistores PNP).
Lógica positiva significa que usted debe enviar una señal de nivel alto (+ 5V) de Arduino y lógica negativa significa que usted debe enviar una señal nivel bajo (0V).
- Matricial de LEDs
- La primera es para las salidas de los cátodos de los LEDs rojo (8 x) >> Rojo de la columna (1 a 8).
- La segunda es para la outputL de los cátodos de los LEDs verde (8 x) >> Verde de la columna (1 a 8).
- El último es para la salida de los ánodos de los LED (08 x rojo y verde) >> líneas (1 a 8).
Por ejemplo, si desea encender sólo el LED verde de la columna 1 y la línea 1 debe enviar la siguiente secuencia de datos seriales:
LÍNEAS 1 º)
~10000000 (sólo la primera línea está activada a) - el símbolo de ~ es invertir todos los bits de 1 a 0 y viceversa.
2 º) columna Verde
10000000 (sólo la primera columna de LED verde está activada para)
3 º) COLUMNA ROJA
00000000 (todas las columnas de LEDs rojo están apagados)
-Declaraciones Arduino:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B10000000); Lógica negativa para las líneas de
shiftOut (dataPin, clockPin, LSBFIRST, B10000000); Lógica positiva para las columnas verdes
shiftOut (dataPin, clockPin, LSBFIRST, B00000000); Lógica positiva para las columnas de rojo
Observación:
También puede combinar ambos LEDs (verde y rojo) para producir el color amarillo como la siguiente:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B10000000);
shiftOut (dataPin, clockPin, LSBFIRST, B10000000);
shiftOut (dataPin, clockPin, LSBFIRST, B10000000);
- Pantalla de 7 segmentos
Para este tipo de exhibiciones de la secuencia es la misma. La única diferencia es que no necesita utilizar el LED verde.
1 º) dígitos (1 a 4 de izquierda a derecha)
~ 10000000 (dígito set #1)
~ 01000000 (dígitos de ajuste #2)
~ 00100000 (dígitos de ajuste #3)
~ 00010000 (dígitos de ajuste #4)
2 º) NO UTILIZA
00000000 (todos los bits de posición cero)
SEGMENTOS de 3 º) (A F y DP - Revise su hoja de datos de visualización)
10000000 (conjunto segmento A)
01000000 (conjunto segmento B)
00100000 (conjunto segmento C)
00010000 (conjunto segmento D)
00001000 (conjunto segmento E)
00000100 (conjunto segmento F)
00000010 (conjunto segmento G)
00000001 (juego DP)
-Ejemplo Arduino para fijar la pantalla #2 con el número 3:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B01000000); Set DISPLAY 2 (lógica negativa)
shiftOut (dataPin, clockPin, LSBFIRST, 0); Poner datos a cero (no usado)
shiftOut (dataPin, clockPin, LSBFIRST, B11110010); Conjunto de segmentos A, B, C, D, G)
Finalmente, aplicar este proceso se puede controlar cualquier LED de la pantalla y también puede crear cualquier carácter especial que necesita.