mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Display macht Probleme


Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mikrocontroller-Freunde!

Hab mir ein 2x16 Zeichen Display von reichelt gekauft, nach tutorial
angeschlossen und geproggt. Leider funzt das teil nicht.

Hab einen 8 Mhz Oszillator dran und einen 4433. bitte helft mir, es
bleibt einfach ein schwarzer Balken stehen.


FeeJai

PS: Codebeispiele wären super!

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt doch bestimmt jem., der das so bei sich hat. Könntet ihr das dnn
bitte posten? Hab erst vorgestern mit Mikrocontrollern angefangen.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hört sich nach falsch initialisiert an.

Kug mal hier:
http://www.geocities.com/dinceraydin/djlcdsim/djlcdsim.html

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.) 14 Min zwischen der ersten und der zweiten Anfrage sind deutlich zu
kurz.
2.) Du hättest die Zeit besser genutzt um mit dem Stichwort "schwarzer
Balken" mal in die Suche zu gehen. Da tauchen dann erstaunlicherweise
die verschiedensten Einträge auf.
3.) Meistens liegt es an der Kontrasteinstellung deines Displays.

Autor: Gerd Vergin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe das gleiche Display an einen Atmege8 angeschlossen,
meines läuft bis 4 Mhz problemlos.
Bei 8 MHz bleibt auch bei mir das Display mit schwarzen Balken stehen,
also ist es sehr wahrscheinlich ein Timing-Problem.
Veränder mal die Zeitschleifen.

Gruss

Gerd

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du wirst u.U. nicht drumrumkommen, und z.B. mit AVRStudio step by step
durch Dein Programm zu gehen.

Schau Dir auf der linken Seite an, was Deine "Stopwatch" sagt, da
kannst Du genau sehen, welche "Prozessorzeit" gerade ist.

Dann schau Dir die Portausgänge an, besonders natürlich den, an dem das
Display hängt.

Nun musst Du für jede Ausgabe an den LCD-Pins genau schauen, WAS das
ausgegeben wird, und WANN es ausgegeben wird (Stoppwatch).

Achte auch auf das DDR! Und beachte auch den Enable-Pin fuer das LCD
genau!

Das ist zwar alles etwas mühsam, führt aber IMMER zu tiefgreifenden
Erkenntnissen, auch über so manch andere Dinge, die da passieren.
Ich habe beim ersten Mal so etwa eine Stunde gebrauchtm, bis ich hinter
alles gestiegen bin, was da so falsch lief.

Du kannst übrigens den LCD-Ausgabe-Port auch loggen. Die Ausgabedatei
enthält alle ausgegeben Muster inclusiver genauer
Prozessor-"Uhrzeit".

Wenn Du das in Excel weiterverarbeitest, und ein paar Makros
drumrumprogrammierst, dann kriegste exakt, was Du wissen willst: Timing
und Daten am LCD-Port. Ist dann so eine Art virtuelles Oszi inclusive
Logik-Analyser...

WICHTIG: im AvrStudio den Prozessortakt auf deine Takt einstellen (ich
glaube das geht bei den Debug-Optionen).

Damit kannst Du alles rauskriegen, was Du wissen musst.

e.

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, dass hilft mir schon alles weiter, hat jemand vielleicht ein
programm, welches funktioniert?? bin da leider noch sehr unbeholfen.

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine Demo mit Stoppuhr, LCD-Display, DCF-77,
Infrarot-Fernbedienung usw. geschrieben. Da ist alles drin, was Du
braucht. Allerding ist meine LCD-Ansteuerung und auch die
Initialisierung etwas anders aufgebaut, als die meisten das machen.

Die Initialisierung arbeitet einfach eine Tabelle mit den Kommandos ab,
die das Diaplay braucht. Dieses Verfahren kann (wenn man auch die
Timings mit in die Tabelle schreibt) für alle möglichen Displays
verwendet werden.

Im Betrieb wird das Display asynchron von einer eigenen Engine
angesteuert. Es wird einfach im Programm ein DisplayBuffer beschrieben,
egal, ob das Display gerade "Zeit hat", oder nicht.

