• Lunes 29 de Abril de 2024, 11:19

Autor Tema:  Re: Escribir En Lcd  (Leído 1312 veces)

roseta

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Escribir En Lcd
« en: Martes 19 de Septiembre de 2006, 09:47 »
0
Hola amigos,

Finalmente he logrado que el lcd se me inicializara. Pero ahora tengo dos problemillas un poco graves...

1. Una vez inicializado el cursor se m pone en la primera posicion y después m salta a la 2a linia y se situa en el medio mas o menos.

2.Y ES EL MAS IMPORTANTE es que no consigo que salga ningún caracter.

Alguien m puede ayudar?? Sobretodo a visualizar el caracter o q m salga un HOLA MUNDO.

Os adjunto mi programa.

Muchas gracias.

Hitachi 44780u (Bus 8 datos)
PIC 18F458.

La funcion "escriure"  es la que teoricamente tiene q escribir.

Gracias

#include <p18f458.h>
#include <delays.h>
#include <portb.h>

#define RETRASO 0xFFFF

char vector[]={'h','o','l','a',' ','p','e','',''};
int i;
void pausa(unsigned int retraso)
{
        while (retraso>0) {
          retraso--;
  }  
}


void enable (void)
{
   TRISE=0x00;

   PORTE=0x04;
   pausa(RETRASO);
   PORTE=0x00;
   pausa(RETRASO);
   
}


void lcd_ini (void)
{
   TRISD=0x00;
   TRISE=0x00;
   
   PORTE=0x00;      //per aqui en estes funcions fa falta lo del flag de busy pq no mirem en cap moment si la cosa esta plena i es pot enviar o no..///
   pausa(RETRASO);
   PORTD=0x38;
   pausa(RETRASO);
   enable();
   pausa(RETRASO);
   PORTD=0x00;
   pausa(RETRASO);
   
   PORTE=0x00;
   pausa(RETRASO);
   PORTD=0x038;
   pausa(RETRASO);
   enable();
   pausa(RETRASO);
   PORTD=0x00;
   pausa(RETRASO);
   
   PORTE=0x00;
   pausa(RETRASO);
   PORTD=0x038;
   pausa(RETRASO);
   enable();
   pausa(RETRASO);
   PORTD=0x00;
   pausa(RETRASO);

}


void escriure (void)
{

   //for(i=1;i<10;i++)
   //{
      TRISE=0x00;
      TRISD=0x00;

      PORTE=0x00;
      pausa(RETRASO);
      PORTD=vector[1];
      pausa(RETRASO);
      PORTE=0x01;
      pausa(RETRASO);
      enable();
//}
}
void main (void)
{
   lcd_ini();
   
   TRISD=0x00;
   
   PORTE=0x00;
   pausa(RETRASO);
   PORTD=0x01;      //Borra LCD y home
   pausa(RETRASO);
   enable();
   pausa(RETRASO);
   PORTD=0x00;
   pausa(RETRASO);

   
   PORTE=0x00;
   pausa(RETRASO);
   PORTD=0x0F;      //LCD on, curosr on, parpadeo on
   pausa(RETRASO);
   enable();
   pausa(RETRASO);
   PORTD=0x00;
   pausa(RETRASO);

   PORTE=0x00;
   pausa(RETRASO);
   PORTD=0x80;      //No sé exactamenent pq es fa....
   pausa(RETRASO);
   enable();
   pausa(RETRASO);


   escriure();
}