Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2136 - 1
/*****************************************************************************
2
 *   Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net                  *
3
 *   - original LCD control by Thomas "thkais" Kaiser                        *
4
 *   - special number formating routines taken from C-OSD                    *
5
 *      from Claas Anders "CaScAdE" Rathje                                   *
6
 *   - some extension, ellipse and circ_line by Peter "woggle" Mack          *
7
 * Thanks to Oliver Schwaneberg for adding several functions to this library!*
8
 *                                                                           *
9
 * Author:  Jan Michel (jan at mueschelsoft dot de)                          *
10
 * License: GNU General Public License, version 3                            *
11
 * Version: v0.93 September 2010                                             *
12
 *                                                                           *
13
 *   This program is free software; you can redistribute it and/or modify    *
14
 *   it under the terms of the GNU General Public License as published by    *
15
 *   the Free Software Foundation; either version 2 of the License.          *
16
 *                                                                           *
17
 *   This program is distributed in the hope that it will be useful,         *
18
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
19
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
20
 *   GNU General Public License for more details.                            *
21
 *                                                                           *
22
 *   You should have received a copy of the GNU General Public License       *
23
 *   along with this program; if not, write to the                           *
24
 *   Free Software Foundation, Inc.,                                         *
25
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.               *
26
 *****************************************************************************/
27
 
28
//############################################################################
29
//# HISTORY  lcd.h
30
//#
31
//# 27.06.2014 OG
32
//# - add: define MINVERSX, MNORMALX
33
//#
34
//# 11.06.2014 OG
35
//# - add: lcd_set_contrast()
36
//#
37
//# 04.06.2014 OG
38
//# - add: lcdx_cls_rowwidth()
39
//#
40
//# 02.05.2014 OG
41
//# - add: Popup_Draw() (ehemals in osd.c)
42
//#
43
//# 13.04.2014 OG
44
//# - add: lcd_print_LF()
45
//#
46
//# 11.04.2014 OG
47
//# - add: lcdx_cls_row()
48
//#
49
//# 08.04.2014 OG
50
//# - add: lcdx_printf_center(), lcdx_printf_center_P()
51
//#
52
//# 07.04.2014 OG
53
//# - add: lcd_setpos(), lcd_print_char()
54
//#
55
//# 04.04.2014 OG
56
//# - add: ShowTitle_P()
57
//#
58
//# 28.02.2014 OG
59
//# - del: show_baudrate()
60
//#
61
//# 16.02.2014 OG
62
//# - add: lcdx_printp_center(), lcdx_print_center()
63
//#
64
//# 13.02.2014 OG
65
//# - add: R# define's fuer lcd_rect_round()
66
//#
67
//# 12.02.2014 OG
68
//# - add: lcd_frect_round()
69
//# - add: lcd_rect_round()
70
//#
71
//# 03.02.2014 OG
72
//# - fix: bei writex_ndigit_number_u_100th() fehlte der Parameter 'mode'
73
//#
74
//# 07.07.2013 OG
75
//# - add: SYMBOL_CHECK
76
//#
77
//# 11.06.2013 OG
78
//# - add: SYMBOL_AVG, SYMBOL_MIN, SYMBOL_MAX fuer OSDDATA Anzeige
79
//# - del: Antennen-Symbol von OSD_General (wird wieder gezeichnet)
80
//#
81
//# 15.05.2013 OG
82
//# - add: define SYMBOL_SMALLDEGREE, SYMBOL_RCQUALITY
83
//#
84
//# 03.05.2013 OG
85
//# - fix: writex_gpspos() - Anzeige negativer Koordinaten
86
//# - fix: Anzeigefehler writex_datetime_time()
87
//# - chg: writex_datetime_date() & writex_datetime_time() Parameter
88
//#        'timeoffset' entfernt da das durch PKT-Config geregelt werden soll
89
//#
90
//# 28.04.2013 OG
91
//# - add: lcdx_printf_at(), lcdx_printf_at_P()
92
//#        lcd_printf_at(), lcd_printf_at_P()
93
//# - del: write_gps_pos()
94
//#
95
//# 22.03.2013 OG
96
//# - siehe lcd.c
97
//#
98
//# 11.03.2013 OG
99
//# - siehe lcd.c
100
//#
101
//# 07.03.2013 OG
102
//# - siehe lcd.c
103
//#
104
//# 06.03.2013 OG
105
//#  - add: extended Funktionen lcdx_... / writex...
106
//############################################################################
107
 
