Forum: Projekte & Code LCD Ansteuerung


von Andreas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich hab das LCD Tutorial von A. Schwarz mal etwas abgeändert und 
das ganze in eine C++ Klasse gepackt. Interessant für Leute, die wissen 
wollen wie man Text im Display scrollt und auch unter NT/2000/XP die 
Schnittstelle anspricht.

Würde mich freuen wenn Ihr Reaktionen zeigt ;-)

Gruß Andreas

PS: Danke auch für das Tutorial

von BAB (Gast)


Lesenswert?

ist ne tolle sache,
aber was nützt mir das wenn die datei pt_ioctl.c fehlt...
oder ist das eine standard lib?

gruss,
bab

von Andreas (Gast)


Angehängte Dateien:

Lesenswert?

Schon interessant, dass das erst jmd. auffällt, nachdem schon 200 Leute 
den Thread gelesen haben...
Naja, sorry jedenfalls, das sind die Porttreiber für Win XP/2000 (auch 
zu finden und beyondlogic.org) oder jetzt im Anhang.

Gruß Andreas

von Mark K. (Gast)


Angehängte Dateien:

Lesenswert?

Auch ich habe mich inspirieren lassen und ein paar kleine Änderungen 
vorgenommen. Die "Lib" ist in Assembler. Viel Spaß damit!

von Jörg (Gast)


Lesenswert?

Hallo,

ich hab ein Problem.
Ich habe ein Display, wie im Tutorial 4 erwähnt, auf die gleiche Art 
angeschlossen, und nur zum Testen mal die dort aufgeführten 
Assembler-Routienen zum Ansteuern verwendet.
Leider tut sich in meinem Display nichts.
Die beiden schwarzen Balken bleiben schwarz.
Nach dem ich etliche male die Anschlußleutung überprüft habe, hab ich 
den Code mal mit dem Disassembler/Simulator angeschaut.
Dabei hab ich festgestellt, daß er nach dem ersten Aufruf der 
5ms-Warteschleife mit dem RET-Befehl die Adresse 0x5b in den 
ProgramCounter bekmmt. Dieser Wert steht warum auch immer im Stack und 
veranlaßt ihn somit zu einem Sprung in eine Codefreie Zone!?!?

Was hab ich falsch gemacht?
Ich benutze AVR-Studio 4.05 B. 181
und das STK500 mit dem AT90S8515 die .def-Anweisung hab ich angepasst.
Was hab ich sonst evtl. übersehen.
Ansonsten wäre noch erwähnenswert, daß das Display mit einer eigenen 
Spannungsquelle mit 5V versorgt wird, aber eine gemeinsame Masse 
vorhanden ist.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Stackpointer richtig initialisieren:
http://www.mikrocontroller.net/tutorial3.htm

von Jörg (Gast)


Lesenswert?

Vielen Dank! Es funktioniert! :-)

von Sav Paff (Gast)


Lesenswert?

hallo erstmal, bin der sav.

ich hab mir ein lcd zugelegt, naja um erlich zu sein 2, ein 16x4 und
ein 20x4 LCD. also.....
ich hab im internet ne alleitung gefunden um das lcd über den
druckerport mittels einer software zu steuern. tja, hab ales gemacht
was in der anleitung stand, software porttreiber, platine..... aber
eine reaktion. ich hab irgendwie des gefühl es könnte daran liegen dass
ich win xp hab. könnt ihr mir da vielleicht weiter helfen?
thx

Sav Paff

von Sav Paff (Gast)


Lesenswert?

uup...da sollte KEINE reaktion stehn

von Sav Paff (Gast)


Lesenswert?

also nur damit man mich irchtg versteht, die zerste und dritte zeie wird
scho angezeigt

von Henry (Gast)


Lesenswert?

Nach meiner Erfahrung sollte die LCD-Anzeige auch initialisiert werden,
so dass sie auch im 4-Zeilenmodus läuft. Ansonsten ist es auch besser,
bei einem Sprung auf eine neue Zeile dies nicht automatisch dem
LCD-controler zu überlassen, sondern dies direkt zu programmieren. Beim
LCD-Hersteller bekommt man oft im download das Datenblatt mit den
dazugehörigen Befehlen. Dies sollte man gut lesen.

von SAvPaff (Gast)


Lesenswert?

hat sich erledigt, ich hab spiegelverkehrt gelötet, ich hab nich auf die
zahlen vom stecker geschaut. trotzdem thx

von andy deen (Gast)


Lesenswert?

ich hab' alles wie im tut. zum lcd aufgebaut (und benutze ein 16x1
disp). dann hab ich die sofware auf mehr zeichen erhöht (diese aber
weiterhin zeichenweise ausgegeben)...kann mir jemand sagen, ob es ein
für einen bestimmten fehler charakteristisches bild ist, dass immer nur
die ersten 8 zeichen gezeigt, dann ca. 40 ausgelassen und schliesslich
die anderen 8 angezeigt werden ?? oder hab' ich mir 'n kaputtes
display andreh'n lassen ?

