mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Display. STK500 initialisierung


Autor: Attila Ciftci (attila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein 2x16 Display gegen ein 2x8 Display des gleichen Herstellers 
getasucht. Ich hab beide Displays gleich verkabelt und es wäre 
eigentlich zu erwtaren dass alles (iclusive, init, busyflag abfrage, 
usw) Genau so funktioniern sollte wie vorher. Nun dem ist leider nicht 
so und daher habe ich ,wie immer, reduziert und reduziert um den Fehler 
zu finden: Nun bin ich hier angekommen:

#include <avr/io.h>
#include <util/delay.h>

#define F_CPU 8000000

#define E   PD1
#define RW   PD2
#define RS   PD3


void enable (void)    //Enable Routine
{
  PORTD |=(1<<E);    //Enable high
  _delay_us(1);     //Kurz warten
  while(1){}
  PORTD &=~(1<<E);  //Enable low
}

main()
{

  DDRD=0b11111111;  //Alle Pins auf Ausgang
  _delay_ms(500);    //Warten
  PORTD &=~((1<<RW)|(1<<RS));  // Write und Daten

  PORTD=0b00100000;  //4-Bit einschalten(noch im 8-Bit Modus)
  enable();
  _delay_ms(300);

  PORTD=0b00100000;  //4-Bit Datenlänge (oberes nibble)
  enable();
  _delay_ms(50);

  PORTD=0b11000000;  //2 zeilig Display,5x10Dot(unteres nibble)
  enable();
  _delay_ms(50);

  PORTD=0b00000000;  //oberes nibble von:
  enable();
  _delay_ms(50);

  PORTD=0b11110000;  //Display ein, Cursor ein; Cursor blinkem
  enable();
  _delay_ms(50);

  PORTD=0b00000000;  //oberes nibble von:
  enable();
  _delay_ms(50);

  PORTD=0b00010000;  //löschen,Cursor auf 1.Spalte von 1. Zeile
  enable();
  _delay_ms(50);

  PORTD=0b00000000;  //Oberes nibble von:
  enable();
  _delay_ms(50);

  PORTD=0b01100000;  //Cursor Auto-Increment
  enable();
  _delay_ms(50);

  while(1)
  {}

}

Wie üblich habe ich alle Anschlüsse einzeln durchgemessen. Mir fällt 
nichts mehr weiter ein. das Display zeigt den üblichen "Balken" D.H. Die 
ersten 8 Zeichen sind leicht sichtbar.

Autor: Seltsam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt?

2x8 kann heissen einzeilie Ansteuerung ("umgebrochenes 1x16") oder 
zweizeilige Ansteuerung ("2x16 mit abgeschnittenen Zeilen").

Nur bei der 2. Variante stimmt deine Initialisierung.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch das mal so:

Folgendes einfügen

  PORTD=0b00110000;
  enable();
  _delay_ms(300);


  PORTD=0b00110000;
  enable();
  _delay_ms(300);


  PORTD=0b00110000;
  enable();
  _delay_ms(300);


Ab hier dein Code

  PORTD=0b00100000;  //4-Bit einschalten(noch im 8-Bit Modus)
  enable();
  _delay_ms(300);

Autor: Attila Ciftci (attila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist ein EA W161B-ENLW

Es ist aber so das ich das Display schon mal am laufen hatte und die 
DDRAM adresse auf &40 setzten musste um die 2ten 8 Zeichen eingeben zu 
können.

Autor: Attila Ciftci (attila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holger: Werde ich machen!An alle: OMG! Ich habe die while Schleife zu 
Testzwecken noch in der enable funktion oben stehen! Die ist natürlich 
schon lange weg ! Ändert aber nichts!

Autor: Attila Ciftci (attila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holger: Hat leider nicht funktioniert. :-(

Autor: Attila Ciftci (attila)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möchte jemand mal das listing oben (ohne die while Schleife In der 
"enable" Funktion!!!!!) an einem LCD ausprobieren so dass ich weiss ob 
mein Display kaputt ist? Vielleicht hat ja jemand von euch grade ein LCD 
angeschlossen auf dem Schreibtsich?

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.