Hola, he seguido este tutorial http://www.ucontrol.com.ar/wiki/index.php?title=Matriz_de_LEDS_de_8x8
para crear la matrix de leds, lo he hecho identico, solo que envez de controlarlo con el pic PIC16F628A lo he controlado con un pic 16F877A
utilizando los mismos puertos y todo.
La matriz me funciona perfectamente con los programas que viene en el tutorial.
ahora estoy intentando crear mi programa para escribir letras y que se desplazen para un lado, y no se hacerlo.
Quisiera que alguien me emplicara o me pusiese un ejemplo de como plasmas en la matriz un letra (una letra cualquiera) y desplazarla hacia la izquierda para que se vea pasando.
aqui dejo el codigo que lo unico que hace es encender todos los leds de la primera fila de arriba he ir bajando cuando llega abajo empieza de nuevo.
pues eso en general me gustaria saber como modificar este codigo (creo que solo hay que modificar main() para mostrar una letra, de momento da igual el movimiento, solo la manera de imprimir una letra.
muchas gracias por adelantado
para crear la matrix de leds, lo he hecho identico, solo que envez de controlarlo con el pic PIC16F628A lo he controlado con un pic 16F877A
utilizando los mismos puertos y todo.
La matriz me funciona perfectamente con los programas que viene en el tutorial.
ahora estoy intentando crear mi programa para escribir letras y que se desplazen para un lado, y no se hacerlo.
Quisiera que alguien me emplicara o me pusiese un ejemplo de como plasmas en la matriz un letra (una letra cualquiera) y desplazarla hacia la izquierda para que se vea pasando.
aqui dejo el codigo que lo unico que hace es encender todos los leds de la primera fila de arriba he ir bajando cuando llega abajo empieza de nuevo.
Código:
//Device/Fuses/Etc.---------------------------------
#INCLUDE <16F877A.H>
#INCLUDE <MATH.H>
#FUSES NOWDT * * * * * * * * * *//No Watch Dog Timer
#FUSES XT * * * * * * * * * * *
#FUSES NOPUT * * * * * * * * * *//No Power Up Timer
#FUSES NOPROTECT * * * * * * * *//Code not protected from reading
#FUSES NOBROWNOUT * * * * * * * //No brownout reset
#FUSES NOLVP * * * * * * * * * *//No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD * * * * * * * * * *//No EE protection
#use delay(clock=4000000)
//Defines------------------------------------------
#BYTE PORTA = 0x05
#BYTE PORTB = 0x06
#BYTE PORTA_TRIS = 0x85
#BYTE PORTB_TRIS = 0x86
#DEFINE RDD_DATA *PIN_A1
#DEFINE RDD_CLOCK PIN_A0
#DEFINE EEPROM_SCL PIN_A2
#DEFINE EEPROM_SDA PIN_A3
//
void fConfigurar_puertos(void);
void fRDD_send_data0(void);
void fRDD_send_data1(void);
//--------------------------------------------------
//Main----------------------------------------------
//--------------------------------------------------
void main(){
*int8 i,j;
*fConfigurar_puertos();
*output_low(RDD_CLOCK); //RELOJ = Bajo
*output_low(RDD_DATA);
//
//------Dibujo las filas una a una ----- *
//
*while (TRUE){
* * PORTB = 0b11111110; //Filas 1 encendida, las demas apagadas.
* * for (i=0;i<8;i++) {
* * * *for (j=0;j<8;j++) {
* * * * * *fRDD_send_data0();
* * * * * }
* * * *delay_ms(200);
* * * *PORTB = (PORTB <<1) +1;
* * }
// *
*}//Fin while
}//Fin main
//--------------------------------------------------
//- FUNCIONES-
//--------------------------------------------------
void fConfigurar_puertos(void){
*PORTA_TRIS = 0b11000000; //1=ENTRADA, 0=SALIDA
*PORTB_TRIS = 0b00000000; //1=ENTRADA, 0=SALIDA
*setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
*setup_timer_1(T1_DISABLED);
*setup_timer_2(T2_DISABLED,0,1);
*setup_comparator(NC_NC_NC_NC);
*setup_vref(FALSE);
}
//--------------------------------------------------
//---Envia un 0 al registro de desplazamiento:
//--------------------------------------------------
void fRDD_send_data0(void){
*output_low(RDD_DATA);
*delay_us(2);
*output_low(RDD_CLOCK);
*delay_us(2);
*output_high(RDD_CLOCK);
}
//--------------------------------------------------
//---Envia un 1 al registro de desplazamiento:
//--------------------------------------------------
void fRDD_send_data1(void){
*output_high(RDD_DATA);
*delay_us(2);
*output_low(RDD_CLOCK);
*delay_us(2);
*output_high(RDD_CLOCK);
}
pues eso en general me gustaria saber como modificar este codigo (creo que solo hay que modificar main() para mostrar una letra, de momento da igual el movimiento, solo la manera de imprimir una letra.
muchas gracias por adelantado