Pollin Display DMC 2047

OP Persönliche Seite #1669002
Lesenswert?

http://www.pollin.de/shop/dt/NDM1OTc4OTk-/Bauelemente/Aktiv/Displays/LCD_Modul_Optrex_DMC_2047.html

Bestellnummer: 120 465

Hat da schon jemand was mit gemacht? Im Forum lässt sich nichts finden, 
auch bei Google scheint niemand aufzutauchen der sich damit schon mal 
abgemüht hat :-)

Integrierter Controller NEC PD7228AG
Einzeiliges Display mit integriertem Controller. Das Display verfügt 
über eine orange Hintergrundbeleuchtung, 4 LEDs und eine 
IR-Empfangsdiode. Es können 8 Zeichen und 10 Sonderzeichen angezeigt 
werden. Einfacher Anschluss über 22-poliger Lötleiste.

Scheint ein Custom Chip zu sein, ist auf dem ersten Blick nichts dazu zu 
finden. Schade eigentlich.
#1669044
Lesenswert?

Simon K. schrieb:
> Integrierter Controller NEC PD7228AG

Dabei handelt es sich um den vielfach eingesetzten µPD7228 in der 
A-Version (Kontrastspannungsmaximum von 5 auf 12V angeboben).

> [...] ist auf dem ersten Blick nichts dazu zu finden. Schade eigentlich.

Aber auf den Zweiten ;-)
Datenblatt (old style, nicht durchsuchbar) unter 
http://www.necel.com/nesdis/image/IC-3129.pdf

Gruß, Iwan
Persönliche Seite #1714442
Lesenswert?

Hallo,
ich habe das Display schon erfolgreich angesteuert.
Anbei mal ein kleines Progrämmchen welches ich mit Freebasic nutzte um 
das Display am LPT anzusteuern.

Der Code kann als Pseudo Code für den einen oder anderen hilfreich sein.
Anbei auch noch 2 Bilder.
Mehr Infos hab ich momentan leider keine dazu müsste ich erstmal wieder 
den Papierkram zusammensuchen.
Angehängte Dateien:
Gast #1873416
Lesenswert?

genau, das Display hat zwei Textzeilen. Die Symbole sind eher weniger 
brauchbar. Dafür sind die 40 Punkte des Balkens frei ansteuerbar, ab 
Adresse 64 aufwärts. Mein Programm habe ich in Mikrobasic geschrieben 
und ist stark an Kais Beispielcode angelehnt. Zuerst wird ein Text 
geschrieben, dann alle Symbole nacheinander ein- und ausgeblendet und 
zum Schluss der Balken auf- und abgebaut. Den Takt habe ich über einen 
Timer realisiert, glaube so etwa 100KHz, die genaue Frequenz scheint 
aber unkritisch zu sein. Nach dem Datenblatt sind 80KHz die unterste 
Grenze. VLC5 auf Masse ist das Kontrastmaximum.

Gruß
sf1
Gast #2279005
Lesenswert?

Hallo,

entschuldigt, dass ich den alten Thread nach einem dreiviertel Jahr noch
einmal rauskrame.

Ich habe mit ebenfalls das Display DMC-2047 von Pollin zugelegt und
wollte es mit einem Atmel ATtiny 2313 ansteuern. Auf der Suche nach
Informationen bin ich auf dieses Forum und das hilfreiche Thema
gestoßen, das mir sehr weitergeholfen hat! Habe den Code in C
geschrieben und mit dem WinAVR kompiliert. Angelehnt ist der Code an die
Datei "DMC2047.mbas" vom Autor "sf1". Wenn ich den Code auf den
Prozessor übertrage und laufen lasse, dann erscheint leider gar nichts.
Beim Anlegen der Spannung (An Atmel-Controller-Schaltung, die das
Display versorgt) ist auf dem Display von links nach rechts eine Reihe
mit Bindestrichen "-" zu sehen, die dann langsam wegbröckelt und ein
leeres Display hinterläßt. Beim Abziehen der Spannung erscheint die
Reihe mit Bindestrichen erneut kurz und verschwindet dann mangels
Spannung wieder. Ansonsten geschieht dort nichts, weder in den zwei
Textzeilen noch an dem Bargraph. Ich sehe nur ein vollkommen leeres
Display. Habe schon einige Abend ohne Fortschritte daran rumgeschrieben
und probiert, leider ohne erkennbaren Erfolg. Daher jetzt mein
"Hilferuf" an dieser Stelle.

Vielleicht könnte jemand so nett sein und einmal einen fachmännischen
Blick in die angehängte Datei mit dem Programmtext werfen, ob es
theoretisch funktionieren sollte, wie ich es programmiert habe oder ob
darin ein Fehler versteckt ist, den ich übersehen habe und der für die
fehlende Funktionalität verantwortlich ist. Wenn es Eurer Meinung nach
gehen sollte, dann muss ich mal messen, ob an den Pins wirklich die
erwarteten Signale anliegen, gerade auch beim Taktsignal an CLK. Leider
habe ich kein Oszilloskop, so dass ich es irgendwo anders machen müsste.

Vielen Dank schon einmal im Voraus.

Schöne Grüße
     Mathias
Angehängte Dateien:
Gast #2340057
Lesenswert?

Moin Mathias,

ein Problem deines C-Programms habe ich gefunden:
1
  if(LCD_CLK == 0) LCD_PORT |=(1<<LCD_CLK);   // LCD-Clock high (steigende Flanke)
2
  else             LCD_PORT &=~(1<<LCD_CLK);  // LCD-Clock low (fallende Flanke)

LCD_CLK ist eine Konstante, die du per Define auf PD0 = 0 gesetzt hast, 
die Bedingung ist daher immer wahr, das Display kriegt also keinen Takt. 
So muesste es gehen:
1
  if ((LCD_PORT & (1<<LCD_CLK)) == 0) {
2
    LCD_PORT |= (1<<LCD_CLK);
3
  } else {
4
    LCD_PORT &= ~(1<<LCD_CLK);
5
  }

Ich haenge ausserdem mal den Assemblercode dran, den ich gerade fuer das 
Display geschrieben habe, auch fuer Tiny2313, allerdings verwendet mein 
Code die CKOUT-Funktion des Controllers fuer den Takt, du musst also die 
CKOUT-Fuse auf 0 setzen und den Anschluss des LCDs an den Controller 
entsprechend aendern, wenn du meinen Code probieren moechtest. Ausserdem 
muss der Controller mit meinem Code zwingend auf 500 kHz laufen (mit 1 
MHz geht das Display lt. Datenblatt auch noch, aber ich habe nicht 
geprueft ob das Programm dann noch alle Timings einhaelt).


Gruss,
Arne
Angehängte Dateien:
#2340075
Lesenswert?

Arne Rossius schrieb:
> if ((LCD_PORT & (1<<LCD_CLK)) == 0) {
>     LCD_PORT |= (1<<LCD_CLK);
>   } else {
>     LCD_PORT &= ~(1<<LCD_CLK);
>   }

Ihr wollt da nen Portpin toggeln?
Warum nicht so:
1
LCD_PORT ^= (1<<LCD_CLK);
mfg mf

PS: Bei den "neueren" Megas wie dem 48/88/168 kann man auch das 
PIN-Register beschreiben(sic!). Dabei ändern sich die logischen Pegel 
des PORT-Registers an den Stellen, wo man eine "1" reinschreibt.
1
PINA = (1<<PA0);
hätte denselben Effekt wie
1
PORTA ^= (1<<PA0);
Gast #2340607
Lesenswert?

Moin minifloat,

stimmt, mit dem XOR ist es deutlich uebersichtlicher, danke fuer den 
Hinweis. Ich schreibe meine Programme meistens in Assembler, deshalb 
kommt es schonmal vor, dass ich immer noch in Assembler denke, wenn ich 
C schreibe, daher ist mir diese Loesung nicht eingefallen ;-).

Die Methode mit PIN schreiben kenne ich, verwende sie aber nur in 
Ausnahmefaellen (bei extrem kritischen Timing, also niemals in C), weil 
ich mir nicht merken kann, welche Controller das koennen. 
Selbsterklaerend ist es auch nicht, man sollte dann also IMHO einen 
Kommentar wie "Toggle PA0" einfuegen -- die Methode mit XOR hingegen ist 
IMHO auch fuer jemanden, der noch nie mit AVR gearbeitet hat, 
verstaendlich.


Gruss,
Arne

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren