datos LCD leídos y mostrados en la computadora

1

Tengounproyectoparatrabajarcomosigue:esteesunporudctbasadoenPIC(PIC16C62B)quemideelvalorprovenientedeunsensordegiromecánico.LosdatosanalógicosdeGyroamplificanyseenvíanaAD7707paraconvertirlosenserie.PICleeestaseriedeAD7707ymuestravalores/datosdegiroen16x2LCDdespuésdelprocesamientointerno.Nosésobreelprograma/códigointernodePICqueseestáutilizandoenél.ElPICestáprotegidoporcódigoynopuedoleersuhex.ahoraestoyobligadoamostrarlosvaloresdeLCD/datosenlacomputadoraencualquiercaso.

Noentiendocómohacerlo.Sialguientienealgunaideadehacerestoohatrabajado,porfavor,ayúdemeenestasituación.Estaréagradecidoportodarespuestapositiva.

chara,b,c,d,e,f,g,h,var;chari=0;charcon=0;charlow=0;//bytesBuffer[256];//unsignedintnLen;//nLen=HexToASCII(sBuffer,"65 66 67");

void setup() {
 Serial.begin(1200);
 //pinMode(13, INPUT);
pinMode(12,INPUT);    //Define RS
pinMode(11,INPUT);    //Define EN
pinMode(5,INPUT);
pinMode(4,INPUT); 
pinMode(3,INPUT);
pinMode(2,INPUT);
pinMode(9,INPUT);
pinMode(8,INPUT);
pinMode(7,INPUT);
pinMode(6,INPUT);
  a=0;
   b=0;
   c=0;
   d=0;
   e=0;
   f=0;
   g=0;
   h=0;
   con=0;
   low=0;
}

void loop() {




  if(digitalRead(11)==HIGH && low==0)                //EN hight
  {
    low=1;
  }
  if(digitalRead(11)==LOW && low==1){
     if (digitalRead(12)==HIGH){                     //RS high
   a=digitalRead(9);
   b=digitalRead(8);
   c=digitalRead(7);
   d=digitalRead(6);
   e=digitalRead(5);
   f=digitalRead(4);
   g=digitalRead(3);
   h=digitalRead(2);
//   var = (h*128)+(g*64)+(f*32)+(e*16)+(d*8)+(c*4)+(b*2)+(a*1);
   var = (h<<7)+(g<<6)+(f<<5)+(e<<4)+(d<<3)+(c<<2)+(b<<1)+(a);

   con=1;
   low=0;
   }
  }
  if(con==1){
  //  String str(var);
    Serial.print(var);
    //Serial.print("\n");
     a=0;
     b=0;
     c=0;
     d=0;
     e=0;
     f=0;
     g=0;
     h=0;
     con=0;
     var=0;
  }

}

    
pregunta abdul razzaq

1 respuesta

2

Parece que tienes

simular este circuito : esquema creado usando CircuitLab

y desea eliminar los datos en algún lugar. Tienes dos opciones:

  • Toca la señal digital antes del PIC y escribe tu propio código para procesar los datos y mostrarlos.
  • Monitoree los datos paralelos en la pantalla LCD. Para hacer esto, necesita monitorear todas las líneas de datos con un micro - Arduino, por ejemplo. En la memoria micro, cree 2 * 16 registros de memoria y descubra qué significa cada comando escrito en la pantalla LCD y actualice sus registros con los valores mostrados. Luego transmite los 32 registros o los pocos que le interesan a su PC en serie.

Imagen de Arduino.cc de la configuración del LCD. En su caso, estaría monitoreando la pantalla LCD en lugar de escribirla.

Espero que tengas suficiente tiempo disponible. Lo vas a necesitar.

Pseudo código

El principal problema aquí será mantenerse al día con la escritura de la pantalla LCD al intentar imprimir en serie los datos recibidos. Le sugiero que intente capturar una actualización completa de LCD, imprímala en serie y espere al inicio de la próxima actualización. (Observe si el código de control vuelve a la posición 0 o lo que sea).

void setup() {
  int chars[80]; // Line 1 uses DDRAM address 0x00 to 0x0F.
                 // Line 2 uses DDRAM address 0x40 to 0x4F.
}

void loop() {
  if(picWriting) {
    char = readLCDdata();            // Read the LCD byte.
    if(isControlCode) {              // Is it a control code or a character?
      updateLcdDdramPointer(char);   // Point to the array location for this character.
    } else {
      storeCharacter(char, pointer); // Put this character into the array.
    }
  }
  if(pointer == lastChar) {          // The last character has been read.
    // Serial.print out all the characters of interest.
  }
  // If printing takes too long the PIC may have started updating the display already.
  // Wait for start of next LCD refresh.
}
    
respondido por el Transistor

Lea otras preguntas en las etiquetas