Autor Tema: programa para fuente Lcd con Pic 16F876a  (Leído 1584 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pic_877a

  • PIC16
  • ***
  • Mensajes: 172
programa para fuente Lcd con Pic 16F876a
« 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
}                       

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re:programa para fuente Lcd con Pic 16F876a
« Respuesta #1 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.

Desconectado pic_877a

  • PIC16
  • ***
  • Mensajes: 172
Re:programa para fuente Lcd con Pic 16F876a
« Respuesta #2 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

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re:programa para fuente Lcd con Pic 16F876a
« Respuesta #3 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.


 

anything