Autor Tema: iniciar y escribir en lcd  (Leído 3709 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kstriyhon

  • PIC10
  • *
  • Mensajes: 1
iniciar y escribir en lcd
« en: 09 de Diciembre de 2005, 17:29:00 »
hola a todos tengo un gran problema estoy programando en lenguaje C un microcontrolador Atmel 89C52 y necesit iniciar un lcd para realizar una calculadora, tambien necesito manejar un teclado matricial de 4 x 4 todo esto utilizando lenguaje C si alguien conoce sobre este tema les agradeceria muchisimo la ayuda, cualquier ejemplo, codigo o manual seria de gran ayuda.

gracias de antemano.

PD: si se necesita el plano del circuito para dar una respuesta acertada lo puedo enviar me hacen saber.


Desconectado xerex

  • PIC16
  • ***
  • Mensajes: 138
    • Mi servidor, mi casa.
RE: iniciar y escribir en lcd
« Respuesta #1 en: 10 de Diciembre de 2005, 02:14:00 »
HOla compi, te dejo la gestion de un LCD (de los genericos, este escribe una linea completa la funcion) y la gestion del teclado 4x4 (con antirebotes), esta escrito para keil C, y ambas rutinas estan probadas y funcionando.


/********************* Gestion del display ***********************/
void valida_LCD (void)
{
   LCD_E = 1;
   wait (5);
   LCD_E = 0;
}
void init_display(void)
{
   wait (10);
   LCD = 0x3F; //00111111b;
   LCD_RS = LCD_RW = 0;
   valida_LCD();
   LCD = 0x0C; //00001100b;
   valida_LCD();
   LCD = 0X01;
   valida_LCD();
   LCD = 0X06;
   valida_LCD();
   wait (100);
}
void escribe_display (unsigned int numero, char linea[20])
{
unsigned int i;
   for (i=0;i<0x14;i++)
      {
      /* BUSCAMOS POSICION DE LA DDRAM */
      LCD_RS = 0;
      LCD_RW = 0;
      if (numero == 1)
         LCD = (0x00+i)|0x80;
      else if (numero == 2)
         LCD = (i+0x40)|0x80;
      else if (numero == 3)
         LCD = (i+0x14)|0x80;
      else if (numero == 4)
         LCD = (i+0x54)|0x80;
      valida_LCD();
      /* ESCRIBIMOS CARACTER EN LA DDRAM */
      LCD_RS = 1;
      LCD_RW = 0;
      LCD = linea;
      valida_LCD();
      }
}

char teclado (void )
{
/*
                               TEC_3  TEC_2 TEC_1  TEC_0
         TEC_4      1      2      3      >
         TEC_5    4      5      6      <
         TEC_6    7      8      9      M
         TEC_7    D      0      B      e


*/
   /* verificamos que no hay tecla pulsada si no la hay salimos */
   TEC_4 = TEC_5 = TEC_6 = TEC_7 = off;
   if (TECLAS == 0x0F)
      return 0xFF;
   /* comenzamos sondeo de teclado */
   TEC_4 = TEC_5 = TEC_6= on;
   /* primera linea */
   TEC_7 = off;
   if (TEC_0 == 0)
         tecla_actual="e";
   if (TEC_1 == 0)
         tecla_actual="B";
   if (TEC_2==0)
         tecla_actual="0";
   if (TEC_3==0)
         tecla_actual="D";
   /* segunda linea */
   TEC_7 = on;
   TEC_6 = off;
   if (TEC_0==0)
         tecla_actual="M";
   if (TEC_1==0)
         tecla_actual="9";
   if (TEC_2==0)
         tecla_actual="8";
   if (TEC_3==0)
         tecla_actual="7";
   /* tercera linea */
   TEC_6 = on;
   TEC_5 = off;
   if (TEC_0==0)
         tecla_actual="<";
   if (TEC_1==0)
         tecla_actual="6";
   if (TEC_2==0)
         tecla_actual="5";
   if (TEC_3==0)
         tecla_actual="4";
   /* cuarta linea */
   TEC_5 = on;
   TEC_4 = off;
   if (TEC_0==0)
          tecla_actual=">"; // enter
   if (TEC_1==0)
         tecla_actual="3"; // izquierda
   if (TEC_2==0)
         tecla_actual="2";
   if (TEC_3==0)
         tecla_actual="1"; // derecha
   TEC_4 = on;
   if (tecla == tecla_actual)
      {
      tecla_pulsada = 1;
      }
   else
      tecla_pulsada = 0;   
   return tecla_actual;      
}
char scan_teclado (void)
{
   tecla = teclado();
   if (tecla_pulsada != 1)
      return tecla;
   else
      return 0xFF;
}

Te faltara la definicion de alguna variable, pero eso ya lo veras en cuanto lo compiles o le eches un vistazo a las  funciones.


Un saludo.
Es falso eso de que el saber no ocupa lugar....


No se donde poner tanto libro.... :P

Desconectado Bruno_AR

  • PIC12
  • **
  • Mensajes: 89
RE: iniciar y escribir en lcd
« Respuesta #2 en: 22 de Febrero de 2006, 11:56:00 »
Con gusto te ayudaria pero no entiendo bien a referis la pregunta, si a que no podes inicializar el LCD o no se....

Si sos un poco mas claro con gusto ayudare.

Un saludo, desde Argentina

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: iniciar y escribir en lcd
« Respuesta #3 en: 01 de Noviembre de 2006, 23:48:24 »
Alguien podria subir el archivo nuevamente???? por favor ya no esta disponible
El conocimiento se consigue a base de esfuerzo...

Desconectado Zero_mb

  • PIC10
  • *
  • Mensajes: 5
Re: iniciar y escribir en lcd
« Respuesta #4 en: 23 de Diciembre de 2006, 11:05:57 »
hablando de lcds alguien me puede decir si el pc1602ar necesita algun tipo de controlador porq no encuentro el hd4478 estuve probando pero no logro q displaye naa agradeceria sus respuestas


 

anything