at24cm0x 1.0
at24cm0x driver library
Loading...
Searching...
No Matches
ssd130x.h
Go to the documentation of this file.
1
22
23#ifndef SSD130X_H_
24#define SSD130X_H_
25
26 #ifndef SSD130X_USE_SOFT_TWI
36 //#define SSD130X_USE_SOFT_TWI
37
38 #ifdef _DOXYGEN_ // Used for documentation, can be ignored
39 #define SSD130X_USE_SOFT_TWI
40 #endif
41 #endif
42
43 #ifndef SSD130X_HAL_PLATFORM
55 #define SSD130X_HAL_PLATFORM avr
56 #endif
57
58 #ifndef SSD130X_ADDRESS
66 #define SSD130X_ADDRESS 0x3C
67 #endif
68
69 #ifndef SSD130X_CONTROL_COMMAND
79 #define SSD130X_CONTROL_COMMAND 0x80
80 #endif
81
82 #ifndef SSD130X_CONTROL_DATA
92 #define SSD130X_CONTROL_DATA 0x40
93 #endif
94
95 #ifndef SSD130X_PAGE_SIZE
103 #define SSD130X_PAGE_SIZE 8UL
104 #endif
105
106 #ifndef SSD130X_ROW_SIZE
114 #define SSD130X_ROW_SIZE 64UL
115 #endif
116
117 #ifndef SSD130X_COLUMN_SIZE
126 #define SSD130X_COLUMN_SIZE 128UL
127 #endif
128
129 #ifndef SSD130X_IDLE_TIME_US
137 #define SSD130X_IDLE_TIME_US 10
138 #endif
139
140 #ifndef SSD130X_INIT_ROUTINE_IN_EEPROM
150 // #define SSD130X_INIT_ROUTINE_IN_EEPROM
151
152 #ifdef _DOXYGEN_ // Used for documentation, can be ignored
153 #define SSD130X_INIT_ROUTINE_IN_EEPROM
154 #endif
155 #endif
156
157 #ifndef SSD130X_INIT_ROUTINE_IN_EEPROM
158 #ifndef SSD130X_INIT_ROUTINE_IN_PROGMEM
168 // #define SSD130X_INIT_ROUTINE_IN_PROGMEM
169 #endif
170 #endif
171
189 #ifndef SSD130X_CMD_SET_DISPLAY
190 #define SSD130X_CMD_SET_DISPLAY 0xAE
191
193 #define SSD130X_CMD_SET_DISPLAY_ON 0x01
194
196 #define SSD130X_CMD_SET_DISPLAY_OFF 0x00
197 #endif
199
228 #ifndef SSD130X_CMD_SET_DISPLAY_CLOCK
229 #define SSD130X_CMD_SET_DISPLAY_CLOCK 0xD5
230
232 #define SSD130X_CMD_SET_DISPLAY_CLOCK_DIVIDE_RATIO 0x00
233
235 #define SSD130X_CMD_SET_DISPLAY_CLOCK_FREQUENCY 0x80
236 #endif
238
258 #ifndef SSD130X_CMD_SET_MULTIPLEX_RATIO
259 #define SSD130X_CMD_SET_MULTIPLEX_RATIO 0xA8
260
262 #define SSD130X_CMD_SET_MULTIPLEX_RATIO_16_MUX 0x1F
263
265 #define SSD130X_CMD_SET_MULTIPLEX_RATIO_32_MUX 0x2F
266
268 #define SSD130X_CMD_SET_MULTIPLEX_RATIO_64_MUX 0x3F
269 #endif
271
286 #ifndef SSD130X_CMD_SET_DISPLAY_OFFSET
287 #define SSD130X_CMD_SET_DISPLAY_OFFSET 0xD3
288
290 #define SSD130X_CMD_SET_DISPLAY_OFFSET_VALUE 0x00
291 #endif
293
308 #ifndef SSD130X_CMD_SET_DISPLAY_START_LINE
309 /* Possible line offset 0x00 - 0x3F */
310 #define SSD130X_CMD_SET_DISPLAY_START_LINE_OFFSET 0x00
311
313 #define SSD130X_CMD_SET_DISPLAY_START_LINE (0x40 | SSD130X_CMD_SET_DISPLAY_START_LINE_OFFSET)
314 #endif
316
334 #ifndef SSD130X_CMD_SET_CHARGE_PUMP
335 #define SSD130X_CMD_SET_CHARGE_PUMP 0x8D
336
338 #define SSD130X_CMD_SET_CHARGE_PUMP_EXTERNAL 0x10
339
341 #define SSD130X_CMD_SET_CHARGE_PUMP_INTERNAL 0x14
342 #endif
344
361 #ifndef SSD130X_CMD_SET_SEGMENT_REMAP
362 #define SSD130X_CMD_SET_SEGMENT_REMAP_STANDARD 0x00
363 #define SSD130X_CMD_SET_SEGMENT_REMAP_REVERSED 0x01
364
366 #define SSD130X_CMD_SET_SEGMENT_REMAP (0xA0 | SSD130X_CMD_SET_SEGMENT_REMAP_REVERSED)
367 #endif
369
388 #ifndef SSD130X_CMD_SET_COM_OUTPUT_SCAN_DIRECTION
389 #define SSD130X_CMD_SET_COM_OUTPUT_SCAN_DIRECTION_NORMAL 0x00
390 #define SSD130X_CMD_SET_COM_OUTPUT_SCAN_DIRECTION_REVERSED 0x08
391
393 #define SSD130X_CMD_SET_COM_OUTPUT_SCAN_DIRECTION (0xC0 | SSD130X_CMD_SET_COM_OUTPUT_SCAN_DIRECTION_REVERSED)
394 #endif
396
417 #ifndef SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION
418 #define SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION 0xDA
419
421 #define SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_SEQUENTIAL 0x02
422
424 #define SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_ALTERNATIVE 0x12
425
427 #define SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_NOREMAP 0x02
428
430 #define SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_REMAP 0x22
431
433 #define SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_SETUP (SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_ALTERNATIVE | SSD130X_CMD_SET_COM_PINS_HARDWARE_CONFIGURATION_NOREMAP)
434 #endif
436
451 #ifndef SSD130X_CMD_SET_CONTRAST
452 #define SSD130X_CMD_SET_CONTRAST 0x81
453
455 #define SSD130X_CMD_SET_CONTRAST_VALUE 0x7F
456 #endif
458
475 #ifndef SSD130X_CMD_ENTIRE_DISPLAY_ON
476 #define SSD130X_CMD_ENTIRE_DISPLAY_ON_RESUME_RAM 0x00
477 #define SSD130X_CMD_ENTIRE_DISPLAY_ON_IGNORE_RAM 0x01
478
480 #define SSD130X_CMD_ENTIRE_DISPLAY_ON (0xA4 | SSD130X_CMD_ENTIRE_DISPLAY_ON_RESUME_RAM)
481 #endif
483
502 #ifndef SSD130X_CMD_SET_DISPLAY_MODE
503 #define SSD130X_CMD_SET_DISPLAY_MODE_NORMAL 0x00
504 #define SSD130X_CMD_SET_DISPLAY_MODE_INVERSE 0x01
505
507 #define SSD130X_CMD_SET_DISPLAY_MODE (0xA6 | SSD130X_CMD_SET_DISPLAY_MODE_NORMAL)
508 #endif
510
529 #ifndef SSD130X_CMD_SET_MEMORY_ADDRESSING_MODE
530 #define SSD130X_CMD_SET_MEMORY_ADDRESSING_MODE 0x20
531
533 #define SSD130X_CMD_SET_MEMORY_ADDRESSING_MODE_HORIZONTAL 0x00
534
536 #define SSD130X_CMD_SET_MEMORY_ADDRESSING_MODE_VERTICAL 0x01
537
539 #define SSD130X_CMD_SET_MEMORY_ADDRESSING_MODE_PAGE 0x02
540 #endif
542
555 #ifndef SSD130X_CMD_SET_PAGE_START_ADDRESS
556 #define SSD130X_CMD_SET_PAGE_START_ADDRESS 0xB0
557 #endif
558
569 #ifndef SSD130X_CMD_SET_LOWER_START_COLUMN_ADDRESS
570 #define SSD130X_CMD_SET_LOWER_START_COLUMN_ADDRESS 0x00
571 #endif
572
585 #ifndef SSD130X_CMD_SET_HIGHER_START_COLUMN_ADDRESS
586 #define SSD130X_CMD_SET_HIGHER_START_COLUMN_ADDRESS 0x10
587 #endif
588
589 #ifdef SSD130X_INIT_ROUTINE_IN_EEPROM
590 #include <avr/eeprom.h>
591 #else
592 #ifdef SSD130X_INIT_ROUTINE_IN_PROGMEM
593 #include <avr/pgmspace.h>
594 #endif
595 #endif
596
599
617 #ifdef SSD130X_USE_SOFT_TWI
618 #define TWI_SOFT_HEADER _STR(../../../hal/SSD130X_HAL_PLATFORM/twi_soft/twi_soft.h)
619 #include TWI_SOFT_HEADER
620
621 #define SSD130X_START(MODE) { twi_soft_start(); twi_soft_address(SSD130X_ADDRESS, MODE); }
622 #define SSD130X_STOP() { twi_soft_stop(); systick_timer_wait_us(SSD130X_IDLE_TIME_US); }
623 #define SSD130X_DATA() (twi_soft_set(SSD130X_CONTROL_DATA))
624 #else
625 #define TWI_HEADER _STR(../../../hal/SSD130X_HAL_PLATFORM/twi/twi.h)
626 #include TWI_HEADER
627
628 #define SSD130X_START(MODE) { twi_start(); twi_address(SSD130X_ADDRESS, MODE); }
629 #define SSD130X_STOP() { twi_stop(); systick_timer_wait_us(SSD130X_IDLE_TIME_US); }
630 #define SSD130X_DATA() (twi_set(SSD130X_CONTROL_DATA))
631 #endif
633
643 #define SSD130X_HOME() (ssd130x_position(0, 0))
644
645 void ssd130x_init(void);
646 void ssd130x_disable(void);
647 void ssd130x_home(void);
648 void ssd130x_position(unsigned char column, unsigned char row);
649 void ssd130x_scroll_vertical(unsigned char scroll);
650 void ssd130x_frame(unsigned char *frame);
651 void ssd130x_page(unsigned char *data, unsigned char page);
652 void ssd130x_page_segment(unsigned char *data, unsigned char column_start, unsigned char column_stop, unsigned char page);
653 void ssd130x_column(unsigned char data, unsigned char column, unsigned char page);
654 void ssd130x_clear(void);
655 void ssd130x_clear_page(unsigned char page);
656 void ssd130x_clear_page_segment(unsigned char column_start, unsigned char column_stop, unsigned char page);
657 void ssd130x_clear_column(unsigned char column, unsigned char page);
658
659#endif /* SSD130X_H_ */
void ssd130x_clear_page_segment(unsigned char column_start, unsigned char column_stop, unsigned char page)
Clears a specific segment of a page on the SSD130X display.
Definition ssd130x.c:319
void ssd130x_clear_column(unsigned char column, unsigned char page)
Clears a single column within a specified page on the SSD130X display.
Definition ssd130x.c:354
void ssd130x_position(unsigned char column, unsigned char row)
Sets the current write position on the SSD130X display.
Definition ssd130x.c:129
void ssd130x_frame(unsigned char *frame)
Displays a full frame (all pages) of pixel data on the SSD130X.
Definition ssd130x.c:179
void ssd130x_page(unsigned char *data, unsigned char page)
Writes a full page of pixel data to the SSD130X display.
Definition ssd130x.c:200
void ssd130x_home(void)
void ssd130x_clear_page(unsigned char page)
Clears a single page of the SSD130X display.
Definition ssd130x.c:304
void ssd130x_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 SSD130X display.
Definition ssd130x.c:222
void ssd130x_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 SSD130X display.
Definition ssd130x.c:258
void ssd130x_scroll_vertical(unsigned char scroll)
Scrolls the SSD130X display vertically by a specified offset.
Definition ssd130x.c:156
void ssd130x_disable(void)
Disables the TWI interface used for SSD130X communication.
Definition ssd130x.c:107
void ssd130x_init(void)
Initializes the SSD130X display.
Definition ssd130x.c:79
void ssd130x_clear(void)
Clears the entire SSD130X display.
Definition ssd130x.c:285
Helper macros for stringification in C preprocessor.
Header file with declarations and macros for systick utility.