Forum: Mikrocontroller und Digitale Elektronik Arduino Display ohne fertige Funktion ansteuern


von mompf (Gast)


Lesenswert?

Guten Tag allerseits,

ich habe einen Arduino Uno und ein übliches 16x2 LCD-Display, welches 
meistens in den Lernsets enthalten ist.

Nun möchte ich dieses Display aus Interesse OHNE die Arduino Funktionen 
wie z.B. lcd.print ansteuern. Mir würde es am Anfang reichen, einfach 
nur ein Zeichen beispielsweise ein "Z" anzuzeigen.

Kann mir dabei jemand weiterhelfen oder gibt es dazu schon ein passendes 
Tutorial?

von Tom (Gast)


Lesenswert?

mompf schrieb:
> Kann mir dabei jemand weiterhelfen oder gibt es dazu schon ein passendes
> Tutorial?

Gibt es. Aber was in an Abkupfern so interessant.

Nimm dir das Datenblatt und einen Logikanalysator/Oszi - und dann gehts 
los.

von mompf (Gast)


Lesenswert?

Tom schrieb:
> Nimm dir das Datenblatt und einen Logikanalysator/Oszi - und dann gehts
> los.

Habe kein Oszi/Logikanalysator und konnte auch nicht das passende 
Datenblatt zu meinem Display finden. Diese war bei einem Set von 
Sainsmart dabei, allerdings weiß ich nicht genau, wie dieses heißt.

von Tom (Gast)


Lesenswert?

mompf schrieb:
> Habe kein Oszi/Logikanalysator und konnte auch nicht das passende
> Datenblatt zu meinem Display finden.

Ein kleiner Logikanalysator kostet in der Bucht weniger als 7€. Das kann 
doch wohl nicht das Problem sein. Und wenn du nicht mal weißt, was du da 
für ein Display vor dir hast, wie sollen andere dann helfen.

Du kannst mir aber nicht erzählen, dass Sainsmart dafür keine 
Infos/Support bereit stellt.

von Mitlesa (Gast)


Lesenswert?

mompf schrieb:
> Nun möchte ich dieses Display aus Interesse OHNE die Arduino Funktionen
> wie z.B. lcd.print ansteuern.

http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

..... und du hast ein LCD mit Controller HD44780 !

von mompf (Gast)


Lesenswert?

Danke soweit. Aber ich checke immer noch nicht ganz durch. Wichtig wäre 
auch noch, dass ich die 4-Bit Variante verwenden muss.

Ich würde nun folgendermaßen vorgehen. Zuerst schaue ich in der Tabelle 
nach, welche Bist ich für ein "Z" benötige.

http://www.learningaboutelectronics.com/images/Character-table-for-HD44780-LCD-module.png

"Z" = 10100101

Bei der 8-Bit Variante, die ich nicht benutzen kann, würde ich das dann 
folgendermaßen machen:
1
digitalWrite(RS,HIGH);
2
digitalWrite(RW,LOW);
3
digitalWrite(E, HIGH);
4
digitalWrite(DB0,HIGH);
5
digitalWrite(DB1,LOW);
6
digitalWrite(DB2, HIGH);
7
digitalWrite(DB3,LOW);
8
digitalWrite(DB4,LOW);
9
digitalWrite(DB5, HIGH);
10
digitalWrite(DB6,LOW);
11
digitalWrite(DB7,HIGH);

Würde dies soweit ohne weitere Einstellungen funktionieren? Aber wie 
mache ich das nun bei der 4-Bit Variante?

von Stefan F. (Gast)


Lesenswert?

Indem du nur vier der 8 Bits verwendest.

von Frank G. (frank_g53)


Lesenswert?

mompf schrieb:
> Aber wie
> mache ich das nun bei der 4-Bit Variante?

Englisch 
vorrausgesetzt:http://www.instructables.com/id/Step-By-Step-LCD-wiring-4-Bit-Mode-and-Programmi/

