mikrocontroller.net

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


Autor: Fortgeschrittener Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
//#####################################################################
}
//////////////////////////////////////////////////////////////////////// 
//
######################################################################## 
##

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.