TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: pic_877a en 01 de Septiembre de 2016, 13:52:46

Título: programa para fuente Lcd con Pic 16F876a
Publicado por: pic_877a en 01 de Septiembre de 2016, 13:52:46
hola
amigos del foro
cordial saludo


les comento he realizado un programa básico para usarlo en fuente digital usando LCd y los convertidor A/D del  Pic 16F876A, lo he simulado en proteus satisfactoriamente, y el programa no me genera error, lo que yo deseo es eliminar el signo + en el voltaje Visualizado, adjunto la imagen, para que la puedan visualizar,

ademas le adiciono mi programa en css compiler, y me orienten por favor en el programa como puede eliminar el signo + para que no salga en el lcd.
gracias por la ayuda
jose

#include <16f876A.h>                                    //LIBRERIA DEL PIC QUE SE VA A USAR
#fuses  XT,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT //FUSES DE AJUSTE PARA CRISTAL XT DE 4MHZ Y SIN PROTECCION
#device adc=10                                          //CONFIGURA EL CONVERSOR AD A 10 BITS
#use delay (clock = 4000000)                            //CRISTAL DE 4 MHZ         
#define use_portb_lcd TRUE                              //CONFIGURA EL PUERTO B PARA LA LCD
#include <LCD.C>                                        //LIBRERIA PARA LA LCD 2*16
#include <math.h>                                       //LIBRERIA PARA USO MATEMATICO
#use standard_io (All)                                  //CONFIGURA TODOS LOS PUERTOS Y AUTOMATICAMENTE LOR TRIS CON ESTANDARD IO
float t;                                                //VARIABLE DE TIPO FLOTANTE LLAMADA t 
float s;                                                //VARIABLE DE TIPO FLOTANTE LLAMADA s
void med_ir ()                                          //SE CREA LA FUNCION PARA MEDIR VOLTAJE
{                                                       //CORCHETE QUE ABRE EL INICIO DE LA FUNCION
  setup_adc_ports (AN0);                                //CONFIGURA EL PUERTO AN0 PIN 2 COMO CONVEROR ANALOGO DIGITAL
  setup_adc (ADC_CLOCK_DIV_32);                         //CONFIGURA EL RELOJ PARA LA CONVESION CON UN DIVISOR DE 32 DE LOS CILOS DEL RELOJ
  set_adc_channel (0); //habilitacion canal 0           //INICIA LA CONVERSION DEL CANAL 0 PIN 2
  delay_us (20);                                        //RETARDO PARA DAR TIEMPO A LA CONVERSION
  t = read_adc();                                       //LO QUE LEE EN EL CONVESROR AD LO GUARDA EN LA VARIABLE t         
  s= 5.0 *t / 1024;                                     //LO CONVIERTE A VOLTAJE 5V DE VOLTAJE DE REFERENCIA DIVIDIDO EN 2^10 QUE ES LA RESOLUCION DEL CONVERSOR
}                                                       //CIERRA EL CORCHETE Y TERNMINA LA FUNCION DE MEDIR

void publi_ca ()                                        //FUNCION DE PUBILAR EN EL DISPLAY LO MEDIDO                 
{                                                       //CORCHETE QUE INICIA LA FUNCION
        lcd_putc('\f');                                 //BORRA LA LCD YA DEBE ESTAR INICIALIZADA CUANDO LA LLAME
        lcd_gotoxy (1,1);                               //CORDENADAS DEL TEXTO EN RENGLON UNO CARACTER UNO                 
        printf (lcd_putc, "VOLTAJE AJUSTADO");          //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
        lcd_gotoxy (6,2);                               //CORDENADAS DEL TEXTO EN RENGLON DOS CARACTER SEIS
        printf(lcd_putc, " +\%2.1f v",(s*7));           //DESPLIEGA EL CARACTER + Y LO QUE ESTA EN LA VARIABLE FLOTANTE CON DOS CARACTERES ENTEROS Y UN DECIMAL YLUEGO EL CARACTER v LA VARIABLE LA MULTIPLICA POR 7 
}                                                       //CIERRA EL CORCHETE Y TERNMINA LA FUNCION DE PUBLICAR   

