Forum: Projekte & Code SSD1302 - OLED - Quick and Dirty


von C. H. (hedie)


Lesenswert?

Hallo zusammen

Hier mal für alle die es interessiert eine Quick and Dirty 
initialisierung für ein SSD1302 LCD

Display konfig: VCC offen, VDD & VBAT zusammen an 3.3V
IREF ca. 470kOhm Widerstand nach GND
BS0 = 1, BS1&2 = 0
1
void write_spi (unsigned char data_out)
2
{       //msb first
3
    unsigned char mask;
4
    for (mask=0x80; mask; mask=mask>>1)
5
    {
6
      GPIO_ResetBits(GPIOA,SPI1_SCK);
7
        if (data_out & mask)
8
        {
9
          GPIO_SetBits(GPIOA,SPI1_MOSI);
10
        }
11
        else GPIO_ResetBits(GPIOA,SPI1_MOSI);
12
        GPIO_SetBits(GPIOA,SPI1_SCK);
13
    }
14
    GPIO_ResetBits(GPIOA,SPI1_SCK);
15
}
16
17
18
void display_cmd(unsigned char ucData)
19
{
20
21
  GPIO_SetBits(GPIOA,SPI1_CS);
22
23
  GPIO_ResetBits(GPIOA,DISP_DC);
24
25
  GPIO_ResetBits(GPIOA,SPI1_CS);
26
27
  write_spi(ucData); //Standard SPI Port
28
29
  GPIO_SetBits(GPIOA,SPI1_CS);
30
31
}
32
33
void display_data(unsigned char ucData)
34
{
35
36
  GPIO_SetBits(GPIOA,SPI1_CS);
37
38
  GPIO_SetBits(GPIOA,DISP_DC);
39
40
  GPIO_ResetBits(GPIOA,SPI1_CS);
41
42
  write_spi(ucData);
43
44
  GPIO_SetBits(GPIOA,SPI1_CS);
45
46
}
47
48
49
void ssd1302_init(void)
50
{
51
52
  GPIO_SetBits(GPIOA,DISP_RESET);    //Reset high -> low -> high
53
  delay(60000);
54
  GPIO_ResetBits(GPIOA,DISP_RESET);
55
  delay(60000);
56
  GPIO_SetBits(GPIOA,DISP_RESET);
57
  delay(60000);
58
59
  display_cmd(0xAE);
60
  display_cmd(0xD5);
61
  display_cmd(0x80);
62
  display_cmd(0xA8);
63
  display_cmd(0x3F);
64
65
  display_cmd(0xD3);
66
  display_cmd(0x00);
67
  display_cmd(0x40);
68
69
  display_cmd(0x8D);
70
  display_cmd(0x14);
71
  display_cmd(0x20);
72
  display_cmd(0x00);
73
  display_cmd(0xA1);
74
  display_cmd(0xC8);
75
76
  display_cmd(0xDA);
77
  display_cmd(0x12);
78
  display_cmd(0x81);
79
  display_cmd(0xCF);
80
  display_cmd(0xD9);
81
  display_cmd(0xF1);
82
  display_cmd(0xD8);
83
  display_cmd(0x40);
84
  display_cmd(0xA4);
85
  display_cmd(0xA6);
86
  display_cmd(0xAF); //Display on
87
88
}

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.