mikrocontroller.net

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


Autor: M. G. (looking)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Florian D. (mrmagoo)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Chris (Gast)
Datum:

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

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: john (Gast)
Datum:

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

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian Jung (cju)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mrdata (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander!

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

Danke!

Autor: Axel Güthner (guethnera)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Christian Jung (cju)
Datum:

Bewertung
0 lesenswert
nicht 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++ :-)

Autor: Axel Güthner (guethnera)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian Jung (cju)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

mfg
Helmi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.