lunes, 18 de marzo de 2019

LCD en MPLAB X / XC8

Había comentado en una entrada pasada que las nuevas versiones de XC8 dejaron de usar Peripheral Library y en esa misma entrada explico el truco que pueden hacer para utilizarla. Sin embargo, los usuarios de PIC's modernos deben saber lo cómodo que es usar ahora MCC. Pero también habrán notado que no hay un generador de código para el manejo de LCD's.  Así que he hecho un fork en GitHub de una librería hecha por Manolis Agkopian a la que hecho una mínima modificación para poder usarla en el PIC18F45K50. Pueden acceder a los códigos aquí. Esta librería me parece genial porque te permite usar el puerto que quieras, a diferencia de la mayoría que he visto que te limitan a un puerto fijo (que debes modificar si quieres usar otro). Lo único que deben hacer es agregar los archivos lcd.h y lcd.c a los headers de su proyecto. Como aún hay muchos usuarios del PIC18F4550 voy a poner aquí un ejemplo con él.  Usaré una tarjeta Miuva a 48 MHz: 

/*
* File: main.c
* Author: Rodolfo E. Escobar U.
*
* Created on 17 de marzo de 2019, 10:55 PM
*/
#include <xc.h>
#include <stdio.h>
#include <stdbool.h>
#include "lcd.h"
#define _XTAL_FREQ 48000000 // Fosc = 48MHz
void setup(void){
// --- Fuses
#pragma config PLLDIV = 2
#pragma config CPUDIV = OSC1_PLL2
#pragma config USBDIV = 1
#pragma config FOSC = HSPLL_HS
#pragma config PWRT = OFF
// ----------
}
void main(void) {
setup();
LCD lcd = { &PORTD, 5, 4, 0, 1, 2, 3 }; // RS,EN,D4,D5,D6,D7
LCD_Init(lcd);
//-- variables
float pi = 3.141592653;
char buff[11];
//---
while(1){
__delay_ms(100);
sprintf(buff,"%.4f",pi); //.Xf -> X: cifras significativas
LCD_Set_Cursor(0,0);
LCD_putrs("Pi = ");
LCD_Set_Cursor(0,6);
LCD_putrs(buff);
}
return;
}
view raw main.c hosted with ❤ by GitHub

No hay comentarios: