TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: dsher en 12 de Mayo de 2013, 01:00:47

Título: LCD 16x2 FUNCIONES IF(ayuda) en ccs
Publicado por: dsher en 12 de Mayo de 2013, 01:00:47
Hola, buenas noches/tardes what ever
escribo para ver si alguien me podria ayudar con un proyecto que tengo con un LCD 16X2  adjunto el programa talvez tenga muchas fallas :mrgreen: soy algo nuevo en esto :oops:

Código: [Seleccionar]
#include <16f84A.h>                 
#use delay(clock=4000000)   
#fuses XT,NOWDT               
#include <lcd.c>

void main (void)
{
set_tris_a(0x1F);
lcd_init();
do
{
  if (input(PIN_A0))
  {
    lcd_putc("\f");
    lcd_gotoxy(6,1);
    printf(lcd_putc,"Piso");
    lcd_gotoxy(7,2);
    printf(lcd_putc,"Uno");
  }
    else if (input(PIN_A1))
  {
    lcd_putc("\f");
    lcd_gotoxy(6,1);
    printf(lcd_putc,"Piso");
    lcd_gotoxy(7,2);
    printf(lcd_putc,"Dos");
  }
  else if (input(PIN_A2))
  {
    lcd_putc("\f");
    lcd_gotoxy(6,1);
    printf(lcd_putc,"Piso");
    lcd_gotoxy(7,2);
    printf(lcd_putc,"Tres");
  }
  else if (input(PIN_A3))
  {
    lcd_putc("\f");
    lcd_gotoxy(6,1);
    printf(lcd_putc,"Piso");
    lcd_gotoxy(7,2);
    printf(lcd_putc,"Cuatro");
  }
}
while(true);
}
bueno el programa es para un elevador para que indique en que piso esta pero el problema es que pues el sensor va aestar dando un pulso continuo y cuando hago eso en proteus el lcd empieza a parpadear mucho y nose como remediarlo :I si alguien pudiera ayudarme de antemano gracias :)
Título: Re: LCD 16x2 FUNCIONES IF(ayuda) en ccs
Publicado por: sander en 12 de Mayo de 2013, 02:00:20
lo que entiendo que le pasa es que el lcd se actualiza todo el tiempo con el mismo mensaje y por eso parece que parpadea, lo que podria hacer es utilizar el TMR0 para controlar que el LCD se acrtualice cada 100 o 200 ms y asi no enviar todo el tiempo datos al LCD.

Saludos
Título: Re: LCD 16x2 FUNCIONES IF(ayuda) en ccs
Publicado por: PalitroqueZ en 13 de Mayo de 2013, 21:35:20
las lineas

    lcd_putc("\f");
    lcd_gotoxy(6,1);
    printf(lcd_putc,"Piso");

la puedes colocar antes del Do, puesto que no cambiará mas en el programa y no se borrará mas en la pantalla (a menos que quites energía o quieras mostrar otra cosa en la misma línea)