Autor Tema: Borrado de LCD  (Leído 1552 veces)

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

Desconectado Sorianito

  • PIC10
  • *
  • Mensajes: 6
Borrado de LCD
« en: 21 de Marzo de 2013, 16:47:13 »
Hola a todos, necesito de su ayuda.
Veran estoy utilizando el pic 16F84a y un LCD 2x16 para leer una cadena de caracteres enviados por via serial, Aqui utilizo la lectura de identificadores (por asi decirlo) para leer dicha cadena. En el display del lcd se visualizan dos textos, una en cada fila que son las de Dist: y Marc: entonces aqui es donde uso los identificadores, lo que hace el pic es tomar la cadena (de 17 digitos) y leer el primer caracter y el noveno para que posicione una parte de la cadena en Dist: y otra en Marc:, para que quede mas claro la cadena la mando de la siguiente forma: D-------M------- (donde "-" son los caracteres siguentes que siguen de los identificadores) asi es que cuando detecta la letra D los valores de esa parte las posiciona en Dist: y la M las posiciona en Marc:
Ahora ya que esta claro esto el problema es el siguiente: los valores de la cadena cambiaran constantemente asi que se enviaran valores nuevos, lo que no puedo hacer es borrar algunos caracteres de la cadena anterior, por que si mando despues de la letra D tres digitos los caracteres de la cadena anterior se quedan ahi y solo escribe los tres digitos que envie.
Por mas que ya revise el programa no encuentro el problema.
Espero me ayuden, les adjunto el programa y si a alguien le sirve lo puede utilizar de referencia para proyectos futuros.
Se me olvidaba decir que tanto en la simulacion como en la aplicacion real tiene el mismo problema.


#include <16F84A.h>
#FUSES NOWDT, XT,
#use delay(clock=4000000) //Frecuencia de reloj 4MHz
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8)
#include <lcd.c>
char opcion[17];
char D='D';
char M='M';

void main()
{
   lcd_init();
   lcd_gotoxy(1,1);
   lcd_putc("DIST:");
   lcd_gotoxy(1,2);
   lcd_putc("MARC:");
  
    while(True)
   {
   fgets(opcion);
  
   if (opcion[0]==D)
    {
     lcd_gotoxy(6,1);
     lcd_putc("               ");
     lcd_gotoxy(7,1);
     printf (lcd_putc,"%c%c%c%c%c%c%c",opcion[1], opcion[2], opcion[3], opcion[4], opcion[5], opcion[6], opcion[7]);
    }
  
    if (opcion[8]==M)
   {
     lcd_gotoxy(6,2);
     lcd_putc("               ");
     lcd_gotoxy(7,2);
     printf (lcd_putc,"%c%c%c%c%c%c%c",opcion[9], opcion[10], opcion[11], opcion[12], opcion[13], opcion[14], opcion[15]);
   }
}
}
« Última modificación: 22 de Marzo de 2013, 14:55:49 por Sorianito »


 

anything