oled 1.0
OLED Graphics Control Library
Loading...
Searching...
No Matches
oled.h
Go to the documentation of this file.
1
22
23#ifndef OLED_H_
24#define OLED_H_
25
26 #ifndef F_CPU
34 #define F_CPU 12000000UL
35 #endif
36
37 #ifndef OLED_USE_SOFT_TWI
47 #define OLED_USE_SOFT_TWI
48 #endif
49
50 #ifndef OLED_HAL_PLATFORM
62 #define OLED_HAL_PLATFORM avr
63 #endif
64
65 #ifndef OLED_ADDRESS
73 #define OLED_ADDRESS (0x78>>1)
74 #endif
75
76 #ifndef OLED_CONTROL_COMMAND
86 #define OLED_CONTROL_COMMAND 0x80
87 #endif
88
89 #ifndef OLED_CONTROL_DATA
99 #define OLED_CONTROL_DATA 0x40
100 #endif
101
102 #ifndef OLED_PAGE_SIZE
110 #define OLED_PAGE_SIZE 8UL
111 #endif
112
113 #ifndef OLED_ROW_SIZE
121 #define OLED_ROW_SIZE 64UL
122 #endif
123
124 #ifndef OLED_COLUMN_SIZE
133 #define OLED_COLUMN_SIZE 128UL
134 #endif
135
136 #ifndef OLED_IDLE_TIME_US
144 #define OLED_IDLE_TIME_US 10
145 #endif
146
147 #ifndef OLED_INIT_ROUTINE_IN_EEPROM
157 // #define OLED_INIT_ROUTINE_IN_EEPROM
158
159 #ifdef _DOXYGEN_ // Used for documentation, can be ignored
160 #define OLED_INIT_ROUTINE_IN_EEPROM
161 #endif
162 #endif
163
181 #ifndef OLED_CMD_SET_DISPLAY
182 #define OLED_CMD_SET_DISPLAY 0xAE
183
185 #define OLED_CMD_SET_DISPLAY_ON 0x01
186
188 #define OLED_CMD_SET_DISPLAY_OFF 0x00
189 #endif
191
220 #ifndef OLED_CMD_SET_DISPLAY_CLOCK
221 #define OLED_CMD_SET_DISPLAY_CLOCK 0xD5
222
224 #define OLED_CMD_SET_DISPLAY_CLOCK_DIVIDE_RATIO 0x00
225
227 #define OLED_CMD_SET_DISPLAY_CLOCK_FREQUENCY 0x80
228 #endif
230
250 #ifndef OLED_CMD_SET_MULTIPLEX_RATIO
251 #define OLED_CMD_SET_MULTIPLEX_RATIO 0xA8
252
254 #define OLED_CMD_SET_MULTIPLEX_RATIO_16_MUX 0x1F
255
257 #define OLED_CMD_SET_MULTIPLEX_RATIO_32_MUX 0x2F
258
260 #define OLED_CMD_SET_MULTIPLEX_RATIO_64_MUX 0x3F
261 #endif
263
278 #ifndef OLED_CMD_SET_DISPLAY_OFFSET
279 #define OLED_CMD_SET_DISPLAY_OFFSET 0xD3
280
282 #define OLED_CMD_SET_DISPLAY_OFFSET_VALUE 0x00
283 #endif
285
300 #ifndef OLED_CMD_SET_DISPLAY_START_LINE
301 /* Possible line offset 0x00 - 0x3F */
302 #define OLED_CMD_SET_DISPLAY_START_LINE_OFFSET 0x00
303
305 #define OLED_CMD_SET_DISPLAY_START_LINE (0x40 | OLED_CMD_SET_DISPLAY_START_LINE_OFFSET)
306 #endif
308
326 #ifndef OLED_CMD_SET_CHARGE_PUMP
327 #define OLED_CMD_SET_CHARGE_PUMP 0x8D
328
330 #define OLED_CMD_SET_CHARGE_PUMP_EXTERNAL 0x10
331
333 #define OLED_CMD_SET_CHARGE_PUMP_INTERNAL 0x14
334 #endif
336
353 #ifndef OLED_CMD_SET_SEGMENT_REMAP
354 #define OLED_CMD_SET_SEGMENT_REMAP_STANDARD 0x00
355 #define OLED_CMD_SET_SEGMENT_REMAP_REVERSED 0x01
356
358 #define OLED_CMD_SET_SEGMENT_REMAP (0xA0 | OLED_CMD_SET_SEGMENT_REMAP_REVERSED)
359 #endif
361
380 #ifndef OLED_CMD_SET_COM_OUTPUT_SCAN_DIRECTION
381 #define OLED_CMD_SET_COM_OUTPUT_SCAN_DIRECTION_NORMAL 0x00
382 #define OLED_CMD_SET_COM_OUTPUT_SCAN_DIRECTION_REVERSED 0x08
383
385 #define OLED_CMD_SET_COM_OUTPUT_SCAN_DIRECTION (0xC0 | OLED_CMD_SET_COM_OUTPUT_SCAN_DIRECTION_REVERSED)
386 #endif
388
409 #ifndef OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION
410 #define OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION 0xDA
411
413 #define OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_SEQUENTIAL 0x02
414
416 #define OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_ALTERNATIVE 0x12
417
419 #define OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_NOREMAP 0x02
420
422 #define OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_REMAP 0x22
423
425 #define OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_SETUP (OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_ALTERNATIVE | OLED_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_NOREMAP)
426 #endif
428
443 #ifndef OLED_CMD_SET_CONTRAST
444 #define OLED_CMD_SET_CONTRAST 0x81
445
447 #define OLED_CMD_SET_CONTRAST_VALUE 0x7F
448 #endif
450
467 #ifndef OLED_CMD_ENTIRE_DISPLAY_ON
468 #define OLED_CMD_ENTIRE_DISPLAY_ON_RESUME_RAM 0x00
469 #define OLED_CMD_ENTIRE_DISPLAY_ON_IGNORE_RAM 0x01
470
472 #define OLED_CMD_ENTIRE_DISPLAY_ON (0xA4 | OLED_CMD_ENTIRE_DISPLAY_ON_RESUME_RAM)
473 #endif
475
494 #ifndef OLED_CMD_SET_DISPLAY_MODE
495 #define OLED_CMD_SET_DISPLAY_MODE_NORMAL 0x00
496 #define OLED_CMD_SET_DISPLAY_MODE_INVERSE 0x01
497
499 #define OLED_CMD_SET_DISPLAY_MODE (0xA6 | OLED_CMD_SET_DISPLAY_MODE_NORMAL)
500 #endif
502
521 #ifndef OLED_CMD_SET_MEMORY_ADDRESSING_MODE
522 #define OLED_CMD_SET_MEMORY_ADDRESSING_MODE 0x20
523
525 #define OLED_CMD_SET_MEMORY_ADDRESSING_MODE_HORIZONTAL 0x00
526
528 #define OLED_CMD_SET_MEMORY_ADDRESSING_MODE_VERTICAL 0x01
529
531 #define OLED_CMD_SET_MEMORY_ADDRESSING_MODE_PAGE 0x02
532 #endif
534
547 #ifndef OLED_CMD_SET_PAGE_START_ADDRESS
548 #define OLED_CMD_SET_PAGE_START_ADDRESS 0xB0
549 #endif
550
561 #ifndef OLED_CMD_SET_LOWER_START_COLUMN_ADDRESS
562 #define OLED_CMD_SET_LOWER_START_COLUMN_ADDRESS 0x00
563 #endif
564
577 #ifndef OLED_CMD_SET_HIGHER_START_COLUMN_ADDRESS
578 #define OLED_CMD_SET_HIGHER_START_COLUMN_ADDRESS 0x10
579 #endif
580
581 #include <avr/io.h>
582 #include <util/delay.h>
583
584 #ifdef OLED_INIT_ROUTINE_IN_EEPROM
585 #include <avr/eeprom.h>
586 #else
587 #include <avr/pgmspace.h>
588 #endif
589
591
609 #ifdef OLED_USE_SOFT_TWI
610 #define TWI_SOFT_HEADER _STR(../hal/OLED_HAL_PLATFORM/twi_soft/twi_soft.h)
611 #include TWI_SOFT_HEADER
612
613 #define OLED_START(MODE) { twi_soft_start(); twi_soft_address(OLED_ADDRESS, MODE); }
614 #define OLED_STOP() { twi_soft_stop(); _delay_us(OLED_IDLE_TIME_US); }
615 #define OLED_DATA() (twi_soft_set(OLED_CONTROL_DATA))
616 #else
617 #define TWI_HEADER _STR(../hal/OLED_HAL_PLATFORM/twi/twi.h)
618 #include TWI_HEADER
619
620 #define OLED_START(MODE) { twi_start(); twi_address(OLED_ADDRESS, MODE); }
621 #define OLED_STOP() { twi_stop(); _delay_us(OLED_IDLE_TIME_US); }
622 #define OLED_DATA() (twi_set(OLED_CONTROL_DATA))
623 #endif
625
635 #define OLED_HOME() (oled_position(0, 0))
636
637 void oled_init(void);
638 void oled_disable(void);
639 void oled_home(void);
640 void oled_position(unsigned char column, unsigned char row);
641 void oled_scroll_vertical(unsigned char scroll);
642 void oled_frame(unsigned char *frame);
643 void oled_page(unsigned char *data, unsigned char page);
644 void oled_page_segment(unsigned char *data, unsigned char column_start, unsigned char column_stop, unsigned char page);
645 void oled_column(unsigned char data, unsigned char column, unsigned char page);
646 void oled_clear(void);
647 void oled_clear_page(unsigned char page);
648 void oled_clear_page_segment(unsigned char column_start, unsigned char column_stop, unsigned char page);
649 void oled_clear_column(unsigned char column, unsigned char page);
650
651#endif /* OLED_H_ */
Helper macros for stringification in C preprocessor.
void oled_clear_page(unsigned char page)
Clears a single page of the OLED display.
Definition oled.c:303
void oled_scroll_vertical(unsigned char scroll)
Scrolls the OLED display vertically by a specified offset.
Definition oled.c:155
void oled_disable(void)
Disables the TWI interface used for OLED communication.
Definition oled.c:106
void oled_page(unsigned char *data, unsigned char page)
Writes a full page of pixel data to the OLED display.
Definition oled.c:199
void oled_clear(void)
Clears the entire OLED display.
Definition oled.c:284
void oled_page_segment(unsigned char *data, unsigned char column_start, unsigned char column_stop, unsigned char page)
Writes a segment of pixel data to a specific page on the OLED display.
Definition oled.c:221
void oled_frame(unsigned char *frame)
Displays a full frame (all pages) of pixel data on the OLED.
Definition oled.c:178
void oled_clear_page_segment(unsigned char column_start, unsigned char column_stop, unsigned char page)
Clears a specific segment of a page on the OLED display.
Definition oled.c:318
void oled_home(void)
void oled_column(unsigned char data, unsigned char column, unsigned char page)
Writes a single byte of pixel data to a specific column and page on the OLED display.
Definition oled.c:257
void oled_position(unsigned char column, unsigned char row)
Sets the current write position on the OLED display.
Definition oled.c:128
void oled_clear_column(unsigned char column, unsigned char page)
Clears a single column within a specified page on the OLED display.
Definition oled.c:353
void oled_init(void)
Initializes the OLED display.
Definition oled.c:76