HD44780 (Pollin DV20208) Zeichenbreite stimmt nicht

OP #1932465
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.
Angehängte Dateien:
Gast #1932484
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.
Gast #1932492
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
OP #1932515
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.
Gast #1932561
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
OP #1935038
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
#1935064
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.
Gast #1935066
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
OP #1935072
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
Gast #1935078
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;)
Gast #1935113
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
Gast #1935167
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
Gast #1935221
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
Gast #2037819
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
OP #2037875
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.
Gast #2037947
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
Gast #2262821
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.
#2389843
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
}
Angehängte Dateien:
Gast #2478101
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
#2478108
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
Gast #2478178
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
#2515656
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
Angehängte Dateien:
Gast #2515769
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.
#2515773
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
#2536338
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
#2924968
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
Gast #2924984
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.
#2925256
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
#2925936
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?
Gast #2928613
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 :))
#2928739
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
#2928789
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.

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