108
 
109
#ifndef _LCD_H
110
#define _LCD_H
111
 
112
#include <stdarg.h>             // Notwendig! (OG)
113
#include "../timer/timer.h"
114
 
115
#define MNORMAL     0   // Zeichendarstellung: Normal
116
#define MINVERS     2   // Zeichendarstellung: Invers
117
#define MBIG        3   // OBSOLETE! - Zeichendarstellung: grosser Zeichensatz (8x8) Normal
118
#define MBIGINVERS  4   // OBSOLETE! - Zeichendarstellung: grosser Zeichensatz (8x8) Invers
119
#define MNORMALX    5   // Zeichendarstellung: Normal - oben und Links wird eine 1 Pixel Linie gezogen
120
#define MINVERSX    6   // Zeichendarstellung: Invers - oben und Links wird eine 1 Pixel Linie gezogen
121
 
122
 
123
// fuer lcd_rect_round()
124
#define R0          0   // Radius 0
125
#define R1          1   // Radius 1
126
#define R2          2   // Radius 2
127
 
128
 
129
#define SYMBOL_AVG          10
130
#define SYMBOL_MAX          13
131
#define SYMBOL_MIN          16
132
#define SYMBOL_SMALLDEGREE  11
133
#define SYMBOL_BIGDEGREE    30
134
#define SYMBOL_CHECK        31
135
 
136
//------------------------------------------------------------------------------------
137
void lcdx_printf_at( uint8_t x, uint8_t y, uint8_t mode, int8_t xoffs, int8_t yoffs, const char *format, ... );
138
void lcdx_printf_at_P( uint8_t x, uint8_t y, uint8_t mode, int8_t xoffs, int8_t yoffs, const char *format, ... );
139
void lcd_printf_at( uint8_t x, uint8_t y, uint8_t mode, const char *format, ... );
140
void lcd_printf_at_P( uint8_t x, uint8_t y, uint8_t mode, const char *format, ... );
141
void lcdx_printf_center( uint8_t y, uint8_t mode, int8_t xoffs, int8_t yoffs, const char *format, ... );
142
void lcdx_printf_center_P( uint8_t y, uint8_t mode, int8_t xoffs, int8_t yoffs, const char *format, ... );
143
 
144
 
145
//------------------------------------------------------------------------------------
146
// X-tended
147
void lcdx_putc( uint8_t x, uint8_t y, uint8_t c, uint8_t mode, int8_t xoffs, int8_t yoffs );
148
void lcdx_print (uint8_t *text, uint8_t mode, int8_t xoffs, int8_t yoffs);
149
void lcdx_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode, int8_t xoffs, int8_t yoffs);
150
void lcdx_printp (const char *text, uint8_t mode, int8_t xoffs, int8_t yoffs);
151
void lcdx_printp_at (uint8_t x, uint8_t y, const char *text, uint8_t mode, int8_t xoffs, int8_t yoffs);
152
 
153
void writex_ndigit_number_s (uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad, uint8_t mode, int8_t xoffs, int8_t yoffs);
154
void writex_ndigit_number_s_10th (uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad, uint8_t mode, int8_t xoffs, int8_t yoffs);
155
 
156
void writex_ndigit_number_u (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad, uint8_t mode, int8_t xoffs, int8_t yoffs);
157
void writex_ndigit_number_u_10th (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad, uint8_t mode, int8_t xoffs, int8_t yoffs);
158
void writex_ndigit_number_u_100th( uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad, uint8_t mode, int8_t xoffs, int8_t yoffs);
159
 