Steht aber im Prinzip auch in dem Vorschlag:

Mitlesa schrieb:
> http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD
>
> ..... und du hast ein LCD mit Controller HD44780 !

von Flip B. (frickelfreak)


Lesenswert?

mompf schrieb:
> Danke soweit. Aber ich checke immer noch nicht ganz durch. Wichtig
> wäre auch noch, dass ich die 4-Bit Variante verwenden muss.
>
> Ich würde nun folgenderma
> folgendermaßen machen:digitalWrite(RS,HIGH);
> digitalWrite(RW,LOW);
> digitalWrite(E, HIGH);
> digitalWrite(DB0,HIGH);
> digitalWrite(DB1,LOW);
> digitalWrite(DB2, HIGH);
> Würde dies soweit ohne weitere Einstellungen funktionieren? Aber wie


datenblatt nehmen und zuerst funktionen für init und daten schreiben 
aufbauen.

von mompf (Gast)


Lesenswert?

Flip B. schrieb:
> datenblatt nehmen und zuerst funktionen für init und daten schreiben
> aufbauen.

Wie gesagt, weiß ich nicht welches Datenblatt wirklich das richtige ist. 
Aber ich müsste ja eigentlich die meisten von den LCDs mit HD44780 
verwenden können?

Was soll die Funktion für init alles beinhalten? Die Funktionen für 
Daten schreiben will ich erst später machen, ich will zuerst einfach mal 
ein Zeichen darstellen lassen und darauf lässt sich dann aufbauen.

Stefan U. schrieb:
> Indem du nur vier der 8 Bits verwendest.

Mir ist nicht klar, wie ich mit 4 Bit die 8 Bit übertragen soll.

von Flip B. (frickelfreak)


Lesenswert?

mompf schrieb:
> Aber ich müsste ja eigentlich die meisten von den LCDs mit HD44780
> verwenden können?

Ja, das vom chip an sich sollte aber auch reichen.

>
> Was soll die Funktion für init alles beinhalten?

das sagt dir das Datenblatt. BZW. schaue dir an, wie es andere 
realisieren, aber bitte nicht unverstanden kopieren!

von Verzweifelter (Gast)


Lesenswert?

mompf schrieb:
> Daten schreiben will ich erst später machen, ich will zuerst einfach mal
> ein Zeichen darstellen lassen und darauf lässt sich dann aufbauen.

Wie geil ist das denn?

von Tom (Gast)


Lesenswert?

mompf schrieb:
> Würde dies soweit ohne weitere Einstellungen funktionieren?

Nein, die Datenübernahme erfolgt mit der fallenden Flanke von E. Guck 
einfach mal ins Datenblatt, da stehen die Impulsdiagramme

mompf schrieb:
> Mir ist nicht klar, wie ich mit 4 Bit die 8 Bit übertragen soll.

Nacheinander - immer 4 und 4.

von Mitlesa (Gast)


Lesenswert?

mompf schrieb:
> Bei der 8-Bit Variante, die ich nicht benutzen kann, würde ich das dann
> folgendermaßen machen:
> digitalWrite(RS,HIGH);
> digitalWrite(RW,LOW);

Aber ein paar Beiträge vorher hast du geschrieben:

mompf schrieb:
> Nun möchte ich dieses Display aus Interesse OHNE die Arduino Funktionen
> wie z.B. lcd.print ansteuern.

Also was jetzt ..... mit oder ohne Arduino Funktionen?

mompf schrieb:
> Mir ist nicht klar, wie ich mit 4 Bit die 8 Bit übertragen soll.

Maaaaaaaaann, steht aaaaaaalles im Datenblatt und im erwähnten
Tutorial.

von mompf (Gast)


Lesenswert?

Flip B. schrieb:
> das sagt dir das Datenblatt. BZW. schaue dir an, wie es andere
> realisieren, aber bitte nicht unverstanden kopieren!

