Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

06/11/2012 #1

Avatar de chin0o

Caracteres personalizados para LCD en MikroC
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?resi...AAQWPS3joQ3RzM
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.