Me gustaría estrenar este subforo con la publicación de una librería para LCD que he estado adaptando estos días. Se trata de una adaptación de la famosa
FlexLCD de CCS que he modificado para que funcione en C32.
Lo único que hay que modificar es la asignación de pines que se realiza al principio, y que habrá que configurar según sea el hardware seleccionado:
// Pines a los que está conectado el LCD
#define LCD_DB4 LATDbits.LATD8
#define LCD_DB5 LATCbits.LATC13
#define LCD_DB6 LATDbits.LATD11
#define LCD_DB7 LATDbits.LATD0
#define LCD_RS LATDbits.LATD5
#define LCD_RW LATDbits.LATD6
#define LCD_E LATDbits.LATD1
#define TRIS_DB4 TRISDbits.TRISD8
#define TRIS_DB5 TRISCbits.TRISC13
#define TRIS_DB6 TRISDbits.TRISD11
#define TRIS_DB7 TRISDbits.TRISD0
#define TRIS_RS TRISDbits.TRISD5
#define TRIS_RW TRISDbits.TRISD6
#define TRIS_E TRISDbits.TRISD1
#define LCDRW_DB4 PORTDbits.RD8
#define LCDRW_DB5 PORTCbits.RC13
#define LCDRW_DB6 PORTDbits.RD11
#define LCDRW_DB7 PORTDbits.RD0
También podemos optar por no conectar el pin RW, para lo cual hay que comentar esta línea:
#define USE_LCD_RW 1
A partir de ahí, nos limitaremos a inicializar el LCD con lcd_init() y a usarlo como en este ejemplo:
lcd_init();
sprintf(buf
, "\f Libreria LCD-C32\n ===============\nAdaptada de FlexLCD\n www.micropic.es"); SendLCDBuffer
(buf
, strlen(buf
));
También disponemos de la posibilidad de utilizar la función lcd_gotoxy() para situar el cursor en cualquier punto de la pantalla, o la función lcd_setcursor_vb() para establecer el tipo de cursor.
Espero que os sea de utilidad. Por supuesto, cualquier mejora de la misma será bienvenida.