LCDDogm1286.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2019, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
255 #ifndef ti_drivers_lcd_LCDDogm1286__include
256 #define ti_drivers_lcd_LCDDogm1286__include
257 
258 #include <ti/drivers/SPI.h>
259 #include <ti/drivers/dpl/SemaphoreP.h>
260 
261 #ifdef __cplusplus
262 extern "C" {
263 #endif
264 
266 #define LCD_PIXELS 8192
267 
268 #define LCD_BYTES 1024
269 
270 #define LCD_COLS 128
271 
272 #define LCD_X_MIN 0
273 
274 #define LCD_X_MAX (LCD_COLS-1)
275 
276 #define LCD_ROWS 64
277 
278 #define LCD_Y_MIN 0
279 
280 #define LCD_Y_MAX (LCD_ROWS-1)
281 
282 #define LCD_PAGES 8
283 
284 #define LCD_PAGE_ROWS 8
285 
286 #define LCD_CHAR_WIDTH 6
287 
288 #define LCD_FONT_WIDTH 5
289 
290 
294 typedef struct LCD_Config *LCD_Handle;
295 
303 typedef enum LCD_Align
304 {
308 } LCD_Align;
309 
317 typedef enum LCD_Page
318 {
328 } LCD_Page;
329 
337 typedef enum LCD_X_Limit
338 {
341 } LCD_X_Limit;
342 
350 typedef enum LCD_Y_Limit
351 {
354 } LCD_Y_Limit;
355 
363 typedef struct LCD_Params
364 {
365  unsigned int lcdWriteTimeout;
367  /* SPI parameters */
368  unsigned int spiBitRate;
370 } LCD_Params;
371 
376 typedef struct LCD_Command
377 {
379  char adcSet;
382  char lcdBias;
391  char displayEn;
392  char setPage;
393  char columnHi;
394  char columnLo;
395 } LCD_Command;
396 
408 typedef struct LCD_Buffer
409 {
410  char *pcBuffer;
411  unsigned int bufSize;
412  SemaphoreP_Struct bufMutex;
413 } LCD_Buffer;
414 
420 typedef struct LCD_Object
421 {
422  /* LCD control variables */
423  bool isOpen; /* Has the obj been opened? */
424  SPI_Handle spiHandle; /* SPI handle used by the LCD */
425  unsigned int lcdWriteTimeout; /* Timeout for write semaphore */
426  SemaphoreP_Struct lcdMutex; /* Semaphore associated with the lcd */
427  LCD_Buffer *lcdBuffers; /* Pointer to the array
428  with lcd buffers */
429  uint8_t nBuffers; /* number of buffers availible */
430 } LCD_Object;
431 
446 typedef struct LCD_HWAttrs
447 {
450  /* LCD mode pin */
451  uint8_t lcdModePin;
452  /* LCD reset pin */
453  uint8_t lcdResetPin;
454  /* LCD CSn pin */
455  uint8_t lcdCsnPin;
456  /* Logical peripheral number indexed
457  into the SPI_config table */
458  uint8_t spiIndex;
459 
460 } LCD_HWAttrs;
461 
467 typedef struct LCD_Config
468 {
473 } LCD_Config;
474 
483 static const LCD_Command LCD_initCmd =
484 {
485  0x40, /*Display start line 0 */
486  0xA1, /*ADC reverse, 6 oclock viewing direction */
487  0xC0, /*Normal COM0...COM63 */
488  0xA6, /*Display normal, not mirrored */
489  0xA2, /*Set Bias 1/9 (Duty 1/65) */
490  0x2F, /*Booster, Regulator and Follower On */
491  0xF8, /*Set internal Booster to 4x */
492  0x00, /* */
493  0x27, /*Contrast set */
494  0x81, /* */
495  0x16, /* <- use value from LCD-MODULE .doc guide*/
496  /* for better contrast (not 0x10) */
497  0xAC, /*No indicator */
498  0x00, /* */
499  0xAF, /*Display on */
500  0xB0, /*Set Page 0 */
501  0x10, /*High-Nibble of column address */
502  0x00 /*Low-Nibble of column address */
503 };
504 
516 extern void LCD_close(LCD_Handle handle);
517 
526 extern void LCD_init(void);
527 
547 extern LCD_Handle LCD_open(LCD_Buffer *buffers, uint8_t nBuffers, LCD_Params *params);
548 
563 extern void LCD_Params_init(LCD_Params *params);
564 
592 extern void LCD_writeLine(LCD_Handle handle, unsigned int bufIndex, char *str, unsigned int uiValue, unsigned char ucFormat, unsigned char ucLine);
593 
608 extern void LCD_update(LCD_Handle handle, unsigned int bufIndex);
609 
646 extern void LCD_updatePart(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo,
647  LCD_Page iPageFrom, LCD_Page iPageTo);
648 
663 extern void LCD_bufferClear(LCD_Handle handle, unsigned int bufIndex);
664 
692 extern void LCD_bufferClearPage(LCD_Handle handle, unsigned int bufIndex, LCD_Page iPage);
693 
730 extern void LCD_bufferClearPart(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo,
731  LCD_Page iPageFrom, LCD_Page iPageTo);
732 
758 extern void LCD_bufferInvert(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom,
759  unsigned char ucXTo, unsigned char ucYTo);
760 
793 extern void LCD_bufferInvertPage(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo,
794  LCD_Page iPage);
795 
826 extern void LCD_bufferPrintString(LCD_Handle handle, unsigned int bufIndex, const char *pcStr, unsigned char ucX,
827  LCD_Page iPage);
828 
865 extern void LCD_bufferPrintStringAligned(LCD_Handle handle, unsigned int bufIndex, const char *pcStr,
866  LCD_Align iAlignment, LCD_Page iPage);
867 
897 extern void LCD_bufferPrintInt(LCD_Handle handle, unsigned int bufIndex, int i32Number, unsigned char ucX,
898  LCD_Page iPage);
899 
935 extern void LCD_bufferPrintIntAligned(LCD_Handle handle, unsigned int bufIndex, int i32Number,
936  LCD_Align iAlignment, LCD_Page iPage);
937 
974 extern void LCD_bufferPrintFloat(LCD_Handle handle, unsigned int bufIndex, float fNumber, unsigned char ucDecimals,
975  unsigned char ucX, LCD_Page iPage);
976 
1015 extern void LCD_bufferPrintFloatAligned(LCD_Handle handle, unsigned int bufIndex, float fNumber, unsigned char ucDecimals,
1016  LCD_Align iAlignment, LCD_Page iPage);
1017 
1044 extern void LCD_bufferSetLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom,
1045  unsigned char ucXTo, unsigned char ucYTo);
1046 
1073 extern void LCD_bufferClearLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom,
1074  unsigned char ucXTo, unsigned char ucYTo);
1075 
1099 extern void LCD_bufferSetHLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo,
1100  unsigned char ucY);
1101 
1125 extern void LCD_bufferClearHLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom,
1126  unsigned char ucXTo, unsigned char ucY);
1127 
1151 extern void LCD_bufferSetVLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom,
1152  unsigned char ucYTo);
1153 
1177 extern void LCD_bufferClearVLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom,
1178  unsigned char ucYTo);
1179 
1205 extern void LCD_bufferHArrow(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, unsigned char ucY);
1206 
1232 extern void LCD_bufferVArrow(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom, unsigned char ucYTo);
1233 
1254 extern void LCD_bufferSetPx(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucY);
1255 
1275 extern void LCD_bufferClearPx(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucY);
1276 
1296 extern void LCD_bufferCopy(LCD_Handle handle, unsigned int fromBufIndex, unsigned int toBufIndex);
1297 
1312 extern void LCD_setContrast(LCD_Handle handle, unsigned char ucContrast);
1313 
1314 #ifdef __cplusplus
1315 }
1316 #endif
1317 
1318 #endif /* ti_drivers_lcd_LCDDogm1286__include */
char displayStartLine
Definition: LCDDogm1286.h:378
LCD_Command const * LCD_initCmd
Definition: LCDDogm1286.h:449
void LCD_bufferInvertPage(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, LCD_Page iPage)
This function inverts a range of columns in the display buffer on a specified page (for example...
void LCD_bufferClearPage(LCD_Handle handle, unsigned int bufIndex, LCD_Page iPage)
This function clears the page specified by iPage in the given buffer.
void LCD_Params_init(LCD_Params *params)
Function to initialize the LCD_Params struct to its defaults.
char setPage
Definition: LCDDogm1286.h:392
void LCD_writeLine(LCD_Handle handle, unsigned int bufIndex, char *str, unsigned int uiValue, unsigned char ucFormat, unsigned char ucLine)
Function that writes a string and value to a buffer and sends it to the LCD display. The written page is being cleared before it is written to.
void LCD_bufferPrintString(LCD_Handle handle, unsigned int bufIndex, const char *pcStr, unsigned char ucX, LCD_Page iPage)
Function that writes a string to the specified buffer.
void LCD_bufferCopy(LCD_Handle handle, unsigned int fromBufIndex, unsigned int toBufIndex)
This function copies the content of fromBufIndex to toBufIndex.
Definition: LCDDogm1286.h:307
unsigned int bufSize
Definition: LCDDogm1286.h:411
char contrastSet1
Definition: LCDDogm1286.h:387
void LCD_bufferClearVLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom, unsigned char ucYTo)
This function clears a vertical line from (ucX,ucYFrom) to (ucX,ucYTo) from the buffer specified...
void LCD_bufferSetPx(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucY)
This function sets a pixel on (ucX,ucY).
Serial Peripheral Interface (SPI) Driver Interface.
void LCD_bufferClear(LCD_Handle handle, unsigned int bufIndex)
Function that empties the specified LCD buffer.
struct LCD_Config LCD_Config
The LCD_Config structure contains a set of pointers used to characterize the LCD driver implementatio...
bool isOpen
Definition: LCDDogm1286.h:423
LCD_Align
LCD alignment enum.
Definition: LCDDogm1286.h:303
void LCD_bufferPrintFloat(LCD_Handle handle, unsigned int bufIndex, float fNumber, unsigned char ucDecimals, unsigned char ucX, LCD_Page iPage)
This function writes a number of data type float to the given buffer at a specified column and page...
uint8_t spiIndex
Definition: LCDDogm1286.h:458
char adcSet
Definition: LCDDogm1286.h:379
struct LCD_Params LCD_Params
LCD Parameters are used to with the LCD_open() call. Default values for these parameters are set usin...
LCD Object.
Definition: LCDDogm1286.h:420
unsigned int lcdWriteTimeout
Definition: LCDDogm1286.h:425
struct LCD_HWAttrs LCD_HWAttrs
LCD Hardware attributes.
char columnLo
Definition: LCDDogm1286.h:394
LCD_Buffer used to store data to be printed on the LCD display.
Definition: LCDDogm1286.h:408
char staticIndicator1
Definition: LCDDogm1286.h:390
static const LCD_Command LCD_initCmd
Definition: LCDDogm1286.h:483
Definition: LCDDogm1286.h:339
void LCD_bufferClearHLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, unsigned char ucY)
This function clears a horizontal line from (ucXFrom,ucY) to (ucXTo,ucY) from the specified buffer...
struct LCD_Object LCD_Object
LCD Object.
void LCD_bufferPrintIntAligned(LCD_Handle handle, unsigned int bufIndex, int i32Number, LCD_Align iAlignment, LCD_Page iPage)
This function writes an integer to the given buffer as specified by the iAlignment argument...
void LCD_bufferSetLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom, unsigned char ucXTo, unsigned char ucYTo)
This function draws a line in the specified buffer from (ucXFrom,ucYFrom) to (ucXTo,ucYTo). The function uses Bresenham&#39;s line algorithm.
Definition: LCDDogm1286.h:305
uint8_t lcdCsnPin
Definition: LCDDogm1286.h:455
LCD_Page
LCD page enum.
Definition: LCDDogm1286.h:317
#define LCD_ROWS
Definition: LCDDogm1286.h:276
SPI_FrameFormat spiFrameFormat
Definition: LCDDogm1286.h:369
void LCD_close(LCD_Handle handle)
Function to close the LCD instance specified by the LCD handle.
void LCD_bufferClearLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom, unsigned char ucXTo, unsigned char ucYTo)
This function clears a line in the specified buffer from (ucXFrom,ucYFrom) to (ucXTo,ucYTo). The function uses Bresenham&#39;s line algorithm.
Definition: LCDDogm1286.h:320
LCD Parameters are used to with the LCD_open() call. Default values for these parameters are set usin...
Definition: LCDDogm1286.h:363
The LCD_Config structure contains a set of pointers used to characterize the LCD driver implementatio...
Definition: LCDDogm1286.h:467
LCD_Handle LCD_open(LCD_Buffer *buffers, uint8_t nBuffers, LCD_Params *params)
Function to set up the DOGM128W-6 LCD display.
struct LCD_Buffer LCD_Buffer
LCD_Buffer used to store data to be printed on the LCD display.
void LCD_init(void)
This function initializes the LCD driver module.
void LCD_bufferPrintFloatAligned(LCD_Handle handle, unsigned int bufIndex, float fNumber, unsigned char ucDecimals, LCD_Align iAlignment, LCD_Page iPage)
This function writes a float number to the given buffer as specified by the iAlignment argument...
#define LCD_COLS
Definition: LCDDogm1286.h:270
void LCD_bufferPrintInt(LCD_Handle handle, unsigned int bufIndex, int i32Number, unsigned char ucX, LCD_Page iPage)
Function that writes an integer to the specified buffer.
LCD_X_Limit
LCD x-axis enum.
Definition: LCDDogm1286.h:337
Definition: LCDDogm1286.h:322
void LCD_bufferPrintStringAligned(LCD_Handle handle, unsigned int bufIndex, const char *pcStr, LCD_Align iAlignment, LCD_Page iPage)
This function writes a string to the given buffer specified by the iAlignment argument.
char contrastSet2
Definition: LCDDogm1286.h:388
char columnHi
Definition: LCDDogm1286.h:393
void LCD_bufferClearPx(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucY)
This function clears the pixel at (ucX,ucY).
uint8_t nBuffers
Definition: LCDDogm1286.h:429
Definition: LCDDogm1286.h:325
void LCD_bufferClearPart(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, LCD_Page iPageFrom, LCD_Page iPageTo)
This function clears the pixels in a given piece of a page. Resolution is given in coulmns [0–127] a...
uint8_t lcdModePin
Definition: LCDDogm1286.h:451
LCD Hardware attributes.
Definition: LCDDogm1286.h:446
Definition: LCDDogm1286.h:321
char staticIndicator0
Definition: LCDDogm1286.h:389
unsigned int lcdWriteTimeout
Definition: LCDDogm1286.h:365
Definition: LCDDogm1286.h:326
struct LCD_Config * LCD_Handle
A handle that is returned from a LCD_open() call.
Definition: LCDDogm1286.h:294
char outputMode
Definition: LCDDogm1286.h:380
struct LCD_Command LCD_Command
Format of LCD commands used by the LCD controller.
char contrastSet0
Definition: LCDDogm1286.h:386
SPI Global configuration.
Definition: SPI.h:742
uint8_t lcdResetPin
Definition: LCDDogm1286.h:453
Definition: LCDDogm1286.h:306
LCD_Buffer * lcdBuffers
Definition: LCDDogm1286.h:427
char displayType
Definition: LCDDogm1286.h:381
void LCD_bufferVArrow(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom, unsigned char ucYTo)
This function draws a vertical arrow from (ucX,ucYFrom) to (ucX,ucYTo) to the buffer specified...
void LCD_update(LCD_Handle handle, unsigned int bufIndex)
Function that writes the specified buffer to the LCD display.
char lcdBias
Definition: LCDDogm1286.h:382
void LCD_bufferSetVLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom, unsigned char ucYTo)
This function draws a vertical line from (ucX,ucYFrom) to (ucX,ucYTo) into the specified buffer...
char boosterRadio1
Definition: LCDDogm1286.h:385
void LCD_bufferInvert(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom, unsigned char ucXTo, unsigned char ucYTo)
This function inverts the pixels (bits) in a given region of the specified buffer.
Definition: LCDDogm1286.h:340
void LCD_updatePart(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, LCD_Page iPageFrom, LCD_Page iPageTo)
Function that sends the specified part of the given buffer to the corresponding part on the LCD...
Definition: LCDDogm1286.h:353
LCD_Object * object
Definition: LCDDogm1286.h:470
Definition: LCDDogm1286.h:324
char displayEn
Definition: LCDDogm1286.h:391
Definition: LCDDogm1286.h:352
char * pcBuffer
Definition: LCDDogm1286.h:410
Format of LCD commands used by the LCD controller.
Definition: LCDDogm1286.h:376
char powerControl
Definition: LCDDogm1286.h:383
void LCD_bufferSetHLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, unsigned char ucY)
This function draws a horizontal line from (ucXFrom,ucY) to (ucXTo,ucY) into the specified buffer...
void LCD_bufferHArrow(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, unsigned char ucY)
This function draws a horizontal arrow from (ucXFrom,ucY) to (ucXTo,ucY) to buffer specified...
Definition: LCDDogm1286.h:319
SPI_Handle spiHandle
Definition: LCDDogm1286.h:424
SemaphoreP_Struct lcdMutex
Definition: LCDDogm1286.h:426
void LCD_setContrast(LCD_Handle handle, unsigned char ucContrast)
This Function sets the LCD contrast.
char boosterRadio0
Definition: LCDDogm1286.h:384
unsigned int spiBitRate
Definition: LCDDogm1286.h:368
SPI_FrameFormat
Definitions for various SPI data frame formats.
Definition: SPI.h:599
Definition: LCDDogm1286.h:327
Definition: LCDDogm1286.h:323
SemaphoreP_Struct bufMutex
Definition: LCDDogm1286.h:412
LCD_HWAttrs const * hwAttrs
Definition: LCDDogm1286.h:472
LCD_Y_Limit
LCD y-axis enum.
Definition: LCDDogm1286.h:350
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale