Forum: Mikrocontroller und Digitale Elektronik HD44780 (Pollin DV20208) Zeichenbreite stimmt nicht


von Michael S. (mschildt)


Angehängte Dateien:

Lesenswert?

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.

von holger (Gast)


Lesenswert?

>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.

von Karl H. (kbuchegg)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

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

von Michael S. (mschildt)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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

von Michael S. (mschildt)


Lesenswert?

Das wird wohl das Beste sein. Danke für eure Hilfe.

von John (Gast)


Angehängte Dateien:

Lesenswert?

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

von Michael S. (mschildt)


Lesenswert?

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

von Klaus W. (mfgkw)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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

von Michael S. (mschildt)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>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;)

von Klaus W. (mfgkw)


Lesenswert?

Jetzt, wo sich hier abzeichnet, daß es für 3.95 ein Grafikdisplay
gibt, steht bei Pollin:
> Artikel leider ausverkauft.

von spess53 (Gast)


Lesenswert?

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

von Florian (Gast)


Lesenswert?

Ich hab auch so ein Display. Sieht gleich aus, ist aber ein Textdisplay 
und hinten steht die Nummer P365A DV-20208 drauf.

von John (Gast)


Lesenswert?

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

von John (Gast)


Angehängte Dateien:

Lesenswert?

Bild vergessen.

von spess53 (Gast)


Lesenswert?

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

von wu (Gast)


Lesenswert?

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

von Michael S. (mschildt)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

>Hat von Euch jemand das Display am Laufen bzw. kann mir einen Tip geben?

Schau mal nach dem Dummy-Read auf Seite 25 vom Datenblatt.

von wu (Gast)


Lesenswert?

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

von wu (Gast)


Angehängte Dateien:

Lesenswert?

> 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...

von Michael S. (mschildt)


Lesenswert?

Vielen Dank,

ich werde sie bei nächster Gelegenheit testen.

Viele Grüße, Michael

von derWarze (Gast)


Lesenswert?

Fals es jemanden interessiert, das Teil gibt es wieder:
http://www.pollin.de/shop/dt/NTAzOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_DataVision_DG_14032.html

Hat jemand das Display auch unter Bascom richtig ansteuern können?
Der Textmodus geht ja mit den obengenannten Einschränkungen.
Wollte mit meine Patensohn was zusammen basteln, in C wird das für ihn 
noch zu kompliziert.

von Bernhard M. (boregard)


Angehängte Dateien:

Lesenswert?

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:
1
//-------------------------------------------------------------------------------------------------
2
// Read
3
//-------------------------------------------------------------------------------------------------
4
static uint8_t GLCD_Read(uint8_t regsel)
5
{
6
    uint8_t tmp;
7
8
    tmp = GLCD_rawRead(regsel);
9
    GLCD_WaitBusy();
10
11
    return tmp;
12
}

von ufe (Gast)


Lesenswert?

@ 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

von Karl H. (kbuchegg)


Lesenswert?

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

von Bernhard M. (boregard)


Lesenswert?

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

von ufe (Gast)


Lesenswert?

@ 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

von Dennis D. (dennisd)


Angehängte Dateien:

Lesenswert?

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

von holger (Gast)


Lesenswert?

>Leider funktioniert es im 8 Bit Modus nicht.

Schreib mal ABCabc1234 auf das Display.
Dann sag ich dir welche Datenleitungen du verdreht hast.

von holger (Gast)


Lesenswert?

>Schreib mal ABCabc1234 auf das Display.
>Dann sag ich dir welche Datenleitungen du verdreht hast.

Upps, vergessen:
Und mach ein Bild!

von Dennis D. (dennisd)


Angehängte Dateien:

Lesenswert?

Hi Holger,
hier mit "ABCabc1234", wobei die "4" nicht kommt...
Dennis

von holger (Gast)


Lesenswert?

>hier mit "ABCabc1234", wobei die "4" nicht kommt...

Du hast einen Kurzschluss zwischen D2 und D3.

von Dennis D. (dennisd)


Lesenswert?

Stimmt, ich messe dort 0,001 Ohm :-) ... bin noch am Suchen wo ich was 
miteinander verbunden habe...
Super Tip, Holger, vielen Dank!!!
Dennis

von holger (Gast)


Lesenswert?

>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.

von Dennis D. (dennisd)


Lesenswert?

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

von Manfred H. (mhen)


Lesenswert?

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

von Uli B. (theblackraven)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Norbert S. (norberts)


Lesenswert?

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

von Uli B. (theblackraven)


Lesenswert?

hi,
reicht es dann den quellcode folgendermaßen abzuändern:
1
#ifdef INTERFACE_8_BIT
2
#define PORT_D0     PORTA
3
#define PIN_D0      PIND
4
#define DDR_D0      DDRD
5
#define BIT_D0      PC1
6
7
#define PORT_D1     PORTA
8
#define PIN_D1      PIND
9
#define DDR_D1      DDRD
10
#define BIT_D1      PD3
11
12
#define PORT_D2     PORTA
13
#define PIN_D2      PIND
14
#define DDR_D2      DDRD
15
#define BIT_D2      PD0
16
17
#define PORT_D3     PORTA
18
#define PIN_D3      PIND
19
#define DDR_D3      DDRD
20
#define BIT_D3      PD4
21
#endif
22
23
#define PORT_D4     PORTA
24
#define PIN_D4      PINC
25
#define DDR_D4      DDRC
26
#define BIT_D4      PC0
27
28
#define PORT_D5     PORTA
29
#define PIN_D5      PINC
30
#define DDR_D5      DDRC
31
#define BIT_D5      PC1
32
33
#define PORT_D6     PORTA
34
#define PIN_D6      PINC
35
#define DDR_D6      DDRC
36
#define BIT_D6      PC2
37
38
#define PORT_D7     PORTA
39
#define PIN_D7      PINC
40
#define DDR_D7      DDRC
41
#define BIT_D7      PC3
42
43
#define PORT_E      PORTC
44
#define DDR_E       DDRB
45
#define BIT_E       PB2
46
47
#define PORT_RW     PORTC
48
#define DDR_RW      DDRB
49
#define BIT_RW      PB3
50
51
#define PORT_RS     PORTC
52
#define DDR_RS      DDRB
53
#define BIT_RS      PB1
54
55
#define PORT_RES    PORTC
56
#define DDR_RES     DDRB
57
#define BIT_RES     PB1
58
//#define RESET_PIN_USED

wenn ich alles datenbits am porta habe und den rest an portc?

von Uli Brugger (Gast)


Lesenswert?

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 :))

von Bernhard M. (boregard)


Lesenswert?

Wenn Du lesen kannst, warum übernimmst Du dann nicht die 
Anschlussbelegung von der Seite?
1
#ifdef INTERFACE_8_BIT
2
#define PORT_D0     PORTA
3
#define PIN_D0      PINA
4
#define DDR_D0      DDRA
5
#define BIT_D0      PA0
6
7
#define PORT_D1     PORTA
8
#define PIN_D1      PINA
9
#define DDR_D1      DDRA
10
#define BIT_D1      PA1
11
12
#define PORT_D2     PORTA
13
#define PIN_D2      PINA
14
#define DDR_D2      DDRA
15
#define BIT_D2      PA2
16
17
#define PORT_D3     PORTA
18
#define PIN_D3      PINA
19
#define DDR_D3      DDRA
20
#define BIT_D3      PA3
21
#endif
22
23
#define PORT_D4     PORTA
24
#define PIN_D4      PINA
25
#define DDR_D4      DDRA
26
#define BIT_D4      PA4
27
28
#define PORT_D5     PORTA
29
#define PIN_D5      PINA
30
#define DDR_D5      DDRA
31
#define BIT_D5      PA5
32
33
#define PORT_D6     PORTA
34
#define PIN_D6      PINA
35
#define DDR_D6      DDRA
36
#define BIT_D6      PA6
37
38
#define PORT_D7     PORTA
39
#define PIN_D7      PINA
40
#define DDR_D7      DDRA
41
#define BIT_D7      PA7
42
43
#define PORT_E      PORTC
44
#define DDR_E       DDRC
45
#define BIT_E       PC2
46
47
#define PORT_RW     PORTC
48
#define DDR_RW      DDRC
49
#define BIT_RW      PC1
50
51
#define PORT_RS     PORTC
52
#define DDR_RS      DDRC
53
#define BIT_RS      PC0
54
55
#define PORT_RES    PORTC
56
#define DDR_RES     DDRB
57
#define BIT_RES     PB1
58
//#define RESET_PIN_USED

von Karl H. (kbuchegg)


Lesenswert?

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.

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.