////registros del puerto d 16f877a
#bit rs=0x08.0///PIN_D0
#bit rw=0x08.1//PIN_D1
#bit e=0x08.2///PIN_D2
#bit d7=0x08.7//PIN_D7
#bit d6=0x08.6//PIN_D6
#bit d5=0x08.5//PIN_D5
#bit d4=0x08.4//PIN_D4
/*
#bit rs=0xf83.0////registros del puerto d 18f2220 ////checar datasheet
#bit rw=0xf83.1
#bit e=0xf83.2
#bit d7=0xf83.7
#bit d6=0xf83.6
#bit d5=0xf83.5
#bit d4=0xf83.4
*/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void inicializar_lcd();
void putc(char a);
void send_dato(int a,int1 band);
void gotoxy(int x, int y);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void inicializar_lcd()
{
int x;/////variable para usarse en el contador del for
set_tris_d(0b00001000);/////establesco los pines del puerto d como salidas
rs=rw=e=d7=0;//inicializao los pines de control a 0
delay_ms(15);//retardo requerido por la lcd para establecer sus niveles de voltaje
for(x=0;x<3;x++)//envia tres veces el comando para inicializar la lcd
{
d4=d5=1;/////
e=1; delay_us(5);
e=0; delay_ms(5);
}
d4=0;
e=1; delay_us(5);
e=0;
d7=0;d4=d5=d6=0;
e=1; delay_us(5);
d5=d4=e=0;d7=d6=1;
e=1; delay_us(5);
e=0;
send_dato(0b00101100,0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void send_dato(int a,int1 band=1)
{
rs=band;
d7=bit_test(a,7);
d6=bit_test(a,6);
d5=bit_test(a,5);
d4=bit_test(a,4);
e=1;delay_us(5);
e=0;d7=bit_test(a,3);
d6=bit_test(a,2);
d5=bit_test(a,1);
d4=bit_test(a,0);
e=1;delay_us(5);
e=0;rs=0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void putc(char a)
{
send_dato(a,1);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void gotoxy(int x, int y)
{
if(y==1)
send_dato(0b10000000|(x-1),0);
else if(y==2)
send_dato(0b10000000|(63+x),0);
else if(y==3)
send_dato(0b10000000|(19+x),0);
else if(y==4)
send_dato(0b10000000|(84+x),0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////