Преглед на файлове

Define more u8g command macros

Scott Lahteine преди 6 години
родител
ревизия
a36782ac1d

+ 41
- 21
Marlin/src/lcd/dogm/u8g_dev_ssd1306_sh1106_128x64_I2C.cpp Целия файл

@@ -87,28 +87,48 @@ static const uint8_t u8g_dev_sh1106_128x64_data_start_2_wire[] PROGMEM = {
87 87
   U8G_ESC_END     // end of sequence
88 88
 };
89 89
 
90
+#define SH1106_PAGE_ADR(N)       (0x20), (N)
91
+#define SH1106_COLUMN_RANGE(N)   (0x21), (((N) >> 8) & 0xFF), ((N) & 0xFF)
92
+#define SH1106_PAGE_RANGE(N,O)   (0x22), (N), (O)
93
+#define SH1106_SCROLL(N)         ((N) ? 0x2F : 0x2E)
94
+#define SH1106_START_LINE(N)     (0x40 | (N))
95
+#define SH1106_CONTRAST(N)       (0x81), (N)
96
+#define SH1106_CHARGE_PUMP(N)    (0x8D), ((N) ? 0x14 : 0x10)
97
+#define SH1106_ADC_REVERSE(N)    ((N) ? 0xA1 : 0xA0)
98
+#define SH1106_ALL_PIX(N)        ((N) ? 0xA5 : 0xA4)
99
+#define SH1106_INVERTED(N)       ((N) ? 0xA7 : 0xA6)
100
+#define SH1106_MUX_RATIO(N)      (0xA8), (N)
101
+#define SH1106_ON(N)             ((N) ? 0xAF : 0xAE)
102
+#define SH1106_OUT_MODE(N)       ((N) ? 0xC8 : 0xC0)
103
+#define SH1106_DISP_OFFS(N)      (0xD3), (N)
104
+#define SH1106_OSC_FREQ(R,F)     (0xD5), ((F) << 4 | (R))
105
+#define SH1106_CHARGE_PER(P,D)   (0xD9), ((D) << 4 | (P))
106
+#define SH1106_COM_CONFIG(N)     (0xDA), ((N) ? 0x12 : 0x02)
107
+#define SH1106_VCOM_DESEL(N)     (0xDB), (N)
108
+#define SH1106_NOOP()            (0xE3)
109
+
90 110
 static const uint8_t u8g_dev_sh1106_128x64_init_seq_2_wire[] PROGMEM = {
91
-  U8G_ESC_ADR(0), // initiate command mode
92
-  0x0AE,          // display off, sleep mode
93
-  0x0A8, 0x03F,   // mux ratio
94
-  0x0D3, 0x00,    // display offset
95
-  0x040,          // start line
96
-  0x0A1,          // segment remap a0/a1
97
-  0x0C8,          // c0: scan dir normal, c8: reverse
98
-  0x0DA, 0x012,   // com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5)
99
-  0x081, 0x0CF,   // [2] set contrast control
100
-  0x020, 0x002,   // 2012-05-27: page addressing mode
101
-  0x21, 2, 0x81,  // set column range from 0 through 131
102
-  0x22, 0, 7,     // set page range from 0 through 7
103
-  0x0D9, 0x0F1,   // [2] pre-charge period 0x022/f1
104
-  0x0DB, 0x040,   // vcomh deselect level
105
-  0x0A4,          // output ram to display
106
-  0x0A6,          // none inverted normal display mode
107
-  0x0D5, 0x080,   // clock divide ratio (0x00=1) and oscillator frequency (0x8)
108
-  0x08D, 0x014,   // [2] charge pump setting (p62): 0x014 enable, 0x010 disable
109
-  0x02E,          // 2012-05-27: Deactivate scroll
110
-  0x0AF,          // display on
111
-  U8G_ESC_END     // end of sequence
111
+  U8G_ESC_ADR(0),               // Initiate command mode
112
+  SH1106_ON(0),                 // Display off, sleep mode
113
+  SH1106_MUX_RATIO(0x3F),       // Mux ratio
114
+  SH1106_DISP_OFFS(0),          // Display offset
115
+  SH1106_START_LINE(0),         // Start line
116
+  SH1106_ADC_REVERSE(1),        // Segment remap A0/A1
117
+  SH1106_OUT_MODE(1),           // C0: scan dir normal, C8: reverse
118
+  SH1106_COM_CONFIG(1),         // Com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5)
119
+  SH1106_CONTRAST(0xCF),        // [2] set contrast control
120
+  SH1106_PAGE_ADR(0x02),        // 2012-05-27: page addressing mode
121
+  SH1106_COLUMN_RANGE(0x281),   // Set column range from 0 through 131
122
+  SH1106_PAGE_RANGE(0, 7),      // Set page range from 0 through 7
123
+  SH1106_CHARGE_PER(0x1, 0xF),  // [2] pre-charge period 0x22/F1
124
+  SH1106_VCOM_DESEL(0x40),      // Vcomh deselect level
125
+  SH1106_ALL_PIX(0),            // Output ram to display
126
+  SH1106_INVERTED(0),           // Normal display mode
127
+  SH1106_OSC_FREQ(0, 8),        // Clock divide ratio (0:1) and oscillator frequency (8)
128
+  SH1106_CHARGE_PUMP(1),        // [2] charge pump setting (P62): 0x14 enable, 0x10 disable
129
+  SH1106_SCROLL(0),             // 2012-05-27: Deactivate scroll
130
+  SH1106_ON(1),                 // Display on
131
+  U8G_ESC_END                   // End of sequence
112 132
 };
