www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD unter Bascom ok, unter C# nee


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe hier ein 4x20-LCD Typ HDM20416H, rudimentäres Datenblatt im Anhang, 
das wie im Tutorial beschrieben betrieben werden soll.
http://www.mikrocontroller.net/articles/Erweiterte...

Leider zeigt das Display im Betrieb mit dem angegebenen Beispielprogramm 
mehr oder weniger wirres Zeug. In der Hauptsache scheint es so zu sein, 
dass Buchstaben ausgelassen werden und es sieht so aus, als wären es 
z.T. nach dem Neustart andere Buchstaben, die ausgelassen werden. Wenn 
das Programm Sonderzeichen anzeigt, ist mehr oder weniger nur noch Salat 
auf dem Display.

Als Hauptverdächtige kommen nach meiner Meinung eigentlich nur die 
folgenden beiden Programmteile in Frage:

1.
>>////////////////////////////////////////////////////////////////////// 
//////////
>>// Zeilendefinitionen des verwendeten LCD
>>// die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 >>Zeichen 
passen
>>// bei anderen Zeilenlängen müssen diese Einträge angepasst werden

>#define LCD_DDADR_LINE1         0x00
>#define LCD_DDADR_LINE2         0x40
>#define LCD_DDADR_LINE3         0x10
>#define LCD_DDADR_LINE4         0x50



2.
>>////////////////////////////////////////////////////////////////////// 
//////////
>>// LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)

>#ifndef LCD_TIMINGS
>#define LCD_TIMINGS

>#define LCD_BOOTUP_MS           15
>#define LCD_ENABLE_US           1
>#define LCD_WRITEDATA_US        46
>#define LCD_COMMAND_US          42

>#define LCD_SOFT_RESET_MS1      5
>#define LCD_SOFT_RESET_MS2      1
>#define LCD_SOFT_RESET_MS3      1
>#define LCD_SET_4BITMODE_MS     5

>#define LCD_CLEAR_DISPLAY_MS    2
>#define LCD_CURSOR_HOME_MS      2

>#endif // LCD_TIMINGS


Zu 1.: das verwendete LCD hat ja pro Zeile 20 Zeilen statt 16, wüßte 
aber jetzt aus dem Stehgreif nicht, was dort eingetragen werden muss

Zu 2.: da das Display Buchstaben "verschluckt", scheint die Vermutung 
naheliegend, dass irgendwas mit den vorgegebenen Ausführungszeiten zu 
schnell für das angeschlossenen Display ist. Könnte das hinkommen und 
wenn ja, welchen Parameter müßte man dann ändern?


Noch eine Anmerkung: das beschriebene Display läuft problemlos unter 
Bascom. Leider konnte ich dort nichts über die verwendeten 
Ausführungszeiten finden...

PS: Forensuche wurde auch schon konsultiert, mit vielen Treffern aber 
wenig direkten Bezügen zum vorliegenden Problem.


Jetzt also wie üblich die große Frage:

W a s   k ö n n t e   e s   s e i n ?   ö)

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
F_CPU falsch?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was hat das ganze mit C# zu tun?

Autor: Biko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
g457 schrieb:
> F_CPU falsch?
negativ, F_CPU ist korrekt

Anschlussbelegung ist übrigens:
RS  PB0
En  PB1
DBs PB2-5
(also auch keine JTAG-Probleme)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Biko schrieb:

> Zu 1.: das verwendete LCD hat ja pro Zeile 20 Zeilen statt 16, wüßte
> aber jetzt aus dem Stehgreif nicht, was dort eingetragen werden muss

Das ist es sicher nicht.
Wenn das ein Problem ist, dann merkst du das maximal wenn du den Cursor 
in die 2.te Zeile schickst und der ganz woanders auftaucht

> Zu 2.: da das Display Buchstaben "verschluckt", scheint die Vermutung
> naheliegend, dass irgendwas mit den vorgegebenen Ausführungszeiten zu
> schnell für das angeschlossenen Display ist. Könnte das hinkommen und
> wenn ja, welchen Parameter müßte man dann ändern?

