Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

27/08/2012 #1

Avatar de cmontoya

Matriz 8x40 + pulsadores
Hola amigos.
Tengo ganas de hacer un Publik o también conocido como matriz 8x40, pero la idea que tengo es hacerlo y que se puede programar mediante pulsadores.
Me explico mejor una matriz en la cual mediante pulsadores (digamos 4 pulsadores – un pulsador vocales- un pulsador consonantes y otro pulsador números, etc.)de tal formar el mensaje que se muestra el la matriz se pueda formar mediante pulsadores sin necesidad de sacar el micro, yo sé que es necesario el uso de una memoria.
Me gustaría saber donde puede encontrar información ha cerca de estas matrices o Publik???? O algún código ???? o con que nombre las puedo encontrar…
Gracias por sus comentarios y ojala los códigos no sean en assembler
28/08/2012 #2

Avatar de Scooter

Mejor haz un interface de teclado ps2, es sencillo y está muy documentado con ejemplos de soft y hard.
28/08/2012 #3


Yo no he entendido muy bien lo que es una matriz de esas. Pon una foto o algo así a ver si podemos echarte una mano.
Un saludo
28/08/2012 #4

Avatar de DJ DRACO

Supongo que será para un juego de adivinar las palabras ocultas, o para un cartel gigante de publicidad donde la publicidad vaya cambiando a gusto..

Acá lo tienen los colectivos y bueno...son de led's...
29/08/2012 #5

Avatar de cmontoya

Hola amigos.
Gracias por sus consejos.
Ya que estoy aprendiendo a programar en C con el hi-tech, estoy tratando de hacer un publick –matrix 8x32 el problema que tengo en estos momentos es que el mensaje que se muestra parpadea será que me falta algo?? En el código o esta algo mal???

------------------------------------------------------------------------------------------
Código:
#include <htc.h>
#define _XTAL_FREQ 4000000//declaramos que la frecuencia del microncontrolador es 4mhz 
#define CLOCK RD0
#define DATO RD1
#define RESET RD2
__CONFIG(0x2F41);
//---------------------------------------------------------
//VARIABLES DONDE SE ENCUENTRA LAS LETRAS                                  /
//---------------------------------------------------------

const int ALFA[4][8]={255, 255, 96, 48, 48, 96, 255, 255,//M
                                    0, 255, 255, 219, 219, 195, 3, 0,//E
                                    63, 127, 200, 200, 200, 127, 63, 0,//A
                                      0, 248, 252, 6, 3, 6, 252, 248};//V
/*****************************************************************************/
int MAX;        //Variable que se va usar en la funcion "CLEAR"
int CONT=0;        //variable que se va usar en la funcion "HABILITO"
int Fila;
int Columna=0;

void config(void){
        TRISB=0x00;
        PORTB=0x00;
        TRISD=0x00;
        PORTD=0x00;
}
//---------------------------------------------------------
//FUNCION DE TE PERIMITE ENVIAR UN CERO O UNO                          /
//---------------------------------------------------------
void SEND_DATA(short DATA){
        RD1=(DATO,DATA);
        RD0=(CLOCK,0);
        RD0=(CLOCK,1);
}
//----------------------------------------------------------
//FUNCION DE BORRADO                                                                                /
//----------------------------------------------------------

void CLEAR(void){
        for(MAX=1;MAX<=32;MAX++){                //25 ES EL MAXIMO DE->
                SEND_DATA(0);                                //->COLUMNAS
        }
}
//-----------------------------------------------------------
//                        PROGRAMA PRINCIPAL                                                                /
//-----------------------------------------------------------
void main(void){
                config(); //Configuramos puertos
                RD2=(RESET,1);
                CLEAR();
                SEND_DATA(1);
                //while( RD0){
for(;;){
                        for(Fila=0;Fila<=7;Fila++){
                                PORTB=(~ALFA[Columna][Fila]);
                                __delay_ms(1);
                                SEND_DATA(0);
                        }
                        Columna++;
                        if(Columna==4){
                                Columna=0;
                                SEND_DATA(1);
                        }
                }
}
Agradezco cualquier correcion!!!
Archivos Adjuntos
Tipo de Archivo: rar 8xxx.rar (24,1 KB (Kilobytes), 33 visitas)
29/08/2012 #6

Avatar de Scooter

Multiplexa mas rápido
29/08/2012 #7

Avatar de DJ DRACO

Si debe ser la velocidad del multiplexado...si supera los 24Hz el ojo ya no lo notará...pero para estar seguros, podés tirarlo a 50Hz o más...y listo.
30/08/2012 #8

Avatar de cmontoya

