mikrocontroller.net

Forum: Projekte & Code LCD Ansteuerung


Autor: Andreas (Gast)
Datum:
Angehängte Dateien:
  • lcd.zip (2,11 KB, 1073 Downloads)

Bewertung
0 lesenswert
nicht 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

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Mark K. (Gast)
Datum:
Angehängte Dateien:

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

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stackpointer richtig initialisieren:
http://www.mikrocontroller.net/tutorial3.htm

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank! Es funktioniert! :-)

Autor: Sav Paff (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sav Paff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uup...da sollte KEINE reaktion stehn

Autor: Sav Paff (Gast)
Datum:

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

Autor: Henry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: SAvPaff (Gast)
Datum:

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

Autor: andy deen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: stromi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: MooseC (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: andy deen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
thx !
funktioniert alles !

 andy.

Autor: Karlheinz Druschel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harald Lienert (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Harald Lienert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ha!

Habs schon selbst gefunden

jaja call an Stelle von rcall

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: münsterking (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhhhh, ähm, mir fällt nix ein

Autor: Mike (Gast)
Datum:

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

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.