Handydisplays am ATMega für einen Ein-Chip-Computer
Transcrição
Handydisplays am ATMega für einen Ein-Chip-Computer
Handydisplays am ATMega für einen Ein-Chip-Computer Marcel Jakobs July 9, 2007 1 Contents 1 Einleitung 1.1 Vorteile eines Handydisplays . . . . . . . . 1.2 Einsatzgebiete . . . . . . . . . . . . . . . . 1.2.1 In mobilen Anwendungen . . . . . 1.2.2 Als Status- und Messwertanzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 4 4 2 Funktionsweise 2.1 Funktionsweise eines LCD . . . . . . . . 2.2 Ansteuerung eines Handydisplays . . . . 2.2.1 Initialisierung . . . . . . . . . . . 2.2.2 Senden und Anzeigen von Daten 2.2.3 Shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 5 6 6 3 Welche Displays kann man ansteuern 3.0.4 Nokia 3310 . . . . . . . . . . . 3.0.5 Nokia 6310 . . . . . . . . . . . 3.0.6 Nokia 6100 . . . . . . . . . . . 3.0.7 Siemens S65 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 7 7 8 4 Die glcd Bibliothek 4.1 Anforderungen der glcd . . 4.2 Funktionen der glcd . . . . 4.2.1 Grafikfunktionen . . 4.2.2 Textfunktionen . . . 4.2.3 Sonstige Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 10 10 11 11 5 Beispiele 5.1 Siemens S65 Display mit LS020xxx Chipsatz . . . . . . . . . . . 5.1.1 Anschlussbelegung . . . . . . . . . . . . . . . . . . . . . . 5.1.2 Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3 Senden und Anzeigen von Daten . . . . . . . . . . . . . . 5.1.4 Shutdown-Sequenz . . . . . . . . . . . . . . . . . . . . . . 5.2 Nokia 6100 Display mit Philips Chipsatz . . . . . . . . . . . . . . 5.2.1 Anschlussbelegung . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . 5.2.3 Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4 Senden und Anzeigen von Daten . . . . . . . . . . . . . . 5.2.5 Shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 S65 Display mit LS020xx Chipsatz als Oszilloskop am ATMega16 5.3.1 Pinbelegung . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Quelltext . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.3 Leistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 11 12 13 14 15 15 16 16 17 17 17 17 17 18 . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . 6 Probleme 18 6.1 Nokia 6100 Display Connector . . . . . . . . . . . . . . . . . . . 18 6.2 S65 simple display3 Testprogramm . . . . . . . . . . . . . . . . . 19 7 Zusammenfassung 19 3 1 Einleitung 1.1 Vorteile eines Handydisplays Ein Handydisplay bietet einige Vorteile. Durch seine geringe Grösse und den niedrigen Stromverbrauch ist es vor allem in mobilen Anwendungen praktisch. Da Handydisplays in schwarz/weis schon ab 2-3 Euro zu haben sind, sind sie ein günstiges Mittel um Daten textuell oder grafisch anzuzeigen. Die Ansteuerung per SPI wird von ATMega Microcontrollern von Haus aus unterstützt und ist somit leicht zu implementieren. Die Auflösung eines Handydisplays ist zwar im allgemeinen sehr gering, aber ein Atmel µC hätte sowieso Probleme mit (wesentlich) höheren Auflösungen 1.2 1.2.1 Einsatzgebiete In mobilen Anwendungen • Als mobile Anwendungsgebiete könnte man eine Spielkonsole (ähnlich des Gameboys) implementieren, die zur Ausgabe ein Handydisplay nutzt. Das ganze Gerät könnte man so klein wie ein handelsübliches Handy ausfallen lassen. • Mit einer Kamera z.B. aus einem Handy könnte man auch eine kleine digitalen Fotokamera bauen. Diese könnte die geschossenen Fotos z.B. auf eine SD-Karte speichern. • Ebenfalls mit einer Kamera könnte man sich einen ”Digitalen Rückspiegel” denken, der mit einigen Servomotoren sogar bewegt werden könnte. • Eine Art PDA bzw. elektronischer Notizblock wäre auch denkbar. • Mit einigem zusätzlichen Aufwand liesse sich vielleicht sogar ein mobiler Fernseher entwickeln oder ein Videoplayer, obwohl der Atmel dann schnell an seine Grenzen stösst. Man müsste die Videos auf jeden Fall vorher auf die Displayauflösung herunterskalieren und bräuchte mit Sicherheit auch noch zusätzliche Hardware. 1.2.2 Als Status- und Messwertanzeigen Als Status- und Messwertanzeige kann ein Handydisplay recht gut zusammen mit einem Atmel MC verwendet werden. • Ein GPS-Gerät, welches auf dem Display einen Kompass sowie die Koordinaten und zusätzliche Informationen wie zurückgelegte Strecke, Geschwindigkeit... anzeigt ist eine Möglichkeit. • Die Anzeige von Signalstärken verschiedener Funkverbindungen wie WLAN, Bluetooth u.Ä. könnte man auch auf einem Handydisplay anzeigen lassen. 4 • Ein MP3-Player, der Trackinformationen auf einem Handydisplay anzeigt wurde schon mehrfach realisiert. Dazu gibt es jede Menge Informationen im Netz. • Ein einfaches digitales Oszilloskop liesse sich auch recht schnell mit einem Atmel und einem Handydisplay realisieren. Für genauere Messwerte kann man auch einen ADC benutzen. • Mit einigen Sensoren liesse sich auch eine kleine Wetterstation aufbauen, die Ihre Messwerte auf einem Handydisplay ausgibt. 2 Funktionsweise 2.1 Funktionsweise eines LCD Ein LCD ist ein zweidimensionales Array aus speziellen Flüssigkristallen. Bei Farbdisplays besteht ein Pixel aus 3 Subpixeln, die die je eine der 3 Grundfarben annehmen können. Diese Kristalle können die Polarisationsrichtung des Lichts beeinflussen und somit das Bild erzeugen. Durch elektrische Felder können die Kristalle gesteuert werden. Die meisten Handydisplays haben einen integrierten Controller, der über SPI angesteuert werden kann. 2.2 Ansteuerung eines Handydisplays Die Pinanzahl und -Belegung der verschiedenen Handydisplays ist sehr unterschiedlich und schwer zu bekommen. Die meisten Displaycontroller werden per SPI angesteuert, wodurch es auch recht leicht ist mehrere Displays mit einem µC anzusteuern indem man einfach die Slave Select Leitungen entsprechend setzt. Die Befehle sind in Bitfolgen codiert und teilweise schwer herauszubekommen. Zur Ansteuerung eines Handydisplays braucht man Informationen über 4 Dinge: • Pinbelegung • Initialisierung • Senden und Anzeigen von Daten • Shutdown 2.2.1 Initialisierung Ein Handydisplay wird in der Regel in drei Schritten initialisiert (kann von Display zu Display variieren). Um das Display anzuschalten wird eine Initialisierungssequenz gesendet um den Versorgungschip des Displays zu programmieren. Danach werden die Displayparameter gesendet. Bei manchen Displays muss auch der Aufwärtswandler (Boost circuit) von startup nach active 5 umgestellt werden. Nach dem Hochfahren kann das Display zur Anzeige genutzt werden. 2.2.2 Senden und Anzeigen von Daten Es gibt bestimmte Befehle, die das Display in einen Empfangsmodus setzen und dann (je nach Farbtiefe) jedes nachfolgende Bit, Byte oder je 2 Byte als Pixel interpretieren. Diese Pixel werden dann je nach Befehl zeilenweise oder spaltenweise auf dem Display dargestellt. Den Befehlen können teilweise auch Parameter in Form von Koordinaten mitgegeben werden, um festzulegen an welcher Stelle das Zeichnen geschehen soll. Es gibt auch Befehle um einzelne Pixel zu setzen, bei denen man nur die Koordinaten und die Farbe angibt. 2.2.3 Shutdown Ein Handydisplay benötigt normalerweise eine ”power down sequenz” um die Spannungen zu entladen. Ansonsten kann die Lebensdauer des Displays reduziert werden. Qelle: http://www.mikrocontroller.net/attachment/19342/Using the Siemens S65 Display.pdf 3 Welche Displays kann man ansteuern Es gibt nur zu wenigen Displays genügend Informationen um sie ansteuern zu können. Zwar gibt es jede Menge Projekte und Codebeispiele zu Displayansteuerungen, jedoch ist die Anzahl der verschiedenen Displaytypen sehr gering. Zu folgenden Displaytypen gibt es im Internet Informationen um sie mit Atmel µC anzusteuern: • Nokia 3310 • Nokia 6310 • Siemens S65 • Nokia 6100 3.0.4 Nokia 3310 Das Display des Nokia 3310 ist auch im Nokia 3330 und 3410 verbaut. Es hat 84 x 48 Pixel Auflösung mit zwei Farben (schwarz/weis). Man bekommt es bei eBay schon für 2-3 Euro, womit es das günstigste Handydisplay ist, wozu es Informationen zur Ansteuerung im Internet gibt. Mehr Informationen gibt es unter: http://www.mikrocontroller.net/topic/25039 6 http://www.mikrocontroller.net/topic/12150 (leider nur für PIC-Controller, aber dort ist auch ein leicht protierbarer C-Quelltext) Auch der YAMPP-7 (Yet Another MP3 Player) nutzt dieses Display: http://www.myplace.nu/mp3 Nokia 3310 3.0.5 Nokia 3310 Nokia 6310 Das Display des Nokia 6310 ist auch im 6310i verbaut. Es besitzt eine Auflösung von 96 x 65 Pixeln und kann 2 Farben darstellen. Bei eBay kann man es für ca 5 Euro ersteigern. Eine Möglichkeit zur Ansteuerung in C gibt es unter http://www.mikrocontroller.net/topic/58257 . Allerdings wird dabei nicht das Atmel eigene Hardware-SPI genutzt und es gab noch keine Rückeldungen, dass diese Ansteuerung auch bei anderen funktioniert hat. 3.0.6 Nokia 6100 Das Display des Nokia 6100 wurde ebenfalls in vielen anderen Nokia-Handys verbaut. Unter anderem: 2600, 2650, 2652, 3100, 3200, 3100, 3200, 5100, 5140, 6030, 6220, 6610(i), 7210, 7250(i) Das Display hat eine Auflösung von 130 x 130 Pixel und eine Farbtiefe von 12 Bit (4096 Farben). Bei eBay ist es für ca. 10-15 Euro zu erstehen. Das Display gibt es mit 2 verschiedenen Controllern: Den Epson S1D15G10 Chipsatz auf einer grünen Leiterplatte und den Philips PCF8833 Chipsatz auf einer orange/braunen Leiterplatte. Diese werden verschieden angesprochen. Informationen zum Philips Chipsatz gibt es auf http://thomaspfeifer.net/nokia 6100 display.htm Informationen zum Epson Chipsatz gibt es unter http://www.e-dsp.com/controllinga-color-graphic-lcd-epson-s1d15g10-controller-with-an-atmel-avr-atmega32l 7 Nokia 6100 3.0.7 Siemens S65 Das Display des Siemens S65 hat eine Auflösung von 132 x 176 Pixeln und unterstützt eine Farbtiefe von 16Bit (65.536 Farben). Damit ist es das grösste Display der hier Beschriebenen. Es ist auch im Siemens M65, CX65, CXT65 und SK65 verbaut. Man bekommt es bei eBay für ca. 8-10 Euro. Es gibt 3 Controller, die unterschiedlich angesteuert werden: LS020xxx, LPH88xxx, L2F50xxx 8 L2F50xxx LPH88xxx LS020xxx Viele Informationen und Links sowie eine Zusammenfassung gibt es hier: http://www.mikrocontroller.net/topic/31403 http://www.superkranz.de/christian/S65 Display/DisplayIndex.html Siemens S65 4 Grössenvergleich zwischen Nokia 6100 (links) und Siemens S65 (rechts) Die glcd Bibliothek Die glcd ist eine Bibliothek für Handydisplays, die für das Nokia 6100 Display entwickelt wurde. Mittlerweile wurde sie auch schon auf das Siemens S65 Display (LS020xxx Chipsatz) portiert. Dort funktioniert jedoch nur der 90-Modus (Hochformat). Eine Portierung auf as S65 Display mit LPH88xxx Chipsatz soll auch möglich 9 sein. Die Bibliothek stellt eine eine Menge Grafik- und Textoperationen zur Verfügung, mit denen schnell Anwendungen entwickelt werden können. Es werden auch Displayfunktionen wie das Drehen um 90, 180 oder 270 und das Hardwarescrolling unterstützt. Beispiel für die glcd auf einem S65 4.1 Anforderungen der glcd Die glcd ist compiliert ca 3-4KB gross (beim Compilieren mit einer kleinen Anwendung). Man sollte mindestens einen Atmega8 mit 8Mhz benutzen um das Display anzusteuern, damit man brauchbare und zeitlich annehmbare Ergenbnisse erzielt. 4.2 4.2.1 Funktionen der glcd Grafikfunktionen Die glcd bietet einige grundlegende Grafikfunktionen um das Programmieren des Displays zu vereinfachen. Diese sind im einzelnen: 10 • Pixel setzen • Linien zeichnen • Rechtecke zeichnen, füllen und mit Border versehen • Ellipsen und Kreise zeichnen, ebenfalls füllen und Border • Alle Grafikfunktionen unterstützen transparentes Zeichnen 4.2.2 Textfunktionen Die Textfunktionen der glcd sind sehr praktisch, da man dadurch nicht erst die Zeichen definieren muss. Es existiert auch ein Programm, um weitere Fonts zu erstellen. Die Textfunktionen sind im Einzelnen: • Proportionale und Fixed Fonts mit mehreren Farben darstellen • Zeichenausgaben können mit Hilfe eines separaten Fenster formatiert werden. • Mit Hilfe von grossen Fonts können Icons/Bitmaps dargestellt werden 4.2.3 Sonstige Funktionen Die glcd bietet auch einige zusätzliche Features, die oft sehr praktisch sein können und die internen Funktionen des Displays ausnutzen: • Alle Ausgaben können durch ein separates Clipping Rect beschnitten werden • Alle Ausgaben ans Display können 0, 90, 180 oder 270 rotiert werden • Hardware Scrolling • Standardmässige Anzeige mit 256 Farben, leicht auf 12Bit oder 16Bit zu erhöhen. Quellen: http://www.mikrocontroller.net/topic/12218#new http://www.mikrocontroller.net/attachment/3621/glcd.zip 5 5.1 5.1.1 Beispiele Siemens S65 Display mit LS020xxx Chipsatz Anschlussbelegung Die Anschlussbelegung des S65 Displays ist im folgenden Bild veranschaulicht: 11 5.1.2 Initialisierung Die Initialisierung des Displays erfolgt in 4 Schritten. Init1: (Software Reset) 0xFDFD, 0xFDFD Zwischen dem ersten und dem zweiten Init sollte eine mindest 50 ms lange Pause sein. Init2: 0xEF00 0xEE04, 0x1B04 12 0xFEFE, 0xFEFE 0xEF90, 0x4A04, 0x7F3F, 0xEE04, 0x4306 Danach wartet man ca 7ms bis die internen Spannungseinstellungen stimmen. Init3: 0xEF90, 0x0983, 0x0800, 0x0BAF, 0x0A00, 0x0500, 0x0600, 0x0700 0xEF00 0xEE0C 0xEF90, 0x0080 0xEFB0, 0x4902 0xEF00 0x7F01, 0xE181 0xE202 0xE276 0xE183 Für eine stabile Initialisierung sollte man nun wieder ca. 50 ms warten (kann aber auch kürzer sein) Init4: 0x8001 0xEF90, 0x0000 Danach ist das Display betriebsbereit. Man sollte jedoch sofort nach der Initialisierung das Display löschen, da es Zufallsinhalte anzeigt. 5.1.3 Senden und Anzeigen von Daten Der LS020xxx-Controller bietet eine Menge Funktionen, um das Display zu beschreiben. Hier die Funktion um einen Bildschirmbereich zu beschreiben. • Sende folgendes: MEMWR (0xEF90) • 0x05OR mit OR=0x04 vlnr und OR=0x00 vrnl • 0x06YS mit YS= Endpunkt für y (Anfang ist 130) • 0x07XS mit XS= Endpunkt für x (Anfang ist 130) • Das ganze Display wird durch XS=0 und YS=0 beschrieben • Danach alle Pixel in der angegebenen Reihenfolge senden Mit dem PMEMWRX- bzw. PMEMWRY-Befehl kann man auch die Anfangspositionen angeben: PMEMWRX: 0xEF90, 0x0504, 0x08X1, 0x09X2, 0x0AY1, 0x0BY2 PMEMWRY: 0xEF90, 0x0500, 0x08X1, 0x09X2, 0x0AY1, 0x0BY2 Mit (X1,Y1) = Startposition, (X2,Y2) = Zielposition. Nach dem Kommando werden alle Pixel in der Angegebenen Reihenfolge gesendet. 13 Mit X1=X2 und Y1=Y2 kann man auch einzelne Pixel setzen 5.1.4 Shutdown-Sequenz Die Shutdownsequenz des LS020xxx-Chipsatzes ist nicht bekannt. Als Beispiel hier die Sequenz des LPH88xxx-Controllers (Leider sind nicht mehr Informationen verfügbar): 0x74 0x00 0x0D 0x76 0x05 0x05 0x74 0x00 0x0E 0x76 0x1D 0x1F 0x74 0x00 0x03 0x76 0x00 0x00 14 5.2 5.2.1 Nokia 6100 Display mit Philips Chipsatz Anschlussbelegung 15 5.2.2 Kommunikation Der Phillips-Controller benutzt ein 9Bit Protokoll, bei dem das MSB angibt, ob Daten (0) oder Kommandos (1) gesendet werden. Hier Der C-Quelltext zum Senden an das Display: 5.2.3 Initialisierung Init1: Setze Slave Select (CS), SCK (SCL), MOSI (SDA) und auf High, MISO (RESET) auf Low. Verdopple SPI Geschwindigkeit (Durch setzen des SPI2X-Bits im SPSR-Register) Gehe in den SPI-Master Modus, setze Taktpolarität auf “High when idle”, Clockphase auf 1 . Danach 65 ms warten bis die Versorgungsspannung erreicht ist. MISO (RESET) auf Low, 1 Takt warten und wieder auf High stellen. Danach SlaveSelect (CS) auf Low setzen, damit der Slave ausgewählt wird. Init2: Danach müssen die folgenden Controllerbefehle ausgeführt werden: SOFT RESET (0x01), SLEEP OUT (0x11), BOOSTER ON (0x03) COLOR INTERFACE (0x3A), COLOR 8 BIT (0x02, kann auch 0x03 oder 0x04 für 12 bzw, 16 Bit sein), COLOR SET (0x2D) Einstellung der Farbtabellen: COLOR RED (0x00, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F), COLOR RED, COLOR BLUE (0x00, 0x08, 0x0B, 0x0F) MEM CONTROL (0x36) 1000100 ans Display senden (Memory-Controll Daten) Clipping- und Windowkoordinaten übergeben (jeweils Displaygrösse 1-130) Lösche Display (Fülle ein Rechteck der Ausmasse des Displays mit der Hintergrundfarbe) Init3: (Warten auf Booster und warten auf Display) Lese je 33 Bits bis 0x80000000 ankommt (Warten auf den Booster/Aufwärtsregler) 16 Lese je 33 Bits bis 0x400 ankommt (Warten auf das Display) Nun kann das Display benutzt werden. 5.2.4 Senden und Anzeigen von Daten Um ein Pixel an eine Position (x,y) mit Farbe z zu sezten geht man folgendermassen vor: • Senden des Kommandos SET X ADDR (0x2A) • Senden des Datums x, dann Senden des Datums MAX WIDTH -1 • Senden des Kommandos SET Y ADDR (0x2B) • Senden des Datums y, dann Senden des Datums MAX HEIGHT -1 • Senden des Kommandos MEM WRITE (0x2C) • Senden des Datums z 5.2.5 Shutdown Die Shutdownsequenz ist nicht bekannt und auch nicht in der glcd implementiert. 5.3 5.3.1 S65 Display mit LS020xx Chipsatz als Oszilloskop am ATMega16 Pinbelegung Das Display ist an PORTB angeschlossen. SCK, MISO und SS Leitungen sind nach dem Schema des Hardware SPI des ATMega16 verbunden. Der Pin PA0 (ADC0) wird zum Konvertieren des analogen Signals genutzt. Es sind weiterhin 4 Taster an den PORTC angeschlossen um die Anzeige umstellen zu können. 5.3.2 Quelltext Hier auszugsweise der das Codefragment, welches den ADC ausliest, auf die y-Koordinate umrechnet und dann den Punkt auf dem Display darstellt. (Die obere linke Ecke ist (0,0)) 17 5.3.3 Leistung Der ATMega läuft mit 20MHz und kann damit max 16µs pro Pixel anzeigen. Das entspricht 160KHz. Das Display ist horizontal und vertikal unterteilt in Bereiche zu je 32 Pixeln. Nun gibt es Einstellungen um pro Unterteilung 1,3 oder 5 Volt anzuzeigen bzw. zeitlich 512µs, 1ms, 10ms, 50ms, 100ms, 500ms oder 1s. 6 6.1 Probleme Nokia 6100 Display Connector Das Nokia 6100 Display hat einen ”Hirose” Stecker der sehr klein ist (5 Leitungen auf 2 mm). Es gibt auch Displays, die auf der Rückseite Lötpunkte haben, 18 jedoch sollte man den Verkäufer vorher danach fragen ob dies beim ausgesuchten Gerät auch der Fall ist. Anhand der Leiterplattenfarbe o.ä. lässt sich darüber keine Aussage machen. Es gibt einen Händler in Deutschland, der die entsprechenden Connectoren verkauft: http://www.shop.display3000.com Er bietet auch kleine Platinen an, die die Verbindungen des Steckers zu praktischen Lötanschlüssen herausführt: 6.2 S65 simple display3 Testprogramm Auf der Seite http://www.superkranz.de/christian/S65 Display/DisplayIndex.html gibt es für das S65 LCD neben der glcd für das Display auch ein Testprogramm (simple display3), welches zum erstmaligen Testen genutzt werden kann. Leider hat dieses Programm bei mir (auf dem LS020xxx Chipsatz) nicht funktioniert, obwohl alles richtig angeschlossen war. Die glcd hat jedoch (bei gleicher Anschlussbelegung) funktioniert. Daher empfehle ich direkt die glcd zu verwenden. Das Testprogramm der glcd wird ziemlich gross, so dass es nicht mehr in den Flash eines ATMega16 passt. Man muss es ein wenig abspecken, damit es klappt. 7 Zusammenfassung Handydisplays sind klein, günstig und leicht ansteuerbar. Dadurch und durch ihren geringen Stromverbrauch sind sie gerade für mobile Anwendungen gut geeignet. Neben sehr billigen ein- bis zweifarbigen Displays gibt es auch etwas teurere Farbdisplays. Es gibt jede Menge Projekte und Anleitungen im Netz, die sich aber nur auf insgesammt ca. 3 verschiedene Displays beziehen. Bei der Displaywahl sollte darauf geachtet werden, welcher Controller verbaut ist, da viele Displays des gleichen Handytyps verschiedene Controller besitzen, die auch verschieden angesprochen werden. 19