thx im voraus. falls jmd antwortet..
 andy.

von stromi (Gast)


Lesenswert?

das display benutzt wahrscheinlich einen standart-controller, der immer
40 zeichen in ein ram speichert, und dann an die seqmente schickt. man
kann es mit shift-befehl (nach links) nachweisen.
i hope i have you gehelpt :-)

von MooseC (Gast)


Lesenswert?

ja es ist characteristisch.

nur einmal suchen oder einen Aha-Effekt erbringenden Blick in das
Datenblatt riskieren.

http://www.mikrocontroller.net/forum/read-1-8959.html#8968
http://www.mikrocontroller.net/forum/read-1-39677.html#39708


MooseC

von andy deen (Gast)


Lesenswert?

thx !
funktioniert alles !

 andy.

von Karlheinz Druschel (Gast)


Lesenswert?

Hi Leuts,
also die LCD-Routinen funzen.
Zumindest beim STK500 und dem 8515.
Wenn ich aber nun ohne Verdrahtungsänderung den Mega16 benutze, geht
nichts, also schwarze Balken.
Zurück auf den 8515, und es geht wieder.
Hat einer ne Idee ?


Greetings
Karlheinz

von Harald Lienert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab versucht mit meinem AVR-Control auf dem LCD etwas auszugeben.

genommen habe ich den code von mark und als hardware das avr-control
http://mikrocontroller.cco-ev.de/images/avr__schaltplan.gif

(ist eigendlich alles so wie es sein müsste, es funktioniert aber
nicht)

kann mir vielleicht irgendwer sagen woran es liegen könnte
(die erste Zeile des LCD ist leer und die zweite voll)

Mit bestem Dank im Voraus

H.Lienert

von Harald Lienert (Gast)


Lesenswert?

Ha!

Habs schon selbst gefunden

jaja call an Stelle von rcall

von Sepp (Gast)


Lesenswert?

@Karlheinz Druschel

Hallo Karlheinz

Der Beitrag ist zwar schon etwas betagt, aber vielleicht nützt
es ja trotzdem.
Belegt Dein Display zufällig die einen der Pins PC2,PC3,PC4 oderPC5?
Dann einfach das Fusebit H des Prozessors auf disable setzten(JTAG)


mfg   Sepp

von Mike (Gast)


Lesenswert?

@Karlheinz Druschel

Hast Du die Fusebits des Mega16 auf den externen Quarz gesetzt?
Sonst funzt ggf. Dein Programm nicht korrekt.
Diese! Fusebits hat der Dinosaurier-8515 nicht.

von Timo (Gast)


Lesenswert?

hallo

und zwar habe ich ein 24x2 display angeschlossen und mit dem Programm
STDLCD angesteuert.

Allerdings ist ab der Spalte 9 alles spiegelverkehrt...

(HD44780 Kontroller)

Bitte um Hilfe per Mail

Danke

von münsterking (Gast)


Lesenswert?

mhhhh, ähm, mir fällt nix ein

von Mike (Gast)


Lesenswert?

Push doch mal alle mprs auf den Stack. Am Schluss kannst du doch den
Mega 16 reseten!

von Manuel (Gast)


Lesenswert?

Hallo!

Ich habe Mir eine Schaltung mit nem LCD aufgebaut, und den code aus dem
LCD tut einigermaßen übernommen.
Es funktioniert auch alles wunderbar...

Doch nun solls ja weiter gehen, ich will eben nicht nur das wort
"Test" ausgeben, sondern eventuell verschiedene zahlen die in den
registern abgelegt sind.
Dies können sowohl einstellige, als auch mehrstellige zahlen sein.

Im Tut wurde ja schon erwähnt das es bei großen textausgaben nicht
sinnvoll sei, wegen jedem Buchstaben ein "lcd_data" aufzurufen.
Vielmehr ist das auch sehr schwer umzusetzen.

Wie kann ich nun vorgehen wenn ich zb. einen Taster habe der pro
tastendruck eine Zahl (sagen wir Null) inkrementiert.
Der Wert soll bis sagen wir 999 hochgezählt werden und dann wieder bei
null beginnen.

Erste frage:
Kann man die Zahlen binär hochzählen und dann jeweils durch 10 teilen
und die Nachkommastelle dann in ASCII umwandeln und zum LCD senden?
Oder hat jemand eine Idee wie es vernünftiger zu realisieren ist.
Ich habe mir da noch nicht soviele Gedanken darüber gemacht.

Zweite frage:
Wie kann ich es umgehen bei jedem Zeichen die routine "lcd_data"
aufzurufen?


MfG
Manuel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.