Forum: Mikrocontroller und Digitale Elektronik Pindefinitionen bei grafischem LCD


von tom (Gast)


Lesenswert?

Hallo zusammen.
Ich versuche gerade ein TG12864B-13 LCD Modul von Pollin in betrieb zu 
nehmen. Da gibts ja auch schon recht nützliche bibliotheken dazu. 
Trotzdem habe ich noch eine Programmiertechnische frage. Und zwar gibts 
in dieser Bibliothek logischerweise einen abschnitt wo die Pins 
konfiguriert werden. Das schaut dann wie folgt aus:

// Ports
  #define LCD_CMD_PORT    PORTA    // Command Output Register
  #define LCD_CMD_DDR      DDRA    // Data Direction Register for 
Command Port

  #define LCD_DATA_PIN    PINC    // Data Input Register
  #define LCD_DATA_PORT    PORTC    // Data Output Register
  #define LCD_DATA_DDR    DDRC    // Data Direction Register for Data 
Port

  // Command Port Bits
  #define CD          0x07    // Data/Control (RS) PinNumber
  #define RW          0x06    // R/W PinNumber
  #define EN          0x02    // EN  PinNumber
  #define CS1          0x05    // CS1 PinNumber
  #define CS2          0x04    // CS2 PinNumber
  //#define LCD_NO_RES          // uncomment this line if you have an 
pullup on reset

was ich nun nicht verstehe sind diese Hexadezimalzahlen bei den "Command 
Port Bits". Da sollte doch eigentlich jedem der Pins CD, RW, EN usw ein 
spezifischer pin zugewiesen werden. Warum stehen da nun diese 
Hex-Zahlen? Bedeutet zB 0x07 das gleiche wie PA7?

bin etwas verwirrt...
wäre für infos sehr dankbar
lg
tom

von spess53 (Gast)


Lesenswert?

Hi

>Bedeutet zB 0x07 das gleiche wie PA7?

Ja.

MfG Spess

von tom (Gast)


Lesenswert?

ok danke erstmal für die rasche antwort. Was ich noch nicht verstehe: 
Wie kommt der Bezug zum porta konkret zustand? Ich meine in der zeile
#define CD          0x07
wird nirgends bezug darauf genommen. Woher weiss der controller dass es 
sich um pin7 des ports A handelt und nicht etwa port C?

gruss
tom

von spess53 (Gast)


Lesenswert?

Hi

>Woher weiss der controller dass es
sich um pin7 des ports A handelt und nicht etwa port C?

Z.B.:

LCD_CMD_PORT |= (1<<CD);

MfG Spess

von tom (Gast)


Lesenswert?

okey, das heisst zum zeitpunkt der definition ist das noch nicht 
festgelegt.

besten dank

von Axel S. (a-za-z0-9)


Lesenswert?

tom schrieb:
> okey, das heisst zum zeitpunkt der definition ist das noch nicht
> festgelegt.

Die vordefinierte Konstante "PA7" hat genauso wenig Bezug zum Port A
wie "7", "0x07" etc. Genau deswegen muß man den LCD_CMD_PORT ja noch 
zusätzlich zum Pin angeben. Noch genauer gesagt, bei:
1
LCD_CMD_PORT |= (1<<CD);

Wird einerseits das Makro LCD_CMD_PORT verwendet, das den Port festlegt 
und andererseits das Makro CD, das die Pinnummer festlegt.

Und falls das noch nicht klar war: aus Sicht des Compilers sind 0x07, 7, 
PA7, PB7, PD7 ... alles das selbe. Nämlich die Zahl 7 (sieben).


XL

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.