LCD mit KS0073

Gast #1333805
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
1
#define LCD_DATAPORT    PORTB  //Port für die 4 Datenleitungen
2
#define LCD_DATAPORTDR    DDRB
3
#define LCD_DATA0      0
4
#define LCD_DATA1      1
5
#define LCD_DATA2      2
6
#define LCD_DATA3      3
7
#define LCD_SETPORT      PORTB  //Port für die 3 Steuerleitungen
8
#define LCD_SETPORTDR    DDRB
9
#define LCD_RS        4    //Umschalten zwischen Befehl(Low) und Daten
10
#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
Gast #1333823
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
Gast #1333888
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.
Gast #1333922
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?
Gast #1333981
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.