LCD hat schwarze Balken in Zeile 1 und 3

OP (Firma: student) #1678497
tja, ein häufiges problem, und ich hab es auch, hab hier schon viel 
gelesen, und einieges probiert, aber nix klappt!
also ich hab ein 4x20 LCD, die 1. und 3. Zeile hat schwarze balken. das 
kann an der lib liegen.
das merkwürdige ist, das wenn ich den controller unter spannung 
reinstecke, und bissl wackel gehts hin und wieder... kann das ein 
zeitproblem in der initialisierung sein?
auch wenn ich hin und her wackeln schreibe, von nem üblichen 
wackelkontackt seh ich mal ab, man weiß nie, aber schaut nicht danach 
aus!

im Anhang das Datenblatt des LCD

hier der code

#define F_CPU 4000000
#include <avr\io.h>
#include <util\delay.h>
#include <lcd_neu.h>

volatile unsigned int i;
unsigned int x;

main()
{
// Ausgänge und Eingänge
  DDRB  =  0x60;    // Taster-Pin's als Eingänge, Freigabe Pin's als 
Ausgänge
  DDRD  =  0x02;    // LED-Pin als Ausgang
  i=0;          // LED erstmal aus

  PORTB  =  0x1f;    // PORTB Taster-Anschlüsse intern mit PULL-UP's 
beschalten
  for(x=0;x<100;x++)
  {
  _delay_ms(16);
  }
  lcd_init();
  _delay_ms(16);

  while(1)
  {
    if  (!(PINB&0x01))  // abfrage ob Bit1 nicht High ist,
              //also gedrückt ist(Taster schaltet LOW durch)
    {          // mit einem Taster einschalten
      i=1;
    }

    if  (!(PINB&0x02))  // abfrage ob Bit2 nicht High ist,
              //also gedrückt ist(Taster schaltet LOW durch)
    {          // mit anderem Taster ausschalten
      i=0;
    }

    if(i)
    {
      PORTD=0x00;    // LED an
      lcd_home();    //set_cursor(3,3);
      lcd_string("Hallo");
    }
    else
    {
      PORTD=0xff;    // LED aus
      lcd_home();
      lcd_string("o");
    }

  //lcd_string("h");

  }
}

die LED verändert ihren zustand...
Angehängte Dateien:
#1678503
4-zeilige LCDs, wie du es auch eines verwendest, verhalten sich IMHO von 
der Ansteuerung her wie zweizeilige. D.h. du hast von der Ansteuerung 
her kein 4*20 LCD, sondern ein 2*40. Änder mal set_cursor(3,3); in: 
set_cursor(23,1);
Nun müsste es eigentlich funktionieren...
OP (Firma: student) #1678531
im betrieb den controller entfernen und wieder reinstecken, mal kommt 
eine reaktion und mal nicht, schwarze balken sind jetzt weg, aber die 
ausgabe kommt mal und mal nicht, das riecht doch danach das die 
initialisierung mal funktioniert und mal nicht... oder??

hab die lib mal angehängt, bin über jede hilfe dankbar!
Angehängte Dateien:
Gast #1678690
Dass hier:

>   LCD_RS_DDR  |= (1<<LCD_RS);
>   // muss 3mal hintereinander gesendet werden zur Initialisierung
>
>   _delay_ms(15);
>
>   LCD_PORT_4 &= ~(1<<LCD_D4);
>   LCD_PORT_5 |=  (1<<LCD_D5);

Mal so ändern:

   LCD_RS_DDR  |= (1<<LCD_RS);
   // muss 3mal hintereinander gesendet werden zur Initialisierung

   _delay_ms(15);

   LCD_PORT_4 |=  (1<<LCD_D4);
   LCD_PORT_5 |=  (1<<LCD_D5);

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.