160
void lcdx_puts_at(uint8_t x, uint8_t y, const char *s, uint8_t mode, int8_t xoffs, int8_t yoffs);
161
void writex_time (uint8_t x, uint8_t y, uint16_t seconds, uint8_t mode, int8_t xoffs, int8_t yoffs);
162
//void writex_gpspos( uint8_t x, uint8_t y, uint32_t GPSpos, uint8_t mode, int8_t xoffs, int8_t yoffs );
163
void writex_gpspos( uint8_t x, uint8_t y, int32_t GPSpos, uint8_t mode, int8_t xoffs, int8_t yoffs );
164
 
165
void writex_datetime_time( uint8_t x, uint8_t y, PKTdatetime_t datetime, uint8_t mode, int8_t xoffs, int8_t yoffs);
166
void writex_datetime_date( uint8_t x, uint8_t y, PKTdatetime_t datetime, uint8_t mode, int8_t xoffs, int8_t yoffs);
167
 
168
void Show_PKTError_NoRAM(void);
169
void ShowTitle_P( const char *title, uint8_t clearscreen );
170
 
171
 
172
//------------------------------------------------------------------------------------
173
void lcd_rect_round( uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode, uint8_t r);
174
void lcd_frect_round( uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode, uint8_t r);
175
 
176
void lcdx_print_center( uint8_t y, uint8_t *text, uint8_t mode, int8_t xoffs, int8_t yoffs);
177
void lcdx_printp_center( uint8_t y, const char *text, uint8_t mode, int8_t xoffs, int8_t yoffs);
178
 
179
void lcdx_cls_row( uint8_t y, uint8_t mode, int8_t yoffs );
180
void lcdx_cls_rowwidth( uint8_t y, uint8_t width, uint8_t mode, int8_t xoffs, int8_t yoffs );
181
 
182
void lcd_setpos( uint8_t x, uint8_t y );
183
void lcd_print_char( uint8_t c, uint8_t mode );
184
void lcd_print_LF( void );
185
 
186
void Popup_Draw( uint8_t heigthC );
187
 
