Matriz de LED con cambio de registros (4 / 7 paso)

Paso 4: Software

El truco

Sí, como todo, hay un truco. El truco es que nunca hay más de 8 LED ' s iluminados a la vez.

Para que funcione bien, es necesario un poco de programación astuto. El concepto que he elegido es utilizar una interrupción de temporizador. Aquí funciona la interrupción pantalla en Inglés:

  • Temporizador cuenta hasta cierto punto, cuando la rutina de servicio de interrupción se ejecuta.
  • Esta rutina decide qué fila es el próximo que se muestre.
  • La información para la siguiente fila se levantó de un búfer y cambió de puesto en el controlador de columna (esta información está "trabada" por lo que no aún no aparece).
  • El conductor de la fila se apaga, no LEDs se encienden en la actualidad.
  • El conductor de la columna es "trabado" en la información que cambió de puesto en dos pasos hace la información actual para mostrar.
  • El conductor de la fila entonces proporciona corriente a la nueva fila que estamos viendo.
  • El programa y termina rutina de servicio de interrupción vuelve al flujo normal hasta la siguiente interrupción.

Esto sucede muy rápidamente. La interrupción se produce cada 1 mseg. Esto significa que estamos refrescante toda la visualización de una vez cada 8 mseg. Esto significa una tarifa de la exhibición de alrededor de 125Hz. Hay cierta preocupación en cuanto a brillo ya que esencialmente estamos corriendo los LEDs en un ciclo de trabajo de 1/8 (son 7/8 del tiempo). En mi caso me sale una pantalla adecuadamente brillante con ningún parpadeo visible.

Completo pantalla LED está trazada en una matriz. Entre interrupciones se puede cambiar el arreglo de discos (ser consciente de la atomicidad) y aparecerán en la pantalla durante la siguiente interrupción.

Las características de la escritura de código para el Microcontrolador AVR y de cómo escribir código para hablar a los registros de cambio está fuera del alcance de este instructable. He incluido el código fuente (escrito en C y compilado con AVR-GCC) así como el archivo hexadecimal para directamente programar. He comentado todo el código para que usted debe ser capaz de usar esto para aclarar cualquier duda sobre cómo obtener datos en el registro de desplazamiento y cómo está trabajando la actualización de fila.

Tenga en cuenta que estoy usando un archivo de fuente que viene con la biblioteca de C universal ks0108. Esa biblioteca se puede encontrar aquí: http://en.radzio.dxp.pl/ks0108/

Actualización:

Registros de desplazamiento: Cómo

He decidido agregar un poco acerca de cómo al programa con registros de desplazamiento. Espero que esto borra cosas para aquellos que no han trabajado con ellos antes.

Lo que hacen
Registros de cambio toman una señal de un cable y salida de información a muchos pernos diferentes. En este caso, es un cable de datos que tiene en los datos y 8 pernos controladas dependiendo de qué datos ha sido recibido. Para hacer las cosas mejor, hay un outpin para cada registro de desplazamiento que puede ser conectado a la clavija de entrada de otro registro de desplazamiento. Esto se llama cascada y hace que la expansión potencial una posibilidad casi ilimitada.

Los pines de Control
Registros de cambio tienen 4 pines de control:

  • Cierre - este pin indica el registro de desplazamiento cuando sea el momento para cambiar a datos recién introducidos
  • Datos - 0 y el 1 que dice el registro de desplazamiento qué pins para activar se reciben en este pin.
  • Reloj - se trata de un pulso en el microcontrolador que indica el registro de desplazamiento para tomar una lectura de datos y moverse al siguiente paso en el proceso de comunicación
  • Habilitar salida - se trata de un interruptor on/off, alto = en, bajo = Off

Lo que es hacer su hacer una oferta:
Este es un curso intensivo en el funcionamiento de los pines de control anterior:

Paso 1: Sistema de cierre, datos y reloj bajo

  • Ajuste el pestillo baja dice el registro de desplazamiento que están a punto de escribir en él.

