LCD Display. STK500 initialisierung

OP #2053889
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.
Gast #2054044
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);

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.