DJ DRACO dijo: Ver Mensaje
Si debe ser la velocidad del multiplexado...si supera los 24Hz el ojo ya no lo notará...pero para estar seguros, podés tirarlo a 50Hz o más...y listo.
Hola pues hice lo que me dijeron modifique la frecuencia de 4mhz hasta 50mhz pero siguió igual cual será el problema???
30/08/2012 #9

Avatar de DJ DRACO

NO

4MHz es la frecuencia del reloj...nosotros te deciamos la velocidad de muestreo de los led's..

y no son Mega Hertz...son sólo Hertz!!

el ojo humano a 24 hertz o 24 muestras por segundo ya se confunde y ve una sola imagen...

pero si lo haces más rápido aún es mejor..
01/09/2012 #10

Avatar de Scooter

Si en todas haces un delay de 1ms en todas irá igual. Reduce ese valor.
15/09/2012 #11

Avatar de cmontoya

Problema con desplazamiento de Matriz
Hola amigos

Tengo este código para una matriz para que muestre el texto desplazándose pero tengo un problemas………como puedo eliminar el parpadeo ?????? ya probé con todos los delay pero no doy con el chistes hasta aumente el xtal a 8Mhz pero nada, además si aumento los caracteres (dígitos) se pronuncia todavía mas el parpadeo que puede estar pasando??


Código:
#include <htc.h>
#define _XTAL_FREQ 8000000//declaramos que la frecuencia del microncontrolador es 4mhz 
#define CLK RA0
#define DATA RA2
#define RESET RA1
__CONFIG(0x2F42);
int CONT=0;


void config(void){
      ADCON1=0x06;
      TRISB=0x00;
      TRISA=0x00;
}
void DATA0(void){
      RA2=(DATA,0);
      RA0=(CLK,0);
      __delay_us(2);
      RA0=(CLK,1);
      __delay_us(2);
}
void DATA1(void){
       RA2=(DATA,1);
      RA0=(CLK,0);
      __delay_us(2);
      RA0=(CLK,1);
    __delay_us(2);
     
}


void MOVER(void){
                if(CONT==0) DATA0();        //ENVIO DATA 0 O 1
              else DATA1(); 

}

       const int  caracter[10][8]={0xFF ,0x81 ,0x7A ,0x76, 0x6E ,0x5E ,0x81 ,0xFF ,
                                  0xFF, 0x81,0x6E ,0x6E ,0x6E ,0x9F ,0xFF ,0xFF , 
                                  0xFF ,0x91 ,0x6E ,0x6E ,0x6E ,0x91 ,0xFF ,0xFF, 
                                  0xFF ,0x3F ,0x5F ,0x6F ,0x70 ,0x7F ,0x7F ,0xFF,
                                  0xFF ,0x71 ,0x6E ,0x6E ,0x6E ,0x6E ,0x81 ,0xFF,  
                                  0xFF ,0x71 ,0x6E ,0x6E ,0x6E ,0x6E ,0x9E ,0xFF,  
                                  0xFF ,0xF7 ,0x0 ,0x77 ,0xB7 ,0xD7 ,0xE7 ,0xFF,  
                                  0xFF, 0xFF, 0x91, 0x6E, 0x6E, 0x7E, 0xBD, 0xFF,
                                  0xFF,0xFF, 0x9E, 0x6E, 0x76, 0x7A, 0xBC, 0xFF ,
                                  0xFF, 0xFE, 0xFE, 0x0, 0x0, 0x9E, 0xDE, 0xFF};//"cero" 



void main(void){
unsigned int K;
K=sizeof(caracter);
//unsigned char M;


      int i;   //Hasta 7 digitos
      int j=0; // HAsta 25 digito
      config();
      RA1=(RESET,1);  // "ON"
      RA0=(CLK,0);
      RA2=(DATA,0);
for(;;){
     
  

/************************************************/
            for(i=0;i<=7;i++){
            // for(M=0;M>=5;M++){
               PORTB=~caracter[j][i];         //cero
               __delay_ms(1);//Parpadeo
             MOVER();  //funcion de corrimiento
if(CONT>=sizeof(caracter));
                                CONT++;
                                if(CONT==79)CONT=0;
                        }
                       j++;
                        if(j==10) j=0;

	}
}
Archivos Adjuntos
Tipo de Archivo: rar Matrix.rar (21,0 KB (Kilobytes), 56 visitas)
15/09/2012 #12
Moderador

Avatar de Chico3001

solo lo vi a grosso modo pero creo que el delay esta muy elevado... necesitas hacerlo mas pequeño, desconozco si existe una instruccion delay_us pero podrias usarla

Tambien el problema puede estar en que tu programa esta en C.... desafortunadamente C no es un lenguaje que ahorre recursos, por lo que las rutinas tienen a ser mas faciles de entender pero tardan mucho mas tiempo en ejecutarse y requieren mas memoria... para eliminar eso podrias usar el TMR0 para generar interrupciones...
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.