Software / Treiber für HD44780 auf STM32

Gast #5438196
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.
Gast #5438515
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...
#5438627
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.
Gast #5438660
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.
Gast #5438777
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.
#5438794
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.
Gast #5438847
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.
#5439006
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.
#5439011
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.
Gast #5439327
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren