Nokia 3510i-LCD am AVR
(mit S1D15G14, Version 1.0)

Etwas mehr Geschwindigkeit!
Das war der Anreiz für mich, das 3510i-Display an einen Mikrocontroller anzuschließen. Diverse Versuche mit PICs fruchteten nicht allzu sehr - selbst bei 20MHz CPU-Takt konnte man noch richtig beobachten, wie das Bild aufgebaut wird. Zudem war dank des C-Compilers (CC5X) in keinster Weise optimiert und die 1k-Beschränkung lies meine Begeisterung gegen -1 sinken.

Mehr Hoffnung legte ich irgendwann um Weihnachten Anno 2005 (es sollte ein viel zu kurzer Weihnachtsurlaub werden - als Azubi im ersten darf man natürlich sowas aufregendes wie eine Inventur natürlich nicht verpassen. Ja, ich bin eigentlich werdender Anwendungsentwickler, aber ein ausgelernter Erbsenzähler kostet halt mehr... war nervenraubend, unerfüllend, langatmig - kurz: zum kotzen.), als ich anfing, mit einem AVR ein paar LEDs blinken zu lassen. Irgendwann blinkten sie Timergesteuert und das Ganze gefiel. Auch finanziell. Mehr Lob zu AVRs und deren C-Unterstützung etc. pp. gibt's im Projekt zur Lötstation.

Wie dem auch sei, das LCD sollte wesentlich schneller angesteuert werden. Also erst einmal den vorher geschriebenen Code auf PIC-Basis auf etwas AVR-taugliches portieren.
Nach ein paar wackeligen Gehversuchen und noch viel mehr programmierfaulen Abenden wurde die Bibliothek immer größer.

Momentan werden folgende Funktionen unterstützt:

- Direkte Datenausgabe an das LCD
- Farbe setzen
- Einen einzelnen Pixel zeichnen
- Den Displayinhalt löschen (bzw. mit der gesetzten Farbe füllen)
- Beliebige Linien zeichnen (nach Bresenham)
- Horizontale Linien zeichnen (wesentlich schneller als Bresenham)
- Gefüllte und nicht gefüllte Kreise zeichnen (nach Bresenham, Füllfunktion kommt von mir)
- Gefüllte und nicht gefüllte Rechtecke zeichnen
- Abgerundete Rechtecke zeichnen
- Einen Nibble aus dem Speicherbereich des Schriftenarray lesen
- Einzelne Zeichen und Strings zeichnen (bis Zeichengrößen von 15x32)
- Zeichen- und Textbreite ermitteln

Hinweise:

- Die Unterstützung für höhere Schriftarten als 8 Pixel wurde noch nicht getestet, wird aber demnächst erfolgen
- Die Mitgelieferte Schriftendatei ist unnötig aufgeblasen, es sind auch Zeichen vorhanden, die nie im Leben jemand verwenden würde
- Es geht sicherlich vieles schöner, schneller, besser

Geplante Erweiterungen/Änderungen:

- Bilder zeichnen (RAW 12-bit RBG, kein JPEG, GIF oder PNG)
- Gedrehte Texte (90°, 180°, 270°)
- Unterstützung für mehrere Schriftarten
- Skalierung von Schriften (2x, 4x,...)
- Software für dedizierten Grafikkontroller (I²C, SPI - so etwas wie von Electronic Assembly)
- Grafikroutinen optimieren (schneller)

Die "mitgelieferte" Beispielsoftware läuft auf einem AtMega8, getaktet mit 8MHz vom internem Oszillator. Die Farbverläufe dauern zwar eine kurze Weile, der Rest geht aber ab wie eine Gewehrkugel:

Demo der Testsoftware

Der Stromlaufplan für den Aufbau liegt wie immer als EAGLE-Schematic in der Zip-Datei.
Der Pegelkonverter CD4050 ist notwendig, wenn der AVR mit 5V betrieben wird

Bei dem Aufbau ist wie beim PC-Pendants zu beachten, dass die Betriebsspannung für das LCD auf 3V eingestellt wird bevor das Display an die Schaltung angeschlossen wird!
Ansonsten kann das Display zerstört werden!
Für den direkten Betrieb des Displays am AVR muss es sich um einen Low-Voltage-Prozessor (z. B. AtMega8L)  handeln, da die normalen Prozessoren bei den Spannungen nicht mehr richtig arbeiten!

Download:
AVR3510i_1.0.zip (65 KiB)

letzte Änderung 27.08.2006