LCD hat schwarze Balken in Zeile 1 und 3

OP (Firma: student) #1678497
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

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.

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.