PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Conrad Lcd (von RP5 Erweiterung) an rn-control?



Ulrich
25.10.2004, 18:19
Hi,

Ich versuche gerade das 16 *2 LCD von Conrad an das Board RN-Control anzuschließen. Leider legt Big C kein größeres Datenblatt bei. In der Doku zu der RP5 Erweiterung hab ich gelesen, dass ein "PCF2103EU-2F1" Kontroller das Display steuert. Das und die Pinbelegung sind alle Infos die ich habe. Googeln brachte auch nix!

Hat das schon jemand versucht und hat ein paar Code-Zeilen. Bei mir bleib das Display dunkel :(.

CU Uli

RCO
26.10.2004, 08:39
Also ich habs mal einfach an einen AT90S2313 angeschlosse, das LCD-modul vom CC1-Applicationboard, aber könnte gut sein, dass es das gleiche LCd ist. Schau mal :

https://www.roboternetz.de/phpBB2/viewtopic.php?t=2608&start=22

Seite 2

pumann
26.10.2004, 10:24
@Ulrich
... eine Beschreibung des Controllers findest du hier:http://www.semiconductors.philips.com/cgi-bin/pldb/pip/pcf2103.html.
Dieses sollte Dir weiterhelfen, wenn Du die Anschlüsse dieses Displays kennst.

Ulrich
27.10.2004, 11:31
Hi,

irgendwie ist da noch der Wurm drin. Wenn ich das Beispiel von Bascom (LCD.BAS) benutze und die Ports an meine Belegung angleiche, dann blinkt es, aber das ist auch schon alles. Sieht für mich so aus, als ob das Display zu langsam wäre. Weitere Warteschleifen mit Wait bringen aber nix.

Irgend jemand hat mal das gleiche Problem hier geschildert. Ich find nur den Beitrag nicht mehr :(((((

Ich benutze übrigens Port D (D4-D7 und D3 für E und D2 für RS).

Das kann doch nicht so schwer sein!
Hat jemand ne Idee?

CU Uli

RCO
27.10.2004, 12:15
Hast du RW richtig angeschlossen (MAsse glaube ich).
Hast du oben in den Bascom-Einstellungen die Selbe Pinbelegung wie oben im Code, oder hast du nur die Einstllung in BAscom.
HASt du INITLCD geschrieben?
Schick mal den Code.

MFG Moritz

Ulrich
27.10.2004, 12:37
@RCO
HI, ja RW liegt auf Masse.
Ich hab das LCD mit LCD.BAs Testprogramm probiert und mit einem kleinen Testprogramm (S.u.)

'****Testprogramm für LCD****
$regfile = "m32def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Ddrd = &B11111111 'Port D für Output

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4
Config Lcdmode = Port
Config Lcd = 16 * 2

Initlcd
Display On
Cursor Blink
Cls
Lcd "Test Uli"
Locate 2, 1
Lcd "Hello"
Wait 1
Wait 1
Wait 1
Wait 1
End
'***Testprogramm*****

Die Einstellungen für das LCD in Bascom sind:
LCD Typ : 16 * 2
Bus Mode: 4
Data Mode: Pin
Enable: Portd.3
RS: Portd.2
DB7: Portd.7
DB6: Portd.6
DB5: Portd.5
DB4: Portd.4

LCD-address: C000
RS-address: 8000
Die beiden Adressen sind aber glaub ich nur für die I2C Ansteuerung, also für mich nicht so wichtig.

Bei meinem Programm passieret allerdings nix. Beim Testprogramm von Bascom bekomm ich nur Underlines bzw. volle Kästchen angezeigt.

Muss man am LCD selbst noch mal den 4 Bit Bus einstellen? Laut dem Datenblatt (s. Link von Pumann) kann man das LCD auch im 4 Bit Modus betreiben.

Ich hab echt keine Ahnung mehr!

Grüße Uli

RCO
27.10.2004, 12:41
Sieht eigentlich gut aus...
Dumme Frage, aber hast du alle Kabel richtig verbunden?
Was für eine Artikelnummer hat das LCD?

Ulrich
27.10.2004, 12:46
Conrad Artikelnummer 190911 - 6J

Is eigentlich für BS-Erweierung vom RP5.
Kabel hab ich jetzt schon 5 mal überprüft. Auch an anderen Ports.

RCO
27.10.2004, 12:52
Verstehe ich nciht, das sieht auch genauso aus, wie das CC1-LCD, was bei mir AT90S2313 wunderbar läuft.

Bin im Moment Ratlos... Sorry


EDIT: MOMENT!!!

Ist das der Quelltext, den du verwendest? Schau mal:



Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.5


Selber Pin ;-)

MFG Moritz

Ulrich
27.10.2004, 13:06
Nein, war leider nur ein Tippfehler von mir.

Ist die Auswahl der Ports eigentlich von Bedeutung, bzw. könnte man nicht theoretisch jeden Port und jeden Pin auf dem uC benutzen?

Ich glaub ich besorg mir noch ein zweites LCD, vielleicht gehts mit einem anderen Kontroller auf dem LCD besser! Das von Pollin für 5€ sieht gut aus.

Aber trotzdem vielen Dank für Deine Mühen.

Grüße Uli

RCO
27.10.2004, 13:07
Eigentlich kann man jeden pin verwenden, querbet. Bei den LCDs solltest du darauf achten, dass sie einen Controller hd44... drauf haben.

MFG moritz

Ulrich
27.10.2004, 13:26
@RCO

Hab mir jetzt das LCD von Pollin gekauft. Der hat zwei kompatible HD44780 Controller drauf.

Dank nochmals
Uli

RCO
27.10.2004, 14:45
Also bitte probier mal aus, den Text immer wieder zu senden, also do loop, denn eigentlich musses funktionieren!

Ulrich
27.10.2004, 17:59
Hi RCO!
Klappt auch nicht.
Mir ist allerdings beim Bascom Beispiel was aufgefallen.
Da flimmern mir die Pixel so übers Display, aber nur auf auf einer Seite (auf der linken Seite die ersten 8 Stellen in Zeile 1 und 2). Der Rest des Displays bleibt dunkel.

Bei meinem Testprogramm passiert gar nix.
Muss man vielleicht noch irgendwas einstelln, ausser dem was ich oben beschrieben habe?

Oder liegts daran, dass Port D auf dem RN-Control nicht auf den Pins d2-d7 belegt werden darf? Is aber Quatsch, oder?
Bei Port B geht's nicht, da ich sonst über den ISP nicht mehr drauf kann!

Ich hab wirklich keine Ahnung mehr. Wenn das LCD defekt wäre würd's aber nicht mehr flimmern, glaub ich.

Wenn das LCD von Conrad am RP5 läuft, dann müsste es aber auch an anderen uC laufen.

0 Plan

Grüße
Uli

pumann
27.10.2004, 22:44
... ohne R/W und somit ohne dem Busy-Flag und mit einer Taktfrequenz des Controllers von 16MHz ein LCD ordnungsgemäß initialisieren?
Ist zwar machbar (aber nicht effektiv), jedoch sollte man sicherstellen, daß dem LCD auch genügend Zeit dafür gegeben wird.


...
Wait 1
Wait 1
Wait 1
Wait 1
End
Was bringt es, am Programmende zu warten? Bin sonst nur mit Assembler (C noch Anfänger) unterwegs, jedoch habe ich sowas noch nicht zu Gesicht bekommen :wink:

RCO
27.10.2004, 23:11
Also zu RN-Control kann ich dir nix sagen...
Das warten am Ende bringt nix.
Hier mal mein Code


Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portb.0 , Db6 = Portb.1 , Db7 = Portb.2 , E = Portb.3 , Rs = Portb.4
Config Lcd = 16 * 2
Initlcd
Display On
Cursor Off
Cls
do
Home
Lcd "Hallo World"
loop
End

Die Belegung ist etwas verquert, da der AT90S2313 da nciht genügend platz hatte. Hast du den nen POTI für den Contrast, bzw. mal verändert?
Ja klar...

MFG Moritz

Ulrich
28.10.2004, 08:47
O.K. die Wait's am Ende bringen nix, seh ich ein.

Wenn das ein Problem mit der Initialisierung und der Taktfrequenz ist, dann müsste doch dieses Problem bei jedem LCD-Controller auftreten?

Versteh ich das richtig? Wenn ich das LCD an einem uC mit 16MHz betreiben will, dann darf RW nicht auf Masse, sonder muß auch an einen Port, den ich dann auf L oder H lege? Dachte das ist nur ein Lese oder schreib Flag!

@RCO
So wie Du das gemacht hast mit dem loop, hab ichs gestern auch ausprobiert. bleibt alles gleich und ändern am Poti bringt auch nix.
Oder meinst Du die Belegung der Ports?

Werd ich gleich mal Testen!

Danke für eure Mühe!
Uli

RCO
28.10.2004, 09:45
Also das mit RW seh ich auch so, liegt einfach auf MAsse, da nicht geREADet wird sondern nur geWRITEed ;-)

28.10.2004, 10:18
... wenn das Busy-Flag nicht vom LCD gelesen wird kann es schon sein, daß der µC schon weitere Daten sendet, obwohl das LCD dazu noch nicht bereit war.
Um das Busy-Flag aber vom LCD (db7) abzufragen wird der Lesemodus gebraucht. Dem µC sollte man dann solange warten lassen, bis das LCD ein 'bereit für weitere Daten' herausgibt. Alles andere ist nicht vernünftig angesteuert ...

Frank
28.10.2004, 10:20
Hi,
beim nutzen eines LCD an den Ports von RN-COntrol unbedingt drauf achten das die Ports auch wirklich frei sind. EInige Ports von D werden für RS232 und Motor benötigt.
Also am besten einfach mal in die DOku schaun. Da ist hinten eine Tabelle welche Ports frei sind. Sehr übersichtlich kann man es aber auch aus dem Schaltplan ersehen, ist auch in der Doku (http://www.robotikhardware.de/download/rncontrol14.pdf).

Ulrich
28.10.2004, 10:56
Hi!
@Frank
Port D kann ich doch vollständig benutzen, wenn ich RS232 und die Motren nicht benötige, oder? Im späteren Verlauf nutze ich dann die freien Ports, wie in der Docu. Port D war zum Testen gedacht, bis das LCD läuft.

@Gast :)
Du meinst ich müsste DB7 vor jedem LCD Befehl abfragen, ob der Controller bereit ist? Hierfür natürlich RW auf einen Port und immer Umschalten.

Übrigens ich benutze einen 5KOhm Poti, aber daran kanns nicht liegen, oder?

Grüße
Uli

Michael
28.10.2004, 11:03
Hallo Ulrich,


ich müsste DB7 vor jedem LCD Befehl abfragen, ob der Controller bereit ist?

so ein Quatsch, Bascom fragt das Busy-Flag nicht ab, der RW-Pin muss auf GND gelegt werden.

ich benutze einen 5KOhm Poti, aber daran kanns nicht liegen, oder?
kommt drauf an, wo das Poti sonst noch angeschlossen ist.
Gruß, Michael

Frank
28.10.2004, 11:07
Dann dürfte die RS232 im Programm auch nicht konfiguriert werden (z.B. mit BAUD Befehl) und keine Print Anweisung vorhanden sein.
Und die beiden Leitungen die an dem Motor Treiber liegen solltest du auch nicht nutzen wenn der Motor nicht benutzt wird. Der Treiber beeinflußt den Pegel im hochohmigen Zustand, das könnte stören. Ich würde liebe diese 4 Portleitungen nicht für LCD benutzen

Ulrich
28.10.2004, 11:11
Hi Michael!

O.K. RW auf GND hab ich ja. Ich glaub mal was von einer LCD4Busy.lib in der Bascom Hilfe gelesen zu haben. Muß noch mal nachlesen was das genau war.

Am Poti hängt sonst nix...
CU
Uli

Michael
28.10.2004, 11:45
Hallo Ulrich,


Am Poti hängt sonst nix...

hmm, du solltest das eine Ende auf Vcc, das andere auf GND und den Abgriff auf Pin3 des LCD legen.
Vergiß irgendwelche Librarys, Bascom kann standardmäßig (Standard-) LCDs ansteuern.
Ich würde aber an deiner Stelle aber auch Franks Hinweise ernster nehmen.
Gruß, Michael

Edit: Rechtschreibfehler korrigiert :)

Ulrich
28.10.2004, 11:54
Ich hab jetzt freie Ports gewählt (C2-C5 und D2,D3).
Nach InitLCD und Display ON jeweils ein Wait 1 eingefügt. Jetzt blitzt das LCD 2 mal auf - für jede LCD ausgabe 1 mal. *logisch

'**Auszug aus meinem Bsp*****
LCD "Test************"
Locate 2 , 1
LCD "Test***"
'***************************

Als erstes blitzen 8 Zeichen in zwei Reihen auf und dann 16 Zeichen in 2 Reihen.
Ich dachte bei meinem Code müsste "Test************" in der ersten Zeile stehen und "Test****" in der zweiten Zeile, jeweils an der 1 Stelle.

Wenn das stimmt, dann hat das aufblitzen nix mit der tatsächlichen Ausgabe mit LCD zu tun!

CU Uli

Michael
28.10.2004, 12:20
Hallo Ulrich,
hmmm, was passiert denn beim Anlegen der Betriebsspannung? Wenn da 1 schwarzer Balken in der 1. Zeile (bei 16*2 LCD) erscheint, ist die Kontrastspannung ok.


Als erstes blitzen 8 Zeichen in zwei Reihen auf und dann 16 Zeichen in 2 Reihen.

naja, blitzen dürfte da normal nichts. Kannst du erkennen, ob das Geblitze sinnvollen Text oder nur alle Pixel an darstellt?
Verschwindet der schwarze Balken dabei?
Ich kann mir nur noch eine fehlerhafte Verdrahtung bzw. Mehrfachbelegung der Ports vorstellen. Gerne wird z.B. DB4<>DB7 und E<>RS vertauscht. Prüfe also bitte nochmal deine Hardware.
Gruß, Michael

Ulrich
28.10.2004, 13:09
Jetzt funktioniert es!!! Puh

Die Kabel waren wirklich nicht richtig angeschlossen, d.h ich hab sie so angeschlossen wie es in der Anleitung steht und die ist spiegelverkehrt.

Es gibt 2 Abbildungen: 1 von den Lötkontakten und 1 vom Stecker auf dem Flachbandkabel. Die Abbildung des Steckers ist falsch.

Bin aber selbst schuld. Die rote Litze ist immer +,egal was in der Anleitung steht :(

Danke Danke Danke für eure Hilfe

Grüße Uli