void main ()                                           //FUNCION PRINCIPAL ,PROGAMA PRICIPAL
{                                                      //CORCHETE QUE INICIA LA FUNCION
       lcd_init();                                     //INICIALIZA LA LDC
       lcd_gotoxy (4,1);                               //CORDENADAS DEL TEXTO EN RENGLON UNO CARACTER CUATRO                 
       printf (lcd_putc, "FUENTE DE");                 //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
       lcd_gotoxy (5,2);                               //CORDENADAS DEL TEXTO EN RENGLON DOS CARACTER CINCO
       printf (lcd_putc, "VOLTAJE");                   //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
       delay_ms (2200);                                //RETARDO DE 2.2 SEGUNDOS PARA QUE SE VEA EL AVISO
       lcd_putc('\f');                                 // BORRA LCD
       lcd_gotoxy (2,1);                               //CORDENADAS DEL TEXTO EN RENGLON UNO CARACTER DOS
       printf (lcd_putc, "CON INDICADOR");             //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
       lcd_gotoxy (5,2);                               //CORDENADAS DEL TEXTO EN RENGLON DOS CARACTER CINCO
       printf (lcd_putc, "DIGITAL");                   //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
       delay_ms (2200);                                //RETARDO DE 2.2 SEGUNDOS PARA QUE SE VEA EL AVISO
       lcd_putc('\f');                                 // BORRA LCD
       lcd_gotoxy (1,1);                               //CORDENADAS DEL TEXTO EN RENGLON UNO CARACTER UNO
       printf (lcd_putc, "Estudiante");          //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
       lcd_gotoxy (1,2);                               //CORDENADAS DEL TEXTO EN RENGLON DOS CARACTER CINCO
       printf (lcd_putc, "Jose Luis Comas");          //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
       delay_ms (2200);                                //RETARDO DE 2.2 SEGUNDOS PARA QUE SE VEA EL AVISO
       
while (true)                                           //CONDICION VERDADERA PARA HACER UN BUCLE SIN FIN
{                                                      //CORCHETE QUE INICIA LA FUNCION
 med_ir ();                                            //LLAMA LA FUNCION DE MEDIR QUEDA EN L AVARIABLE S EL VALOR MEDIDO
 publi_ca ();                                          //DESPLIEGA EN PANTALLA MO MEDIDO QUE ESTA EN LA VARIABLE FLOTANTE s
 delay_ms (100);                                       //RETARDO  DE 100ms TIEMPO EN QUE REFRESCA DESPLIEGUE Y HACE MEDICION
}                                                      //CIERRA CORCHETE DEL BUCLE SIN FIN
}                       
Título: Re:programa para fuente Lcd con Pic 16F876a
Publicado por: AcoranTf en 01 de Septiembre de 2016, 14:51:03
Una pregunta muy peculiar, sobretodo si como dices es <tu programa>.
Lee detenidamente la funcion publi.ca() y encontraras la respuesta a tu pregunta.

Saludos.
Título: Re:programa para fuente Lcd con Pic 16F876a
Publicado por: pic_877a en 01 de Septiembre de 2016, 19:34:57

hola
amigo

Acornatf te informo ya corregí el problema  printf(lcd_putc, " +\%2.1f v",(s*7));

 printf(lcd_putc, " \%2.1f V",(s*7));

ya el tengo el programa funcionado ok,

muchas gracias por la ayuda.

jose
Título: Re:programa para fuente Lcd con Pic 16F876a
Publicado por: AcoranTf en 02 de Septiembre de 2016, 08:31:45
Me alegro que asi sea. A veces nos obcecamos y no vemos lo evidente, tambien a mi me ha ocurrido.

Saludos.