Paso 2: Pin de datos del sistema para el valor de la lógica que desea enviar para el registro de cambio
Paso 3: Pin de reloj alta, contando el cambio de registro en el valor actual del pin de datos

  • Todos los demás valores en el registro de desplazamiento se mueven por 1 lugar, haciendo espacio para el valor actual de la lógica del pin de datos.

Paso 4: Configurar el pin de reloj baja y repita los pasos 2 y 3 hasta que todos los datos ha sido enviado para el registro de desplazamiento.

  • El pin de reloj debe establecerse bajo antes de cambiar el siguiente valor de datos. Alternar este pin entre alta y baja es lo que crea el "pulso de reloj" el cambio de registro necesita saber cuándo pasar al siguiente paso en el proceso.

Paso 5: Cierre sistema alta

  • Esto dice el registro de desplazamiento para tomar todos los datos que ha cambiado de puesto en y utilizarlo para activar los pines de salida. Esto significa que usted no verá datos como está cambiando ningún cambio en la salida pins ocurrirá hasta el pestillo se encuentra alta.

Paso 6: Ajuste activar salida alta

  • No habrá ninguna salida de polos hasta que la salida que está establecida en alto, no importa lo que está sucediendo con la otra tres pines de control.
  • Este pin se puede siempre dejar alta si lo desea

En cascada
Hay dos pines que se puede utilizar para en cascada, sistema operativo y Os1. Os es para relojes levantamiento rápidos y Os1 es para relojes aumento lento. Este pin al pin de datos del siguiente registro de desplazamiento del gancho y el desbordamiento de este chip se incorporarán a la siguiente.

Final de la actualización de

Hacer frente a la pantalla

En el programa de ejemplo he creado un array de 8 bytes llamado [row_buffer]. Cada byte corresponde a una fila de la pantalla de 8 x 8, fila 0 siendo la parte inferior y fila 7, siendo la parte superior. El bit menos significativo de cada fila está a la derecha, el bit más significativo a la izquierda. Cambiar la pantalla es tan fácil como escribir un nuevo valor a dicha matriz de datos, la rutina de servicio de interrupción se encarga de refrescar la pantalla.

Programación

Programación no se discutirá en detalle aquí. Quisiera advertir que no use un cable de programación de DAPA, como creo que usted no podrá programar el chip una vez está funcionando a 12MHz. Todos los programadores estándar deberían funcionar (STK500, MKII, dragón, programadores paralelo/serie, etc..).

Fusibles:
Asegúrese de programar los fusibles a utilizar el cristal de 12MHz
hfuse: 0xC9
LFusible: 0xEF

En acción

Una vez que se programa el chip de la pantalla debe desplazarse un "¡ Hola mundo!". Aquí hay un video de la matriz de LED en acciones. La calidad del video es bastante baja como esta hecho con función de video de mi cámara digital y no un video apropiado o webcam.

Artículos Relacionados

4 x 4 x 4 actualización de cubo de LED con cambio de registros (74hc595)

4 x 4 x 4 actualización de cubo de LED con cambio de registros (74hc595)

este proyecto se inició con una bolsa de LEDs que había extraído de las linternas, para convertir a linternas UV. Sabía que encontraría algo divertido para utilizar con, pero fue meses antes de que me di cuenta de que hacer con ellos. Cuando vi un cu
Tutorial para principiantes: control de matriz de LED con 2 595 registros de cambio y medidor

Tutorial para principiantes: control de matriz de LED con 2 595 registros de cambio y medidor

Estoy recien comenzando con Arduino y el instructables de amandaghassaei me ayudó mucho. En su segunda tutorialabout entradas y salidas, ella explica cómo utilizar registros de desplazamiento y cómo controlar una matriz de LED por multiplexación. En
Arduino powered 7 seg pantalla LED con cambio de registros - hice en TechShop

Arduino powered 7 seg pantalla LED con cambio de registros - hice en TechShop

siete muestra segmentada es grande. Son bastante simples, no tener mucho poder y tienen mucha flexibilidad a la hora de mostrar números. Pero dejando de lado 14 pins al ejecutarlo es tal dolor. Si sólo había una manera de usar sin sacrificar tantos a
Batería DIY: Energía una linterna de LED con cambio de bolsillo!

