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();
}