Matriz Led usando PIC

Para un proyecto en el que estoy trabajando, quiero construir una matriz de LED monocolor de 9x9 también con 9 botones para controlar los LED usando el PIC. Hasta ahora me he dado cuenta de que creo que necesitaré registros de desplazamiento para controlar los cátodos y chips de registro de desplazamiento para controlar transistores discretos para los ánodos. También necesitaré registros de desplazamiento para las entradas de los botones. (Corríjame si me equivoco).

Tengo problemas para buscar información relevante en línea (por ejemplo, qué componentes elegir), ¿alguien puede darme algunas ideas para investigar o cualquier consejo relevante sería de gran ayuda? Gracias

Respuestas (1)

Asumiré que desea controlar el ánodo común de la matriz, es decir, una línea de ánodo a la vez.

Ya mencionaste los transistores para los ánodos, y así es, los necesitarás porque tendrás que suministrar corriente para hasta 9 LED a la vez, y eso es demasiado para un circuito integrado lógico como un registro de desplazamiento 74HC595. Serán 9 transistores PNP.
Pero también necesitará transistores para los cátodos; desea controlar hasta 9 salidas bajas simultáneamente, y a 20 mA por LED (un valor típico), eso es demasiado para un 74HC595. Eso es 9 transistores NPN.

Debe controlar 18 líneas, por lo que puede usar tres 74HC595 para eso, donde cambia 18 bits para cada fila de escaneo: 9 bits para seleccionar la línea de ánodo, eso es 1 bit bajo, el resto alto y 9 bits para los cátodos , alto para encendido, bajo para apagado.

La buena noticia es que no necesita un registro de desplazamiento separado para los botones: conecte cada uno de ellos a una línea de ánodo, con los otros pines unidos a una entrada, y conecte una resistencia desplegable en esa entrada.
Ahora, cada vez que escanea una línea de ánodo, puede ver en la entrada si se presiona el botón para esa línea; entrada alta = presionada, entrada baja = liberada.
Si espera que los usuarios presionen dos botones a la vez (¡siempre lo harán!), tendrá que colocar diodos en serie con los botones para evitar que se enciendan otras filas de LED distintas a la seleccionada.

edite su comentario
En su boceto , tiene las resistencias de los LED en las columnas, lo cual está bien si maneja la pantalla una fila a la vez. De lo contrario, la resistencia compartirá la corriente para todos los LED en una fila y el brillo variará con la cantidad de LED que estén encendidos. En mi esquema a continuación, los moví a las filas, de modo que cada LED tenga su propia resistencia.

ingrese la descripción de la imagen aquí

Los círculos representan los LED. La resistencia bajará la entrada del microcontrolador. Si se presiona uno de los botones, la entrada aumentará cuando se seleccione la columna asociada. Entonces, en cada escaneo de columna, puede verificar el estado de un botón. Los diodos impiden el encendido de LEDs en otras columnas que la activa si se presiona más de un botón simultáneamente.

Un tiro en la oscuridad, pero aún puedes ayudarme (no estoy seguro si recibirás esta respuesta).
@Daniel: sí, puedo escucharte (un usuario siempre recibe una notificación de los comentarios en sus publicaciones). Avíseme si mi respuesta necesita aclaración.
Ah, esperaba que este fuera el caso. Hasta ahora he construido una matriz de LED algo funcional. Realmente no he comenzado la parte de programación, pero puedo encender los LED dentro de la matriz. EDITAR: lo siento, soy nuevo en este sitio. Accidentalmente presioné enter, no he terminado de escribir
No estoy seguro de cómo conectaría los botones, ¿podría aclararme ese punto? Lo que estaba pensando era conectar cada botón pulsador a un pin de E/S msp430, pero parece que solo hay ocho y necesito 9 botones.
aquí hay un boceto mal dibujado del circuito. Cada resistencia base está conectada a uno de los tres 74HC595 y los 595 están conectados al msp430. Gracias
@Daniel: actualicé mi respuesta. Espero que sea más claro ahora, pero las preguntas aún son bienvenidas.
¡Ya veo, tiene sentido! Me pondré en contacto con usted si tengo más preguntas. Gracias
Hola Steven, ¿estás familiarizado con la programación msp430?
@Daniel - solo limitado: he usado el MSP430F1101 una vez, pero solo tiene 1 kB de memoria, así que puedes imaginar que no fue mucho código :-)