Hola a todos, tengo un problema de como hacer mi tabla para mostrar un texto en una matriz de leds de forma vertical osea que el texto aparezca desde arriba, se como hacer que el texto se desplace de forma horizontal desplazandoce desde la derecha hacia la izquierda, quisiera alguna idea de como puedo hacerlo, no pido codigo solo quiera una explicacion de como hacer que el texto se desplace de arriba hacia abajo, gracias.
Este es el codigo para desplazalo de derercha a izquierda, como puedo cambiarlo.
#include <xc.h>
#include <stdio.h>
#include <string.h>
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF // Code Protection bit (Code protection disabled)
#define _XTAL_FREQ 4000000
/****constantes****/
#define NUM_COLUMNAS 10
#define NUM_DATOS 75
/****Variables****/
unsigned char
n_col,
desplazar,
n_veces,
desplazar,
valor;
/*****************Tabla de datos***********************/
unsigned const char datos[NUM_DATOS] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, //son 30 ceros uno para cada columna,
// 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, //lo que hacen es apagar o limpiar
// 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, //todos la matrices.
127, 8, 8, 8, 127, 0, //H
62, 65, 65, 65, 62, 0, //O
127, 64, 64, 64, 64, 0, //L
126, 17, 17, 17, 126, 0, //A
0, //separador
127, 2, 12, 2, 127, 0, //M
60, 64, 64, 64, 60, 0, //u
120, 4, 4, 4, 120, 0, //n
48, 72, 72, 72, 126, 0, //d
56, 68, 68, 68, 56, 0, //o
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
// 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
// 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};
/****Inicio del programa****/
void main(void)
{
TRISA = 0; //Puertos configurados
TRISB = 0; //como salidas.
PORTB = 0; //Apagamos el puerto B.
while (1)
{
for (desplazar = 0; desplazar < NUM_DATOS - (NUM_COLUMNAS - 1); desplazar++)/*desplazar:Variable encargado de desplazar
el texto en el panel.*/
{
for (n_veces = 0; n_veces < 8; n_veces++)/*n_veces:Es el numero de veces que se
va mostrar el mismo valor en el panel.*/
{
for (n_col = 0; n_col < NUM_COLUMNAS; n_col++)/*n_col:Este valor ira activando
cada columna de cada matriz.*/
{
PORTA = n_col; //asignando el numero de columna al puerto A.
valor = datos[desplazar + n_col]; //asignando a "valor" el dato almacenado en la tabla "datos".
PORTB = valor; //mostrando el dato por el puerto B.
__delay_ms(2); //Tiempo en el que aparecera el dato en cada columna.
}
}
}
}
}