mikrocontroller.net

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


Autor: Michael Schildt (mschildt)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe ein Problem mit dem DATA VISION DV 20208 von Pollin ( 
http://www.pollin.de/shop/dt/MDg0OTc4OTk-/Baueleme... 
) .
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.

Autor: holger (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: spess53 (Gast)
Datum:

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

Autor: Michael Schildt (mschildt)
Datum:

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

Autor: spess53 (Gast)
Datum:

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

Autor: Michael Schildt (mschildt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird wohl das Beste sein. Danke für eure Hilfe.

Autor: John (Gast)
Datum:
Angehängte Dateien:

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

Autor: Michael Schildt (mschildt)
Datum:

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

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: spess53 (Gast)
Datum:

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

Autor: Michael Schildt (mschildt)
Datum:

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

Autor: holger (Gast)
Datum:

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

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: spess53 (Gast)
Datum:

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

Autor: Florian (Gast)
Datum:

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

Autor: John (Gast)
Datum:

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

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

Autor: John (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bild vergessen.

Autor: spess53 (Gast)
Datum:

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

Autor: wu (Gast)
Datum:

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

Autor: Michael Schildt (mschildt)
Datum:

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

Autor: holger (Gast)
Datum:

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

Autor: wu (Gast)
Datum:

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

Autor: wu (Gast)
Datum:
Angehängte Dateien:

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

Autor: Michael Schildt (mschildt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank,

ich werde sie bei nächster Gelegenheit testen.

Viele Grüße, Michael

Autor: derWarze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fals es jemanden interessiert, das Teil gibt es wieder:
http://www.pollin.de/shop/dt/NTAzOTc4OTk-/Baueleme...

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.

Autor: Bernhard M. (boregard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:
//-------------------------------------------------------------------------------------------------
// Read
//-------------------------------------------------------------------------------------------------
static uint8_t GLCD_Read(uint8_t regsel)
{
    uint8_t tmp;

    tmp = GLCD_rawRead(regsel);
    GLCD_WaitBusy();

    return tmp;
}

Autor: ufe (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
#ifdef INTERFACE_8_BIT
#define PORT_D0     PORTD
#define PIN_D0      PIND
#define DDR_D0      DDRD
#define BIT_D0      PC1

#define PORT_D1     PORTD
#define PIN_D1      PIND
#define DDR_D1      DDRD
#define BIT_D1      PD3

#define PORT_D2     PORTD
#define PIN_D2      PIND
#define DDR_D2      DDRD
#define BIT_D2      PD0

#define PORT_D3     PORTD
#define PIN_D3      PIND
#define DDR_D3      DDRD
#define BIT_D3      PD4
#endif

#define PORT_D4     PORTC
#define PIN_D4      PINC
#define DDR_D4      DDRC
#define BIT_D4      PC0

#define PORT_D5     PORTC
#define PIN_D5      PINC
#define DDR_D5      DDRC
#define BIT_D5      PC1

#define PORT_D6     PORTC
#define PIN_D6      PINC
#define DDR_D6      DDRC
#define BIT_D6      PC2

#define PORT_D7     PORTC
#define PIN_D7      PINC
#define DDR_D7      DDRC
#define BIT_D7      PC3

#define PORT_E      PORTB
#define DDR_E       DDRB
#define BIT_E       PB2

#define PORT_RW     PORTB
#define DDR_RW      DDRB
#define BIT_RW      PB3

#define PORT_RS     PORTB
#define DDR_RS      DDRB
#define BIT_RS      PB1

#define PORT_RES    PORTB
#define DDR_RES     DDRB
#define BIT_RES     PB1
//#define RESET_PIN_USED

> dann wird mir die Funktion des Quelltextes
bezweifle ich zwar, aber was solls

Autor: Bernhard M. (boregard)
Datum:

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

Autor: ufe (Gast)
Datum:

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

Autor: Dennis D. (dennisd)
Datum:
Angehängte Dateien:

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Leider funktioniert es im 8 Bit Modus nicht.

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

Autor: holger (Gast)
Datum:

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

Upps, vergessen:
Und mach ein Bild!

Autor: Dennis D. (dennisd)
Datum:
Angehängte Dateien:

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

Autor: holger (Gast)
Datum:

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

Du hast einen Kurzschluss zwischen D2 und D3.

Autor: Dennis D. (dennisd)
Datum:

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

Autor: holger (Gast)
Datum:

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

Autor: Dennis D. (dennisd)
Datum:

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

Autor: Manfred H. (mhen)
Datum:

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

Autor: Uli Brugger (theblackraven)
Datum:

Bewertung
0 lesenswert
nicht 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:
#define PORT_D1     PORTD
#define PIN_D1      PIND
#define DDR_D1      DDRD
#define BIT_D1      PD3

in
#define PORT_D1     PORTA
#define PIN_D1      PINA
#define DDR_D1      DDRA
#define BIT_D1      PA1

abändern?

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?



wie gesagt, ich will es ja nur mal probieren. ich weiß selber, dass ich 
erst mal c lernen sollte (bin schon dabei) :)

gruß Uli

Autor: holger (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Norbert S. (norberts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

das Ding gibt's auch bei Taobao, nur "etwas" günstiger.
http://item.taobao.com/item.htm?id=21071464041&ali...

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

Autor: Uli Brugger (theblackraven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
reicht es dann den quellcode folgendermaßen abzuändern:
#ifdef INTERFACE_8_BIT
#define PORT_D0     PORTA
#define PIN_D0      PIND
#define DDR_D0      DDRD
#define BIT_D0      PC1

#define PORT_D1     PORTA
#define PIN_D1      PIND
#define DDR_D1      DDRD
#define BIT_D1      PD3

#define PORT_D2     PORTA
#define PIN_D2      PIND
#define DDR_D2      DDRD
#define BIT_D2      PD0

#define PORT_D3     PORTA
#define PIN_D3      PIND
#define DDR_D3      DDRD
#define BIT_D3      PD4
#endif

#define PORT_D4     PORTA
#define PIN_D4      PINC
#define DDR_D4      DDRC
#define BIT_D4      PC0

#define PORT_D5     PORTA
#define PIN_D5      PINC
#define DDR_D5      DDRC
#define BIT_D5      PC1

#define PORT_D6     PORTA
#define PIN_D6      PINC
#define DDR_D6      DDRC
#define BIT_D6      PC2

#define PORT_D7     PORTA
#define PIN_D7      PINC
#define DDR_D7      DDRC
#define BIT_D7      PC3

#define PORT_E      PORTC
#define DDR_E       DDRB
#define BIT_E       PB2

#define PORT_RW     PORTC
#define DDR_RW      DDRB
#define BIT_RW      PB3

#define PORT_RS     PORTC
#define DDR_RS      DDRB
#define BIT_RS      PB1

#define PORT_RES    PORTC
#define DDR_RES     DDRB
#define BIT_RES     PB1
//#define RESET_PIN_USED
 


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

Autor: Uli Brugger (Gast)
Datum:

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

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du lesen kannst, warum übernimmst Du dann nicht die 
Anschlussbelegung von der Seite?
#ifdef INTERFACE_8_BIT
#define PORT_D0     PORTA
#define PIN_D0      PINA
#define DDR_D0      DDRA
#define BIT_D0      PA0

#define PORT_D1     PORTA
#define PIN_D1      PINA
#define DDR_D1      DDRA
#define BIT_D1      PA1

#define PORT_D2     PORTA
#define PIN_D2      PINA
#define DDR_D2      DDRA
#define BIT_D2      PA2

#define PORT_D3     PORTA
#define PIN_D3      PINA
#define DDR_D3      DDRA
#define BIT_D3      PA3
#endif

#define PORT_D4     PORTA
#define PIN_D4      PINA
#define DDR_D4      DDRA
#define BIT_D4      PA4

#define PORT_D5     PORTA
#define PIN_D5      PINA
#define DDR_D5      DDRA
#define BIT_D5      PA5

#define PORT_D6     PORTA
#define PIN_D6      PINA
#define DDR_D6      DDRA
#define BIT_D6      PA6

#define PORT_D7     PORTA
#define PIN_D7      PINA
#define DDR_D7      DDRA
#define BIT_D7      PA7

#define PORT_E      PORTC
#define DDR_E       DDRC
#define BIT_E       PC2

#define PORT_RW     PORTC
#define DDR_RW      DDRC
#define BIT_RW      PC1

#define PORT_RS     PORTC
#define DDR_RS      DDRC
#define BIT_RS      PC0

#define PORT_RES    PORTC
#define DDR_RES     DDRB
#define BIT_RES     PB1
//#define RESET_PIN_USED
 

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?
#define PORT_E      PORTC
#define DDR_E       DDRB
#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
#define PORT_E      PORTC
#define DDR_E       DDRB
#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.

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.