/***************************************************************************/
/*                                                                         */ 
/*  LCD.H                                                                  */ 
/*             LCD interface implementation                                */ 
/*                                                                         */ 
/*                                                                         */ 
/*      Mode : HD44780 type LCD displays                                   */ 
/*                                                                         */ 
/* Interface :     SEL = Port A bit 3                                      */ 
/*                  WR = Port A bit 2                                      */ 
/*                  RS = Port A bit 0                                      */ 
/*              Data_7 = Port B bit 7                                      */ 
/*              Data_6 = Port B bit 6                                      */ 
/*              Data_5 = Port B bit 5                                      */ 
/*              Data_4 = Port B bit 4                                      */ 
/*                                                                         */ 
/*                                                                         */ 
/*             This version is for 4 bit mode                              */ 
/*                                                                         */ 
/*                                                                         */ 
/***************************************************************************/

#ifdef LCD


  void LCD_Setup(void);
  void LCD_FunctionMode(void);
  void LCD_DataMode(void);
  void LCD_WriteMode(void); 
  void LCD_ClockData(void); 
  void LCD_Command(char d);
  void LCD_Write_8_Bit(char d ); 
  void LCD_Write_4_Bit(char d ); 
  void LCD_WriteInt(int num);
  void LCD_SetPos(char position);
  void LCD_WriteIntPos( int num, char position );  
  void LCD_Clear(void);
  void LCD_GoLine1(void);
  void LCD_GoLine2(void);
  void LCD_ClearLine1(void);
  void LCD_ClearLine2(void);
  void printf( const char *text );
  
#else


  extern LCD_Setup(void);
  extern LCD_FunctionMode(void);
  extern LCD_DataMode(void);
  extern LCD_WriteMode(void); 
  extern LCD_ClockData(void); 
  extern LCD_Command(char d);
  extern LCD_Write_8_Bit(char d ); 
  extern LCD_Write_4_Bit(char d ); 
  extern LCD_WriteInt(int num);
  extern LCD_SetPos(char position);
  extern LCD_WriteIntPos( int num, char position );  
  extern LCD_Clear(void);
  extern LCD_GoLine1(void);
  extern LCD_GoLine2(void);
  extern LCD_ClearLine1(void);
  extern LCD_ClearLine2(void);
  extern printf( const char *text );

#endif



//***********************************************************************
// PIC Pin definitions for the LCD interface                            
//***********************************************************************

#define LCD_RS              0       // Register Select in RA0 

#define LCD_WR              1       // Write in RA1

#define LCD_SEL             2       // LCD Enable in RA2


#define LCD_DATA_4          4       // LCD BIT 4 in RB4                                   

#define LCD_DATA_5          5       // LCD BIT 5 in RB5                                   

#define LCD_DATA_6          6       // LCD BIT 6 in RB6                                   

#define LCD_DATA_7          7       // LCD BIT 7 in RB7                                   


//***********************************************************************
// Definitions for the LCD configurations                              
//***********************************************************************


#define CHARS_IN_LINE_C     16

#define LINES_C             2

#define CHAR_COUNT_C        32


//***********************************************************************
// LCD Commands ( Refer to LCD Data Sheet )                             
// Standard command should work with most common devices               
//***********************************************************************

#define CLEAR_LCD_C         0x01    // Clear Display                       

#define RETURN_HOME_C       0x02    // Cursor to Home position              

#define ENTRY_MODE_C        0x06    // Normal entry mode                    

#define ENTRY_MODE_SHIFT_C  0x07    // - with shift                         

#define SYSTEM_SET_8_BIT_C  0x38    // 8 bit data mode 2 line ( 5x7 font )  

#define SYSTEM_SET_4_BIT_C  0x28    // 4 bit data mode 2 line ( 5x7 font )  

#define DISPLAY_ON_C        0x0c    // Switch ON Display                    

#define DISPLAY_OFF_C       0x08    // Cursor plus blink                    

#define SET_DD_LINE1_C      0x80    // Line 1 position 1                    

#define SET_DD_LINE2_C      0xC0    // Line 2 position 1                    

#define SET_DD_RAM_C        0x80    // Line 1 position 1                    

#define WRITE_DATA_C        0x00    // With RS = 1                          

#define CURSOR_ON_C         0x0E    // Switch Cursor ON                     

#define CURSOR_OFF_C        0x0C    // Switch Cursor OFF                    

                                                                      
//***********************************************************************

#define NUL                 0       // end character of sting

syntax highlighted by Code2HTML, v. 0.9.1