Ich komme gerade überhaupt nicht weiter. Jeder schreibt nur ich soll ins 
Datenblatt schauen, welches ich nicht haben.

Nehmen wir mal an, dass ich hier das passende Datenblatt habe:
http://oomlout.com/parts/LCDD-01-datasheet.pdf

Dort wird mir nicht erklärt (und auch bei anderen die ich mir angeschaut 
habe) wie man es zum Laufen bekommt. Dort werden immer nur die Bits für 
die einzelnen Funktionen (Löschen, Cursor bewegen, usw.) und die Bits 
für die Zeichen angegeben.

Wie ihr vielleicht gemerkt habt, tue ich mir gerade ziemlich schwer. 
Deshalb würde ich mich freuen, wenn mir jemand erklären könnte, wie ich 
nun anfangen soll. Dann kann ich Schritt für Schritt arbeiten.

von mompf (Gast)


Lesenswert?

Mitlesa schrieb:
> Also was jetzt ..... mit oder ohne Arduino Funktionen?

Habe ich falsch ausgedrückt. Mit Arduino Funktionen aber ohne die 
LCD-Library für den Arduino.

von Heini (Gast)


Lesenswert?

Auf der letzten Seite steht es doch schon ideal. 4-Bit Modus usw - alles 
da!
Was brauchst du denn noch?!

von Mitlesa (Gast)


Lesenswert?

mompf schrieb:
> Ich komme gerade überhaupt nicht weiter.

Du hast einen Controler namens HD44870 genannt bekommen. Du wirst doch
mit Hilfe einer Suchmaschine dir ein Datenblatt herunterladen können?

von Flip B. (frickelfreak)


Lesenswert?

> Nehmen wir mal an, dass ich hier das passende Datenblatt habe:
> http://oomlout.com/parts/LCDD-01-datasheet.pdf
>
> Dort wird mir nicht erklärt (und auch bei anderen die ich mir angeschaut
> habe) wie man es zum Laufen bekommt.

Top beispiel! Schau mal auf Seite 34.


>Dort werden immer nur die Bits für
> die einzelnen Funktionen (Löschen, Cursor bewegen, usw.) und die Bits
> für die Zeichen angegeben.

ja, die Kommandos auch.
Dafúr denkst du dir dann ein System aus, wie du  die funktionen bequem 
einsetzen kannst.


>Habe ich falsch ausgedrückt. Mit Arduino Funktionen aber ohne die
>LCD-Library für den Arduino.
Spar dir das lieber. die Pinfuntkionen sind schnarchlangsam. Schau ins 
datenblatt deines controllers und setze das richtig um.

von Planlos (Gast)


Lesenswert?


von Mitlesa (Gast)


Lesenswert?

mompf schrieb:
> Deshalb würde ich mich freuen, wenn mir jemand erklären könnte, wie ich
> nun anfangen soll.

Also gut. Ich erkläre es dir:

Du nimmst das erwähnte Tutorial. Dann:

- Lese den ersten Abschnitt und verstehe ihn
- Lese den zweiten Abschnitt und verstehe ihn
- Lese den dritten Abschnitt und verstehe ihn
- Lese den vierten Abschnitt und verstehe ihn

und so weiter, und so weiter .....

von Karl M. (Gast)


Lesenswert?

Guten Tag,

vielleicht nimmst Du diese Anleitung als Einstieg in das Thema LCD 
Ansteuerung.

# http://www.sprut.de/electronic/lcd/

Und schaust dann noch mal in das Datenblatt deines LCD, auf dem muss 
eine Kennung sein und damit wird man sicherlich fündig.
Bitte mach mal hochauflösende Bilder von beiden Seiten und bitte mit 
genügend Licht.

von mompf (Gast)


Lesenswert?

Karl M. schrieb:
> Bitte mach mal hochauflösende Bilder von beiden Seiten und bitte mit
> genügend Licht.

Das Problem ist ich habe das Display schon verbaut und auf den Bildern 
könntest du nun nichts mehr erkennen. Aber hier ist das Set, bei welchem 
der LCD dabei war.

http://www.amazon.de/SunFounder-Project-Starter-Arduino-Mega2560/dp/B00D9M4BQU/ref=sr_1_2?ie=UTF8&qid=1455825487&sr=8-2&keywords=sunfounder

von Mitlesa (Gast)


Lesenswert?

mompf schrieb:
> Das Problem ist ich habe das Display schon verbaut

So wie du dich dauernd gibst scheinst du darauf zu warten dass
dir die gebratenen Tauben in den Mund fliegen.

von Michael U. (amiga)


Lesenswert?

Hallo,

Du kannst auch mit der ArduinoIDE das GCC-LCD-Tutorial durcharbeiten 
wenn Du willst.
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

Einen leeren Sketch aufmachen, alles im Fenster löschen und statt dessen 
den C-Code reinkopieren.
Compilieren und Flashen dann wie üblich.
Ausgelagerte .h und .c - Dateien in den Projektordner kopieren, die 
tauchen dann als Tabs auf. Einziges Zugeständnis: die .c-Datei mit der 
main() muß wie der Projektordner .ino heißen, alle sonstigen .c Dateien 
in .ino umbenennen.

Letzteres muß nicht sein, als .c müssen aber die .h angepasst werden 
sonst gibt es Fehlermeldungen.

Diese Version hat den Vorteil, daß man sich nicht an eine andere IDE 
gewöhnen muß und trotzdem C-Tutorials gut nachvollzeihen und 
ausprobieren kann. Du kannst dann aber keine C++ oder 
Arduino-spezifischen Klassen nutzen.
pinMode(), digtalWrite(), analogRead() usw. usw. sind dann unbekannt, 
Arduino-Libs kannst Du so auch nicht einbinden.

Man auch dieses kombinieren, das ist aber am Anfang nicht zu empfehlen, 
man hat dann zuviele Baustellen...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Mitlesa (Gast)


Lesenswert?

Michael U. schrieb:
> Du kannst dann aber keine C++ oder Arduino-spezifischen Klassen nutzen.

Der auf die gebratenen Tauben Wartende hat keine Ahnung was eine
Klasse beim Arduino ist.

Er kennt aber vermutlich eine Schulklasse.

von mompf (Gast)


Lesenswert?

Mitlesa schrieb:
> Also gut. Ich erkläre es dir:
>
> Du nimmst das erwähnte Tutorial. Dann:
>
> - Lese den ersten Abschnitt und verstehe ihn
> - Lese den zweiten Abschnitt und verstehe ihn
> - Lese den dritten Abschnitt und verstehe ihn
> - Lese den vierten Abschnitt und verstehe ihn
>
> und so weiter, und so weiter .....

Mitlesa schrieb:
> So wie du dich dauernd gibst scheinst du darauf zu warten dass
> dir die gebratenen Tauben in den Mund fliegen.

Mitlesa schrieb:
> Der auf die gebratenen Tauben Wartende hat keine Ahnung was eine
> Klasse beim Arduino ist.
>
> Er kennt aber vermutlich eine Schulklasse.

Wenigstens versuchen hier noch einige zu helfen. Deine letzen Beiträge 
haben mich nicht wirklich vorangebracht.

Ich kann mit dem Code aus deinem Tutorial einfach nichts anfangen. Ich 
habe bisher nur mit dem Arduino programmiert und will deshalb auch die 
Funktionen wie digitalWrite verwenden.

Wie ihr gemeint habt, soll die Anleitung auf Seite 34 die richtige sein. 
Dann würde ich nun einfach so "abtippen".

