<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-AT">
		<id>http://old.ethersex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Albrecht</id>
		<title>Ethersex_Wiki - Benutzerbeiträge [de-at]</title>
		<link rel="self" type="application/atom+xml" href="http://old.ethersex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Albrecht"/>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php/Spezial:Beitr%C3%A4ge/Albrecht"/>
		<updated>2026-04-05T08:54:50Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4279</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4279"/>
				<updated>2010-07-20T07:52:32Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: Link angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
Anbindung eines HD44780 (kompatiblen) LCD über ein Schieberegister.&lt;br /&gt;
Benötigt nur zwei Portpins am Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
Aufbau und Ansteuerung: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf CC2 2-Draht-LCD]&lt;br /&gt;
[http://streifenraster.de.vu Aufbau auf Streifenrasterplatine] (Projekte -&amp;gt; 2-Draht-LCD)&lt;br /&gt;
&lt;br /&gt;
Hardware-Pinning anpassen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`HD44780_2WIRE', `&lt;br /&gt;
    pin(HD44780_2WIRE_D, PC0)&lt;br /&gt;
    pin(HD44780_2WIRE_CLK, PC1)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
HD474780 Unterstützung in menuconfig aktivieren und connection-type &amp;amp;quot;2WIRE(74hct4094)&amp;amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4278</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4278"/>
				<updated>2010-07-20T07:50:26Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: Tippfehler korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
Anbindung eines HD44780 (kompatiblen) LCD über ein Schieberegister.&lt;br /&gt;
Benötigt nur zwei Portpins am Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
Aufbau und Ansteuerung: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf CC2 2-Draht-LCD]&lt;br /&gt;
[http://streifenraster.lima-city.de/2-draht-lcd.html# Aufbau auf Streifenrasterplatine]&lt;br /&gt;
&lt;br /&gt;
Hardware-Pinning anpassen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`HD44780_2WIRE', `&lt;br /&gt;
    pin(HD44780_2WIRE_D, PC0)&lt;br /&gt;
    pin(HD44780_2WIRE_CLK, PC1)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
HD474780 Unterstützung in menuconfig aktivieren und connection-type &amp;amp;quot;2WIRE(74hct4094)&amp;amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4275</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4275"/>
				<updated>2010-07-16T06:13:14Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
Anbindung eines HD44780 (kompatiblen) LCD über ein Schieberegister.&lt;br /&gt;
Benötigt nur zwei Portpins am Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
Aufbau und Ansteuerung: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf CC2 2-Draht-LCD]&lt;br /&gt;
[http://streifenraster.lima-city.de/2-draht-lcd.html# Aufbau auf Strefenrasterplatine]&lt;br /&gt;
&lt;br /&gt;
Hardware-Pinning anpassen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`HD44780_2WIRE', `&lt;br /&gt;
    pin(HD44780_2WIRE_D, PC0)&lt;br /&gt;
    pin(HD44780_2WIRE_CLK, PC1)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
HD474780 Unterstützung in menuconfig aktivieren und connection-type &amp;amp;quot;2WIRE(74hct4094)&amp;amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4274</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4274"/>
				<updated>2010-07-16T06:08:46Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
Anbindung eines HD44780 (kompatiblen) LCD über ein Schieberegister.&lt;br /&gt;
Benötigt nur zwei Portpins am Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
Aufbau und Ansteuerung: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf CC2 2-Draht-LCD]&lt;br /&gt;
&lt;br /&gt;
Hardware-Pinning anpassen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`HD44780_2WIRE', `&lt;br /&gt;
    pin(HD44780_2WIRE_D, PC0)&lt;br /&gt;
    pin(HD44780_2WIRE_CLK, PC1)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
HD474780 Unterstützung in menuconfig aktivieren und connection-type &amp;amp;quot;2WIRE(74hct4094)&amp;amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4273</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4273"/>
				<updated>2010-07-16T06:08:12Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
Anbindung eines HD44780 (kompatiblen) LCD über ein Schieberegister.&lt;br /&gt;
Benötigt nur zwei Portpins am Mikrocontroller.&lt;br /&gt;
Aufbau und Ansteuerung: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf CC2 2-Draht-LCD]&lt;br /&gt;
&lt;br /&gt;
Hardware-Pinning anpassen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`HD44780_2WIRE', `&lt;br /&gt;
    pin(HD44780_2WIRE_D, PC0)&lt;br /&gt;
    pin(HD44780_2WIRE_CLK, PC1)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
