Forum: Mikrocontroller und Digitale Elektronik LCD-Colour-Panel LCP 100 aus Zeitschrift ELV


von M. G. (looking)


Lesenswert?

Hat jemand gerade die Ausgabe der 01/2009 der Zeitschrift ELV da?
Dort gibt es einen Artikel "LCD-Colour-Panel LCP 100", siehe hier:
http://www.elv.de/Aktuelle-Ausgabe/x.aspx/cid_142

Mich würde interessieren, um was für ein LCD es sich da handelt, 
Auflösung, technische Daten, Ansteuerung usw...

Danke.

von Florian D. (mrmagoo)


Lesenswert?

Hi,

also das Display hat folgende Bezeichnung:

KWH0151DN01-061A


Ein paar Daten:
1.5 Zoll
128x128
65k Farben
Ansteuerungs-IC ST7637

Bei ELV wird es von einem ATMega 32 im 8 Bit Modus angesteuert.

Wer dieses jedoch liefern kann, konnte ich nicht herausfinden.
Wahrscheinlich bei ELV als Ersatzteil zu ELV üblichen Preisen.


Gruß

von Axel (Gast)


Lesenswert?

Hallo,
ich habe dieses Display gerade am Tisch liegen. Anbindung am PC über 
USB, wobei eine virtuelle COM-Schnittstelle durch Treiber SiLabs CP210x 
aufgebaut wird. Konstenpunkt: 28€ als Bausatz, wobei nur sehr geringe 
Lötarbeiten notwendig sind, das Modul ist größtenteils vorbestückt.
Mit dem Beispielprogramm (Download bei ELV) kann man 64 Bilder a 128x128 
Pixel auf dem Display ablegen und einfach umschalten.

Leider ist das Programm in C# geschrieben (noch kein Problem), benützt 
aber 2 undokumentierte DLLs für die Kommunikation/Datenaufbereitung.
Da ich lieber in Delphi programmieren würde, benötige ich die 
Interface-Doku für die DLLs. Kann mir da jemand aushelfen ?

Axel

von Chris (Gast)


Lesenswert?

Ich habe genau das gleiche Problem. Allerdings will ich das Ding unter 
Linux verwenden. Das Protokoll kann man sich weitestgehend aus der 
Bedienungsanleitung rausfrickeln. Allerdings habe ich Probleme mit 
CRC-Prüfsumme. Das ist nämlich mehr als dürftig dokumentiert.

Ich habe gerade eine Mail an ELV geschickt. Mal schauen, wie die so 
drauf sind. Wenn jemand noch ein wenig Knobeln will:

Für die Daten "0x00, 0x01, 0x74" sollte die Prüfsumme 0xa33b rauskommen. 
Das Generator-Polynom ist angeblich "0x8005" und die Prüfsumme wird mit 
"0xffff" initialisiert.

Sobald ich das CRC-Problem gelöst habe und ein Test-Programm geschrieben 
habe, dokumentiere ich gerne das ganze Protokoll...

von Chris (Gast)


Lesenswert?

Kleiner Nachtrag: Habe das CRC-Problem gerade gelöst. Vielleicht komme 
ich das Wochenende noch dran, das Protokoll komplett zu überprüfen...

von Toni (Gast)


Lesenswert?

Hi...

Ich bin auch grad dabei die Kommunikation nach Delphi zu portieren. Bin 
nur mittelprächtig Erfolgreich bislang. Bin darum natürlich für jeden 
Rat dankbar. Wäre auch gern bereit Zeit und Wissen in dies Projekt zu 
investieren wenn ich jemandem damit weiter helfen kann.

Gruß,

Toni

von john (Gast)


Lesenswert?

Portieren ? - sind die mitgelieferten dll's nicht gut genug ?

von Toni (Gast)


Lesenswert?

Nein, sind sie nicht. Dot.Net ist ne andere Technologie, und hier gehts 
um Delphi. Da word man wohl was übersetzen (portieren) müssen.

von Christian J. (cju)


Lesenswert?

Hallo,

sorry, daß das jetzt so lange gedauert hat. Ich wollte alles nur genau 
prüfen, bevor ich es hier raushaue. Und das war auch nicht so schlecht, 
da die Firmware einen Bug in der Funktion zum Löschen des Displays hat 
(clear).

Unter der URL http://www.tapage.de/projects/lcp100/lcp100-0.0.tar.bz2 
findet ihr einen TAR-ball der eine Protokoll-Beschreibung 
(doc/protocol.txt, Englisch) und eine Implementierung des Protokolls in 
C enthält.

