Pinbelegung für GLCD

Gast #238733
Lesenswert?

Ich will ein GLCD 128x64 mit dem Controller KS0108 anschließen.
Ich benutze den Source von http://www.apetech.de.

Wo ich mein Problem habe ist die Pinbelegung.

In der ks0108.h finde ich folgendes:
1
// Ports
2
#define LCD_CMD_PORT    PORTA    // Command Output Register
3
#define LCD_CMD_DIR      DDRA    // Data Direction Register for Command
4
Port
5

6
#define LCD_DATA_IN      PINC    // Data Input Register
7
#define LCD_DATA_OUT    PORTC    // Data Output Register
8
#define LCD_DATA_DIR    DDRC    // Data Direction Register for Data Port
9

10
// Command Port Bits
11
#define D_I          0x00    // D/I Bit Number
12
#define R_W          0x01    // R/W Bit Number
13
#define EN          0x02    // EN Bit Number
14
#define CSEL1        0x03    // CS1 Bit Number
15
#define CSEL2        0x04    // CS2 Bit Number
16

17
// Chips
18
#define CHIP1        0x00
19
#define CHIP2        0x01
20

21
// Commands
22
#define LCD_ON        0x3F
23
#define LCD_OFF        0x3E
24
#define LCD_SET_ADD      0x40
25
#define LCD_SET_PAGE    0xB8
26
#define LCD_DISP_START    0xC0


DataPort ist ja klar geht von portc.0 bis portc.7 aber wie sind die
Commands Belegt?

Porta.0 == D_I
Porta.1 == R_W
Porta.2 == EN
Porta.3 == CSEL1
Porta.4 == CSEL2

Ist das richtig?
Warum ist aber z.B. CSEL1 0x03 und nicht 3 ??
Gast #238735
Lesenswert?

Danke. Kann mir vielleicht einer noch sagen wieso im ks0108 sourcecode
wie Z.B. in der Zeige die Daten vom Display erst gelesen werden und
dann geschrieben?

void ks0108SetDot(uint8_t x, uint8_t y, uint8_t color) {
  uint8_t data;

  ks0108GotoXY(x, y-y%8);          // read data from display memory
  data = ks0108ReadData();

  if(color == BLACK) {
    data |= 0x01 << (y%8);        // set dot
  } else {
    data &= ~(0x01 << (y%8));      // clear dot
  }

  ks0108WriteData(data);          // write data back to display
}

wieso muss ich erst auslesen? kann man nicht einfach in der Position
sofort schreiben?
Gast #238736
Lesenswert?

Hallo

Weil du immer nur 8 Bits auf einmal setzen kannst und du nicht weißt,
wie die anderen 7 Bits gerade gesetzt sind.

Und da die Routine nur einen Punkt setzen soll, mußt du halt erst die
anderen auslesen, mit deinem neuen Bit verknüpfen und wieder zurück
schreiben.

MFG
Dieter

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