www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD hat schwarze Balken in Zeile 1 und 3


Autor: Dirk A. (Firma: student) (spike_ipp)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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...

Autor: Mh. M. (mhm)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Dirk A. (Firma: student) (spike_ipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das set_cursor(3,3); ist auskommentiert, nur das lcd_home(); ist 
wirksam, wenn dann mal eine reaktion kommt startet er auch in der 1. 
Zeile links.

Autor: Dirk A. (Firma: student) (spike_ipp)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: Dirk A. (Firma: student) (spike_ipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner hat ne idee???

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ein gängiges Problem. Nimm einfach funktionierenden Code, der 
sich hier oder anderswo leicht findet. Suche benutzen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: Dirk A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das scheints jetzt gewesen zu sein, danke Holger!!!

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.