1. Die jeweiligen Bits auf HIGH/LOW setzen
2. delay(15)
3. die jeweiligen Bits auf HIGH/LOW setzen
4. delay(4.1)
...
Und denn die Init abgeschlossen ist, die Bits für das "Z" auf HIGH oder 
LOW setzen

von Frank G. (frank_g53)


Lesenswert?

mompf schrieb:
> Ich kann mit dem Code aus deinem Tutorial einfach nichts anfangen.

Guck mal hier, da hat jemand das ganz genau 
erklärt:http://erik-bartmann.de/component/attachments/download/15.html

Aber Achtung, Auszug aus dem Buch: "Bevor wir uns an die Arbeit
machen, ist es unabdingbar, dass jeweilige Datenblatt zu studieren. 
Andernfalls können wir die
Sache vergessen,..."

;)

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

mompf schrieb:
> 4. delay(4.1)

Damit wirst du nun so gar kein Glück haben. Guck dir mal an, was delay() 
für ein Argument benötigt. Dem Compiler irgendetwas vorzuwerfen und zu 
hoffen, dass der es schon richten wird, führt leicht dazu, dass das 
Programm hinterher etwas anderes tut, als du erwartest.
https://www.arduino.cc/en/Reference/Delay

von Bit Bettler (Gast)


Lesenswert?

Auch wenn gegen deine Vorgehenweise prinzipiell nix einzuwenden ist, du 
hast 3 von 4 Baustellen zuviel offen.

Um das "Datenblattlesen" (inkl. Verstehen!) hilft es das LCDisplay auf 
dem Steckbrett zu verschalten und NUR Schalter (nicht Taster, 4 f.d. 
richtigen Datenleitungen + 3-4 f.d. Steurleitungen), Pullupwiderstände, 
Kontrastpoti und Versorgungsspannung.

Die händische Geschwindigkeit spielt keine Rolle beim HD44780.
Damit lassen sich einzelne Buchstaben z.B. "Z" anzeigen.

Nach überwinden dieser Verständnishürde klappt es dann mit Code im 
"digitalWrite(...);"-Stil.

von Michael U. (amiga)


Lesenswert?

Hallo,

für 'E' würde ich einen Taster nehmen mit Widerstand gegen GND nehmen.

Bei Datenblättern dieser Art generell: Logiktabellen lesen und verstehen 
lernen, Timingdiagramme lesen und verstehen lernen und lernen, daß die 
kleinen Texte zu den winzigen Anmerkungsziffern oft die wichtigsten 
sind...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Jürgen S. (jurs)


Lesenswert?

mompf schrieb:
> Mir würde es am Anfang reichen, einfach
> nur ein Zeichen beispielsweise ein "Z" anzuzeigen.
>
> Kann mir dabei jemand weiterhelfen oder gibt es dazu schon ein passendes
> Tutorial?

Irgendwie scheinst Du das Pferd vom Schwanz her aufzäumen zu wollen.

Diese Textmode-Displays haben im Prinzip zwei verschiedene Betriebsarten 
8-Bit-Mode (8 Datenleitungen, 2 Steuerleitungen) und 4-Bit-Mode (4 
Datenleitungen, 2 Steuerleitungen).

Und je nachdem mit wie vielen Leitungen Du Dein Display am 
Mikrocontroller anschließen möchtest (10 Leitungen oder 6 Leitungen), 
wäre der Anfang bei der softwaretechnischen Ansteuerung:
- Display-Controller resetten
- Display-Controller auf 8-Bit-Mode oder 4-Bit-Mode initialisieren

