www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD mit KS0073


Autor: KS0073 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses Display treibt mich in den Wahnsinn. Ich habe gestern den ganzen 
Tag probiert mir einen Init für dieses Display zu basteln. Leider ohne 
Erfolg..
Also hier ein bisschen gesucht und in den zahlreichen Threads zum Thema 
auch einige Funktionen gefunden, die das Display eigentlich ans laufen 
bringen sollten. Bei mir tun sie das aber nicht und ich weiss nicht mehr 
wo ich noch suchen soll.

Ich habe mich für folgende Funktion entschieden
Beitrag "LCD EA DIP204-4 Initialisieren"

Das Display ist im 4 bit Modus angeschloßen.
In der Display.h habe ich folgende Änderungen vorgenommen
#define LCD_DATAPORT    PORTB  //Port für die 4 Datenleitungen
#define LCD_DATAPORTDR    DDRB
#define LCD_DATA0      0
#define LCD_DATA1      1
#define LCD_DATA2      2
#define LCD_DATA3      3
#define LCD_SETPORT      PORTB  //Port für die 3 Steuerleitungen
#define LCD_SETPORTDR    DDRB
#define LCD_RS        4    //Umschalten zwischen Befehl(Low) und Daten
#define LCD_E        5    //Enable bei fallender Flanke

Meine Datenleitungen liegen also auf PortB 0-3 und die beiden 
Steuerleitungen ebenfalls auf PortB Pin 4+5. Vielleicht ist das auch der 
Knackpunkt, denn in der ursprünglichen Version der Funktion liegen die 
Steuerleitungen auf einem anderen Port. Vielleicht funktionieren daher 
die letzten 4 Zeilen des #defines nicht korrekt. Um das zu beurteilen 
kenne ich mich aber zu wenig aus.

Das Display zeigt im jetzigen Zustand nur dunkle Kästchen

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

um das rauszufinden und ausschließen zu können, brauchst Du doch nur RS 
und E nur mal an einen anderen Port zu legen...

Gruß aus Berlin
Michael

Autor: KS0073 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist nicht ganz so einfach weil die lcd platine geätzt ist und über 
einen wannenstecker mit dem Board verbunden wird. Aber ich werd mal ein 
passendes Kabel basteln

Autor: KS0073 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt mal RS und E auf Port A gelegt. Immer noch nur dunkle 
Kästchen

Autor: Anderer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht Probleme mit der Kontrasteinstellung.
Dort schonmal geschaut?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Headerdatei suggeriert das die Pins frei
verteilt werden dürfen. Kann man aber nicht.
Es müssen die Bits D4..7 für Daten benutzt werden.
Die Steuersignale dürfen nicht auf demselben Port
wie die Daten liegen. Das Proggi ist einfach
schlecht geschrieben.

Autor: KS0073 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also muss ich wohl doch selbst ran..
Wie läuft das denn genau mit dem senden im 4 bit Modus? Zuerst das High 
Nibble, dann das Low, OK. Aber muss ich zwischendrin warten? Oder schick 
ich das einfach direkt nach einander?

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
init wird :


senden 8bit modus  ( ohne busy )
warten
senden 4bit modus ( ohne busy)  // dasganze 3x ( meist reicht 2x )
warten
senden restliche parameter ( cursor , disp ON , usw ..)


bei den schreibroutinen sendest du zuerst das high , dann das low nibble
damit das univeseller einsetzbar ist hab ich folgendes gemacht :

for( ;i<2;i++)
{
if (i==1) data <<= 4;  // im 2ten durchlauf wird das databyte geschoben
if (data & 0x80) LCD_PORT |= (1<<LCD_D7);
if (data & 0x40) LCD_PORT |= (1<<LCD_D6);
if (data & 0x20) LCD_PORT |= (1<<LCD_D5);
if (data & 0x10) LCD_PORT |= (1<<LCD_D4);
enable_E
 asm volatile("nop");
disable_E
}


LCD_PORT ist eben der PORT wo die datenleitungen dranhängen
LCDDx  ist der passende pin dazu
wenn man möchte kann man LCD_PORT sogar für jeden pin einzeln definieren
also LCD_PORT_1 bis ..._4   dann isses wirklich egal wo welcher pin 
dranhängt
nach dem nibble muss E geenabled werden für 1-2 nops
meist sagt das datenblatt 50-200ns


in der initialisirungsphase hab ich eine abfrage drin die mir nur 1 
durchlauf gibt

Autor: KS0073 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zieh ich nach jedem Nibble E kurz auf low oder erst nach dem Low Nibble?

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.