PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Routine ohne RW ?!



Janiiix3
11.09.2014, 21:40
Hallo Freunde,

Ich kriege es gerade irgendwie nicht hin die Routine so um zu schreiben, dass ich sie ohne "R/W" benutzen kann.
Read/Write habe ich auf dem Board fest verdrahtet.

Weiß jemand abhilfe ???

Peter(TOO)
12.09.2014, 01:05
Hallo,

Welcher LCD-Controller funktioniert ohne R/W ????

MfG Peter(TOO)

PICture
12.09.2014, 04:44
Hallo!

Möglicherweise hast Du "R/W" mit "BF/AC" ("busy flag/address counter") verwechselt. :confused:

Janiiix3
12.09.2014, 05:21
Man kann R/W auch hart auf einen Pegel setzen. Da ich nichts vom Display lesen will oder abfragen will. Habe ich de R/W hart gesetzt

PICture
12.09.2014, 05:31
Vielleicht geht es doch um "BF/AC", dann darf es nicht hart gesetzt, sondern muss offen gelassen werden.

Peter(TOO)
12.09.2014, 05:59
Hallo,

Man kann R/W auch hart auf einen Pegel setzen. Da ich nichts vom Display lesen will oder abfragen will. Habe ich de R/W hart gesetzt
Welcher Controller?

Normalerweise musst du erst das Busy Flag lesen, und warten, bis du den nächsten Befehl senden kannst, sonst geht es nicht.

MfG Peter(TOO)

PICture
12.09.2014, 06:14
Wenn es wirklich um "R/W" geht, dann muss "R/W" = 0 sein, also mit GND nicht VCC fest verbunden werden.

Janiiix3
12.09.2014, 06:23
Es handelt sich um "R/W" und um nichts anderes!

Das Display heißt "MSH1602A"... 2 Zeilen x 16 Zeichen.

Zum schreiben habe ich Pin "5" auf "Low / GND" gelegt!

Was müsste ich in der Routine ändern?

Peter(TOO)
12.09.2014, 07:09
Hallo,

Das Display heißt "MSH1602A"... 2 Zeilen x 16 Zeichen.
Was müsste ich in der Routine ändern?

Dann müsste ein KS0066 drauf sein:
http://www.lcd-module.de/eng/pdf/zubehoer/ks0066.pdf

Der ist nicht 100% kompatibel zum HD44780, die Initialisierung ist etwas anders.

Es ist nicht wirklich vorgesehen, ohne das Busy Flag zu arbeiten.
Auf alle Fälle musst du warten, bis der Befehl abgearbeitet ist.

Table 7. Gibt Ausführungszeiten für die Befehle an, allerdings für Fosc = 270kHz.
Bei 5V und Rf = 91k liegt die Frequenz im Bereich von 190-350kHz, je nach Exemplar welches du erwischt.
Jetzt weiss hier aber keiner, was der Hersteller des Moduls für einen Widerstand drauf gepappt hat.
Da können auch 100 Ohm drauf sein, dann läuft der Oszillator langsamer und die Befehlszeiten sind halt länger.

MfG Peter(TOO)

Hubert.G
12.09.2014, 09:39
Hallo,




Es ist nicht wirklich vorgesehen, ohne das Busy Flag zu arbeiten.
Auf alle Fälle musst du warten, bis der Befehl abgearbeitet ist.


MfG Peter(TOO)

Die LCD-Routine im BASCOM arbeitet auch ohne R/W. Es gibt die Lib. von Fleury ohne R/W und das Beispielprogramm von hier:http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD arbeitet auch ohne R/W.
Es hat den Vorteil das man sich einen Pin des µC einspart und für den Fall das das LCD hakt, das Programm nicht stehen bleibt.

Janiiix3
12.09.2014, 09:45
Die LCD-Routine im BASCOM arbeitet auch ohne R/W. Es gibt die Lib. von Fleury ohne R/W und das Beispielprogramm von hier:http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD arbeitet auch ohne R/W.
Es hat den Vorteil das man sich einen Pin des µC einspart und für den Fall das das LCD hakt, das Programm nicht stehen bleibt.

Genau!

Gibt es sowas auch in "C"?

Hubert.G
12.09.2014, 09:59
Gibt es.
Die lcd_new ist von Fleury, die andere von mikrocontroller.net

Janiiix3
12.09.2014, 10:02
Hubert.G

Besten dank!

