mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Software / Treiber für HD44780 auf STM32


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Nolan (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Hallo,

hat einer eine Bib für ein STM32F103 für ein Standard HD44780?
Ich kann keine finden.. sonst würde ich versuchen zu portieren und in 
dem Artikel zu verlinken...

VG

Autor: Harry L. (mysth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Karl M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nolan, in welcher Sprache?

Für C findest man zig 1.000 Versionen.

Autor: Harry L. (mysth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Nolan (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Sorry für C / 4 Bit Modus und 4 Zeilen (kann ich aber auch ändern).
Kein I2C.

Wenn jemand ein Link hat ... wäre super...

Autor: Harry L. (mysth)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Bist du sicher, daß ein STM32 das Richtige für dich ist, wenn du das 
nicht einmal aus dem Code und dem Datenblatt des HD44780 abstrahieren 
kannst?

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du darfst dazu gerne den Code aus meinem Buch Band 3 Kapitel 11.4 
kopieren.

http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%203.pdf

Die wenigen Zeilen in der Datei hardware.h müsstest du passend zu deinem 
STM32 umschrieben. Der Include für <pgmspace.h> entfällt, 
dementsprechend entfällt auch die Funktion LCD_write_P().

Da es beim STM32 keine delay.h gibt, musst du eine eigene Delay Routine 
benutzen. Eine Anregung dazu siehe 
http://stefanfrings.de/stm32/index.html#cmsis Wichtig ist nur, dass 
deine Delays mindestens so lange sind, wie in meinem Quelltext. Länger 
schadet nicht.

: Bearbeitet durch User
Autor: Nolan (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Harry L. schrieb:
> Bist du sicher, daß ein STM32 das Richtige für dich ist, wenn du das
> nicht einmal aus dem Code und dem Datenblatt des HD44780 abstrahieren
> kannst?

Schaffe ich vielleicht. Aber ich wenn das Teil so standard ist, dann 
habe ich gehofft schon was fertiges zu finden....

Stefanus F. schrieb:
> Die wenigen Zeilen in der Datei hardware.h müsstest du passend zu deinem
> STM32 umschrieben. Der Include für <pgmspace.h> entfällt,
> dementsprechend entfällt auch die Funktion LCD_write_P().

hast du schön getrennt. super.

Falls noch jemand etwas hat ... ich bin gespannt...

Autor: Beo Bachta (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Nolan schrieb:
> Falls noch jemand etwas hat ... ich bin gespannt...

Das riecht aber penetrand nach Faulheit, mein Herr.

Ich bin gespannt wie du deine Zukunft mit Copy&Paste und
sonst möglichst wenig Eigenaktivität meisterst.

Autor: Nolan (Gast)
Datum:

Bewertung
-6 lesenswert
nicht lesenswert
Beo Bachta schrieb:
> Das riecht aber penetrand nach Faulheit, mein Herr.

Korret. Danke für deinen sinnlosen Beitrag. Ich veröffentliche auch viel 
Code im Netz und habe gerade einfach wenig Zeit...

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Maxim B. (max182)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Harry L. schrieb:
> wenn du das
> nicht einmal aus dem Code und dem Datenblatt des HD44780 abstrahieren
> kannst?

Ich finde solche Gedanken generell falsch:
C als Sprache ist gerade deshalb so stark, daß man fremde Code zu 
eigenem Projekt frei anschalten kann, ohne in Code selbst tief greifen 
zu müssen.
Deshalb selbständig Fahrrad erfinden... Es sei denn, rein für Üben.

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> C als Sprache ist gerade deshalb so stark, daß man fremde Code zu
> eigenem Projekt frei anschalten kann, ohne in Code selbst tief greifen
> zu müssen.

Naja, ich empfinde das eher als "besser als nichts". 
Wiederverwendbarkeit wurde in moderneren Programmiersprachen, welche 
weniger Hardwarenah sind, wesentlich besser umgesetzt. Ich will aber 
damit C nicht schlecht reden, denn die Nähe zur Hardware ist dort ja 
anscheinen gewollt - zumindest in µC Umfeld.

Autor: m.n. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist zwar keine Bib, steht aber hier in der Codesammlung: 
Beitrag "Frequenz- und Pulsweitenmessung mit STM32F407"
2. Datei STM32F4_LCD.c

Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und hier ist noch eine C++ Variante für mbed. Eine C++ Komponente hat 
den simplen Vorteil das ich einfach mehrere Instanzen anlegen kann, die 
meisten C Lösungen nutzen globale Variablen und für mehrere Displays 
muss man den Code ziemlich umkrempeln:
https://os.mbed.com/users/simon/code/TextLCD/
wenn das F103 das berühmte BluePill Board ist kann ich bei Interesse die 
Kommandozeilen Anweisungen posten um damit ein Projekt zu erstellen.

Autor: Harry L. (mysth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Harry L. schrieb:
>> wenn du das
>> nicht einmal aus dem Code und dem Datenblatt des HD44780 abstrahieren
>> kannst?
>
> Ich finde solche Gedanken generell falsch:
> C als Sprache ist gerade deshalb so stark, daß man fremde Code zu
> eigenem Projekt frei anschalten kann, ohne in Code selbst tief greifen
> zu müssen.
> Deshalb selbständig Fahrrad erfinden... Es sei denn, rein für Üben.

In der Embedded-Entwicklung gibts nun mal keine gebratenen Tauben auf 
dem Silbertablett, und die o.g. Beispiele sind nahezu genau das, was der 
TO sucht: Ansteuerung eines HD44780 im 4bit-Mode.

Das Einzige, was nicht passt, ist, daß in den Beispielen ein 
I²C-Portexpander verwendet wird, statt direkt die Ports der MCU.

Wenn man sich nur grundlegend in die verwendete MCU eingearbeitet, und 
die Grundlagen dieser Ansteuerung auch nur ansatzweise verstanden hat, 
sollte es wirklich kein Problem sein, den Code auf andere IO-Pis 
umzustellen.
Mehr ist da nämlich wirklich nicht zu tun.

Bei so hardwarenahen Aufgaben "absolute Kompatibilität" zu allen 
möglichen Hardware-Varianten zu fordern ist schon ziemlich naiv, und da 
hilft einem auch die Portabilität von C nicht weiter.

: Bearbeitet durch User
Autor: Joe J. (j_955)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das sehee ich ähnlich wie mein Vorredner.

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das Einzige, was nicht passt, ist, daß in den Beispielen ein
> I²C-Portexpander verwendet wird, statt direkt die Ports der MCU.

Nicht bei meinem Beispiel.

> Wenn man sich nur grundlegend in die verwendete MCU eingearbeitet, und
> die Grundlagen dieser Ansteuerung auch nur ansatzweise verstanden hat,
> sollte es wirklich kein Problem sein, den Code auf andere IO-Pis
> umzustellen.

Ja, sehe ich auch so.

: Bearbeitet durch User
Autor: Maxim B. (max182)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harry L. schrieb:
> Wenn man sich nur grundlegend in die verwendete MCU eingearbeitet, und
> die Grundlagen dieser Ansteuerung auch nur ansatzweise verstanden hat,
> sollte es wirklich kein Problem sein, den Code auf andere IO-Pis
> umzustellen.

Hier hast du Recht.
Es gibt verschiedene Lösungen. Leichter sind die in Verwendung, wo 
Arbeit mit Pins ausgegliedert ist. Dann reicht es nur, eine Funktion 
anders zu schreiben.

Trotzdem finde ich keine Grunde, alles von Null aus selber zu erfinden.

Autor: Harry L. (mysth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Trotzdem finde ich keine Grunde, alles von Null aus selber zu erfinden.

Du darfst mich gerne "old-school" nennen, aber gerade die Ansteuerung 
solch eines typischen Text-Display sollte man m.M.n. als 
Anfänger/Einsteiger wenigstens einmal selbst gemacht haben.

Das ist vom Umfang her sehr überschaubar, kein Hexenwerk und eine 
ausgezeichnete Übung für Anfänger, zumal man den Dingern ja an fast 
jeder Ecke begegnet.

Autor: Daniel B. (daniel_3d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nolan,

nutzt du HAL?

Autor: Imgrab Umdreher (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hugo schrieb:
> für die Faulen unter uns:
>
> Youtube-Video "Tut:: HD44780 LCD mit STM32 ansteuern (25) -
> Mikrocontroller Programmieren [ger]"

Wer es sich noch nicht angeschaut hat ... anbei ein Screenshot
als "Empfehlung" sich das mal anzutun.

Chaos pur sag ich nur. Und das mehr als eine Stunde lang.
"LCD Display" mag er auch sehr gerne ....

Zitat von seiner Site:

"Viele würden mich als Freak oder Nerd bezeichnen, ich bevorzuge
den Begriff Geek."

Bescheidenheit ist eine Zier, doch weiter kommt man ohne ihr.

Autor: Joe J. (j_955)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abo an...

Autor: Johnny B. (johnnyb)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Da es beim STM32 keine delay.h gibt, musst du eine eigene Delay Routine
> benutzen.

Was für ein Schwachsinn.
HAL_Delay() ist doch standardmässig verfügbar.

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was für ein Schwachsinn.
> HAL_Delay() ist doch standardmässig verfügbar.

Nicht jeder verwendet das HAL Framework.

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.