Und wenn das dann soweit funktioniert hat (der 4-Bit Mode ist 
komplizierter zu initialisieren), kannst Du am Ende dann entweder mit 
einem Befehl (8-Bit Mode) an das Display (oder mit zwei Befehlen (jedes 
4-Bit Nibble getrennt im 4-Bit-Mode) ein Zeichen an das Display senden, 
das das Zeichen dann anzeigt.

Kommentierten AVR-Code zur Ansteuerung solcher Displays, die quasi 
Tutorial-Charakter haben, findest Du auf dieser Website.

Aber die Arduino-IDE bringt auch mit der LiquidCrystal-Library eine auf 
Arduino-Boards direkt einsetzbare Library mit extrem einfach 
verständlichem Befehls-Interface dafür mit. Das ist Dir zu einfach?

von Mitlesa (Gast)


Lesenswert?

Jürgen S. schrieb:
> Irgendwie scheinst Du das Pferd vom Schwanz her aufzäumen zu wollen.

Nicht gecheckt?

Du schreibst dir hier die Finger wund und mompf hat schon längst
aufgegeben. Wenn du die Beiträge alle gelesen und verstanden
hättest wäre auch dir klar dass er nur darauf wartet dass ihm
gebratene Tauben in den Mund fliegen.

von mompf (Gast)


Lesenswert?

Ja ich habe zwischenzeitlich aufgegeben und bin auch jetzt noch bei 
Null.
Wenigstens habe ich nun aber das Datenblatt des Displays gefunden. Ich 
habe ein EA W162-X3LW.

http://cdn-reichelt.de/documents/datenblatt/A400/DS_OLED_EA.pdf

In dem Datenblatt findet man ein Initialisierungsbeispiel für den 8-Bit 
Modus. Die Funktionen void initDisplay(void) und void WriteIns(char 
instruction) würde ich nun "einfach so" runterprogrammieren.

Allerdings würde ich digitalWrite (RS, HIGH) statt RS_DD=1 schreiben, 
ganz nach den Arduino Funktionen eben.

Leider kann ich aber mit CheckBusy() in der Funktion WriteIns nichts 
anfangen. Das muss doch irgendwo definiert sein.

Und anstatt DATE_PORT_DD würde ich einfach die einzelnen Datenleitungen 
(DB0-DB7) entweder auf HIGH oder eben auf LOW setzen.

Passt dies soweit??? Nun müsste die Initalisierung abgeschlossen sein 
und ich kann mich an das Senden von Zeichen machen?

von Guest by AVR (Gast)


Lesenswert?

Was ist DATE_PORT_DD ?

Es gibt doch genügend fertiger Code, den kannst Du verstehen und dann 
deinen eigenen schreiben.

Nun Arduino ist nicht die letzte Weisheit, auch in Bezug auf der 
Geschwindigkeit - sie sind sehr langsam.
Lerne AVR Gcc von Grundauf ohne die Arduino Welt.

Alles andere bedeutet ein nicht verstehen der Materie.

von Guest by AVR (Gast)


Lesenswert?

Hallo,

was CheckBusy() bedeuten soll ist im Datenblatt unter
"Read Busy Flag and Address" beschrieben.

Gemeint ist da Bit mit der Bezeichnung BF mit der Bitnummer 7.

Also in etwa so, wenn man read_lcddata() geschrieben hat.
1
bool_t CheckBusy()
2
{
3
  uint8_t read_data = read_lcddata();
4
  return (read_data & (1<<7)); /*Busy Flag gesetzt ?*/
5
}

von W.S. (Gast)


Lesenswert?

mompf schrieb:
> Ja ich habe zwischenzeitlich aufgegeben und bin auch jetzt noch bei
> Null.

herrjemine, wie dieses bloß?

Im Prinzip bauchst du dochbloß genau das zu tun, was auf der Seite 5 des 
von dir selbst angegebenen Manuals beschrieben ist.

Das kann doch wohl nicht so schwer sein. Im 4 Bit Modus mußt du zuerst 
das höherwertige Nibble und dann das niederwertige Nibble ausgeben. Zum 
ganz blutigen Anfang braucht so ein zweizeiliges Alpha-Display einen 
ganz bestimmten Befehl, an dem es erkennen kann, ob da nur 2x 4 Bit oder 
1x 8 Bit ankommen. Ansonsten ist eigentlich alles gleich.

mompf schrieb:
> digitalWrite (RS, HIGH)

Laß doch bloß solches Zeugs bleiben. Du hast einen µC, der µC hat Pins, 
diese sind (allervermutlichst) zu Ports zusammengefaßt und irgendwo hat 
auch dein µC ein paar Register in seiner Hardware, wo man einstellen 
kann, ob an einem Pin eine HW-Funktion (UART, SPI, I2C, Counter use.) 
anliegen soll oder ob dieses Pin ein simpler digitaler Ein- oder Ausgang 
sein soll.

Nun guckst du dir die Pins aus, wo du dein Display anschließen willst 
und initialisierst dir die dafür benötigten Pins als simple digitale 
Ausgänge.

Dann schreibst du dir ein paar ganz einfache Funktionen selber, nämlich 
sowas:

void SetRS_hi(void)
{ hier eben das Portregister bemühen, was zum Pin für das R/S Signal 
führt
}

void SetRS_lo(void)
{ hier eben das Portregister bemühen, was zum Pin für das R/S Signal 
führt
  zum Beispiel PtB.18 oder wie das bei deinem µC denn so heißen mag
}

void SetE_hi(void)
{ dito... }

void SetE_lo(void)
{ ebenso}

void SetRW_hi(void)
{ ebenso}

void SetRW_lo(void)
{ebenso}

und

void NibbleAus(char B)
{ long i;
  B = B & 0xF; // nur low-nibble übriglassen
  // wenn deine 4 Daten an PtB.24 bis PtB.27 rauskommen sollen
  i = PtB & (0xF << 24);
  PtB = i | (B << 24);
  SetE_hi();
  Delay(irgendwas); // deine simple Delayfunktion
  SetE_lo();
}

und zum Schluß

void (ByteAus(char B)
{ NibbleAus(B>>4);
  NibbleAus(B);
}

So. den Rest suchst du dir aus der in dem Manual angegebenen Tabelle 
selbst raus. Du hast mit den obigen Primitivst-Funktionen die 
eigentliche HW soweit abstrahiert, daß du alle beteiligten Signale per 
selbsterklärender Funktion so einstellen kannst, wie du es brauchst.

Und zum "CheckBusy()" ist z sagen, daß dies einfach nur ne Abfrage des 
Bit 7 ist, was anzeigt, ob das Display bereit ist oder nicht. Das kannst 
du dir sparen, wenn du die in der Tabelle angegebenen Zeiten mittels 
deiner Delay-Funktion einhältst.

Also stell dich nicht so jungfräulich an, wenn man erst mal nen Blick in 
das eigentliche Manual zum µC und zum Display getan hat, ist das alles 
viel einfacher als irgendwelche schwülstigen Blabla-Funktionen aus 
vorgekautem Zeugs.

W.S.

von W.S. (Gast)


Lesenswert?

Nachtrag:

W.S. schrieb:
> PtB = i | (B << 24);

bei manchen popligen Achtbittern führt das zu nix, weil die nicht <<24 
schieben können. Aber das war ja auch nur ein Beispiel, häufig genug 
wird das Ganze so gehandhabt, daß ein 8 Bit Port hergenommen wird, wo 
dann Port.4 bis Port.7 für das Nibble genommen wird und Port.0 bis 3 
dann für die restlichen Signale nach Gusto.

W.S.

von Karl M. (Gast)


Lesenswert?

Guten Abend,

für Anfänger finde ich das Tutorial von Peter (peda) sehr gut zu 
gebrauchen.

http://www.avrfreaks.net/forum/tutc-lcd-tutorial-1001

Wenn man hier mit auch noch C mehr versteht, dann sollte man auch noch 
die paar Anpassungen für das OLED Display machen können. Denn es hat 
etwas andere Konfiguration.

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.