/*************************************************************************************/
/*                                                                                   */
/*                       			  DISPLAY.H 				      			     */
/*                                                                                   */
/*************************************************************************************/

/*************************************************************************************/
/*            		          	Define los puertos del LCD.	  	 	                 */
/*************************************************************************************/
												
// Defino los pines de datos de LCD (estamos funcionando a 4 bits).

#define DATA_PIN_7            LATDbits.LATD1	// (61)
#define DATA_PIN_6            LATDbits.LATD2	// (62)
#define DATA_PIN_5            LATDbits.LATD3	// (63)
#define DATA_PIN_4            LATDbits.LATD12	// (64)

#define TRIS_DATA_PIN_7       TRISDbits.TRISD1
#define TRIS_DATA_PIN_6       TRISDbits.TRISD2
#define TRIS_DATA_PIN_5       TRISDbits.TRISD3
#define TRIS_DATA_PIN_4       TRISDbits.TRISD12


#define EN_LCD                LATDbits.LATD13    	// Puerto para E (65)
#define RW_LCD                LATDbits.LATD4     	// Puerto para RW (66)
#define RS_LCD                LATDbits.LATD5     	// Puerto para RS (67)


#define TRIS_EN               TRISDbits.TRISD13   	// TRIS para E 
#define TRIS_RW               TRISDbits.TRISD4 	  	// TRIS parar RW
#define TRIS_RS               TRISDbits.TRISD5   	// TRIS parar RS


// Defino alimentación y backligth

#define POWER_LCD              	LATDbits.LATD6		// Puerto alimenta LCD (68)
#define BACK_LCD               	LATAbits.LATA15		// Puerto alimenta backligth del LCD (53)

#define TRIS_POWER_LCD         	TRISDbits.TRISD6
#define TRIS_BACK_LCD         	TRISAbits.TRISA15


#define MAX_DISPLAY_EVENTS				300

#define esDisplayInit 					1
#define esDisplayClear 					2
#define esDisplayChar					3
#define esDisplayCursorVisible			4
#define esDisplayCursorinVisible		5
#define esDisplayCursorShiftVisible	    6
#define esDisplayCursorPosAt			7
#define esDisplayCursorHome				8
#define	esDisplayWaiting				9
#define esGuardaSimbolos			   10


/*************************************************************************************/
/*               		Declaración de procedimientos y funciones. 			         */
/*************************************************************************************/	
void iniBufferDisplay(void);
void LCDSendCommand1(char);
void LCDSendCommand2(char);
void LCDSendData1(char);
void LCDSendData2(char);
void pushEventBufferDisplay(unsigned char, char, char);
void popEventBufferDisplay(void);	
void SetCGRamAddr(char, char);
void SetDDRamAddr(char, char);
void actTimer1(void);



void LCDInit(void);
void LCDClear(void);
void LCDHome(void);
void LCDPrintChar(char);
void LCDWaiting(char);
void LCDCursorPosAt(unsigned char, unsigned char);
void LCDCursorVisible(void);
void LCDCursorinVisible(void);
void LCDCursorShiftVisible(void);
void LCDPrintCharAt(char, unsigned char, unsigned char);
void LCDPrintStringAt(char *, unsigned char, unsigned char, int);
