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


von Nolan (Gast)


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

von Harry L. (mysth)


Lesenswert?


von Karl M. (Gast)


Lesenswert?

Nolan, in welcher Sprache?

Für C findest man zig 1.000 Versionen.

von Harry L. (mysth)


Lesenswert?


von Nolan (Gast)


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...

von Harry L. (mysth)


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?

von Stefan F. (Gast)


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.

von Nolan (Gast)


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...

von Beo Bachta (Gast)


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.

von Nolan (Gast)


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...

von Pete K. (pete77)


Lesenswert?


von Hugo (Gast)


Lesenswert?

für die Faulen unter uns:

https://www.youtube.com/watch?v=aj8lAolxiYA

von Maxim B. (max182)


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.

von Stefan F. (Gast)


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.

von m.n. (Gast)


Lesenswert?

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

von Johannes S. (Gast)


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.

von Harry L. (mysth)


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
von Joe J. (j_955)


Lesenswert?

das sehee ich ähnlich wie mein Vorredner.

von Stefan F. (Gast)


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.

von Maxim B. (max182)


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.

von Harry L. (mysth)


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.

von Daniel B. (daniel_3d)


Lesenswert?

Hallo Nolan,

nutzt du HAL?

von Imgrab Umdreher (Gast)


Angehängte Dateien:

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.

von Joe J. (j_955)


Lesenswert?

Abo an...

von Johnny B. (johnnyb)


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.

von Stefan F. (Gast)


Lesenswert?

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

Nicht jeder verwendet das HAL Framework.

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.