Möglich wärs.
Du kannst ja einfach mal alle Zeiten mal 10 nehmen.
Länger darfst du die Zeiten immer machen. Nur zu kurz darfst du nicht 
werden.

Autor: Biko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> was hat das ganze mit C# zu tun?

Du meinst mit der Note "cis"?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Biko schrieb:
> g457 schrieb:
>> F_CPU falsch?
> negativ, F_CPU ist korrekt

Das haben schon viele gesgat und hinterher hat sich dann doch 
rausgestellt, dass sie falsch war.
Hauptproblem war dabei immer, dass nicht verstanden wurde, dass F_CPU 
informativen Charakter hat. Bei F_CPU kann ich hinschreiben was ich 
will, deswegen läuft der µC noch lange nicht mit dieser Taktfrequenz

Autor: Biko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Biko schrieb:
> Möglich wärs.
> Du kannst ja einfach mal alle Zeiten mal 10 nehmen.
> Länger darfst du die Zeiten immer machen. Nur zu kurz darfst du nicht
> werden.

Gute Idee, das teste ich...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Biko schrieb:

> Gute Idee, das teste ich...


... und so naheliegend ....

Autor: Biko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Biko schrieb:
>> g457 schrieb:
>>> F_CPU falsch?
>> negativ, F_CPU ist korrekt
>
> Das haben schon viele gesgat und hinterher hat sich dann doch
> rausgestellt, dass sie falsch war.
> Hauptproblem war dabei immer, dass nicht verstanden wurde, dass F_CPU
> informativen Charakter hat. Bei F_CPU kann ich hinschreiben was ich
> will, deswegen läuft der µC noch lange nicht mit dieser Taktfrequenz

Hm, habe die korrekte f in der entsprechenden .h-Datei eingetragen und 
gehe davon aus, dass das auch beim Compilieren so übernommen wurde. 
Werde das gleich mit untersuchen.

Autor: Biko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...so, folgendes Ergebnis:

-F_CPU korrekt eingestellt (per Stopuhr definiertes Delay nachgemessen, 
Gegenprobe mit Quarz anderer Frequenz ausgeführt)

-durch Verlängerung der Delay-Zeiten (Punkt 2., s.o.) um den Faktor 10 
werden jetzt alle Buchstaben korrekt dargestellt, die minimal möglichen 
Delay-Zeiten muss ich noch ermitteln.


übriggebliebenes Problem: es werden pro Zeile nur 16 Zeichen ausgenutzt, 
das führt wieder zu Punkt 1:

>>// Zeilendefinitionen des verwendeten LCD
>>// die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen 
>>passen
>>// bei anderen Zeilenlängen müssen diese Einträge angepasst werden

>#define LCD_DDADR_LINE1         0x00
>#define LCD_DDADR_LINE2         0x40
>#define LCD_DDADR_LINE3         0x10
>#define LCD_DDADR_LINE4         0x50

Was also jetzt hier eintragen, damit alle 20 Zeichen pro Zeile genutzt 
werden können?
(im Datenblatt steht leider nichts dazu)

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Biko schrieb:
#define LCD_DDADR_LINE1         0x00
#define LCD_DDADR_LINE2         0x40
#define LCD_DDADR_LINE3         0x14
#define LCD_DDADR_LINE4         0x54

Steht im vollständigem Datenblatt.

Autor: Biko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Volker Zabe schrieb:
> #define LCD_DDADR_LINE1         0x00
> #define LCD_DDADR_LINE2         0x40
> #define LCD_DDADR_LINE3         0x14
> #define LCD_DDADR_LINE4         0x54

Ok, korrekt, LCD funktioniert jetzt!

Super, Danke an alle Helfer!

:O)

Autor: Biko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Volker Zabe schrieb:
> Steht im vollständigem Datenblatt.

PS: kannst du mal das vollständige datenblatt oder den link posten?

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.