188
/*
189
 
190
//-----------------------------------------------------------------------------
191
// Command Codes
192
//-----------------------------------------------------------------------------
193
//1: Display on/off
194
#define LCD_DISPLAY_ON          0xAF  //switch display on
195
#define LCD_DISPLAY_OFF         0xAE  //switch display off
196
 
197
//2: display start line set (lower 6 bits select first line on lcd from 64 lines in memory)
198
#define LCD_START_LINE          0x40
199
 
200
//3: Page address set (lower 4 bits select one of 8 pages)
201
#define LCD_PAGE_ADDRESS        0xB0
202
 
203
//4: column address (lower 4 bits are upper / lower nibble of column address)
204
#define LCD_COL_ADDRESS_MSB     0x10
205
#define LCD_COL_ADDRESS_LSB     0x00  //second part of column address
206
 
207
//8: select orientation (black side of the display should be further away from viewer)
208
#define LCD_BOTTOMVIEW          0xA1  //6 o'clock view
209
#define LCD_TOPVIEW             0xA0  //12 o'clock view
210
 
211
//9: select normal (white background, black pixels) or reverse (black background, white pixels) mode
212
#define LCD_DISPLAY_POSITIVE    0xA6  //not inverted mode
213
#define LCD_DISPLAY_INVERTED    0xA7  //inverted display
214
 
215
//10: show memory content or switch all pixels on
216
#define LCD_SHOW_NORMAL         0xA4  //show dram content
217
#define LCD_SHOW_ALL_POINTS     0xA5  //show all points
218
 
219
//11: lcd bias set
220
#define LCD_BIAS_1_9            0xA2
221
#define LCD_BIAS_1_7            0xA3
222
 
223
//14: Reset Controller
224
#define LCD_RESET_CMD           0xE2
225
 
226
//15: output mode select (turns display upside-down)
227
#define LCD_SCAN_DIR_NORMAL     0xC0  //normal scan direction
228
#define LCD_SCAN_DIR_REVERSE    0xC8  //reversed scan direction
229
 
230
//16: power control set (lower 3 bits select operating mode)
231
//Bit 0: Voltage follower on/off - Bit 1: Voltage regulator on/off - Bit 2: Booster circuit on/off
232
#define LCD_POWER_CONTROL       0x28  //base command
233
#define LCD_POWER_LOW_POWER     0x2F
234
#define LCD_POWER_WIDE_RANGE    0x2F
235
#define LCD_POWER_LOW_VOLTAGE   0x2B
236
 
237
//17: voltage regulator resistor ratio set (lower 3 bits select ratio)
238
//selects lcd voltage - 000 is low (~ -2V), 111 is high (~ - 10V), also depending on volume mode. Datasheet suggests 011
239
#define LCD_VOLTAGE             0x20
240
 
241
//18: Volume mode set (2-byte command, lower 6 bits in second word select value, datasheet suggests 0x1F)
242
#define LCD_VOLUME_MODE_1       0x81
243
#define LCD_VOLUME_MODE_2       0x00
244
 
245
//#if DISPLAY_TYPE == 128 || DISPLAY_TYPE == 132
246
//19: static indicator (2-byte command), first on/off, then blinking mode
247
#define LCD_INDICATOR_ON        0xAD  //static indicator on
248
#define LCD_INDICATOR_OFF       0xAC  //static indicator off
249
#define LCD_INDICATOR_MODE_OFF  0x00
250
#define LCD_INDICATOR_MODE_1HZ  0x01
251
#define LCD_INDICATOR_MODE_2HZ  0x10
252
#define LCD_INDICATOR_MODE_ON   0x11
253
 
254
//20: booster ratio set (2-byte command)
255
#define LCD_BOOSTER_SET         0xF8  //set booster ratio
256
#define LCD_BOOSTER_234         0x00  //2x-4x
257
#define LCD_BOOSTER_5           0x01  //5x
258
#define LCD_BOOSTER_6           0x03  //6x
259
//#endif
260
 
261
//22: NOP command
262
#define LCD_NOP                 0xE3
263
 
264
//#if DISPLAY_TYPE == 102
265
////25: advanced program control
266
//#define LCD_ADV_PROG_CTRL     0xFA
267
//#define LCD_ADV_PROG_CTRL2    0x10
268
//#endif
269
 
270
//-----------------------------------------------------------------------------
271
// Makros to execute commands
272
//-----------------------------------------------------------------------------
273
 
274
#define LCD_SWITCH_ON()                 lcd_command(LCD_DISPLAY_ON)
275
#define LCD_SWITCH_OFF()                lcd_command(LCD_DISPLAY_OFF)
276
#define LCD_SET_FIRST_LINE(i)           lcd_command(LCD_START_LINE | ((i) & 0x3F))
277
#define LCD_SET_PAGE_ADDR(i)            lcd_command(LCD_PAGE_ADDRESS | ((i) & 0x0F))
278
#define LCD_SET_COLUMN_ADDR(i)          lcd_command(LCD_COL_ADDRESS_MSB | ((i>>4) & 0x0F)); \
279
                                        lcd_command(LCD_COL_ADDRESS_LSB | ((i) & 0x0F))
280
#define LCD_GOTO_ADDRESS(page,col);     lcd_command(LCD_PAGE_ADDRESS | ((page) & 0x0F)); \
281
                                        lcd_command(LCD_COL_ADDRESS_MSB | ((col>>4) & 0x0F)); \
282
                                        lcd_command(LCD_COL_ADDRESS_LSB | ((col) & 0x0F));
283
 
284
#define LCD_SET_BOTTOM_VIEW()           lcd_command(LCD_BOTTOMVIEW)
285
#define LCD_SET_TOP_VIEW()              lcd_command(LCD_TOPVIEW)
286
#define LCD_SET_MODE_POSITIVE()         lcd_command(LCD_DISPLAY_POSITIVE)
287
#define LCD_SET_MODE_INVERTED()         lcd_command(LCD_DISPLAY_INVERTED)
288
#define LCD_SHOW_ALL_PIXELS_ON()        lcd_command(LCD_SHOW_ALL_POINTS)
289
#define LCD_SHOW_ALL_PIXELS_OFF()       lcd_command(LCD_SHOW_NORMAL)
290
#define LCD_SET_BIAS_RATIO_1_7()        lcd_command(LCD_BIAS_1_7)
291
#define LCD_SET_BIAS_RATIO_1_9()        lcd_command(LCD_BIAS_1_9)
292
#define LCD_SEND_RESET()                lcd_command(LCD_RESET_CMD)
293
#define LCD_ORIENTATION_NORMAL()        lcd_command(LCD_SCAN_DIR_NORMAL)
294
#define LCD_ORIENTATION_UPSIDEDOWN()    lcd_command(LCD_SCAN_DIR_REVERSE)
295
#define LCD_SET_POWER_CONTROL(i)        lcd_command(LCD_POWER_CONTROL | ((i) & 0x07))
296
#define LCD_SET_LOW_POWER()             lcd_command(LCD_POWER_LOW_POWER)
297
#define LCD_SET_WIDE_RANGE()            lcd_command(LCD_POWER_WIDE_RANGE)
298
#define LCD_SET_LOW_VOLTAGE()           lcd_command(LCD_POWER_LOW_VOLTAGE)
299
#define LCD_SET_BIAS_VOLTAGE(i)         lcd_command(LCD_VOLTAGE | ((i) & 0x07))
300
#define LCD_SET_VOLUME_MODE(i)          lcd_command(LCD_VOLUME_MODE_1); \
301
                                        lcd_command(LCD_VOLUME_MODE_2 | ((i) & 0x3F))
302
 
303
//#if DISPLAY_TYPE == 128 || DISPLAY_TYPE == 132
304
#define LCD_SET_INDICATOR_OFF()         lcd_command(LCD_INDICATOR_OFF); \
305
                                        lcd_command(LCD_INDICATOR_MODE_OFF)
306
#define LCD_SET_INDICATOR_STATIC()      lcd_command(LCD_INDICATOR_ON); \
307
                                        lcd_command(LCD_INDICATOR_MODE_ON)
308
#define LCD_SET_INDICATOR_1HZ()         lcd_command(LCD_INDICATOR_ON); \
309
                                        lcd_command(LCD_INDICATOR_MODE_1HZ)
310
#define LCD_SET_INDICATOR_2HZ()         lcd_command(LCD_INDICATOR_ON); \
311
                                        lcd_command(LCD_INDICATOR_MODE_2HZ)
312
#define LCD_SET_INDICATOR(i,j)          lcd_command(LCD_INDICATOR_OFF | ((i) & 1)); \
313
                                        lcd_command(((j) & 2))
314
#define LCD_SLEEP_MODE                  lcd_command(LCD_INDICATOR_OFF); \
315
                                        lcd_command(LCD_DISPLAY_OFF); \
316
                                        lcd_command(LCD_SHOW_ALL_POINTS)
317
//#endif
318
 
319
//#if DISPLAY_TYPE == 102
320
//#define LCD_TEMPCOMP_HIGH             0x80
321
//#define LCD_COLWRAP                   0x02
322
//#define LCD_PAGEWRAP                  0x01
323
//#define LCD_SET_ADV_PROG_CTRL(i)      lcd_command(LCD_ADV_PROG_CTRL);
324
//                                      lcd_command(LCD_ADV_PROG_CTRL2 & i)
325
//#endif
326
 
327
*/
328
 