Batería DIY: Energía una linterna de LED con cambio de bolsillo!

En este artículo, le mostraré cómo reemplazar la típica 3 AAA batería común baratos linternas de LED con cambio de bolsillo de accionar la linterna en una pizca. La batería creada incluso cabrá derecho interior donde debe ir la batería normal! Todos
Matriz de LED con un presupuesto

Matriz de LED con un presupuesto

Una única pieza de mobiliario sin tener que gastar un montón de dinero?! Eso es lo que quería lograr en este proyecto. También no estoy completamente familiarizado con la programación y la electrónica y, como la mayoría de nosotros, creo que los LEDs
Matriz de LED con controlador de juego - un primer proyecto

Matriz de LED con controlador de juego - un primer proyecto

este proyecto fue construido para mi clase de introducción de la electrónica de la Universidad de Waterloo en Canadá.  Esta fue mi primera introducción a la electrónica y por lo tanto, mi primer proyecto.Siga estos pasos para construir una matriz de
Matriz de LED con Arduino

Matriz de LED con Arduino

Hola, soy Javier de Makespace Madrid. La semana pasada organizamos una quedada para jugar con matrices de LED y Arduinos. Esto fue parte de "La noche de la electrónica con Jameco"Este instructivo está basado en el taller. Utiliza una sola matriz
¿9 * 9 matriz de LED con Arduino

¿9 * 9 matriz de LED con Arduino

siempre deseó tener una pantalla más grande?Esta indicación se basa en una matriz de LED verde de 9 * 9. La pantalla es impulsada con una placa Arduino (Duemilanove en mi caso).¿Por qué utilizamos una matriz y no enciende para arriba los leds individ
Matriz de LED con arduino fácil

Matriz de LED con arduino fácil

Voy a enseñarle cómo utilizar una matriz de Led MAX7219 con arduino UNO y la mejor parte es que es súper fácil.Paso 1: ¿Qué necesita?La lista de piezas:1. MAX7219 LED Matrix2. M/F cables de puente3. Arduino UNO4. cable USB para arduino5. computadoraP
Conseguir más pins de I/O en ATTiny con cambio de registros

Conseguir más pins de I/O en ATTiny con cambio de registros

Si usted anteriormente trabajó (o trabaja) con pequeños microcontroladores de 8 bits, como ATTiny o PIC12, que probablemente has topado con un problema fundamental de no tener suficientes pines GPIO para sus necesidades o requerimientos del proyecto.
MATRIZ de LED de 8 x 40 calendario reloj con mando a distancia

MATRIZ de LED de 8 x 40 calendario reloj con mando a distancia

Hoy voy a mostrar cómo hacer Scrolling y animado LED MATRIX calendario reloj para arduino. Este proyecto tiene las siguientes característicasNovedades en versión 2.0IR añadido remoto basado en ajustar fecha y horaAnimación suaveMuchas correcciones en
Gran pantalla de matriz de LED 8 x 8

Gran pantalla de matriz de LED 8 x 8

¿Has trabajado con matriz de LED 8 x 8 Ready-Made como muestra? Vienen en varios tamaños y son muy interesantes trabajar con. Un gran tamaño disponible está alrededor de 60 x 60 mm. Sin embargo, si usted está buscando una mayor matriz de LED Ready-Ma
Chaqueta de matriz de LED

Chaqueta de matriz de LED

insertar una matriz de LED en una chaqueta militar. Se ve cool y lo probable es que usted consiguen detenidos en los aeropuertos!Este es un proyecto bastante simple.Piezas necesarias:MAX6952 Controlador de LEDsMicrocontrolador (utilicé un boarduino)2
Serpiente en matriz de LED (BT)

Serpiente en matriz de LED (BT)

Hola todo el mundo!Hoy voy a mostrar cómo hacer serpiente en matriz de led con el regulador de BT (todo es mejor con BT).Paso 1: materialesNecesitamos:-4 módulos de matriz con el max7219 (yo uso MOD-39)-Módulo BT-arduino UNO-photoframe RIBBA de IKEA-