In einer Interrupt Service Routine wird dann aus diesem Buffer (sofern
was drinsteht) immer je ein Zeichen ans Display übertragen und dann aus
dem Buffer gelöscht.

Das funktioniert prima, nur ob es zum Lernen optimal ist, weiss ich
nicht.

Die neueste Version findest Du hier:

http://www.mikrocontroller.net/forum-extern/read-4...

Schau aber ganz unten in Thread, weil immer wieder mal ein Update
hinzukommt. Aktuell ist es V1.5rc2, kannst Du hier runterladen:

http://www.mikrocontroller.net/attachment.php/6665...

Wenn Du aber auch im Programmieren Anfänger bist, dann such Dir
vielleicht was Anderes...

Viel Spass damit.

e.

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das werde ich gliech mal ausprobieren. Wieviel MHZ hast du??

FeeJai

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja mei, alles muss Du Dir jatzt aber nicht vorkauen lassen. Les doch
erst mal die Kommentare in der Source. Was da nicht frin steht, dass
kannste gerne fragen.

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung! Werds mir mal genau ansehen und dann mal versuchen, in
Assemblercode zu überstzen.

Autor: Divison (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm bei mir läuft das, nur leider hab ich keine Fernbedienung mit dem
das Funktioniert!

Aber sieht schick aus!

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hierzu ein Tipp:

Irgendwo auf dieser Site hier oder aber bei avrfreaks habe ich eine
IR-Demo gesehen. Lade Dir die runter, und teste, welche Zahlencodes
deine Fernbedienung hat. Dann suche folgende Stelle im Programm:

// Definitionen Fernbedienung, passend fuer Tevion (aelteres Modell)

#define RC_RIGHT    54
#define RC_LEFT      53
#define RC_UP      32
#define RC_DOWN      33
#define RC_HELP      41
#define RC_OK      23
#define RC_MUTE      19
#define RC_KEY_M    55

und trage die entprechenden Tasten (oder die, die Du nehmen willst)
ein, Wenn Du dann neu kompilierst, muss es auch mir Deienr
Fernbedienung gehen.
e.

Autor: Divison (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hört sich kalasse an. Das wäre auch recht interessant für meine
anwengung. Muss aber mal was einkaufen fahren, sonst haben wir heut
abend nich viel zu essen. :-)

Werde mich aber nacher mal damit bescheftigen.

Vielen Dank!

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab schon wieter rumgespielt, aber ich kriegs einfach nicht hin. ich
bin zu blöd.

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, das ist echt Pech.

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So leute, ich glaub ich kauf mir jetzt dann nen atmega8 und einen 4 Mhz
quarzoszillator, damit sollte es dann funktionieren. Trotzdem danke für
deine hilfe!

Autor: auch Boris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hai,

es liegt nicht am avr, frag einfach mal das bussy bit vom lcd ab !! hat
dir das noch keiner geschrieben ??
du musst auch ein paar nop befehle zw. den enable und eneable des
display einfügen !! das display ist wesentlich langsamer als der
atmel.

gruss
boris

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat der 8ter nich einen internen 4Mhz? brauchste keinen kaufen...

Gruß AxelR

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, eigentlich will ich mir ja weder nen mega8 noch nen 4mhz oszi
kaufen, aber wenn ich keine Progs für find und es selber net
hinkrieg,... dann bleibt eigentlich nix anderes übrig

Autor: ThiloG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das selbe Problem :-(
Allerdings versuche ich es mit dem AT90S2313.
Bei mir erscheint auch nur ein schwarzer Balken...

Autor: ThiloG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab dir dem Code nochmal angeschaut.
Wird nicht durch das "ret" bei "delay5ms" das Programm ständig
wiederholt. Fäng das "powerupwait" dann nicht immer wieder von vorne
an???
Ich versteh das nicht ganz...
Vielleicht kann mir ja einer Helfen...

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei mir lief die initialisierung zu schnell, war ein timingproblem,
ich habe einfach zwischen den Befehlen eine zählschleife als Pause
eingefügt, statt das BusyBit abzufragen (das hat irgentwie nicht
funktiioniert)

Gruß
Axel

Autor: ThiloG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da ich erst vor einer Woche mit µC und so angefangen habe, sagt mir das
mit der Zählschleife nicht besonders viel.
Könntest du mir vielleicht ein Beispiel Code zeigen?
Danke!

Autor: LameM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@die Greenhorns: wie wäre es denn wenn Ihr Euch erstmal ein paar
Grundlagen aneignet und nicht gleich wild mit LCD's hantiert?

Das bringt nichts, außer Frust!

Also probiert erstmal was einfaches, nen LED Blinker oder sowas, da
könnt Ihr solche Sachen, wie Portpin-Ansteuerung und
Warte/Zählschleifen austesten...

Und wenn das klappt und Ihr auch wisst, was Ihr da macht, nehmt Euch
nen Datenblatt von nem LCD und lest das!

Tip: Wenn man das Busy-Flag nicht abfragt muss man Sicherheiten
einrechnen und sollte das LCD nur mit ca. 10-20kHz Datenrate belasten.

also muss ein AVR der mit 8MHz läuft ne menge Warteschleifen
vollführen... oder man bedient sich des Timers und schreibt sich ne
Interrupt-Routine...

Marian

Autor: ThiloG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das mit den LEDs hab ich ja auch schon gemacht ;-)
nur halt ohne Zählschleife...
...ich kenn die Befehle ja noch gar nicht...

Autor: ThiloG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so... habs nun endlich geschafft mit dem LCD-Display...
Nun hab ich aber noch eine Frage.
Wie kann ich Texte in der 2. Zeile anzeigen lassen?
Geht das nur mit 8-Bit???

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum ignoriert ihr die Antworten? Oben im Thread ist doch ein ganz
klarer Hinweis auf eine Source, in der gibts auch eine Lösung für die
Cursorpositionierung auf die zweite Zeile.

e.

Autor: ThiloG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups... stimmt ;-)
...allerdings hab ich hier im Büro (mach grad Schülerpraktikum :-) kein
winZip... :-P