Die Software kann unter Linux direkt verwendet werden. Unter anderen 
Systemen muß (wahrscheinlich) nur etwas an den Routinen zum Öffnen der 
seriellen Schnittstelle (lcp100_open() in lcp100.c) und zum Senden bzw. 
Empfangen geändert werden (_receive_byte(), _send_byte() in frame.c). 
Der Code ist mit heißer Nadel gestrickt.

ELV hat sich übrigens bis dato noch nicht gemeldet.

ciao und viel Spaß
Chris

von mrdata (Gast)


Lesenswert?

Hallo miteinander!

Kann mir vielleicht noch jemand sagen, wie schnell der Bildaufbau
in Verbindung mit dem ATMEGA32 ist?

Danke!

von Axel G. (guethnera)


Angehängte Dateien:

Lesenswert?

Hallo,
dank der C++ Quellen von Chris ist mir die Portierung nach Delphi 
gelungen. Die Delphi Komponente kommuniziert bereits im Designer.
Nur die CRC-Routine hat nicht so geklappt, deshalb bin ich von der 
schnellen Tabellen-Methode wieder zur langsamen Direktverarbeitung 
zurück. Vielleicht findet jemand den Fehler bei der Umsetzung.
Axel

von Christian J. (cju)


Lesenswert?

Hallo Axel,

in deinem Code ist nicht die Routine zum Initialisieren der Tabelle. Ich 
vermute, daß dort das Problem liegen könnte. Vom Überfliegen würde ich 
sagen, daß dein Code soweit in Ordnung ist...

Hast du die Initialisierungsroutine noch irgendwo?


ciao
Chris

PS: ist C - nicht C++ :-)

von Axel G. (guethnera)


Lesenswert?

Hallo,
danke für deine Antwort. Ich habe den Code für die Tabelle noch, aber 
damit geht es leider nicht und ich weiß einfach nicht warum (ich 
verstehe den CRC-Algorythmus nicht).

Meine Procedure um die Tabelle zu initialisieren sieht so aus und rufe 
ich im Initialization-Bereich mit Polynon $8005 einmalig auf.

procedure crc16_init_table(polynom:word);
var r:word;
    i,j:word;
begin
  for i := 0 to 255 do
  begin
    r := i shl 8;
    for j := 0 to 7 do
    begin
      if (r and $8000) <> 0 then
      begin
        r := (r shl 1) xor polynom;
      end else begin
        r:= r shl 1;
      end;
    end;
    crc16_table[i] := r;
  end;
end;

die CRC-Routine sieht dann so aus (Code für Tabelle und direkt 
enthalten, direkt geht, Tabelle nicht):

function crc16_byte(crc:word; data:byte):word;
var r:dword;
    b:byte;
    i:integer;
begin
  //CRC mit Tabelle
  result:= (crc shl 8) xor crc16_table[ ((crc shr 8) xor data) and $ff 
];
  {
  //CRC ohne Tabelle
  r := crc;
  for i := 0 to 7 do
  begin
    r := r shl 1;
    b := (data and $80) shr 7;
    r := r or b;
    data := data shl 1;
    if (r and $010000) =$010000 then r := r xor $8005;
  end;
  result := r and $FFFF;
  }
end;

Eigentlich geht's mir nicht um die Rechengeschwindigkeit, das Nadelör 
ist die serielle Übertragung, aber es wäre halt mit Tabelle schöner.

Axel

von Christian J. (cju)


Angehängte Dateien:

Lesenswert?

Hallo Axel,

das sieht eigentlich alles ganz gut aus. Einen Fehler konnte ich nicht 
finden. Wenn du hinter den Algorithmus für die CRC-Berechnung steigen 
willst, empfehle ich dir "A painless guide to crc error detection 
algorithms" von Ross Williams 
(http://www.ross.net/crc/download/crc_v3.txt).

Nach diesem Guide habe ich die ganzen CRC-Routinen programmiert. Zu der 
Zeit hatte ich das auch verstanden. Nur ist das auch schon wieder ein 
Weilchen her...

Im Anhang findest du eine Text-Datei, die die CRC16-Tabelle für das 
Polynom 0x8005 enthält. Vielleicht kannst du die Tabelle mit der von dir 
generierten Tabelle vergleichen. Ich werde das auch in der nächsten Zeit 
in meinen Code einbauen, so daß die crc16_init_table()-Routine entfallen 
kann (ist z.Zt. zugegebenermaßen etwas unhandlich; ich wollte die 
Routine aber zu Dokumentationszwecken im Code haben).


ciao
Chris

von Helmi (Gast)


Lesenswert?

Hallo,

ich hab mir dieses Modul auch zugelegt.
Kennt jemand ein GEhäuse für dieses Modul?

mfg
Helmi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.