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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren