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.
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
Hat schon jemand eine Belegung der Kontaktleiste herausgefunden? VG, Hans
Hallo Ivan, könntest du das Datenblatt online stellen, da der Link nicht mehr erreichbar ist. Danke.
@bit: Im Anhang hab ich dir mal die Belegung angehängt die ich soweit rausgefunden habe. Das PDF zum Chip läßt sich bei Google mit d7228ag.pdf finden. Gruß Dennis
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.
Hallo, gute Arbeit Dennis und Kai. Die Ansteuerung habe ich mit einem PIC-Controller realisiert. Der Preis von 1,95€ hat sich die Anschaffung wirklich gelohnt. Gruß sf1
@sf1 Danke, das ist genau das, was mir bisher immer gefehlt hat wenn ich mal nach dem Display gesucht hatte... einen konkrete Beschaltung. Ist VLC5 die Kontrastspannung und reicht das dann wenn man die auf einfach auf GND legt? Gruß Manos.
Kai B. schrieb: > Der Code kann als Pseudo Code für den einen oder anderen hilfreich sein. > Anbei auch noch 2 Bilder. bei Pollin im text steht doch 1x8 Zeichen? scheinbar hat das Display aber 2x8 Textzeilen. + 6 Symbole + einen Balken Ist der Balken oben frei steuerbar?
Ja soweit ich mich erinnere war der Balken sogar frei ansteuerbar. Müsste sonst das Ding mal wieder an dem PC hängen und mal schauen was auf welchen Adressen liegt. Gruß Kai
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
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
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
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); |
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.