PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erfahrungsaustausch LCD-Treiber für CControl und RP5



JanPeter
03.02.2004, 21:27
Hallo !
Hat sich schon jemand den Treiber in BASIC für das LCD angeschaut?
Irgendwie haut da was nicht hin!
Ich glaube er ist nicht richtig!
Bei ausgabe von von 3 Zeichen über convert, bekomme ich auf einmal einen Cursor?
Hat schon jemand Erfahrung?

JanPeter
03.02.2004, 21:54
Hallo!
Suche deutsche Beschreibung zur Programmierung von HD44780 ?

04.02.2004, 10:53
Hallo !
Hat sich schon jemand den Treiber in BASIC für das LCD angeschaut?
Irgendwie haut da was nicht hin!
Ich glaube er ist nicht richtig!
Bei ausgabe von von 3 Zeichen über convert, bekomme ich auf einmal einen Cursor?
Hat schon jemand Erfahrung?


Hallo...
Geht die DEMO zum LCD ?

DIE HARD

jörg
04.02.2004, 14:23
Hallo JanPeter,
Deutsches Datenblatt kannst Du Dir runterladen von C:
"DATENBLATT FÜR LCD MODULE, Artikel-Nr.: 178004 - U4".

Ich hab das LCD danach programmiert und einiges ausprobiert, und das geht alles so wie beschrieben. Hier im roboternetz unter "C-Control-Unit" / "LCD Write" steht was zur Programmierung.

Ich habe aber den Originalen ROBBY LCD Treiber und den "convert" nicht benutzt (braucht mir zu viele Variablen).

JanPeter
04.02.2004, 15:26
Hallo jörg!
Und warum wird bei DDRAM Data Write , das RS-Signal nicht gesetzt?

jörg
04.02.2004, 16:08
Hallo JanPeter,
RS = 0 heisst: "dies ist ein Register-Inhalt", z.B. "DD RAM Adresse setzen", oder "ClearDisplay";
RS = 1 heisst: "dies sind Daten"; sie werden automatisch in das letzte selektierte RAM geschrieben (DD order CG RAM), und abhängig vom gestzten EntryMode wird diese Adresse automatisch inkrementiert (I/D=1) oder dekrementiert (I/D=0).

Das heisst:
Ins Register "DDRAM" muss man nur schreiben, wenn automatisches inkr/dekrementieren nicht gewünscht ist, z. B. um auf den Zeilenanfang zu positionieren, oder ein bestimmtes programmierbares Zeichen auszuwählen. Und dann muss man das mit "RS = 0" sagen.

Wenn man sequentiell Daten schreiben will, braucht man bloss die Daten der Reihe nach anlegen und muss dabei "RS = 1" sagen.

jörg
04.02.2004, 16:15
Fällt mir grad noch ein:
Genau so kann man die Daten des LCD auch auslesen: mann setzt dazu "R/W = 1".

Damit kann man sich "langsames RAM" verschaffen:
"Schreiben": die Daten ans LCD schicken, an eine Position die man nicht anzeigt (z. b. ab Position 17 beim 16-Zeichen-Display, oder an eine der 8 Stellen im CG RAM);
"Lesen": das DD oder CG RAM des LCD unter dieser Adresse wieder lesen.

Nachteil: geht nicht so schnell wie echtes RAM, und man muss die LCD Adressen sauber verwalten. Aber immerhin!

JanPeter
04.02.2004, 17:33
Hallo jörg!
Hat mir sehr geholfen! :D
Ich bekomme jetzt auch selbstenworfene Zeichen hin.

jörg
04.02.2004, 18:12
Hallo JanPeter,
na prima!
Ich will noch einen LCD Basis-Treiber in Assembler machen, dann sollte die Zeichenausgabe schneller laufen...

PS: Denkst Du noch an die "Erweiterungsplatine: wie wird gelötet"?

JanPeter
04.02.2004, 20:53
Hallo jörg!
Ich habe Heute die bestellte Platine bekommen, aber auch nur einseitig mit Lötaugen!
Sie hat allerdings den vorteil , das es eine Doppel Europlatine ist.(16cm*23,3 cm)

JanPeter
05.02.2004, 06:40
Hallo jörg!
Hier mal die überarbeitete Version zur LCD-Routine.Vielleicht kannst Du was in den Treiber mit einbauen.
Bei LCD_INIT braucht man im 8 Bit Modus nur einmal tog lcd_e.
Bei LCD_CLS brauch der Cursor nicht in die Homeposition, besser DDRAM Adress Set auf
Adress Counter = $00 (Home Position).
Hier mal ein Beispiel: