LibDriver SSD1306
Loading...
Searching...
No Matches
driver_ssd1306_basic.c
Go to the documentation of this file.
1
37
39
40static ssd1306_handle_t gs_handle;
41
52{
53 uint8_t res;
54
55 /* link functions */
71
72 /* set interface */
73 res = ssd1306_set_interface(&gs_handle, interface);
74 if (res != 0)
75 {
76 ssd1306_interface_debug_print("ssd1306: set interface failed.\n");
77
78 return 1;
79 }
80
81 /* set addr pin */
82 res = ssd1306_set_addr_pin(&gs_handle, addr);
83 if (res != 0)
84 {
85 ssd1306_interface_debug_print("ssd1306: set addr failed.\n");
86
87 return 1;
88 }
89
90 /* ssd1306 init */
91 res = ssd1306_init(&gs_handle);
92 if (res != 0)
93 {
94 ssd1306_interface_debug_print("ssd1306: init failed.\n");
95
96 return 1;
97 }
98
99 /* close display */
100 res = ssd1306_set_display(&gs_handle, SSD1306_DISPLAY_OFF);
101 if (res != 0)
102 {
103 ssd1306_interface_debug_print("ssd1306: set display failed.\n");
104 (void)ssd1306_deinit(&gs_handle);
105
106 return 1;
107 }
108
109 /* set column address range */
111 if (res != 0)
112 {
113 ssd1306_interface_debug_print("ssd1306: set column address range failed.\n");
114 (void)ssd1306_deinit(&gs_handle);
115
116 return 1;
117 }
118
119 /* set page address range */
121 if (res != 0)
122 {
123 ssd1306_interface_debug_print("ssd1306: set page address range failed.\n");
124 (void)ssd1306_deinit(&gs_handle);
125
126 return 1;
127 }
128
129 /* set low column start address */
131 if (res != 0)
132 {
133 ssd1306_interface_debug_print("ssd1306: set low column start address failed.\n");
134 (void)ssd1306_deinit(&gs_handle);
135
136 return 1;
137 }
138
139 /* set high column start address */
141 if (res != 0)
142 {
143 ssd1306_interface_debug_print("ssd1306: set high column start address failed.\n");
144 (void)ssd1306_deinit(&gs_handle);
145
146 return 1;
147 }
148
149 /* set display start line */
151 if (res != 0)
152 {
153 ssd1306_interface_debug_print("ssd1306: set display start line failed.\n");
154 (void)ssd1306_deinit(&gs_handle);
155
156 return 1;
157 }
158
159 /* set fade blinking mode */
161 if (res != 0)
162 {
163 ssd1306_interface_debug_print("ssd1306: set fade blinking failed.\n");
164 (void)ssd1306_deinit(&gs_handle);
165
166 return 1;
167 }
168
169 /* deactivate scroll */
170 res = ssd1306_deactivate_scroll(&gs_handle);
171 if (res != 0)
172 {
173 ssd1306_interface_debug_print("ssd1306: set deactivate scroll failed.\n");
174 (void)ssd1306_deinit(&gs_handle);
175
176 return 1;
177 }
178
179 /* set zoom in */
181 if (res != 0)
182 {
183 ssd1306_interface_debug_print("ssd1306: set set zoom in failed.\n");
184 (void)ssd1306_deinit(&gs_handle);
185
186 return 1;
187 }
188
189 /* set contrast */
191 if (res != 0)
192 {
193 ssd1306_interface_debug_print("ssd1306: set contrast failed.\n");
194 (void)ssd1306_deinit(&gs_handle);
195
196 return 1;
197 }
198
199 /* set segment remap */
201 if (res != 0)
202 {
203 ssd1306_interface_debug_print("ssd1306: set segment remap failed.\n");
204 (void)ssd1306_deinit(&gs_handle);
205
206 return 1;
207 }
208
209 /* set scan direction */
211 if (res != 0)
212 {
213 ssd1306_interface_debug_print("ssd1306: set scan direction failed.\n");
214 (void)ssd1306_deinit(&gs_handle);
215
216 return 1;
217 }
218
219 /* set display mode */
221 if (res != 0)
222 {
223 ssd1306_interface_debug_print("ssd1306: set display mode failed.\n");
224 (void)ssd1306_deinit(&gs_handle);
225
226 return 1;
227 }
228
229 /* set multiplex ratio */
231 if (res != 0)
232 {
233 ssd1306_interface_debug_print("ssd1306: set multiplex ratio failed.\n");
234 (void)ssd1306_deinit(&gs_handle);
235
236 return 1;
237 }
238
239 /* set display offset */
241 if (res != 0)
242 {
243 ssd1306_interface_debug_print("ssd1306: set display offset failed.\n");
244 (void)ssd1306_deinit(&gs_handle);
245
246 return 1;
247 }
248
249 /* set display clock */
251 if (res != 0)
252 {
253 ssd1306_interface_debug_print("ssd1306: set display clock failed.\n");
254 (void)ssd1306_deinit(&gs_handle);
255
256 return 1;
257 }
258
259 /* set pre charge period */
261 if (res != 0)
262 {
263 ssd1306_interface_debug_print("ssd1306: set pre charge period failed.\n");
264 (void)ssd1306_deinit(&gs_handle);
265
266 return 1;
267 }
268
269 /* set hardware pins conf */
271 if (res != 0)
272 {
273 ssd1306_interface_debug_print("ssd1306: set com pins hardware conf failed.\n");
274 (void)ssd1306_deinit(&gs_handle);
275
276 return 1;
277 }
278
279 /* set deselect level 0.77 */
281 if (res != 0)
282 {
283 ssd1306_interface_debug_print("ssd1306: set deselect level failed.\n");
284 (void)ssd1306_deinit(&gs_handle);
285
286 return 1;
287 }
288
289 /* set page memory addressing mode */
291 if (res != 0)
292 {
293 ssd1306_interface_debug_print("ssd1306: set memory addressing level failed.\n");
294 (void)ssd1306_deinit(&gs_handle);
295
296 return 1;
297 }
298
299 /* enable charge pump */
301 if (res != 0)
302 {
303 ssd1306_interface_debug_print("ssd1306: set charge pump failed.\n");
304 (void)ssd1306_deinit(&gs_handle);
305
306 return 1;
307 }
308
309 /* entire display off */
311 if (res != 0)
312 {
313 ssd1306_interface_debug_print("ssd1306: set entire display failed.\n");
314 (void)ssd1306_deinit(&gs_handle);
315
316 return 1;
317 }
318
319 /* enable display */
320 res = ssd1306_set_display(&gs_handle, SSD1306_DISPLAY_ON);
321 if (res != 0)
322 {
323 ssd1306_interface_debug_print("ssd1306: set display failed.\n");
324 (void)ssd1306_deinit(&gs_handle);
325
326 return 1;
327 }
328
329 /* clear screen */
330 res = ssd1306_clear(&gs_handle);
331 if (res != 0)
332 {
333 ssd1306_interface_debug_print("ssd1306: clear failed.\n");
334 (void)ssd1306_deinit(&gs_handle);
335
336 return 1;
337 }
338
339 return 0;
340}
341
350{
351 /* deinit ssd1306 */
352 if (ssd1306_deinit(&gs_handle) != 0)
353 {
354 return 1;
355 }
356 else
357 {
358 return 0;
359 }
360}
361
370{
371 uint8_t res;
372
373 /* display on */
374 res = ssd1306_set_display(&gs_handle, SSD1306_DISPLAY_ON);
375 if (res != 0)
376 {
377 return 1;
378 }
379 else
380 {
381 return 0;
382 }
383}
384
393{
394 uint8_t res;
395
396 /* display off */
397 res = ssd1306_set_display(&gs_handle, SSD1306_DISPLAY_OFF);
398 if (res != 0)
399 {
400 return 1;
401 }
402 else
403 {
404 return 0;
405 }
406}
407
416{
417 /* clear */
418 if (ssd1306_clear(&gs_handle) != 0)
419 {
420 return 1;
421 }
422 else
423 {
424 return 0;
425 }
426}
427
438uint8_t ssd1306_basic_write_point(uint8_t x, uint8_t y, uint8_t data)
439{
440 uint8_t res;
441
442 /* write point */
443 res = ssd1306_write_point(&gs_handle, x, y, data);
444 if (res != 0)
445 {
446 return 1;
447 }
448
449 return 0;
450}
451
462uint8_t ssd1306_basic_read_point(uint8_t x, uint8_t y, uint8_t *data)
463{
464 uint8_t res;
465
466 /* read point in gram */
467 res = ssd1306_read_point(&gs_handle, x, y, data);
468 if (res != 0)
469 {
470 return 1;
471 }
472
473 return 0;
474}
475
489uint8_t ssd1306_basic_string(uint8_t x, uint8_t y, char *str, uint16_t len, uint8_t color, ssd1306_font_t font)
490{
491 uint8_t res;
492
493 /* write string in gram */
494 res = ssd1306_gram_write_string(&gs_handle, x, y, str, len, color, font);
495 if (res != 0)
496 {
497 return 1;
498 }
499
500 /* update gram */
501 if (ssd1306_gram_update(&gs_handle) != 0)
502 {
503 return 1;
504 }
505 else
506 {
507 return 0;
508 }
509}
510
523uint8_t ssd1306_basic_rect(uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t color)
524{
525 uint8_t res;
526
527 /* fill rect in gram */
528 res = ssd1306_gram_fill_rect(&gs_handle, left, top, right, bottom, color);
529 if (res != 0)
530 {
531 return 1;
532 }
533
534 /* update gram */
535 if (ssd1306_gram_update(&gs_handle) != 0)
536 {
537 return 1;
538 }
539 else
540 {
541 return 0;
542 }
543}
544
557uint8_t ssd1306_basic_picture(uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t *img)
558{
559 uint8_t res;
560
561 /* draw picture in gram */
562 res = ssd1306_gram_draw_picture(&gs_handle, left, top, right, bottom, img);
563 if (res != 0)
564 {
565 return 1;
566 }
567
568 /* update gram */
569 if (ssd1306_gram_update(&gs_handle) != 0)
570 {
571 return 1;
572 }
573 else
574 {
575 return 0;
576 }
577}
driver ssd1306 basic header file
uint8_t ssd1306_write_point(ssd1306_handle_t *handle, uint8_t x, uint8_t y, uint8_t data)
write a point
uint8_t ssd1306_set_contrast(ssd1306_handle_t *handle, uint8_t contrast)
set the display contrast
uint8_t ssd1306_set_page_address_range(ssd1306_handle_t *handle, uint8_t start_addr, uint8_t end_addr)
set the page address range
uint8_t ssd1306_set_zoom_in(ssd1306_handle_t *handle, ssd1306_zoom_in_t zoom)
set the display zoom in
uint8_t ssd1306_set_scan_direction(ssd1306_handle_t *handle, ssd1306_scan_direction_t dir)
set the scan direction
uint8_t ssd1306_set_precharge_period(ssd1306_handle_t *handle, uint8_t phase1_period, uint8_t phase2_period)
set the pre charge period
uint8_t ssd1306_set_memory_addressing_mode(ssd1306_handle_t *handle, ssd1306_memory_addressing_mode_t mode)
set the memory addressing mode
ssd1306_interface_t
ssd1306 interface enumeration definition
struct ssd1306_handle_s ssd1306_handle_t
ssd1306 handle structure definition
uint8_t ssd1306_set_addr_pin(ssd1306_handle_t *handle, ssd1306_address_t addr_pin)
set the chip iic address
uint8_t ssd1306_gram_draw_picture(ssd1306_handle_t *handle, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t *img)
draw a picture in the gram
ssd1306_font_t
ssd1306 font enumeration definition
uint8_t ssd1306_gram_fill_rect(ssd1306_handle_t *handle, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t color)
fill a rectangle in the gram
uint8_t ssd1306_set_charge_pump(ssd1306_handle_t *handle, ssd1306_charge_pump_t enable)
enable or disable the charge pump
uint8_t ssd1306_read_point(ssd1306_handle_t *handle, uint8_t x, uint8_t y, uint8_t *data)
read a point
uint8_t ssd1306_set_display_mode(ssd1306_handle_t *handle, ssd1306_display_mode_t mode)
set the display mode
uint8_t ssd1306_set_display_offset(ssd1306_handle_t *handle, uint8_t offset)
set the display offset
uint8_t ssd1306_set_display(ssd1306_handle_t *handle, ssd1306_display_t on_off)
enable or disable the display
uint8_t ssd1306_set_multiplex_ratio(ssd1306_handle_t *handle, uint8_t multiplex)
set the multiplex ratio
uint8_t ssd1306_set_display_start_line(ssd1306_handle_t *handle, uint8_t l)
set the display start line
uint8_t ssd1306_deactivate_scroll(ssd1306_handle_t *handle)
deactivate the scroll
ssd1306_address_t
ssd1306 address pin enumeration definition
uint8_t ssd1306_set_high_column_start_address(ssd1306_handle_t *handle, uint8_t addr)
set the high column start address
uint8_t ssd1306_set_display_clock(ssd1306_handle_t *handle, uint8_t oscillator_frequency, uint8_t clock_divide)
set the display clock
uint8_t ssd1306_deinit(ssd1306_handle_t *handle)
close the chip
uint8_t ssd1306_set_segment_remap(ssd1306_handle_t *handle, ssd1306_segment_column_remap_t remap)
set the segment remap
uint8_t ssd1306_set_com_pins_hardware_conf(ssd1306_handle_t *handle, ssd1306_pin_conf_t conf, ssd1306_left_right_remap_t remap)
set the hardware com pins
uint8_t ssd1306_gram_write_string(ssd1306_handle_t *handle, uint8_t x, uint8_t y, char *str, uint16_t len, uint8_t color, ssd1306_font_t font)
draw a string in the gram
uint8_t ssd1306_set_fade_blinking_mode(ssd1306_handle_t *handle, ssd1306_fade_blinking_mode_t mode, uint8_t frames)
set the fade blinking mode
uint8_t ssd1306_clear(ssd1306_handle_t *handle)
clear the screen
uint8_t ssd1306_set_deselect_level(ssd1306_handle_t *handle, ssd1306_deselect_level_t level)
set the deselect level
uint8_t ssd1306_set_column_address_range(ssd1306_handle_t *handle, uint8_t start_addr, uint8_t end_addr)
set the column address range
uint8_t ssd1306_gram_update(ssd1306_handle_t *handle)
update the gram data
uint8_t ssd1306_set_low_column_start_address(ssd1306_handle_t *handle, uint8_t addr)
set the low column start address
uint8_t ssd1306_set_entire_display(ssd1306_handle_t *handle, ssd1306_entire_display_t enable)
enable or disable the entire display
uint8_t ssd1306_set_interface(ssd1306_handle_t *handle, ssd1306_interface_t interface)
set the chip interface
uint8_t ssd1306_init(ssd1306_handle_t *handle)
initialize the chip
@ SSD1306_DISPLAY_ON
@ SSD1306_DISPLAY_OFF
@ SSD1306_CHARGE_PUMP_ENABLE
@ SSD1306_MEMORY_ADDRESSING_MODE_PAGE
@ SSD1306_ENTIRE_DISPLAY_OFF
#define SSD1306_BASIC_DEFAULT_DISPLAY_OFFSET
#define SSD1306_BASIC_DEFAULT_PHASE1_PERIOD
uint8_t ssd1306_basic_clear(void)
basic example clear
#define SSD1306_BASIC_DEFAULT_MULTIPLEX_RATIO
#define SSD1306_BASIC_DEFAULT_LOW_COLUMN_START_ADDRESS
#define SSD1306_BASIC_DEFAULT_CLOCK_DIVIDE
uint8_t ssd1306_basic_display_on(void)
basic example display on
#define SSD1306_BASIC_DEFAULT_SEGMENT
#define SSD1306_BASIC_DEFAULT_COLUMN_ADDRESS_RANGE_END
#define SSD1306_BASIC_DEFAULT_SCAN_DIRECTION
#define SSD1306_BASIC_DEFAULT_PHASE2_PERIOD
#define SSD1306_BASIC_DEFAULT_LEFT_RIGHT_REMAP
#define SSD1306_BASIC_DEFAULT_COLUMN_ADDRESS_RANGE_START
#define SSD1306_BASIC_DEFAULT_PAGE_ADDRESS_RANGE_START
#define SSD1306_BASIC_DEFAULT_PAGE_ADDRESS_RANGE_END
#define SSD1306_BASIC_DEFAULT_FADE_FRAMES
#define SSD1306_BASIC_DEFAULT_PIN_CONF
#define SSD1306_BASIC_DEFAULT_DISPLAY_MODE
uint8_t ssd1306_basic_string(uint8_t x, uint8_t y, char *str, uint16_t len, uint8_t color, ssd1306_font_t font)
basic example draw a string
uint8_t ssd1306_basic_rect(uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t color)
basic example fill a rectangle
#define SSD1306_BASIC_DEFAULT_FADE_BLINKING_MODE
uint8_t ssd1306_basic_picture(uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t *img)
basic example draw a picture
#define SSD1306_BASIC_DEFAULT_OSCILLATOR_FREQUENCY
uint8_t ssd1306_basic_init(ssd1306_interface_t interface, ssd1306_address_t addr)
basic example init
#define SSD1306_BASIC_DEFAULT_ZOOM_IN
uint8_t ssd1306_basic_deinit(void)
basic example deinit
#define SSD1306_BASIC_DEFAULT_CONTRAST
uint8_t ssd1306_basic_read_point(uint8_t x, uint8_t y, uint8_t *data)
basic example read a point
uint8_t ssd1306_basic_display_off(void)
basic example display off
#define SSD1306_BASIC_DEFAULT_DISPLAY_START_LINE
uint8_t ssd1306_basic_write_point(uint8_t x, uint8_t y, uint8_t data)
basic example write a point
#define SSD1306_BASIC_DEFAULT_DESELECT_LEVEL
ssd1306 basic example default definition
#define SSD1306_BASIC_DEFAULT_HIGH_COLUMN_START_ADDRESS
uint8_t ssd1306_interface_iic_init(void)
interface iic bus init
uint8_t ssd1306_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t ssd1306_interface_reset_gpio_init(void)
interface reset gpio init
void ssd1306_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ssd1306_interface_spi_write_cmd(uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t ssd1306_interface_reset_gpio_deinit(void)
interface reset gpio deinit
uint8_t ssd1306_interface_iic_deinit(void)
interface iic bus deinit
uint8_t ssd1306_interface_spi_init(void)
interface spi bus init
uint8_t ssd1306_interface_spi_deinit(void)
interface spi bus deinit
uint8_t ssd1306_interface_spi_cmd_data_gpio_deinit(void)
interface command && data gpio deinit
uint8_t ssd1306_interface_spi_cmd_data_gpio_write(uint8_t value)
interface command && data gpio write
uint8_t ssd1306_interface_reset_gpio_write(uint8_t value)
interface reset gpio write
uint8_t ssd1306_interface_spi_cmd_data_gpio_init(void)
interface command && data gpio init
void ssd1306_interface_delay_ms(uint32_t ms)
interface delay ms