6 votos

La multiplexación, de Animación, de mapa de bits de codificación en el MCU. Cómo hacerlo?

Recientemente he sido entrar en la programación y micro controladores. Me encontré a mí mismo de que yo realmente no sé cómo hacer la multiplexación, animación, fácilmente la visualización de las imágenes en la pantalla LED. He estado buscando algunos ejemplos de código, pero la mayoría de los artículos que he encontrado, donde sobre el hardware y el software, ni siquiera fue mencionado, los ejemplos de código son generalmente poco comentado y en una plataforma que no sé (estoy usando TI MSP430 Mcu) y el manual de la teoría de que el software nunca se explicó.

Estoy asumiendo que esto es debido a que una gran cantidad de MCU principiante provienen de un software de fondo, y que necesitan más explicación en el hardware.

Mi pregunta es: ¿Cómo implementar la Multiplexación, animaciones,mapas de bits muy bien. ¿Cómo debe hacerse? ¿Qué es la teoría de que el software para estas aplicaciones?

Cualquier comentario, enlace a artículos, libros, etc... son muy apreciados.

También he de destacar que me han hecho, y funciona, pero creo que mis códigos para que se ve horrible, sería imposible de gestionar en un programa más amplio y debe haber una forma mejor de hacerlo. Pero de todos modos aquí hay dos videos de la multiplexación de los proyectos: http://www.youtube.com/user/undeadtreat/videos

0voto

lillq Puntos 4161

Temporización: idealmente, usted quiere un perfectamente a tiempo de multiplexación, y entonces pensamos de las interrupciones de temporizador, donde manejar el controlador de pantalla en el ISR. Pero ahí está la Ley: salir de Informes tan pronto como sea posible. Que significa establecer un indicador, para el bucle principal, hacer un par de cosas básicas, y fuera.

La real se llama controlador en el bucle principal. Esto es, básicamente, una lista de los cheques de las tareas que deben realizarse:

if 32ms timer expired then do keypad scan  
if display flag set then do display routine  
etc.  

Dependiendo de su aplicación, esta puede ser una lista larga, y el peor de los casos todos los indicadores se establecen en el mismo tiempo y, a continuación, todas las rutinas deben ser ejecutadas en el mismo bucle principal. Que provocará un bucle principal que de vez en cuando tomar un largo tiempo, y en otros momentos muy corto. Este no es siempre un problema, pero para nuestra pantalla podría significar el parpadeo. Solución: asegúrese de que no todas las rutinas tienen que ser ejecutados al mismo tiempo, por la intercalación de ellos. La primera vez que solo la bandera de larga rutina de Una, la próxima vez que larga rutina de B. Corto rutinas y rutinas con prioridad siempre son verificadas.

De esa manera usted puede mantener el bucle principal tan corto como unos pocos ms, con poca variación. También puede sincronizar el bucle principal a un temporizador, por lo que siempre lleva el mismo tiempo. Esto hará que algunos tiempos muertos, así que tendrás que ver si usted puede permitirse el lujo de que. Si usted puede, usarlo para poner el controlador dormido, entonces usted puede disminuir la potencia un poco. Hacer la rutina de presentación en primer lugar, para que permanezca en sincronía.

Si usted multiplexación de ir a por algunas columnas como sea posible, esto aumentará la multiplexación en frecuencia. Si el bucle principal, que dura de 3 ms y tiene 8 columnas para escanear, haga un escaneo completo tomará 24 ms, que es 41 Hz, que es sólo acaba de ACEPTAR. Si usted puede reordenar la matriz y disminuir el número de columnas a las 6 de la frecuencia aumentará a 56 Hz. Este 4-columna de instalación de actualización en el 83 Hz.

enter image description here

Entonces, ¿qué hacemos? En el tiempo de referencia apagar todos los LEDs, por lo que la fila del puerto de alta o baja, dependiendo de su configuración. Girar la columna de bits a la siguiente columna y establecer que en el puerto de salida. A continuación, busque la fila patrón para que la columna en la pantalla de la tabla, y establece que en la fila del puerto. Y listo. Si es lo único que no podía que se han hecho en el ISR? Posiblemente, pero la configuración de la fila o de la columna de salida (o ambos) puede significar también desplazar los datos a un par de integrado 74hc595 registros de desplazamiento y, a continuación, se tarda mucho más tiempo.

edición de volver a tu comentario
Voy a utilizar los cuatro display de 7 segmentos como un ejemplo. La primera cosa que usted necesita es un 7-segmento de la tabla de búsqueda:

enter image description here

'                 abcdefg.         
sevenseg  db    0b11111100 ;0
          db    0b01100000 ;1
          db    0b11011010 ;2
          db    0b11110000 ;3
          db    0b01100110 ;4
          db    0b10110110 ;5
          db    0b10111110 ;6
          db    0b11100000 ;7
          db    0b11111110 ;8
          db    0b11110110 ;9

Entonces el dígito de valores. Si usted generar estos sí mismo es más fácil si se utiliza un byte (contador) para cada dígito. Si se trata de un contador que vas a tener que lidiar con lleva de un dígito a la siguiente, pero eso es todavía más fácil que la conversión de 16 bits binario a BCD. Para un RTC necesitará separar los contadores de horas y minutos de todos modos. Si los datos binarios, por ejemplo procedentes de un sensor digital de temperatura, entonces usted necesita un binario a BCD rutina de conversión. Voy a asumir que usted tiene una de cuatro bytes de la matriz con los dígitos para cada pantalla.

digits    ds    4; 4 digits, each 0..9
column    ds    1; shifts a "1" through bits 0..3
colcount  ds    1; column index, 0..3

Voy a escribir el resto en una especie de pseudo-código, de modo que usted puede convertir fácilmente a C o ensamblador.

; display routine
set port2 to 0b00000000 ; clear display
increment colcount
if colcount > 3 then
  colcount = :0
column := 1 shift left colcount bits
set port1 to column ; digit is selected
a := digits[colcount] ; digit value
a := sevenseg[a] ; digit value encoded into 7-segment pattern
set port2 to a ; output 7-segment pattern
return ; all done, go to have a beer

Leer más:
BCD aritmética: Atmel nota de aplicación describe rutinas de conversión de binario a BCD y viceversa. Controlador independiente, así que no sólo AVR.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X