HD474780 Unterstützung in menuconfig aktivieren und connection-type &amp;amp;quot;2WIRE(74hct4094)&amp;amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4272</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4272"/>
				<updated>2010-07-16T06:05:17Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
siehe: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf Aufbau und Ansteuerung]&lt;br /&gt;
&lt;br /&gt;
Hardware-Pinning anpassen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`HD44780_2WIRE', `&lt;br /&gt;
    pin(HD44780_2WIRE_D, PC0)&lt;br /&gt;
    pin(HD44780_2WIRE_CLK, PC1)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
HD474780 Unterstützung in menuconfig aktivieren und connection-type &amp;amp;quot;2WIRE(74hct4094)&amp;amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4271</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4271"/>
				<updated>2010-07-16T06:04:41Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: /* 2-Draht-LCD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
siehe: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf Aufbau und Ansteuerung]&lt;br /&gt;
&lt;br /&gt;
Hardware-Pinning anpassen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`HD44780_2WIRE', `&lt;br /&gt;
    pin(HD44780_2WIRE_D, PC0)&lt;br /&gt;
    pin(HD44780_2WIRE_CLK, PC1)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
HD474780 Unterstützung in menuconfig aktivieren und connection-type &amp;amp;quot 2WIRE(74hct4094) &amp;amp;quot wählen.&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4270</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4270"/>
				<updated>2010-07-16T06:04:02Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
siehe: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf Aufbau und Ansteuerung]&lt;br /&gt;
&lt;br /&gt;
Hardware-Pinning anpassen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`HD44780_2WIRE', `&lt;br /&gt;
    pin(HD44780_2WIRE_D, PC0)&lt;br /&gt;
    pin(HD44780_2WIRE_CLK, PC1)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
HD474780 Unterstützung in menuconfig aktivieren und connection-type &amp;amp;quot2WIRE(74hct4094)&amp;amp;quot wählen.&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=LCD&amp;diff=4269</id>
		<title>LCD</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=LCD&amp;diff=4269"/>
				<updated>2010-07-16T05:54:46Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite beschäftigt sich damit ein LCD an die Platine anzuschliessen und zu betreiben.&lt;br /&gt;
==HD44780==&lt;br /&gt;
Die folgenden Displays wurden gestestet:&lt;br /&gt;
* Pollin, SC1604A, Bstnr. 120 572  (gestestet von #OR)&lt;br /&gt;
* Pollin, YL162-90, Bstnr. 120 060  (getestet von SuperRiggi)&lt;br /&gt;
* Pollin, TC1602E-01, Bstnr. 120 420 (getestet von Bitfehler)&lt;br /&gt;
* Solomon, LM1180SYL (getestet von Doozer)&lt;br /&gt;
* Conrad, AV2040, Bstnr. 181657-62, - Controller Type ks0067b auswählen - (getestet von punktl)&lt;br /&gt;
* Bürklin, Peaktech P204A, Bstnr. 72S1170, - Controller ks0067b (getestet von michi)&lt;br /&gt;
* Reichelt, Displaytech 162&lt;br /&gt;
* [[WINTEK WD-C2704M-1HNN]] (getestet von VBen)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
=== Pollin AVR-NET-IO ===&lt;br /&gt;
Da ich ein Pollin Board verwende, hier also die Beschreibung für ein AVR-NET-IO (:biggrin:). Den Anschluss des LCD habe ich von http://www.sprut.de/electronic/lcd/lcd.gif übernommen. Die folgende Grafik zeigt den Anschluss an den Controller:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ethersex_LCD.png]]&lt;br /&gt;
&lt;br /&gt;
Wer ein bißchen besser löten kann, benötigt keine Anschlussplatine und kann das Ganze auch direkt auf einen SUB-D Stecker löten, die Stiftnummern stehen in der Grafik dabei.&lt;br /&gt;
&lt;br /&gt;
Bei dem YL162-90 ist zu beachten, dass Vo (Kontrast) nicht mit positiver Spannung anzusteuern ist. Die negative Spannung ist am besten über ein 10kOhm-Potentiometer vom Pin 6 des RS232-Bausteines (Pollin AVR Board) abzugreifen. Bei ca. 5kOhm ist das Display gut zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Danach muss nochmal compiliert werden:&lt;br /&gt;
&lt;br /&gt;
* make menuconfig&lt;br /&gt;
* Menüpunkg &amp;amp;quot;I/O  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* Untermenu &amp;amp;quot;LCD Displays  ---&amp;gt;&amp;amp;quot;&lt;br /&gt;
* den Punkt &amp;amp;quot;HD44780 module driver (Character-LCD)  ---&amp;gt;&amp;amp;quot; aktivieren&lt;br /&gt;
* in selbiges Untermenu abtauchen und noch &amp;amp;quot;Readback Support&amp;amp;quot; aktivieren&lt;br /&gt;
* danach rausgehen, speichern, compilieren, laden  &lt;br /&gt;
&lt;br /&gt;
Anmerkung für Anwender die schon länger mit Ethersex arbeiten: Die alte Konfigurationsoption '&amp;amp;quot;Use Port C&amp;amp;quot; ist seit mind. Nov. 2009 nicht mehr im Menü vorhanden. Also manuell in der Konfigurationsdatei des ausgewählten Hardwareprofils (pinning/hardware/...) pinnen:&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_HD44780', `&lt;br /&gt;
    pin(HD44780_RS, PC0)&lt;br /&gt;
    pin(HD44780_RW, PC1)&lt;br /&gt;
    pin(HD44780_EN, PC2)&lt;br /&gt;
    pin(HD44780_D4, PC3)&lt;br /&gt;
    pin(HD44780_D5, PC4)&lt;br /&gt;
    pin(HD44780_D6, PC5)&lt;br /&gt;
    pin(HD44780_D7, PC6)&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Mehr Info dazu auch unter [[Pins_in_Ethersex_definieren]] und [[Ethersex_Hardware_hinzufügen]].&lt;br /&gt;
&lt;br /&gt;
Das LCD macht nach dem Einschalten erstmal gar nix. Zum Testen geht am besten der ECMD.&lt;br /&gt;
* ''netcat 192.168.0.90 2701'' aufrufen&lt;br /&gt;
* dann ''lcd write Hallo'' eingeben&lt;br /&gt;
&lt;br /&gt;
Man sollte jetzt etwas auf dem LCD lesen können.&lt;br /&gt;
&lt;br /&gt;
=== 2-Draht-LCD ===&lt;br /&gt;
siehe: [http://www.cczwei.de/atm18_downloads/071148-D%20CC2-AVR-board-2.pdf Aufbau und Ansteuerung]&lt;br /&gt;
&lt;br /&gt;
===  Weitere Spielereien mit dem LCD ===&lt;br /&gt;
Leider habe ich noch nicht rausbekommen, wie man zb. die 1wire Temperatursensoren oder die ADC oder die Ports möglichst elegant auf das LCD bekommt :-). Aber vielleicht hat ja von Euch einer eine Idee.&lt;br /&gt;
* Unter [[Temperaturanzeige_mit_TTY]] findet sich ein kleines [[Control6]]-Skript, mit dem man die Messwerte von 1-wire Temperatursensoren mit Hilfe des TTY-Layers auf's Display zaubern kann. --[[Benutzer:Stella|Stella]] 15:19, 26. Jun. 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==S1D15G10==&lt;br /&gt;
Diesen LCDisplay Controller findet man in diversen Mobiltelefonen. Ich habe das LCDisplay aus einem Nokia6610 ausgebaut.&lt;br /&gt;
&lt;br /&gt;
Einige Online Portale/Händler bieten es auch incl. Anschlussplatine an.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Displays wurden getestet:&lt;br /&gt;
* Epson, S1D15G10, ausgebaut aus Nokia6610 (getestet von veyron)&lt;br /&gt;
* weitere?&lt;br /&gt;
&lt;br /&gt;
Das 130x130 1.5&amp;quot; FarbLCD mit dem integrierten Controller S1D15G10 wird zB. so angeschlossen:&lt;br /&gt;
&lt;br /&gt;
  RESET, PB0&lt;br /&gt;
  DATA,  SPI_MOSI&lt;br /&gt;
  CLK,   SPI_SCK&lt;br /&gt;
  CS,    PD7&lt;br /&gt;
&lt;br /&gt;
Beispiel für Atmega644: pinning/hardware/etherrape.m4&lt;br /&gt;
&lt;br /&gt;
 ifdef(`conf_S1D15G10', `dnl&lt;br /&gt;
    /* port config for s1d15g10 lcd */&lt;br /&gt;
    pin(S1D15G10_CS, PA3, OUTPUT)&lt;br /&gt;
    pin(S1D15G10_RESET, PA1, OUTPUT)&lt;br /&gt;
 ')&lt;br /&gt;
