Hola gente linda!!!
Como ven esto.
Mi LCD esta conectado de la siguiente forma:
datos: D4,D5,D6,D7
E: E2
RS: E1
RW: GND
Para eliminar el pin RW que esta puesto a GND he cambiado lo siguiente en el archivo busyxlcd.c
unsigned char BusyXLCD(void)
{
Delay10TCYx(
;
return(0);
}
El archivo klc.h lo he cambiado de la siguiente forma:
//*****************************************
#define UPPER */
/* DATA_PORT defines the port to which the LCD data lines are connected */
#define DATA_PORT PORTD
#define TRIS_DATA_PORT TRISD
/* CTRL_PORT defines the port where the control lines are connected.
* These are just samples, change to match your application.
*/
#define RW_PIN LATBbits.LATB6 /* No me importa en este momento en el LCD es GND */
#define TRIS_RW TRISBbits.TRISB6 /* No me importa en este momento en el lCD es GND*/
#define RS_PIN LATEbits.LATE1 /* PORT for RS */
#define TRIS_RS TRISEbits.TRISE1 /* TRIS for RS */
#define E_PIN LATEbits.LATE2 /* PORT for D */
#define TRIS_E TRISEbits.TRISE2 /* TRIS for E */
//***************************************************
Todo compila sin problemas (y de todos los archivos desde puego he hecho copias) pero el asunto es que no funciona el LCD sigue sin inicializar.
El programa pincipal de prueba es basicamente del maestro suky
//****************************************
#include <p18f4550.h>
#include <delays.h>
#include "xlcd.h"
#pragma config FOSC = HS,FCMEN = OFF,IESO = OFF, CPUDIV = OSC1_PLL2
#pragma config PWRT = ON,BOR = OFF,BORV = 0
#pragma config WDT = OFF,WDTPS = 32768
#pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF,CCP2MX = OFF
#pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF
#pragma config CP0 = OFF,CP1 = OFF,CP2 = OFF
#pragma config CPB = OFF,CPD = OFF
#pragma config WRT0 = OFF,WRT1 = OFF,WRT2 = OFF
#pragma config WRTB = OFF,WRTC = OFF,WRTD = OFF
#pragma config EBTR0 = OFF,EBTR1 = OFF,EBTR2 = OFF
#pragma config EBTRB = OFF
void DelayFor18TCY(void){
Delay10TCYx(2);
}
void DelayPORXLCD(void){
Delay1KTCYx(15);
}
void DelayXLCD(void){
Delay1KTCYx(2);
}
void comandXLCD(unsigned char a){
BusyXLCD();
WriteCmdXLCD(a);
}
void gotoxyXLCD(unsigned char x, unsigned char y){
unsigned char direccion;
if(y != 1)
direccion = 0x40;
else
direccion =0;
direccion += x-1;
comandXLCD(0x80 | direccion);
}
//**************************************
void main(void){
OpenXLCD(FOUR_BIT & LINES_5X7);
Delay1KTCYx(15);
comandXLCD(0x06);
comandXLCD(0x0C);
putrsXLCD("LCD en Puerto D");
gotoxyXLCD(1,2);
putrsXLCD("Linea 2");
for(;
{
}
}
//***************************************************
Saludos para todos!!!!!
Facundo