329
 
330
 
331
extern volatile uint8_t LCD_ORIENTATION;
332
 
333
//#define LCD_LINES               8
334
//#define LCD_COLS                21
335
 
336
extern uint8_t lcd_xpos;
337
extern uint8_t lcd_ypos;
338
 
339
void lcd_set_contrast( uint8_t value );
340
void lcd_command(uint8_t cmd);
341
void send_byte (uint8_t data);
342
void LCD_Init (uint8_t LCD_Mode);
343
void new_line (void);
344
void lcd_puts_at(uint8_t x, uint8_t y,const char *s, uint8_t mode );
345
void lcd_putc (uint8_t x, uint8_t y, uint8_t c, uint8_t mode);
346
void send_byte (uint8_t data);
347
void lcd_print (uint8_t *text, uint8_t mode);
348
void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode);
349
 
350
void lcd_printp (const char *text, uint8_t mode);
351
void lcd_printp_at (uint8_t x, uint8_t y, const char *text, uint8_t mode);
352
void lcd_printpns (const char *text, uint8_t mode);
353
void lcd_printpns_at (uint8_t x, uint8_t y, const char *text, uint8_t mode);
354
void lcd_cls (void);
355
void lcd_cls_line (uint8_t x, uint8_t y, uint8_t w);
356
 
