Autor Tema: mostrar el signo % en un LCD  (Leído 5442 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado LEDER

  • PIC10
  • *
  • Mensajes: 2
mostrar el signo % en un LCD
« en: 17 de Agosto de 2015, 18:34:22 »
 :-/  :) Hola tengo un pequeño problema con mi proyecto estuve tratando de hacer que a través de un LCD se me muestre el voltaje de una batería y el porcentaje de carga que tiene el inversor bn asta allí todo bien me muestra el voltaje de la batería y el porcentaje de carga pero tengo un pequeño problema para mostrar el signo de porcentaje (%) después de la medición aquí les dejo mi código para que me ayuden :-/


#include <16F877A.h>                                                            //pic usado
#device ADC=10                                                                  //ADC = de 1024 bits
#FUSES NOWDT                                                                    //No Watch Dog Timer
#FUSES XT                                                                       //Crystal osc <= 4mhz
#FUSES NOPROTECT                                                                //Code not protected from reading
#FUSES NOBROWNOUT                                                               //No brownout reset
#FUSES NOPUT                                                                    //No Power Up Timer
#FUSES NOCPD                                                                    //No EE protection
#FUSES NODEBUG                                                                  //No Debug mode for ICD
#FUSES NOLVP                                                                    //No low voltage
#FUSES NOWRT                                                                    //Program memory not write protected
#FUSES PUT
#FUSES BROWNOUT
#use delay(clock=4000000)                                                       //fracuensia del cristal 20MHz
#include <lcd.c>                                                                //Archivo para el manejo de LCD
#define use_portb_lcd TRUE                                                      //uso de puerto D para el LCD
int16 carg;                                                                     //variable CARG
float p;                                                                        //variable P
int16 volt;                                                                     //variable VOLT
float b;                                                                        //variable B
float c;                                                                        //variable C para monitoreo independiente del votage para la proteccion por bateria baja
void main(){                                                                    //apertura de programa
OUTPUT_HIGH(PIN_B0);                                                            //salida alta por el pin B0 para mantener apagado el inversor al conectarlo
setup_port_A(all_analog);                                                       //todas las entradas analogicas
setup_adc(adc_clock_internal);                                                  //configura el converso
delay_ms(10);                                                                   //tiempo de retardo por seguridad
printf(lcd_putc,"\fSISTEM SEARCH");                                             //inicialisasion
delay_ms(5000);                                                                 //evita que el lcd espabile
while (TRUE){                                                                   //bucle   
if(c>=53){                                                                      //para que el inversor no ensienda asta que la bateria no este cargada
output_low(PIN_B3);}                                                            //salida baja para cortra arestar la salida alta por bateria baja para encender el inversor
if(c<=44){                                                                      //para apagar el inversor por bateria baja
output_high(PIN_B3);}                                                           //salida alta por el pin b3 para apagar el inversor
if(p>=99){                                                                      //lectura de la variable P y condision a prosesar
output_high(PIN_B4);}                                                           //salida alta por el pin B3 si se cumple la condision de la variable P     
if(p<=98){                                                                      //por seguridad
output_low(pin_b4);}                                                            //salida baja por el pin b4 por seguridad
delay_ms(100);                                                                  //para que se estabilice
lcd_init();                                                                     //iniciacion de lcd
set_adc_channel(1);                                                             //Seleccionamos el canal'1' para hacer la lectura del valor analogico
delay_ms(1);                                                                    //para que se estabilice
volt = read_adc();                                                              //Hacemos la lectura del canal seleccionado anteriormente (canal'1')
delay_ms(1);                                                                    //para que se estabilice
b=(float)(volt*60/1000);                                                        //variable B
c=(float)(volt*60/1000);                                                        //variable C
lcd_gotoxy(1,1);                                                                //muestra la lectura de voltaje en las lineas (1,2) del LCD
printf(lcd_putc, "\b VOLTAJE = %3.1fV", b);                                     //muestra de la lectura de la variable C en el LCD
delay_ms(1000);                                                                 //para que se estabilice
set_adc_channel(0);                                                             //Seleccionamos el canal'0' para hacer la lectura del valor analogico
delay_ms(1);                                                                    //para que se estabilice
carg = read_adc();                                                              //Hacemos la lectura del canal seleccionado anteriormente (canal'0')
delay_ms(1);                                                                    //para que se estabilice
p=(float)(carg*0.979/10.000);                                                   //variable P
lcd_gotoxy(2,2);                                                                //muestra la lectura de voltaje en las lineas (10,2) del LCD
printf(lcd_putc, "\bCARGA   =3.0%f",p);                                         //muestra de la lectura de la variable P en el LCD
delay_ms(1000);                                                                 //para evitar que el LCD parpadee
lcd_gotoxy(13,2);                                                               //muestra el signo % en la fila 2 linea 14
printf(lcd_putc, "");                                                           //comando para la muestra del %
if(input(pin_b2)==1){                                                           //lectura de si se presiono el botos si o no para el buzer y prender o apagar el inversor
output_high(pin_b5);                                                            //salida alta por el pin b5 para hacer sonar el buzer
delay_ms(1000);                                                                 //tiempo de retardo del buzer sonando
delay_ms(1000);                                                                 //por seguridad
output_low(pin_b5);                                                             //salida baja por el pin b5 para hacer que el buzer deje de sonar
delay_ms(1000);                                                                 //por seguridad
delay_ms(1000);                                                                 //por seguridad
output_toggle(PIN_B0);                                                          //para encender o apagar el inversor segun como estaba
delay_ms(1000);}                                                                //por seguridad
else if(input(pin_b2)==0){                                                      //por seguridad
output_low(pin_b5);                                                             //por seguridad
delay_ms(1000);                                                                 //por seguridad
delay_ms(1000);}}}                                                              //por seguridad
"Lo que nos hace grandes es el hecho de que podemos ver lo pequeños que somos"

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: mostrar el signo % en un LCD
« Respuesta #1 en: 17 de Agosto de 2015, 22:01:17 »
Lo puedes hacer asi:

Citar
int var= 67;

void main()
{
   lcd_init();
   printf(lcd_putc,"%u%%",var);   // con dos signos %%
   
   while(true);
}

Saludos

Desconectado ceci_lamorocha

  • PIC12
  • **
  • Mensajes: 94
Re: mostrar el signo % en un LCD
« Respuesta #2 en: 18 de Agosto de 2015, 20:15:17 »
Hola !  aprovecho para preguntarles como se hace para mostrar un cuadrado negro y luego otro y luego otro
para que parezca el efecto de carga




Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: mostrar el signo % en un LCD
« Respuesta #3 en: 18 de Agosto de 2015, 22:37:45 »
Para que puedas realizar lo que deseas; debes crear caracteres no definidos en la lcd, para ello revisa aqui.
Para que sepas como crearlos.

Saludos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: mostrar el signo % en un LCD
« Respuesta #5 en: 18 de Agosto de 2015, 23:37:37 »
A claro si es un solo cuadro negro de las mismas dimensiones como dice killerjc, tambien sirve.
Ahora bien si te quieres ponerte creativo y hacer figuras o unas barras que vaya creciendo horizontal o verticalmente, deberas crear los caracteres, como te indique en el enlace de arriba.   :mrgreen:

Saludos

Desconectado ceci_lamorocha

  • PIC12
  • **
  • Mensajes: 94
Re: mostrar el signo % en un LCD
« Respuesta #6 en: 19 de Agosto de 2015, 09:32:54 »
buenisimo gracias !  :mrgreen: