PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "bestes" LCD-Pinning



Goblin
10.12.2005, 09:12
Moin.

Ich bin gerad beim basteln eines Experimentierboards mit nem Atmega8 und will nen festen LCD-Anschluss einbauen. Dafür würd ich gern wissen: In Bascom (werd ich wohl auch zukünftig proggen) kann man ja alle LCD-Datenleitungen einstellen. Jetzt hab ich aber freie Auswahl an welche µc-Pins ich die Datenleitungen anschließe. Gibt es da "gute" oder "weniger gute" Konfigurationen? An welche I/Os schließ ich das Display am besten an?

Marco78
10.12.2005, 09:41
Soll es nur bei Text-LCD's bleiben oder später evtl auch mal ein gLCD?

cLCD's lassen sich mit 4-Bit ansteuern. Wo welche Daten- und Steuerleitung angeschlossen ist, ist in Bascom ziemlich egal.

gLCD's arbeiten mit Bascom nur mit 8-Bit und dafür wird ein kompletter Port benötigt. Die Datenleitungen kannst du dann nicht mehr beliebig verteilen. Zusätzlich brauchst du noch ein paar Steuerleitungen. Vier reichen meistens. Diese können dann auch nicht auf die Ports verteilt werden wie du noch Pins frei hast. Die Leitungen müssen alle an einem Port. Allerdings ist die Pinzuweisung dort frei. Du kannst dann für jede Leitung 0-7 nehmen, je nachdem was noch frei ist.

Tja, der Mega8...
Ist nicht wirklich der beste AVR für ein Experimentierboard mit gLCD's :(
Er hat nur die Ports B und D. Und beide Ports sind schon für andere wichtige Hardwarefunktionen vorgesehen, die auf einem Experimentierboard nicht fehlen sollten. (RS232, INT, Quarz, ...)

Und selbst ein cLCD braucht mind. 6 Leitungen. Überlege mal selbst welche da beim Mega8 übrig wären.
Das beste wird wohl ein Mega16 sein. Ansonsten musst du selbst überlegen, ob du z.B. auf den ADC verzichten kannst und die Pins für's LCD nimmst.
Eine "beste" Lösung gibt es beim Mega8 nur dann, wenn man weiss, was das Board alles können muss/soll.
Eine Alternative wäre evtl ISP- und ADC-Pins zu nehmen. Somit bleibennoch ein paar ADC's frei und alle andere Hardwaregebundenen Funktionen (XTAL, Rx, ...). Allerdings musst du dann auf SPI verzichten.

Ein Teufelskreis ;)

Goblin
10.12.2005, 09:59
ok ok sorry. es handelt sich um ein 4x20 alphanumerisches display. furznormal! :) wird über 6 leitungen gesteuert

Marco78
10.12.2005, 10:27
ok ok sorry.
Ich hab ja beide Varianten angesprochen. Text und Grafik. Wenn du nur ein cLCD hast helfen die Informationen evtl jemand anderen, der das gleiche mit einem gLCD vor hat.

Aber wie schon gesagt, beim Mega8 auf nem Experimentierboard richtet sich das "beste" Pinout nach den eigenen Vorstellungen, was das Board können soll, weil beim Mega8 fast alle Pins wichtige Funktionen habe auf die man wohl nur ungerne verzichten will.

linux_80
10.12.2005, 10:54
Hallo,
man kann zwar jedes Pin einzeln in Bascom angeben, aber günstiger wirds, wenn die Datenbits im gleichen Port ganz unten(0123) oder oben(4567) sind, denn dann muss das Programm nicht jedes einzelne Bit bei der Ausgabe zuweisen.

Ich hab das RN-M8 Board, und bei dem finde ich sind die Pins etwas unglücklich gewählt (2345), denn wenn ich schaue was da rauskommt in ASM ist etwas umständlich.

Vor allem wenn man doch mal später in C das LCD ansteuert, bricht man sich keinen ab, wenn die 4 Datenbits schön der Reihe nach ganz am Anfang oder am Ende des Ports zum liegen kommen.

Goblin
10.12.2005, 10:55
ja, das board ist extra so angelegt, dass ein weiterer µc ohne weiteres darauf platz findet. ich hatte ohnehin vor, das ding mal mit nem größeren Atmega zu erweitern. blöderweise hab ich aufgrund eines klitzekleinen bestellfehlers jetzt 3 atmega8.... und nur 1 4x-nand statt 3... ARGL!

Goblin
10.12.2005, 10:57
Hallo,
Vor allem wenn man doch mal später in C das LCD ansteuert, bricht man sich keinen ab, wenn die 4 Datenbits schön der Reihe nach ganz am Anfang oder am Ende des Ports zum liegen kommen.


du meinst also einfach in einer reihe.... was ist denn mit den beiden andern leitungen? auch einfach mit in die reihe?

linux_80
10.12.2005, 11:01
Da ist es egal, die werden sowieso einzeln angesteuert,
nur bei den Daten, die normalerweise immer als Byte daherkommen, ist es einfacher so wie ich oben gemeint hab.

Jahn Kohlhas
10.12.2005, 11:19
Hallo,

wenn du mit BASCOM proggst dann reichen 6 Pins, R/W kannst du da auf masse legen... ich finde die Lösung von myAVR recht praktikabel... die nutzen PORTD da gehen 2 Leitungen von PORTD für die UART drauf und die restlichen 6 werden für das LCD genutzt... da bleiben PORTB und C unbehelligt... aber ich würde die sache mit dem "fest" überdenken... mach lieber ne stecklösung denn egal welchen port du nutzt, irgednwas blockierst du dir immer :-/

http://www.myavr.de/download/Beschreibung_myAVR_LCD.pdf

gruß jahn

Goblin
10.12.2005, 11:33
ja ne is klar das ich nen stecker dranmache. meinte am anfang auch die belegung für ne buchse. is klar dass ich das lcd ned direkt an die schaltung löte.... is mir zu unflexibel...

aber momentan tu ich mich mit der rs233-anbindung noch etwas schwer. der code stimmt, mit einer alten externen max-platine funzt der datenaustausch, aber mit der onboard-lösung nicht.... schon 3x schaltplan gemacht (von der originalschaltung) und sie mit der "musterlösung" verglichen.... 100% übereinstimmung. vielleicht hat die rumlöterei auch meinen max geschafft... ich tüftel noch ein wenig...

edit:

mmm.. in der funktionierenden sind 3.3µf-elkos und die in der nicht funzenden haben 1µf. ist das so kritisch?

Goblin
12.12.2005, 10:44
hat sich erledigt. hatte am subd-stecker pin 2 und 3 vertauscht! ARGH!

Admiral
24.03.2006, 14:49
Hallo,

ich hatte auch oft das Problem gehabt, wo ich das LCD unterbekomme. Nun habe ich aber eine gute Lösung gefunden.:
Ich habe mir eine intelligente Displayeinheit gebaut, die über die rs232 Daten und Kommandos bekommt und dann ausführt.
Dafür habe ich nen at90s2313 verwendet. Den könnte man auch auf einem Board neben einen mega8 pflanzen.
Folgende Vorteile ergeben sich:
* LCD-Code ist im kleinen 2313, -> mehr platz im Mega8.
* für 2313 wird der Code einmal entwickelt und optimiert, dann läuft er
zuverlässig

Ich habe bei meiner Displayeinheit folgende Funktionen realisiert (mit Assembler, Codegröße 800 Wörter):
Übliches wie: Display löschen, Cursor verrücken, Beleuchtung an/aus, Byte in Dezimal/Hex/Binär/Bargraph ausgeben
Zusätzliches wie:
* 8 definierbare Variablen (Displayposition/Typ),
* Display scrollen
* Menüfunktionalität (Menü definieren und anzeigen, Cursor hoch/runter)

Natürlich musst du nicht gleich so viele Funktionen implementieren, aber
es ist oft nützlich (fürs Debuggen etc.) wenn du dir aktuelle Variablen anzeigen lassen kannst.
Und das alles nur mit 3 Leitungen (5V,Masse und Tx)

Was haltet ihr davon? Ich gebe gerne mehr Infos.

Gruß

Bernhard.Erfurt
24.03.2006, 17:50
...welche Pins... gute Frage

Ich nehme beim ATmega8 gern für ein LCD die Pins PB0...5

Warum:

Alle anderen Pins haben zu kostbare
Zusatzfunktionen (INT/USART/TWI)

Goblin
24.03.2006, 18:52
hehe lustig, ich hab das topic gerad aufgerufen um meinen senf dazuzugeben und dann herausgefunden, dass es von mir ist. ich habe inzwischen das display auch an port b hängen, was auch sinnvoll ist.

stupsi
24.03.2006, 22:28
hey, admiral,
ich glaub auch, das man einen kleinen 2313 für jedes display spendieren sollte. Mit Zubehör werden es gerade mal 4 Euro auf einer Lochrasterplatte und zur Ansteuerung reichen nur ein bis zwei Ports.
Ich hab vor Kurzem mal die Verdrahtung durchgespielt und gesehen, ein AT90S2313 lässt sich wunderbar an ein Display anflanschen. Es wäre nett, wenn du den Schaltplan und den Code hier veröffentlichst und natürlich die Befehlsliste dazu. Ich würde es sofort ausprobieren.

Gruß stupsi