Peter(TOO)
12.09.2014, 10:30
Hallo,

Die LCD-Routine im BASCOM arbeitet auch ohne R/W. Es gibt die Lib. von Fleury ohne R/W und das Beispielprogramm von hier:http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD arbeitet auch ohne R/W.
Es hat den Vorteil das man sich einen Pin des µC einspart und für den Fall das das LCD hakt, das Programm nicht stehen bleibt.
Es bleibt eine Bastelei!

Aus dem von dir verlinkten Artikel:
Dummerweise schwankt die Ausführungszeit von Display zu Display und ist auch von der Betriebsspannung abhängig. Für professionellere Sachen also lieber den IO-Pin opfern und Busy abfragen.

Bleibt noch nachzutragen, dass sich die Ausführungszeiten auch noch mit der Temperatur ändern.

MfG Peter(TOO)

oberallgeier
12.09.2014, 11:15
... Es bleibt eine Bastelei! ...Peter, das stimmt. Ich hatte erst mal die Fleurylib benutzt, später dann nen Code von Markus Frejek (http://www.mikrocontroller.net/articles/AVR-Transistortester)übernommen (und den dann aufmerksam/kritisch durchgearbeitet). Hatte anfangs das R/W auf GND gelegt und irgendwann wars mir a) nicht recht, dass die Wartezeit die Pinfunktion ersetzt (Zeit vertrödelt - obwohl es nie wirklich klemmte, ist aber eben unschön) und b) war eben das Auslesen des Displays dann nicht möglich - und damit fehlte die Kontrollmöglichkeit ob eins angeklemmt ist oder nicht. Trotzdem reichen neun Pinne einschließlich GND und Vcc, also ein 2x10-Wannenstecker, bzw sieben Pinne am Controller :


// ####>>>> Initialisierung/Anschlüsse von PORT B für LCD DEM 16x2
// data bit 4 PB0 0 A WS Pin1 |
// data bit 5 PB1 1 A Pin2 | -- Der 10-polige Wannenstecker
// data bit 6 PB2 2 A Pin3 | ist an die Belegung
// data bit 7 SCK, PB3 3 A Pin4 | des Transitortester angepasst
// RS line PB4 RS Pin5 | es kommen noch
// ENABLE line MOSI, PB5 EN1 Pin6 | Pin 9 GND und
// R/W MISO, PB6 R/W Pin7 | Pin 10 Vcc dazu
// NC (TasteC) SCK, PB7 NC Pin8 |___________________________
// GND Pin9
// Vcc Pn10

RoboHolIC
12.09.2014, 11:27
Bleibt noch nachzutragen, dass sich die Ausführungszeiten auch noch mit der Temperatur ändern.

Kannst du auch sagen, um wieviel mal 100 % etwa ???

Ich mach das seit Anfang an bei Text-LCDs mit R/W = L; beim Programmstart lieber deutlich länger warten, was sind in der Initialisierungsphase schon 50 oder 100ms bei einem Gerät, das mit langsamen Menschen zurechtkommen muss!? Der Datenverkehr im Normalbetrieb wird in meiner Standard-1kHz-ISR abgewickelt. Selbst da ist der Text viel schneller ins DDRAM geschoben als die LCs umklappen.

Ich hab damit noch keine Probleme gehabt. Aber richtig: sauber ist es nur mit dem busy-Flag. Bei der Initialisierung ist aber auch das nicht möglich. Im Resetvorgang zumindest der HD44780er wird m.W. noch kein busy erzeugt, da ist man ja auch auf großzügig bemessene Wartezeiten angewiesen.

Beim Grafik-LCD hab ich es aber auch mit dem busy-Flag realisert, weil man (je nach Anwendung) bei der Menge an Zugriffen wirklich keine Zeit mehr zu verschenken hat. Selbst dann rollt der Bildaufbau noch sichtbar über die Bildfläche.

Peter(TOO)
12.09.2014, 12:09
Hallo

>Kannst du auch sagen, um wieviel mal 100 % etwa ???

Steht im Datenblatt ;-)
Naja, mehr oder weniger!

Beim KS0066 ist nur angegeben, dass bei 5V, Rf 91R +/-2% und Ta = -30°C bis +85°C die Frequenz zwischen 190kHz und 350kHz liegt.

Für den HD44780 gilt das Selbe, allerdings ist der nur für maximal +75°C spezifiziert.

MfG Peter(TOO)