357
void print_display (uint8_t *text);
358
void print_display_at (uint8_t x, uint8_t y, uint8_t *text);
359
void copy_line (uint8_t y);
360
void paste_line (uint8_t y);
361
 
362
void lcd_plot (uint8_t x, uint8_t y, uint8_t mode);
363
void lcd_line (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode);
364
void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode);
365
void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode);
366
void lcd_circle (int16_t x0, int16_t y0, int16_t radius, uint8_t mode);
367
void lcd_fcircle (int16_t x0, int16_t y0, int16_t radius, uint8_t mode);
368
void lcd_circ_line (uint8_t x, uint8_t y, uint8_t r, uint16_t deg, uint8_t mode);
369
 
370
void lcd_ellipse (int16_t x0, int16_t y0, int16_t rx, int16_t ry, uint8_t mode);
371
void lcd_ellipse_line (uint8_t x, uint8_t y, uint8_t rx, uint8_t ry, uint16_t deg, uint8_t mode);
372
 
373
void lcd_ecircle (int16_t x0, int16_t y0, int16_t radius, uint8_t mode);
374
void lcd_ecirc_line (uint8_t x, uint8_t y, uint8_t r, uint16_t deg, uint8_t mode);
375
 
376
void lcd_view_font (uint8_t page);
377
void lcd_print_hex_at (uint8_t x, uint8_t y, uint8_t h, uint8_t mode);
378
 
379
void lcd_write_number_u (uint8_t number);
380
void lcd_write_number_u_at (uint8_t x, uint8_t y, uint8_t number);
381
void lcd_print_hex (uint8_t h, uint8_t mode);
382
/**
383
 * Write only some digits of a unsigned <number> at <x>/<y>
384
 * <length> represents the length to rightbound the number
385
 * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of   7
386
 */
387
void write_ndigit_number_u (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad,uint8_t mode);
388
 
389
/**
390
 * Write only some digits of a signed <number> at <x>/<y>
391
 * <length> represents the length to rightbound the number
392
 * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of   7
393
 */
394
 
395
void write_ndigit_number_s (uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad, uint8_t mode);
396
 
397
/**
398
 * Write only some digits of a unsigned <number> at <x>/<y> as /10th of the value
399
 * <length> represents the length to rightbound the number
400
 * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 00.7 instead of   .7
401
 */
402
void write_ndigit_number_u_10th (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad, uint8_t mode);
403
 
404
/**
405
 * Write only some digits of a unsigned <number> at <x>/<y> as /100th of the value
406
 * <length> represents the length to rightbound the number
407
 * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 00.7 instead of   .7
408
 */
409
void write_ndigit_number_u_100th (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad);
410
 
411
/**
412
 * Write only some digits of a signed <number> at <x>/<y> as /10th of the value
413
 * <length> represents the length to rightbound the number
414
 * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 00.7 instead of   .7
415
 */
416
void write_ndigit_number_s_10th (uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad, uint8_t mode);
417
 
418
/**
419
 *  write <seconds> as human readable time at <x>/<y>
420
 */
421
void write_time (uint8_t x, uint8_t y, uint16_t seconds);
422
 
423
 
424
 
425
#endif