&lt;br /&gt;
Da die Daten via SPI generiert werden, können nur die Pins für RESET und ChipSelect frei gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Die Stromversorgung für den LCDController sollte '''nicht''' über 4V liefern! Die Pins sollten 3.6V '''nicht''' übersteigen! Die Hintergrundbeleuchtung braucht 6V - 7V.&lt;br /&gt;
&lt;br /&gt;
Da der AVR meines etherrapes mit 5V läuft, hab ich jeweils eine 3V6 Zenerdiode und einen 1k5Ohm Pullup zwischen AVR und LCD gehangen.&lt;br /&gt;
 &lt;br /&gt;
In menuconfig:&lt;br /&gt;
  │ │                    Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │                    General Setup  ---&amp;gt;&lt;br /&gt;
  │ │                    Network protocols  ---&amp;gt;&lt;br /&gt;
  │ │                    I/O support  ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                                     [*] S1D15G10 module driver (130x130-R/G/B-LCD)&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD wird dann ein bisschen farbiger Text auf schwarzem Hintergrund und das E-Sex Logo angezeigt.&lt;br /&gt;
&lt;br /&gt;
Ist Debug und ECMD via UART aktiv, wird dies auch auf dem LCD ausgeben.&lt;br /&gt;
&lt;br /&gt;
Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:veyrons_ethersex_S1D15G10.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.sparkfun.com/commerce/product_info.php?products_id=569 Sparkfun] vertreibt das LCD incl. Anschlussplatine&lt;br /&gt;
* In  folgenden Nokia Handys wurden diese LCDs verbaut:&lt;br /&gt;
**6100, 6610, 7210, 7250, und 5100&lt;br /&gt;
Andere Webseiten auf denen die Möglichkeiten und Anschluß ersichtlich wird.&lt;br /&gt;
http://thomaspfeifer.net/nokia_6100_display.htm&lt;br /&gt;
&lt;br /&gt;
==Ansteuerung per ECMD==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle sind für's LCD vorhanden:&lt;br /&gt;
{| border=1 cellspacing=0 padding=4 class=wikitable&lt;br /&gt;
! Kommando !! Funktion &lt;br /&gt;
|- &lt;br /&gt;
|lcd char N D1 D2 D3 D4 D5 D6 D7 D8 || Benutzer-definierbares Zeichen N erstellen mit den Daten D1..D8 (in Hex) &lt;br /&gt;
|- &lt;br /&gt;
|lcd clear ZEILE || Lösche ZEILE (0..3) oder das ganze Display (wenn ohne Parameter) &lt;br /&gt;
|- &lt;br /&gt;
|lcd goto ZEILE SPALTE || Setze den Cursor auf ZEILE und SPALTE (Ursprung ist 0/0)  &lt;br /&gt;
|- &lt;br /&gt;
|lcd reinit CURSOR BLINK || Reinitialisiere das Display, schalte CURSOR aus oder ein (0 oder 1) und ob der Cursor BLINKen soll  &lt;br /&gt;
|- &lt;br /&gt;
|lcd shift RICHTUNG || Schiebe die ganze Anzeige in RICHTUNG (entweder 'left' oder 'right')  &lt;br /&gt;
|- &lt;br /&gt;
|lcd write TEXT || Schreibe TEXT an die momentane Cursorposition  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle wurde von [[Ecmd_Reference | Ecmd Reference]] übernommen und übersetzt.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Das Zeichen-definieren scheint zu funktionieren, jedenfalls wird &amp;quot;OK&amp;quot; zurückgegeben. Aber wie rufe ich das Zeichen auf, d.h. wie übergebe ich 'lcd write &amp;lt;hex00&amp;gt;'?&lt;br /&gt;
&lt;br /&gt;
==S1D13305==&lt;br /&gt;
Dies ist ein schon etwas älterer schwarz/weiss LCD Controller von Epson (Nachfolger: S1D13700).&lt;br /&gt;
[http://www.alldatasheet.com/datasheet-pdf/pdf/230048/EPSON/S1D13305.html Link zum Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Controller kann Displays bis zu einer Grösse von 640*256 Pixel ansteuern und&lt;br /&gt;
bis zu 3 Textlayer, 3 Grafiklayer oder Text/Grafiklayer gemischt anzeigen.&lt;br /&gt;
Der Controller hat einen eingebauten Zeichensatz, es ist aber auch möglich eigene Zeichensätze&lt;br /&gt;
ins RAM des Controllers zu laden (zur Zeit noch nicht unterstützt)&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
In menuconfig unter&lt;br /&gt;
* I/O -&amp;gt;&lt;br /&gt;
* LCD Displays -&amp;gt;&lt;br /&gt;
* S1D13305 module Driver (GLCD)&lt;br /&gt;
&lt;br /&gt;
Hier kann jetzt der Display modus eingestellt werden, die Displaygrösse und ob das Backlight schaltbar ist.&lt;br /&gt;
Die Einstellung von XTAL und Refresh rate muss an den LCD-Controller und das Display angepasst werden.&lt;br /&gt;
Normalerweise wird der LCD-Controller mit 10MHz betrieben, die von Epson empfohlene Refreshrate ist 75 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des Treibers unterstützt 2 Modi: &lt;br /&gt;
* Text/Grafik gemischt, wobei dann Layer 1 der Textlayer ist Layer 2 der Grafiklayer&lt;br /&gt;
* Nur Grafik, dann sind 3 Grafiklayer verfügbar.&lt;br /&gt;
&lt;br /&gt;
Pinning: (an eigene HW anpassen!):&lt;br /&gt;
&lt;br /&gt;
  /* ports the s1d13305 is attached to */&lt;br /&gt;
  ifdef(`conf_S1D13305', `dnl&lt;br /&gt;
    S1D13305_DATA_PORT(A)&lt;br /&gt;
    pin(S1D13305_CS, PC6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RES, PD4, OUTPUT)&lt;br /&gt;
    pin(S1D13305_A0, PD5, OUTPUT)&lt;br /&gt;
    pin(S1D13305_RD, PD6, OUTPUT)&lt;br /&gt;
    pin(S1D13305_WR, PD7, OUTPUT)&lt;br /&gt;
    ifdef(`conf_LCD_BACKLIGHT', `dnl&lt;br /&gt;
      pin(LCD_BACKLIGHT, PC7, OUTPUT)&lt;br /&gt;
    ')dnl&lt;br /&gt;
  ')dnl&lt;br /&gt;
&lt;br /&gt;
Nach der Initialisierung sollte das Display leer sein und nicht flimmern.&lt;br /&gt;
Man kann jetzt z.b. mit &lt;br /&gt;
&lt;br /&gt;
  lcd_writeTextPos(5,5,&amp;quot;Hallo Welt&amp;quot;, 10);&lt;br /&gt;
&lt;br /&gt;
einen Text auf dem Display ausgeben.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Grafik ausgeben möchte, muss man im eigenen Code LCD_DRAWBITMAP_USED definieren und lcd_getBMPData implementieren.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
  #define LCD_DRAWBITMAP_USED&lt;br /&gt;
  uint8_t lcd_getBMPData(uint16_t address_ui16)&lt;br /&gt;
  {&lt;br /&gt;
      return pgm_read_byte(yourBMP+address_ui16);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Dann ruft man lcd_drawBitmap auf.&lt;br /&gt;
Z.b. so:&lt;br /&gt;
&lt;br /&gt;
  lcd_drawBitmap(LCD_LAYER_2, 10, 10, 20, 30);&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist hier, dass der vierte Parameter die Breite der Bitmap in BYTE erwartet, nicht in Pixeln!&lt;br /&gt;
lcd_DrawBitmap ruft jetzt lcd_getBMPData auf um die zu zeichnende Bitmap zu holen.&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* ECMD Unterstützung&lt;br /&gt;
* Grafikbibliothek für einfache Zeichenoperationen (evtl. gemeinsam für alle Displays?)&lt;br /&gt;
* Laden von eigenen Zeichensätzen&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
Eine Bezugsquelle für Platinen ist z.b. [http://www.mdejong.de/ Mark de Jong]&lt;br /&gt;
Displays und die passenden Flachkabelstecker bekommt man gelegtlich bei [http://www.pollin.de/ Pollin]&lt;br /&gt;
oder bei [http://wallbraun-electronics.de/index.html Wallbraun-Electronics] im Shop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Temperaturanzeige_mit_TTY&amp;diff=4267</id>
		<title>Temperaturanzeige mit TTY</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Temperaturanzeige_mit_TTY&amp;diff=4267"/>
				<updated>2010-07-13T09:01:08Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: Fix Zeilenumbruch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;CONTROL_START&lt;br /&gt;
&lt;br /&gt;
THREAD(temploop)&lt;br /&gt;
        int16_t Temperatur = ONEWIRE_GET(ONEWIRE-ID);&lt;br /&gt;
        dnl max. Länge des erzeugten Strings: 5 (123.4 bzw. -12.3)&lt;br /&gt;
        char temp_str[5];&lt;br /&gt;
        itoa_fixedpoint(Temperatur, 1, temp_str);&lt;br /&gt;
&lt;br /&gt;
        TTY_SELECT(temp)&lt;br /&gt;
        TTY_HOME()&lt;br /&gt;
        TTY_WRITE(`&amp;quot;%5sC&amp;quot;', temp_str)&lt;br /&gt;
&lt;br /&gt;
        WAIT(2)&lt;br /&gt;
THREAD_END(temploop)&lt;br /&gt;
&lt;br /&gt;
ON STARTUP DO&lt;br /&gt;
        dnl Initialize display and write out greeting&lt;br /&gt;
        TTY_CLEAR()&lt;br /&gt;
        TTY_HOME()&lt;br /&gt;
&lt;br /&gt;
        TTY_CREATE_WINDOW(temp, 1, 6, 0, COLS-6)&lt;br /&gt;
&lt;br /&gt;
THREAD_START(temploop)&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
CONTROL_END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die ''Onewire-ID'' sollte natürlich angepasst werden.  Vorher im Zweifel mit '''1w list''' abfragen, welche angeschlossen sind.&lt;br /&gt;
* Die lokale Variable '''Temperatur''' dient zum Zwischenspeichern des Ergebnisses von ONEWIRE_GET, da der Sensor ansonsten zweimal abgefragt werden müsste.  Nachdem kein WAIT oder ähnliches dazwischen ist, sollte diese auch kein Problem darstellen.&lt;br /&gt;
* mit ''itoa_fixedpoint'' wird die Temperatur (Festkommazahl mit einer Nachkommastelle) in einen String umgewandelt. Inklusive ''-'' bei negativen Temperaturen&lt;br /&gt;
&lt;br /&gt;
[[Category:Control6 Examples]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Temperaturanzeige_mit_TTY&amp;diff=4266</id>
		<title>Temperaturanzeige mit TTY</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Temperaturanzeige_mit_TTY&amp;diff=4266"/>
				<updated>2010-07-13T09:00:23Z</updated>
		
		<summary type="html">&lt;p&gt;Albrecht: Temperaturanzeige auch für negative Temperaturen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;CONTROL_START&lt;br /&gt;
&lt;br /&gt;
THREAD(temploop)&lt;br /&gt;
        int16_t Temperatur = ONEWIRE_GET(ONEWIRE-ID);&lt;br /&gt;
        dnl max. Länge des erzeugten Strings: 5 (123.4 bzw. -12.3)&lt;br /&gt;
        char temp_str[5];&lt;br /&gt;
        itoa_fixedpoint(Temperatur, 1, temp_str);&lt;br /&gt;
&lt;br /&gt;
        TTY_SELECT(temp)&lt;br /&gt;
        TTY_HOME()&lt;br /&gt;
        TTY_WRITE(`&amp;quot;%5sC&amp;quot;', temp_str)&lt;br /&gt;
&lt;br /&gt;
        WAIT(2)&lt;br /&gt;
THREAD_END(temploop)&lt;br /&gt;
&lt;br /&gt;
ON STARTUP DO&lt;br /&gt;
        dnl Initialize display and write out greeting&lt;br /&gt;
        TTY_CLEAR()&lt;br /&gt;
        TTY_HOME()&lt;br /&gt;
&lt;br /&gt;
        TTY_CREATE_WINDOW(temp, 1, 6, 0, COLS-6)&lt;br /&gt;
&lt;br /&gt;
THREAD_START(temploop)&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
CONTROL_END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die ''Onewire-ID'' sollte natürlich angepasst werden.  Vorher im Zweifel mit '''1w list''' abfragen, welche angeschlossen sind.&lt;br /&gt;
* Die lokale Variable '''Temperatur''' dient zum Zwischenspeichern des Ergebnisses von ONEWIRE_GET, da der Sensor ansonsten zweimal abgefragt werden müsste.  Nachdem kein WAIT oder ähnliches dazwischen ist, sollte diese auch kein Problem darstellen.&lt;br /&gt;
* mit ''itoa_fixedpoint'' wird die Temperatur (Festkommazahl mit einer Nachkommastelle) in einen String umgewandelt. Inklusive ''-'' bei negativen &lt;br /&gt;
Temperaturen&lt;br /&gt;
&lt;br /&gt;
[[Category:Control6 Examples]]&lt;/div&gt;</summary>
		<author><name>Albrecht</name></author>	</entry>

	</feed>