Caracteres personalizados para LCD en MikroC

#1
Que tal compañeros pues no es tanto una pregunta si no que aqui les comparto un pequeño programa para mostrar en un LCD el resultado de una conversion A/D el programa fue elaborado en el MikroC pro for Pic v5.6.1
Código:
                /*Proyecto sensor humedad
Pic utilizado 16f882
ultima fecha de modificacion 1 de nov 2012
elaborado por miguel angel miranda, juan carlos
Universidad Tecnologica de Queretaro
*/
// Modulo de concecciones Lcd
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Termin modulo de conecciones de Lcd
const char character[] = {0,0,0,0,0,0,31,31};
const char character_1[] = {0,0,0,0,31,31,31,31};
const char character_2[] = {0,0,31,31,31,31,31,31};
const char character_3[] = {31,31,31,31,31,31,31,31};
const char character_cln[] = {0,0,0,0,0,0,0,0};
void CustomChar(char pos_row, char pos_char) {
  char i;
    Lcd_Cmd(64);
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]);
     Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 0);
}
void CustomChar_1(char pos_row, char pos_char) {
  char l;
    Lcd_Cmd(72);
    for (l = 0; l<=7; l++) Lcd_Chr_CP(character_1[l]);
     Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 1);
}
void CustomChar_2(char pos_row, char pos_char) {
  char i;
    Lcd_Cmd(80);
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character_2[i]);
    Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 2);
}
void CustomChar_3(char pos_row, char pos_char) {
  char i;
    Lcd_Cmd(88);
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character_3[i]);
    Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 3);
}
void CustomChar_cln(char pos_row, char pos_char) {
  char i;
    Lcd_Cmd(96);
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character_cln[i]);
    Lcd_Cmd(_LCD_RETURN_HOME);
    Lcd_Chr(pos_row, pos_char, 4);
}
//declaracion de funciones
void main(void);//funcion principal
void config(void);//funcion de configuracion del uc
//declaracion de funciones
//declaracion de variables
int x=0,ad=0,inc=0,cen=0,mas=0;
long result2=0,result=0,uni=0,y=0;
int LC[10]={'0','1','2','3','4','5','6','7','8','9'};
char txt1[] = "HR=";
///////////////////////////////////////
void interrupt (){//Funcion de interrupcion
if (PIR1.B6==1){//fue la interrupcion de A/D????????????
x=ADRESH;//Guarda el valor
PIR1.B6=0;//Habilita nuevamente la interrupcion del A/D
}
}//termina funcion interrupcion
void config(){// config function
PORTA=0X00;
PORTC=0X00;
  C1ON_bit = 0;
  C2ON_bit = 0;
  ANSEL  = 1;
  ANSELH = 0;
  TRISA=0X01;
  ADCON0=0X81;//Escojer TAD, escojer que canal se va usar de entrada analogica,encender el modulo A/D,poner en standby la conversion A/D
  ADCON1=0X10;//formato de resultado,
  INTCON=0XC0;//Habilitar todas las interrupciones
  PIE1=0X40;//Habilitaar interrupcion por A/D
  PIR1=0X00;//Bandera de interrupcion por A/D en cero
  Lcd_Init();
  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
  Lcd_Out(1, 1, txt1);
  Lcd_Out(1, 6, "%");
}//termina funcion configuracion
void main() {
config();
while(1){
Lcd_Chr(1, 4, lc[cen]);
Lcd_Chr(1, 5, lc[uni]);
Delay_ms(200);
ADCON0.B1=1;//COMIENZA CONVERSION
Delay_us(25); //Tiempo de conversion
y=x;
result=y*90;
result2=result/227;
cen=0;
uni=0;
if (result2>10){mas=1;CustomChar(2,7);}
if (result2>30){mas=2;CustomChar_1(2,8);}
if (result2>50){mas=3;CustomChar_2(2,9);}
if (result2>70){CustomChar_3(2,10);}
if (result2<70&&mas==3){CustomChar_cln(2,10);}
if (result2<50&&mas==2){CustomChar_cln(2,9);}
if (result2<30&&mas==1){CustomChar_cln(2,8);}
if (result2<10){CustomChar_cln(2,7);}
//BCD***************************************************************************
while(result2>=10){
cen++;
result2=result2-10;
}
while(result2>0){
uni++;
result2=result2-1;
}
}
}//termina funcion principal
espero les sirva saludos""":)
https://skydrive.live.com/redir?resid=53E437537C747178!171&authkey=!AAAQWPS3joQ3RzM
 
Última edición:
Arriba