Display S65 LF50126 zittert vor der Anzeige

Gast #1074793
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
//#####################################################################
}
//////////////////////////////////////////////////////////////////////// 
//
######################################################################## 
##

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.