¿Cómo puedo controlar 8 LED con un retraso de tiempo con solo un microcontrolador (PIC12) escrito en Asamblea?

Puedo tener 5 pines de E/S habilitados. Estoy confundido sobre cómo controlarlos individualmente.

Será más fácil hacerlo si agrega un registro de desplazamiento de 8 bits como 74HC164 o 74HC595. Solo requiere 3 pines para controlar cualquier cantidad de LED usando el 74HC164 una vez que conecte en cadena más registros

Respuestas (2)

No tiene suficiente E/S para controlar cada uno directamente desde el microcontrolador. Hay dos maneras de evitar esto.

1) Necesita un decodificador externo de 3 a 8 (o de 4 a 16) que transforme sus n líneas de E/S en 2^n líneas de E/S. 74154 o 74238 harán el truco. Desventaja: es hardware adicional, pero la ventaja es que es muy, muy fácil de manejar. Otra opción es 74595, que son registros de desplazamiento de serie a paralelo que se pueden conectar en cadena para E/S efectivamente infinitas.

2) Puede escanear dos bancos de 3 LED usando 2 líneas de control y 3 líneas de datos. Las líneas de control se conectan a los extremos negativos de los LED, mientras que las líneas de datos se conectan al positivo. Parece una cuadrícula donde su línea de control está en el eje X, los datos en el eje Y y los LED donde se cruzan las dos líneas. Enciende los LED 1 a 3 bajando el Control 1 para que pueda haber una diferencia de potencial entre ellos y el Control 2 alto para que los LED 4-6 permanezcan apagados. Cualesquiera que sean los LED que desee, enciéndalos en la línea de datos. Luego toma el control 2 bajo y el control 1 alto y configura sus líneas de datos para encender los LED 4-6 mientras fuerza los LED 1-3 a apagarse. Como solo querías 5, simplemente no pongas un sexto en el segundo banco. Alternas lo suficientemente rápido para que sea imperceptible a la vista. Esto no necesita nada externo, pero es más difícil de hacer en el software.

¡Asegúrese de tener resistencias limitadoras de corriente!

Así que tengo que usar otro chip lógico, ¿no hay forma de evitarlo?
No si está dispuesto a escanear a través de dos líneas. Si desea manejar los 5 simultáneamente, necesita más hardware

Si puede usar los 5 pines de E/S, solo debería poder controlar 8 LED. La forma de hacer esto es muy similar a lo que describe Bamako usando 2 líneas de control y 3 líneas de datos. El truco es usar solo 1 línea de control y 4 líneas de datos. Sin embargo, para que esto funcione, debe montar los LED de los dos 'bancos' en dirección opuesta: un banco tiene sus ánodos conectados a las líneas de datos, el otro tiene sus cátodos conectados a las líneas de datos. Los pines restantes de los LED se conectan a la línea de 'control'. Establecer la línea de control en alto le permite controlar un conjunto de LED (establecer las líneas de datos en bajo para los LED que desea encender). Establecer la línea de control en un nivel bajo le permite controlar el otro conjunto de LED (establecer las líneas de datos en un nivel alto para que se enciendan).

Por alguna razón, el editor de esquemas incorporado no se carga para mí, así que aquí hay una imagen externa. (Ignore que estos son diodos normales, no LED; el principio, por supuesto, es el mismo). Por supuesto, también querrá resistencias limitadoras de corriente en estas líneas.

ingrese la descripción de la imagen aquí

Oh wow, esta es una muy buena idea. Sencillo y elegante
Puede conducir aún más con Charlieplexing.