#include <16F648A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#use delay(clock=20000000)
#include <flex_lcd.c>
// En este vector se puede almacenar los 8 caracteres en formato 5x7.-
char const CaracteresCGRAM[64]={0x05,0x0D,0x1D,0x1D,0x1D,0x0D,0x05,0x00,
0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x00,
0x14,0x16,0x17,0x17,0x17,0x16,0x14,0x00,
0x00,0x0E,0x0E,0x0E,0x0E,0x0E,0x00,0x00};
// Guarda en la CGRAM el caracter en el banco seleccionado.-
// <Caracter> es la dirección de la primer fila del caracter a enviar.-
void lcd_write_cgram(int Banco,int Caracter){
int Dire_Banco,i;
Dire_Banco=0x40 + 0x08*Banco;
lcd_send_byte(0,Dire_Banco);
// Cargamos los 8 registros.-
for(i=0;i<8;i++){
lcd_send_byte(1,CaracteresCGRAM[Caracter + i]);
}
lcd_send_byte(0,0x80); // Se da por terminada la escritura.-
}
// Incializa Memoria CGRAM.-
void lcd_init_cgram(void){
int j;
for(j=0;j<8;j++){
lcd_write_cgram(j,j*8);
}
}
void main()
{
lcd_init();
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init_cgram();
lcd_putc("LCD CGRAM:\n");
lcd_putc(0);
lcd_putc(1);
lcd_putc(2);
lcd_putc(3);
lcd_putc(4);
while(1){}
}