Muss ich wohl warten bis ich wieder zu Hause bin...

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein WinZip? Wo gibts denn sowas?

Da Du aber offensichtlich ins Internet kannst, warum hast Dir dann
nicht längst Winzip gesaugt? Kopfschüttel...

Also gut:

/*-----------------------------------
  LCD-Cursor Positionieren
  -----------------------------------*/
void LcdGotoXy(uint8_t Col, uint8_t Line)
{
  const char HD_LineAddr[] = { 0x00, 0x40, 0x14, 0x54 };
  LcdPutch(HD_SET_DD_ADR + (Col % 40)  + HD_LineAddr [Line % 4],
HD_CMD);
} // LcdGotoXy

Col steht für die x-Position, Line fuer die Zeile.

Obs für 4-Zeiler auch geht, hab ich nicht getestet.

e.

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm. so nützt das gar nix, sehe ich gerade, da fehlen Dir noch ein paar
defines und so.

Also saug dir mal WinZip, und dann schau mal elber rein.

e.

Autor: ThiloG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!
Ne, saugen tu ich hier lieber nicht... ;-)
...ich kann ja warten...

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Proggst du in assembler???

Wenn ja, kanns du mal den SOurce uploaden?? ich kriegs leider nicht
hin

FeeJai

Autor: FeeJai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, ich hab nen 4MHZ Quarz hingehängt und noch ein wenig im code
rumgeschrieben, jetzt funtkioniert es; werd noch versuchen, auch für 8
Mhz zu bauen.

MfG,
FeeJai

Autor: ThiloG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ emax

Das ist ja alles in C geschrieben. Ich versuch mit dem Assembler klar
zu kommen ;-)

Autor: emax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schtümmt.

Du bist mir nicht böse, wenn ich das jetzt nicht alles in Assembler
umschreibe? ;-)

Aber Du könnstest Dir sicher einige Assembler-Teile ansehen, die der
gcc draus macht....

Müsstest Du Dir dann natürlich optimieren.

e.

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.