Forum: Mikrocontroller und Digitale Elektronik Display S65 LF50126 zittert vor der Anzeige


von Fortgeschrittener Anfänger (Gast)


Lesenswert?

Unten hängt der Standardcode zum Schreiben eines Zeichens auf das 
Display.

Ich habe das Display an einen LPC2366 angeschlossen mit 3,3 Volt. Die 
Anzeige von Zeichen klappt ja, jedoch wackelt die Anzeige beim Aufruf 
von
"lcd_cmd(RAMWR);" und hört erst bei "setCS();" wieder auf. Danach steht 
aber das Richtige auf dem Display?
Kabellänge = 20cm. Bei 35 cm passiert das selbe.
Am Atmel Mega128 läuft es prima, sowohl mit 20cm als auch 35 cm.

Definition wackeln hier: Der geschriebene Text bewegt sich sehr schnell 
um ca. 10 Pixel auf-, und abwärts(Display ist hochkant). Es entstehen 
dabei streifen im Text. Ab und zu sind auch andere Pixelgruppen 
betroffen jedoch extrem kurz und zufällig verteilt.

Beim flashen macht es auch was will. Vielleicht hilft diese Info ja 
auch.

Bitte dringend um Hilfe :-)

Quellcode des Schreibvorgangs:
//////////////////////////////////////////////////////////////////////// 
////
######################################################################## 
####
void put_char(uint8_t x, uint8_t y, char c)
{
  uint8_t h,ch,p,mask,he;
  uint16_t pi=0;
  uint8_t x1,y1;
  uint16_t e1;
  x1=x;
  y1=y;

  resetCS();

  lcd_cmd(SD_CSET);
  lcd_dat0(0x08+x);  // start is 8, not 0
  lcd_dat0(0x01);
  lcd_dat0(0x08+x+CHAR_W-1);  // end is 00x8B = 0x83+8
  lcd_dat0(0x01);

  lcd_cmd(SD_PSET);
  lcd_dat0(y);
  if (y < DISP_H-CHAR_H)
  {
    he=CHAR_H;
    lcd_dat0(y+CHAR_H-1);
  }
  else
  {
    he=DISP_H-y;
    lcd_dat0(DISP_H-1);
  }
//#####################################################################
  lcd_cmd(RAMWR);//Start des Wackelns
//#####################################################################
  for (h=0; h<he; h++) // every column of the character
  {
        ch=ascii_tab[ c-32 ][h];

        mask=0x80;
        for (p=0; p<CHAR_W; p++)  // write the pixels
        {
          if (ch&mask)
          {
            lcd_dat16(textcolor);
          }
          else
          {
      e1=((y1+h)*134)+134-((x1+p))-1;
        pi = Bild[e1];
        //pi = pgm_read_word(&Bild[1706+((h+1)*20)]);
            //lcd_dat16(backcolor);
            lcd_dat16(pi);
        //_delay_ms(200);
              //put_pix(xp, yp, pix);
          }
          mask=mask/2;
        }  // for p
  }
//#####################################################################
  setCS();//Ende des Wackelns egal wie lang es bis hier hin
          //dauert, erst hier hört die Wackelei auf, und das richtige
          //wird angezeigt
//#####################################################################
}
//////////////////////////////////////////////////////////////////////// 
//
######################################################################## 
##

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.