Hallo!
Ich habe ein Problem mit dem DATA VISION DV 20208 von Pollin (
http://www.pollin.de/shop/dt/MDg0OTc4OTk-/Bauelemente/Aktive_Bauelemente/Displays/LCD_Modul_DATAVISION_DV_20208.html
) .
Ich steuere es per ATMega16 an und nutze die Bibliothek von Peter
Fleury. Ich bekomme auch Text dargestellt. Jedoch ist der Font nicht 5x7
Pixel groß, sondern 8x10 Pixel. Das führt dazu, dass nicht 20 sondern
nur 17,5 Zeichen dargestellt werden. Ich habe aber im Netz und
Datenblatt nichts gefunden, dass ein HD44780 Controller so etwas
darstellen kann?! Das Datenblatt von Pollin sagt leider auch nichts,
welcher Controller genau verbaut ist.
Ich habe schon mit dem Font Selection Bit (5x7 / 5x10) gespielt, hat
aber nichts verändert.
Hatte jemand schon mal so einen Effekt und weiß wie man das Display
wieder zurücksetzen oder umschalten kann?
MbG.
>Jedoch ist der Font nicht 5x7>Pixel groß, sondern 8x10 Pixel.
Ist doch cool;) Meine Displays können das nicht.
>Ich habe schon mit dem Font Selection Bit (5x7 / 5x10) gespielt, hat>aber nichts verändert.
Möglicherweise ist das Teil hart auf 8x10 verdrahtet.
Michael Schildt schrieb:> Fleury. Ich bekomme auch Text dargestellt. Jedoch ist der Font nicht 5x7> Pixel groß, sondern 8x10 Pixel.
Mich frisst der Neid.
Wenn das Porto nicht teurer wäre als das LCD, würde ich dir anbieten es
gegen ein anderes auszutauschen. Endlich mal ein LCD mit vernünftigen
Unterlängen im g, p und q
Hi
>Hatte jemand schon mal so einen Effekt und weiß wie man das Display>wieder zurücksetzen oder umschalten kann?
Ehrlich gesagt, irritieren mich deine Bilder. Auf den ersten Blick würde
ich sagen, das ist ein Grafikdisplay. Dafür würde auch die Bezeichnung
DG14032 auf dem mittleren Bild sprechen. Hast du ein Datenblatt?
MfG Spess
Sieht schon schön aus, nur ich hätte gern Kontrolle darüber. :)
Es gibt nur diese eine Seite von Pollin
www.pollin.de/shop/downloads/D120519D.PDF
Ich bin wegen der Bezeichnungen auf der Rückseite ehrlich gesagt auch
irretiert. Es gibt von Data Vision auch Displays mit SED1xxx Controller
die eine ähnliche Bezeichnung haben. Aber da ich die normale HD44780
Initialisierung nutze, wird es schon irgendwas sein, was diesen
Controller zumindest emuliert.
Hi
>Es gibt nur diese eine Seite von Pollin>www.pollin.de/shop/downloads/D120519D.PDF
Relativ nichtssagend.
Pollin hat schon öfters mit 'fiktiven' Anzeigen getrickst. Also das Bild
im 'Datenblatt' würde ich nicht unbedingt ernst nehmen.
Nimm es einfach hin: Du hast ein 2-Zeiliges Display mit 7x11 Pixel pro
Zeichen und 17 Zeichen pro Zeile.
Mach was draus.
MfG Spess
Also ich würde auch behaupten, dass es sich um ein Grafikdisplay
'DG-14032' handelt. Das DV-20208 wäre entsprechend beschriftet siehe
Bild (das DV-20208 ist im Bild verkleinert dargestellt).
Gruß
John
Hallo John,
danke für das Foto. Ich hatte mich schon gefragt, ob alle das gleiche
"DV20208" von Pollin bekommen haben. Ist dein Display von Pollin? Sieht
die Matrix vorne beim Display auch anders aus? Also erkennt man die
"Zeichenblöcke" Wenn man den Kontrast zu hoch regelt oder ist es auch so
gleichmäßig wie bei mir?
Es gibt auch einige Beiträge von Leuten, die es erfolgreich mit 20x2
Zeichen betreiben.
Zu einem DG-14032 habe ich nichts gefunden. Welcher GLCD-Controller
verhält sich denn wie ein HD44780 Controller? Gibt es so etwas
überhaupt?
Grüße, Michael
Alle 44780-LCDs, die ich bisher gesehen habe, haben nicht ein
durchgehendes Raster von Pixeln (im ersten Posting drittes Bild
aber sehr wohl).
Vielmehr ist üblicherweise zwischen den Zeichen je eine Pixelzeile
frei, was man im ausgeschalteten Zustand meist gut sieht.
Hi
>Also ich würde auch behaupten, dass es sich um ein Grafikdisplay>'DG-14032' handelt. Das DV-20208 wäre entsprechend beschriftet siehe>Bild (das DV-20208 ist im Bild verkleinert dargestellt).
Das war auch meine erste Vermutung. Auf den Bildern im ersten Post sind
keine, für die meisten Text-LCDs typischen, Abstände zwischen den
Zeichen zu erkennen. Auch die Bezeichnung *DG...* weißt darauf hin.
Allerdings ist mir, das will aber nichts heißen, kein
HD44780-kompatibler Grafkcontroller bekannt, der auch noch im 4-Bit-Mode
(oder täuschen die Bilder) ansteuerbar ist.
MfG Spess
Ich habe zwei Controller gefunden, welche diese Auflösung können und
kompatibel sein sollen.
GU112x16 und ST7920. Das Display hat mal chinesische Zeichen angezeigt,
das spricht für den ST7920. Und auch sonst passt der Basic Instruction
Set ganz gut zum HD44780. Das wäre ja der Hammer. Ich muss heute abend
mal etwas testen ... ;)
http://www.sitronix.com.tw/sitronix/product.nsf/Doc/ST7920
>Zu einem DG-14032 habe ich nichts gefunden. Welcher GLCD-Controller>verhält sich denn wie ein HD44780 Controller? Gibt es so etwas>überhaupt?
So wie es aussieht gibt es sowas. Gehört habe ich von sowas
jedenfalls noch nicht.
Die Pixelmatrix vorne sieht wie (schon gesagt) bei einem
Grafikdisplay aus. Alle Pixel schön dicht aneinander. Bei
meinen Textdisplays sieht man deutlich einen Abstand zwischen
den Zeichen wenn man den Kontrast etwas aufdreht. Interessant
sind die vier unbenutzen Pins 15-18 bei deinem Display.
Vieleicht kann man damit in den Grafikmodus wechseln;)
Hi
>Jetzt, wo sich hier abzeichnet, daß es für 3.95 ein Grafikdisplay>gibt, steht bei Pollin:
Das LCD mag ein grafisches sein. Aber der Controller sieht nach Text
(HD44780-Kompatibel) aus. Möglicherweise eine kundenspezifische
Zusammenstellung.
>> Artikel leider ausverkauft.
Auch für 3,95 würde ich mir das nicht mehr antun.
MfG Spess
Hallo Michael,
ich besitze kein DV-20208. Das Bild hab ich im Internet gefunden. Da
gibt es auch eine Abbildung von vorne:
http://www.allspectrum.com/store/product_info.php?products_id=967
Auf dem weißen Aufkleber (mit rotem Stempel) steht die genaue
Bezeichnung deines LCD:
DG-14032S1MBLY-H REV B
Und laut der Beschreibung auf der Herstellerseite ist es ein Grafik-LCD
mit einer Auflösung von 140 x 32 Pixel. Was auch deinem Bild
lcd_matrix.JPG entspricht. Die Entschlüsselung hab ich mal auf dem Bild
im Anhang farblich markiert.
In der aktuellen Produktliste gibt es kein Grafik-LCD mit dieser
Auflösung. - Eventuell nicht mehr im Programm, oder/(und) es handelt
sich um ein Kundenspezifisches LCD.
Die Herstellerseite ging gestern noch. Im Moment wird sie bei mir aber
nicht mehr geladen:
http://www.datavision.com.tw/
Gruß
John
Hi
>Ich habe zwei Controller gefunden, welche diese Auflösung können und>kompatibel sein sollen. GU112x16 und ST7920. ...
Den Beitrag habe ich irgendwie übersehen. Der Befehlssatz des ST7920
ähnelt stark dem des HD44780. Teste doch mal die Zeichen 0x00...0x1F.
Wenn das übereinstimmt würde ich mal die Befehle für den Grafik-Mode
testen.
MfG Spess
Hi,
ich habe das Display auch gekauft und es gemäß ST7920 Spezifikation
angeschlossen/betrieben.
Alles funktioniert prima: Textmodus und auch GFX-Modus.
Der Haken:
Ich kann die Pixel nicht auslesen! (ist ja wichtig, wenn man nur ein
einzelnes Pixel setzen will)
Hier der Code:
uint8_t GLCD_ReadData(void) {
uint8_t tmp;
E(0);
SetDataInput(); // alle Datenports auf Eingang
RS(1);
RW(1);
Delay(200); // Delay in us
E(1);
Delay(100);
tmp = DataIn();
E(0);
Delay(400);
return tmp;
}
Immer wenn das E(1) auskommentiert ist, läuft alles wie erwartet.
Ist es drin, werden irgendwelche Zeichen (im Textmodus! - obwohl ich
eigentlich den GFX-Modus aktiviert hatte) angezeigt.
Einen Schaltungsfehler schließe ich aus.
Hat von Euch jemand das Display am Laufen bzw. kann mir einen Tip geben?
Gruß
Wolfgang
Hallo Wolfgang,
ich hatte bisher noch keine Lust bzw. Zeit mich mit dem Display
auseinander zusetzen. Ich hätte aber Interesse an deinen Routinen fürs
Display. Spontan fällt mir als "work around" nur ein, den Grafikspeicher
im Controller abzubilden, aufs Lesen zu verzichten, und immer die beiden
Speicher konsistent zu halten, so dass du immer das richtige Byte
schreibst. Dazu muss natürlich soviel Speicherplatz im Controller übrig
sein.
Viele Grüße.
Hi,
ich war zu schnell... Hat sich erledigt. Sorry.
War ein idiotischer SW-Fehler.
Nun läuft's.
Auf jeden Fall ein cooles Display:
- Läuft auch im 4-bit Modus (also mit min. 7 Signalleitungen)
- Kann sowohl im Grafikmodus als auch im Textmodus betrieben werden
- Wird beides verwendet, werden die GFX und TXT-Daten anscheinend EXOR
verknüpft
- Verhält sich (bisher ;-)) wie im ST7920-Datenblatt beschrieben
Nachteil:
Das Backlight braucht wirklich 5,7V - mit 5V geht's nicht an.
Wenn man aber eh einen uC in der Nähe hat, kann man mit ein paar
Komponenten & einem Timer einen einfachen Schalregler aufbauen...
Klare Kaufempfehlung!
(Nein, ich bin nicht Mitarbeiter der Firma P.)
Gruß
Wolfgang
> Ich hätte aber Interesse an deinen Routinen fürs Display.
Hallo Michael,
hier der Code. Sollte im 4- und 8-bit-Modus laufen. Getestet habe ich
allerdings nur den 4-bit Modus.
Ich habe übrigens die Grafikroutinen von http://en.radzio.dxp.pl mit
eingebaut.
Viel Spaß damit...
Hallo,
ich hole den Thread nochmal hoch, weil die Demo-Routinen von @wu bei
höheren Taktfrequenzen (bei mir Atmega88 12MHz) keine suabere Anzeige
liefern.
Grund ist, daß das Display beim Lesen "überfahren" wird, d.h. auch beim
Lesen muß das Busy-Flag ausgewertet werden.
Änderung im Anhang.
Gruß,
Boregard
Edit:
Die GLCD_Read könnte man nun noch verkürzen:
@ Bernhard M. (boregard)
Kannst Du mal die Anschlussbelegung von Pollins Display DG-14032 bzw.
Anschluss an den AVR posten, dann wird mir die Funktion des Quelltextes
besser ersichtlich. Ich würde gerne mal die einbindung in Bascom
probieren...
Uwe
ufe schrieb:> @ Bernhard M. (boregard)> Kannst Du mal die Anschlussbelegung von Pollins Display DG-14032 bzw.> Anschluss an den AVR posten,
AUs dem Code
1
#ifdef INTERFACE_8_BIT
2
#define PORT_D0 PORTD
3
#define PIN_D0 PIND
4
#define DDR_D0 DDRD
5
#define BIT_D0 PC1
6
7
#define PORT_D1 PORTD
8
#define PIN_D1 PIND
9
#define DDR_D1 DDRD
10
#define BIT_D1 PD3
11
12
#define PORT_D2 PORTD
13
#define PIN_D2 PIND
14
#define DDR_D2 DDRD
15
#define BIT_D2 PD0
16
17
#define PORT_D3 PORTD
18
#define PIN_D3 PIND
19
#define DDR_D3 DDRD
20
#define BIT_D3 PD4
21
#endif
22
23
#define PORT_D4 PORTC
24
#define PIN_D4 PINC
25
#define DDR_D4 DDRC
26
#define BIT_D4 PC0
27
28
#define PORT_D5 PORTC
29
#define PIN_D5 PINC
30
#define DDR_D5 DDRC
31
#define BIT_D5 PC1
32
33
#define PORT_D6 PORTC
34
#define PIN_D6 PINC
35
#define DDR_D6 DDRC
36
#define BIT_D6 PC2
37
38
#define PORT_D7 PORTC
39
#define PIN_D7 PINC
40
#define DDR_D7 DDRC
41
#define BIT_D7 PC3
42
43
#define PORT_E PORTB
44
#define DDR_E DDRB
45
#define BIT_E PB2
46
47
#define PORT_RW PORTB
48
#define DDR_RW DDRB
49
#define BIT_RW PB3
50
51
#define PORT_RS PORTB
52
#define DDR_RS DDRB
53
#define BIT_RS PB1
54
55
#define PORT_RES PORTB
56
#define DDR_RES DDRB
57
#define BIT_RES PB1
58
//#define RESET_PIN_USED
> dann wird mir die Funktion des Quelltextes
bezweifle ich zwar, aber was solls
Hi,
im ersten Posting ist ein Link zum DATA VISION DV 20208 Datenblatt, dort
ist die Pinbelegung drinnen. Die stimmt mit dem DataVision DG-14032
überein.
Also einfach so anschliessen...und dann halt die Belegung im source
anpassen.
Gruß,
Bernhard
@ Karl Heinz Buchegger (kbuchegg)
Quelltext habe ich schon überflogen und gesehen welche uC-Pins welchen
Displayport zugeordnet sind. Allerdings fehlte mir die Phys. Belegung
des Displays.
@ Bernhard M. (boregard)
top
genau die Info die ich gesucht habe. Der Verdacht lag nahe, weil die
Displays sehr ähnlich sind. Aber so habe ich eine unbekannte weniger.
Ich bau erstmal die C-Version auf und gehe dann wenn die Physik läuft
mit Bascom auf das teil los.
Danke
Hi,
ich habe dieses Display erstanden und kann es mit dem oben angehängten
Code von boregard im 4 Bit Modus auch wunderbar ansteuern.
Leider funktioniert es im 8 Bit Modus nicht. D.h. wenn ich das #ifdef
auf 8 Bit Modus umstelle, erscheint im Display unten ein Text "Raala"
und in der oberen Hälfte chinesische Schriftzeichen (siehe Anhang). Ich
habe alle 8 Bits angeschlossen und mit einem anderen Display (Orient
Display DM19264A) funktionierte es mit praktisch der gleichen
Beschaltung (natürlich mit anderer Software, da anderer Controller)
Hat jemand den 8 Bit Code schon erfolgreich laufen lassen?
Dennis
>Super Tip, Holger, vielen Dank!!!
Zufallstreffer;) So ein bisschen wie bei Schiffe versenken.
Wenn du ein Zeichen ausgibst und dann was anderes kommt,
musst du nur in die Zeichentabelle deines LCD schauen
in welchen Bits sie sich unterscheiden.
Habs gefunden, ein winziges Restchen Kupfer, dünn wie ein Haar, das
beim Bohren des AVR-Controllerboards hängengeblieben war und beim
Hantieren mit dem Board zwischen den beiden genannten Pins des ATmega
den Kurzschluss verursacht hat, ...
Holger, vielen Dank für die schnelle Hilfe!!!
Dennis
Hallo zusammen,
das oben besprochene Display von Pollin (DG-14032) habe ich am
Wochenende ebenfalls erfolgreich in Betrieb genommen.
Praktisch habe ich ein Standard 16x4 Textdisplay TC1604A-01, welches mit
einer Testroutine nach P.Fleury LCD-Routinen für HD44780 Controller im
ATtiny2313 läuft, gegen obiges ausgetauscht.
Pinbelegung, ebenfalls wie im Thread, nach dem "Datenblatt" für den
DV-20208.
So weit. so gut.
Die beiden Pin 16 u. 17, beim DV-20208 als NC bezeichnet, haben durchaus
eine Funktion, zumindest Pin 16:
Pin 16 auf Low bewirkt beim Einschalten ein leeres Display, welches
erkennbar abdunkelt, wenn der Pegel nicht mehr Low ist
(ich habe das Display derzeit noch auf einem Steckbrett).
Der Pegel an Pin 17 scheint beim Einschalten zunächst keinen Einfluss zu
haben.
Vielleicht hat ein Mitleser zu den Pin16+17 nähere Informationen.
Meine weitergehende Frage:
Wo finde ich ein etwas ausführlicheres Datenblatt zum Controller, der
hier bereits als ST7920 genannt wurde?
Gruß
Manfred
hi,
habe nun auch das DG-14032 display und habe es mal nach folgendem schema
an meinen mikrocontroller (atmega16) angeschlossen:
http://www.spurtikus.de/basteln/pollin-lcd-roundup/
Allerdings habe ich mich noch nicht so richtig in die programmierung in
c eingelesen und wollte es nur mal testen ob es überhaupt funkioniert.
allerdings weiß ich nicht, was ich genau im code ändern muss. da ich ja
alles am PORTA angeschlossen habe und rs rw e an PORTC. müsste ich dann
zb:
1
#define PORT_D1 PORTD
2
#define PIN_D1 PIND
3
#define DDR_D1 DDRD
4
#define BIT_D1 PD3
in
1
#define PORT_D1 PORTA
2
#define PIN_D1 PINA
3
#define DDR_D1 DDRA
4
#define BIT_D1 PA1
abändern?
was ich am code aber überhaupt nicht verstehe ist dieser zusammenhang:
1
#define PORT_D0 PORTD
2
#define PIN_D0 PIND
3
#define DDR_D0 DDRD
4
#define BIT_D0 PC1
warum PC1 und nicht PD1?
wie gesagt, ich will es ja nur mal probieren. ich weiß selber, dass ich
erst mal c lernen sollte (bin schon dabei) :)
gruß Uli
>was ich am code aber überhaupt nicht verstehe ist dieser zusammenhang:>>#define PORT_D0 PORTD>#define PIN_D0 PIND>#define DDR_D0 DDRD>#define BIT_D0 PC1>>warum PC1 und nicht PD1?
Tipfehler;) PC1 und PD1 haben den gleichen Wert, fällt
also erst auf wenn mal einer querliest.
Uli Brugger schrieb:> warum PC1 und nicht PD1?
Weils wurscht ist.
Der Port-Buchstabe hat in diesem Bezeichner keine Bedeutung. Man hätte
die Dinge besser BIT0, BIT1, BIT2, .... anstelle von PA0, PA1, ... PB0,
PB1, ... genannt. Dann wärs jedem klar gewesen, dass mit PD1 eben nicht
das Bit Nummer 1 am Port D gemeint ist, sondern nur das Bit 1. Egal an
welchem Port.
Hi,
das Ding gibt's auch bei Taobao, nur "etwas" günstiger.
http://item.taobao.com/item.htm?id=21071464041&ali_trackid=2:mm_14507416_2297358_8935934:1353442014_3k3_748536141
Mit dem Suchbegriff "DG-14032S1MBLY-H" bringt Google diesen Thread hier
als ersten Treffer ;-)
"Am Lager" steht da bei der 146500, der hat also noch'n paar.
1 Yuan ist etwa 0,12€.
Wenn einer welche haben will bitte Bescheid sagen, ich bin aber erst zu
Weihnachten wieder hier.
Die Versandkosten in China sind etwa 3€ und verteilen sich entsprechend.
Gruß,
Norbert
oh man, wer lesen kann ist klar im vorteil. wurde ja schon gesagt, dass
der portbuchstabe nichts aussagt. allerdings weiß ich nun immer noch
nicht,wie ich den code anpassen muss. ich habe einen atmega32 mit 16mhz
am laufen und habe 4 "nops" hinzugefügt.Habe den code zu testzwecken mal
1:1 übernommen, aber es funktioniert natürlich nicht. Belegung wie in
diesem link: http://www.spurtikus.de/basteln/pollin-lcd-roundup/
Naja wenn ihr mir nicht helfen wollt, kann ich es sogar verstehen, aber
habe gerade einfach zu wenig zeit um mich so weit in c einzulesen, um
den code zu verstehen. Will nur testen ob ich alles richtig gelötet
habe.
(Hintergrundbeleuchtung funktioniert und Kontrastspannung auch.
weniestens etwas :))
Uli Brugger schrieb:> oh man, wer lesen kann ist klar im vorteil. wurde ja schon gesagt, dass> der portbuchstabe nichts aussagt. allerdings weiß ich nun immer noch> nicht,wie ich den code anpassen muss.
Du meinst das letzte Stückchen Konfigurations-define, die du gepostet
hast?
zb das hier?
1
#define PORT_E PORTC
2
#define DDR_E DDRB
3
#define BIT_E PB2
Jetzt denk mal ganz scharf nach! Wirklich scharf. So schwer ist das
nicht. Diese 3 #define definieren offenbar, wo der E Enschluss des
Displays angeschlossen ist.
Einschub:
OK. Wie legt man fest, dass ein Pin, sagen wir mal der Pin 6 vom PORTC
auf Ausgag geschaltet werden soll, und wie wird dieser Pin dann auf 1
gesetzt?
Na das geht offenbar so:
Weil es sich um den PORTC handelt, findet sich das zugehörige
Konfigurationsbit im DDRC. PORTC - DDRC.
Im DDRC muss das Bit 6 auf 1 gesetzt werden, und dann kann durch 1
Setzen in PORTC der Ausgangspin PC6 auch tatsächlich physikalisch auf 1
gesetzt werden.
Also:
DDRC |= ( 1 << 6 );
PORTC |= ( 1 << 6 );
Ende Einschub.
Was steht denn da in den #define?
Bzw. wie werden die wohl benutzt werden? Das Prinzip hat sich nicht
geändert. Im Konfigurationsregister muss ein Bit auf 1 gesetzt werden,
damit das ein Ausgang wird und um den physikalischen Pin zu verändern
muss beispielsweise der zugehörige PORT ein 1 Bit bekommen.
Der Autor möchte die tatsächlichen Port Namen nicht im Code haben, daher
hat er sich #define dafür gemacht. Er möchte es also so schreiben:
DDR_E |= ( 1 << BIT_E );
PORT_E |= ( 1 << BIT_E );
damit hat er sich alle Freiheiten gelassen, dass er über die #define die
Belegung jederzeit ändern kann.
Du hast
1
#define PORT_E PORTC
2
#define DDR_E DDRB
3
#define BIT_E PB2
und diese Bezeichnungen setzen wir jetzt mal in den Code ein. Wir machen
genau dasselbe, was auch der Präprozessor macht. Dann kommt raus
DDRB |= ( 1 << PB2 );
PORTC |= ( 1 << PB2 );
merkst du was?
Du setzt zwar 1 Bit am Port C. Du konfigurierst aber mittels DDRB am
Port B(!) den Pin auf Ausgang.
Ein bischen sorgfältiger arbeiten und ein wenig mitdenken!
> aber habe gerade einfach zu wenig zeit um mich so weit in c> einzulesen, um den code zu verstehen.
Dann bist du hier falsch. Dann bist du in der Programmierung falsch.
Ohne mitdenken geht es nicht.
Bezahl jemanden, dass er dir die Arbeit macht und dem es nicht zu blöd
war, mindestens 3 Jahre seines Lebens dafür aufzubringen, dass er das
alles (und noch viel mehr) gelernt hat. Programmieren geht nicht von
heute auf morgen. Wenn du so ein Hobby suchst, dann mach Strohsterne.
Das lernt man in einer halben Stunde.