113 133
 
114 134
 uint8_t u8g_dev_sh1106_128x64_2x_2_wire_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {

+ 10
- 9
Marlin/src/lcd/dogm/u8g_dev_st7565_64128n_HAL.cpp Целия файл

@@ -65,20 +65,21 @@
65 65
 #define HEIGHT 64
66 66
 #define PAGE_HEIGHT 8
67 67
 
68
-#define ST7565_ADC_REVERSE(N)    (0xA0 | ((N) & 0x1))
69
-#define ST7565_BIAS_MODE(N)      (0xA2 | ((N) & 0x1))
70
-#define ST7565_ALL_PIX(N)        (0xA4 | ((N) & 0x1))
71
-#define ST7565_INVERTED(N)       (0xA6 | ((N) & 0x1))
72
-#define ST7565_ON(N)             (0xAE | ((N) & 0x1))
73
-#define ST7565_OUT_MODE(N)       (0xC0 | ((N) & 0x1) << 3)
68
+#define ST7565_ADC_REVERSE(N)    ((N) ? 0xA1 : 0xA0)
69
+#define ST7565_BIAS_MODE(N)      ((N) ? 0xA3 : 0xA2)
70
+#define ST7565_ALL_PIX(N)        ((N) ? 0xA5 : 0xA4)
71
+#define ST7565_INVERTED(N)       ((N) ? 0xA7 : 0xA6)
72
+#define ST7565_ON(N)             ((N) ? 0xAF : 0xAE)
73
+#define ST7565_OUT_MODE(N)       ((N) ? 0xC8 : 0xC0)
74 74
 #define ST7565_POWER_CONTROL(N)  (0x28 | (N))
75
-#define ST7565_V0_RATIO(N)       (0x10 | ((N) & 0x7)) // Specific to Displaytech 64128N? (ST7565 is 0x20 | N)
75
+#define ST7565_V0_RATIO(N)       (0x10 | ((N) & 0x7))
76
+#define ST7565_V5_RATIO(N)       (0x20 | ((N) & 0x7))
76 77
 #define ST7565_CONTRAST(N)       (0x81), (N)
77 78
 
78 79
 #define ST7565_COLUMN_ADR(N)     (0x10 | (((N) >> 4) & 0xF)), ((N) & 0xF)
79 80
 #define ST7565_PAGE_ADR(N)       (0xB0 | (N))
80 81
 #define ST7565_START_LINE(N)     (0x40 | (N))
81
-#define ST7565_SLEEP_MODE()      (0xAC)
82
+#define ST7565_SLEEP_MODE()      (0xAC) // ,(N) needed?
82 83
 #define ST7565_NOOP()            (0xE3)
83 84
 
84 85
 /* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */
@@ -91,7 +92,7 @@ static const uint8_t u8g_dev_st7565_64128n_HAL_init_seq[] PROGMEM = {
91 92
   ST7565_BIAS_MODE(0),        // 0xA2: LCD bias 1/9 (according to Displaytech 64128N datasheet)
92 93
   ST7565_ADC_REVERSE(0),      // Normal ADC Select (according to Displaytech 64128N datasheet)
93 94
 
94
-  ST7565_OUT_MODE(1),         // common output mode: set scan direction normal operation/SHL Select, 0xC0 --> SHL = 0, normal, 0xC8 --> SHL = 1
95
+  ST7565_OUT_MODE(1),         // common output mode: set scan direction
95 96
   ST7565_START_LINE(0),       // Display start line for Displaytech 64128N
96 97
 
97 98
   ST7565_POWER_CONTROL(0x4),  // power control: turn on voltage converter

+ 33
- 19
Marlin/src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp Целия файл

@@ -65,38 +65,53 @@
65 65
 #define HEIGHT 64
66 66
 #define PAGE_HEIGHT 8
67 67
 
68
+#define UC1701_ADC_REVERSE(N)    ((N) ? 0xA1 : 0xA0)
69
+#define UC1701_BIAS_MODE(N)      ((N) ? 0xA3 : 0xA2)
70
+#define UC1701_ALL_PIX(N)        ((N) ? 0xA5 : 0xA4)
71
+#define UC1701_INVERTED(N)       ((N) ? 0xA7 : 0xA6)
72
+#define UC1701_ON(N)             ((N) ? 0xAF : 0xAE)
73
+#define UC1701_OUT_MODE(N)       ((N) ? 0xC8 : 0xC0)
74
+#define UC1701_POWER_CONTROL(N)  (0x28 | (N))
75
+#define UC1701_V5_RATIO(N)       (0x20 | ((N) & 0x7))
76
+#define UC1701_CONTRAST(N)       (0x81), (N)
77
+
78
+#define UC1701_COLUMN_ADR(N)     (0x10 | (((N) >> 4) & 0xF)), ((N) & 0xF)
79
+#define UC1701_PAGE_ADR(N)       (0xB0 | (N))
80
+#define UC1701_START_LINE(N)     (0x40 | (N))
81
+#define UC1701_INDICATOR(N)      (0xAC), (N)
82
+#define UC1701_RESET()           (0xE2)
83
+#define UC1701_NOOP()            (0xE3)
84
+#define UC1701_BOOST_RATIO(N)    (0xF8), (N)
85
+
68 86
 static const uint8_t u8g_dev_uc1701_mini12864_HAL_init_seq[] PROGMEM = {
69 87
   U8G_ESC_CS(0),              /* disable chip */
70 88
   U8G_ESC_ADR(0),             /* instruction mode */
71 89
   U8G_ESC_RST(1),             /* do reset low pulse with (1*16)+2 milliseconds */
72 90
   U8G_ESC_CS(1),              /* enable chip */
73 91
 
74
-  0x0E2,                      /* soft reset */
75
-  0x040,                      /* set display start line to 0 */
76
-  0x0A0,                      /* ADC set to reverse */
77
-  0x0C8,                      /* common output mode */
78
-  0x0A6,                      /* display normal, bit val 0: LCD pixel off. */
79
-  0x0A2,                      /* LCD bias 1/9 */
80
-  0x02F,                      /* all power control circuits on */
81
-  0x0F8,                      /* set booster ratio to */
82
-  0x000,                      /* 4x */
83
-  0x023,                      /* set V0 voltage resistor ratio to large */
84
-  0x081,                      /* set contrast */
85
-  0x027,                      /* contrast value */
86
-  0x0AC,                      /* indicator */
87
-  0x000,                      /* disable */
88
-  0x0AF,                      /* display on */
92
+  UC1701_RESET(),             /* soft reset */
93
+  UC1701_START_LINE(0),       /* set display start line to 0 */
94
+  UC1701_ADC_REVERSE(0),      /* ADC set to reverse */
95
+  UC1701_OUT_MODE(1),         /* common output mode */
96
+  UC1701_INVERTED(0),         /* display normal, bit val 0: LCD pixel off. */
97
+  UC1701_BIAS_MODE(0),        /* LCD bias 1/9 */
98
+  UC1701_POWER_CONTROL(0x7),  /* all power control circuits on */
99
+  UC1701_BOOST_RATIO(0x0),    /* set booster ratio to 4x */
100
+  UC1701_V5_RATIO(3),         /* set V0 voltage resistor ratio to large */
101
+  UC1701_CONTRAST(0x27),      /* set contrast */
102
+  UC1701_INDICATOR(0),        /* indicator */
103
+  UC1701_ON(1),               /* display on */
89 104
 
90 105
   U8G_ESC_CS(0),              /* disable chip */
91 106
   U8G_ESC_DLY(100),           /* delay 100 ms */
92 107
   U8G_ESC_CS(1),              /* enable chip */
93 108
 
94
-  0x0A5,                      /* display all points, ST7565 */
109
+  UC1701_ALL_PIX(1),          /* display all points, ST7565 */
95 110
   U8G_ESC_CS(0),              /* disable chip */
96 111
   U8G_ESC_DLY(100),           /* delay 100 ms */
97 112
   U8G_ESC_DLY(100),           /* delay 100 ms */
98 113
   U8G_ESC_CS(1),              /* enable chip */
99
-  0x0A4,                      /* normal display */
114
+  UC1701_ALL_PIX(0),          /* normal display */
100 115
   U8G_ESC_CS(0),              /* disable chip */
101 116
   U8G_ESC_END                 /* end of sequence */
102 117
 };
@@ -104,8 +119,7 @@ static const uint8_t u8g_dev_uc1701_mini12864_HAL_init_seq[] PROGMEM = {
104 119
 static const uint8_t u8g_dev_uc1701_mini12864_HAL_data_start[] PROGMEM = {
105 120
   U8G_ESC_ADR(0),             /* instruction mode */
106 121
   U8G_ESC_CS(1),              /* enable chip */
107
-  0x010,                      /* set upper 4 bit of the col adr to 0 */
108
-  0x000,                      /* set lower 4 bit of the col adr to 4 */
122
+  UC1701_COLUMN_ADR(0),       /* address 0 */
109 123
   U8G_ESC_END                 /* end of sequence */
110 124
 };
111 125
 

Loading…
Отказ
Запис