Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: EFM32 RDA5807M RDS Radio EMF32-Segment-Touch-Demo EMF32_ShowKey blinky_EFM32_Giant ... more
Information
All examples in this repo are considered EXPERIMENTAL QUALITY, meaning this code has been created as one-off proof-of-concept and is suitable as a demonstration for experimental purposes only. This code will not be regularly maintained by Silicon Labs and there is no guarantee that these projects will work across all environments, SDK versions and hardware.

segmentlcdconfig_stk_gg.h
- Committer:
- Steven Cooreman
- Date:
- 2015-03-17
- Revision:
- 0:559902e88130
- Child:
- 1:5335eb33bfcb
File content as of revision 0:559902e88130:
/**************************************************************************//**
* @file
* @brief Segment LCD Config
* @version 3.20.5
******************************************************************************
* @section License
* <b>(C) Copyright 2014 Silicon Labs, http://www.silabs.com</b>
*******************************************************************************
*
* This file is licensensed under the Silabs License Agreement. See the file
* "Silabs_License_Agreement.txt" for details. Before using this software for
* any purpose, you must agree to the terms of that agreement.
*
******************************************************************************/
#ifndef __SEGMENTLCDCONFIG_H
#define __SEGMENTLCDCONFIG_H
#include "em_lcd.h"
#include "PinNames.h"
#ifdef __cplusplus
extern "C" {
#endif
/** Range of symbols available on display */
typedef enum {
LCD_SYMBOL_GECKO,
LCD_SYMBOL_ANT,
LCD_SYMBOL_PAD0,
LCD_SYMBOL_PAD1,
LCD_SYMBOL_EFM32,
LCD_SYMBOL_MINUS,
LCD_SYMBOL_COL3,
LCD_SYMBOL_COL5,
LCD_SYMBOL_COL10,
LCD_SYMBOL_DEGC,
LCD_SYMBOL_DEGF,
LCD_SYMBOL_DP2,
LCD_SYMBOL_DP3,
LCD_SYMBOL_DP4,
LCD_SYMBOL_DP5,
LCD_SYMBOL_DP6,
LCD_SYMBOL_DP10,
} lcdSymbol;
#define LCD_SYMBOL_GECKO_COM 1
#define LCD_SYMBOL_GECKO_SEG 12
#define LCD_SYMBOL_ANT_COM 0
#define LCD_SYMBOL_ANT_SEG 32
#define LCD_SYMBOL_PAD0_COM 3
#define LCD_SYMBOL_PAD0_SEG 39
#define LCD_SYMBOL_PAD1_COM 2
#define LCD_SYMBOL_PAD1_SEG 12
#define LCD_SYMBOL_EFM32_COM 0
#define LCD_SYMBOL_EFM32_SEG 28
#define LCD_SYMBOL_MINUS_COM 3
#define LCD_SYMBOL_MINUS_SEG 12
#define LCD_SYMBOL_COL3_COM 4
#define LCD_SYMBOL_COL3_SEG 12
#define LCD_SYMBOL_COL5_COM 0
#define LCD_SYMBOL_COL5_SEG 30
#define LCD_SYMBOL_COL10_COM 5
#define LCD_SYMBOL_COL10_SEG 39
#define LCD_SYMBOL_DEGC_COM 0
#define LCD_SYMBOL_DEGC_SEG 34
#define LCD_SYMBOL_DEGF_COM 0
#define LCD_SYMBOL_DEGF_SEG 35
#define LCD_SYMBOL_DP2_COM 7
#define LCD_SYMBOL_DP2_SEG 12
#define LCD_SYMBOL_DP3_COM 5
#define LCD_SYMBOL_DP3_SEG 12
#define LCD_SYMBOL_DP4_COM 6
#define LCD_SYMBOL_DP4_SEG 12
#define LCD_SYMBOL_DP5_COM 7
#define LCD_SYMBOL_DP5_SEG 29
#define LCD_SYMBOL_DP6_COM 7
#define LCD_SYMBOL_DP6_SEG 31
#define LCD_SYMBOL_DP10_COM 4
#define LCD_SYMBOL_DP10_SEG 39
/* LCD Controller Prescaler (divide LFACLK / 64) */
/* LFACLK_LCDpre = 512 Hz */
/* Set FDIV=0, means 512/1 = 512 Hz */
/* With octaplex mode, 512/16 => 32 Hz Frame Rate */
#define LCD_CMU_CLK_PRE cmuClkDiv_64
#define LCD_CMU_CLK_DIV 1
#define LCD_BOOST_LEVEL lcdVBoostLevel3
#define LCD_INIT_DEF \
{ true,\
lcdMuxOctaplex,\
lcdBiasOneFourth,\
lcdWaveLowPower,\
lcdVLCDSelVDD, \
lcdConConfVLCD }
#define LCD_NUMBER_OFF() \
do { \
LCD_SegmentSetHigh(1, 0x00000078, 0x00000000); \
LCD_SegmentSetHigh(2, 0x00000078, 0x00000000); \
LCD_SegmentSetHigh(3, 0x00000078, 0x00000000); \
LCD_SegmentSetHigh(4, 0x00000078, 0x00000000); \
LCD_SegmentSetHigh(5, 0x00000078, 0x00000000); \
LCD_SegmentSetHigh(6, 0x00000078, 0x00000000); \
LCD_SegmentSetHigh(7, 0x00000078, 0x00000000); \
} while (0)
#define LCD_ALPHA_NUMBER_OFF() \
do { \
LCD_SegmentSetLow(7, 0x500FE000, 0x00000000);\
LCD_SegmentSetLow(6, 0xF00FE000, 0x00000000);\
LCD_SegmentSetLow(5, 0xF00FE000, 0x00000000);\
LCD_SegmentSetLow(4, 0xF00FE000, 0x00000000);\
LCD_SegmentSetLow(3, 0xF00FE000, 0x00000000);\
LCD_SegmentSetLow(2, 0xF00FE000, 0x00000000);\
LCD_SegmentSetLow(1, 0xF00FE000, 0x00000000);\
LCD_SegmentSetLow(0, 0xA0000000, 0x00000000);\
LCD_SegmentSetHigh(7, 0x00000007, 0x00000000);\
LCD_SegmentSetHigh(6, 0x00000007, 0x00000000);\
LCD_SegmentSetHigh(5, 0x00000007, 0x00000000);\
LCD_SegmentSetHigh(4, 0x00000007, 0x00000000);\
LCD_SegmentSetHigh(3, 0x00000007, 0x00000000);\
LCD_SegmentSetHigh(2, 0x00000007, 0x00000000);\
LCD_SegmentSetHigh(1, 0x00000007, 0x00000000);\
} while(0)
#define LCD_ALL_SEGMENTS_OFF() \
do { \
LCD_SegmentSetLow(0, 0xF00FF000, 0x00000000);\
LCD_SegmentSetLow(1, 0xF00FF000, 0x00000000);\
LCD_SegmentSetLow(2, 0xF00FF000, 0x00000000);\
LCD_SegmentSetLow(3, 0xF00FF000, 0x00000000);\
LCD_SegmentSetLow(4, 0xF00FF000, 0x00000000);\
LCD_SegmentSetLow(5, 0xF00FF000, 0x00000000);\
LCD_SegmentSetLow(6, 0xF00FF000, 0x00000000);\
LCD_SegmentSetLow(7, 0xF00FF000, 0x00000000);\
LCD_SegmentSetHigh(0, 0x000000FF, 0x00000000);\
LCD_SegmentSetHigh(1, 0x000000FF, 0x00000000);\
LCD_SegmentSetHigh(2, 0x000000FF, 0x00000000);\
LCD_SegmentSetHigh(3, 0x000000FF, 0x00000000);\
LCD_SegmentSetHigh(4, 0x000000FF, 0x00000000);\
LCD_SegmentSetHigh(5, 0x000000FF, 0x00000000);\
LCD_SegmentSetHigh(6, 0x000000FF, 0x00000000);\
LCD_SegmentSetHigh(7, 0x000000FF, 0x00000000);\
} while(0)
#define LCD_ALL_SEGMENTS_ON() \
do { \
LCD_SegmentSetLow(0, 0xF00FF000, 0xFFFFFFFF);\
LCD_SegmentSetLow(1, 0xF00FF000, 0xFFFFFFFF);\
LCD_SegmentSetLow(2, 0xF00FF000, 0xFFFFFFFF);\
LCD_SegmentSetLow(3, 0xF00FF000, 0xFFFFFFFF);\
LCD_SegmentSetLow(4, 0xF00FF000, 0xFFFFFFFF);\
LCD_SegmentSetLow(5, 0xF00FF000, 0xFFFFFFFF);\
LCD_SegmentSetLow(6, 0xF00FF000, 0xFFFFFFFF);\
LCD_SegmentSetLow(7, 0xF00FF000, 0xFFFFFFFF);\
LCD_SegmentSetHigh(0, 0x000000FF, 0xFFFFFFFF);\
LCD_SegmentSetHigh(1, 0x000000FF, 0xFFFFFFFF);\
LCD_SegmentSetHigh(2, 0x000000FF, 0xFFFFFFFF);\
LCD_SegmentSetHigh(3, 0x000000FF, 0xFFFFFFFF);\
LCD_SegmentSetHigh(4, 0x000000FF, 0xFFFFFFFF);\
LCD_SegmentSetHigh(5, 0x000000FF, 0xFFFFFFFF);\
LCD_SegmentSetHigh(6, 0x000000FF, 0xFFFFFFFF);\
LCD_SegmentSetHigh(7, 0x000000FF, 0xFFFFFFFF);\
} while(0)
#define LCD_SEGMENTS_ENABLE() \
do { \
LCD_SegmentRangeEnable(lcdSegment12_15, true);\
LCD_SegmentRangeEnable(lcdSegment16_19, true);\
LCD_SegmentRangeEnable(lcdSegment28_31, true);\
LCD_SegmentRangeEnable(lcdSegment32_35, true);\
LCD_SegmentRangeEnable(lcdSegment36_39, true);\
} while(0)
#define LCD_DISPLAY_ENABLE() \
do { \
LCD_Enable(true);\
} while(0)
#define EFM_DISPLAY_DEF {\
.Text = {\
{ /* 1 */\
.com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
.bit[0] = 13, .bit[1] = 14, .bit[2] = 14, .bit[3] = 14,\
.com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
.bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 13,\
.com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
.bit[8] = 14, .bit[9] = 14, .bit[10] = 14, .bit[11] = 14,\
.com[12] = 5, .com[13] = 6,\
.bit[12] = 13, .bit[13] = 13\
},\
{ /* 2 */\
.com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
.bit[0] = 15, .bit[1] = 16, .bit[2] = 16, .bit[3] = 16,\
.com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
.bit[4] = 15, .bit[5] = 15, .bit[6] = 15, .bit[7] = 15,\
.com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
.bit[8] = 16, .bit[9] = 16, .bit[10] = 16, .bit[11] = 16,\
.com[12] = 5, .com[13] = 6,\
.bit[12] = 15, .bit[13] = 15\
},\
{ /* 3 */\
.com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
.bit[0] = 17, .bit[1] = 18, .bit[2] = 18, .bit[3] = 18,\
.com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
.bit[4] = 17, .bit[5] = 17, .bit[6] = 17, .bit[7] = 17,\
.com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
.bit[8] = 18, .bit[9] = 18, .bit[10] = 18, .bit[11] = 18,\
.com[12] = 5, .com[13] = 6,\
.bit[12] = 17, .bit[13] = 17\
},\
{ /* 4 */\
.com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
.bit[0] = 19, .bit[1] = 28, .bit[2] = 28, .bit[3] = 28,\
.com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
.bit[4] = 19, .bit[5] = 19, .bit[6] = 19, .bit[7] = 19,\
.com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
.bit[8] = 28, .bit[9] = 28, .bit[10] = 28, .bit[11] = 28,\
.com[12] = 5, .com[13] = 6,\
.bit[12] = 19, .bit[13] = 19\
},\
{ /* 5 */\
.com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
.bit[0] = 29, .bit[1] = 30, .bit[2] = 30, .bit[3] = 30,\
.com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\
.bit[4] = 29, .bit[5] = 29, .bit[6] = 29, .bit[7] = 29,\
.com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
.bit[8] = 30, .bit[9] = 30, .bit[10] = 30, .bit[11] = 30,\
.com[12] = 4, .com[13] = 5,\
.bit[12] = 29, .bit[13] = 29\
},\
{ /* 6 */\
.com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
.bit[0] = 31, .bit[1] = 32, .bit[2] = 32, .bit[3] = 32,\
.com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\
.bit[4] = 31, .bit[5] = 31, .bit[6] = 31, .bit[7] = 31,\
.com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
.bit[8] = 32, .bit[9] = 32, .bit[10] = 32, .bit[11] = 32,\
.com[12] = 4, .com[13] = 5,\
.bit[12] = 31, .bit[13] = 31\
},\
{ /* 7 */\
.com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
.bit[0] = 33, .bit[1] = 34, .bit[2] = 34, .bit[3] = 34,\
.com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
.bit[4] = 33, .bit[5] = 33, .bit[6] = 33, .bit[7] = 33,\
.com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
.bit[8] = 34, .bit[9] = 34, .bit[10] = 34, .bit[11] = 34,\
.com[12] = 5, .com[13] = 6,\
.bit[12] = 33, .bit[13] = 33\
},\
},\
.Number = {\
{\
.com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
.bit[0] = 35, .bit[1] = 35, .bit[2] = 35, .bit[3] = 35,\
.com[4] = 3, .com[5] = 6, .com[6] = 4,\
.bit[4] = 35, .bit[5] = 35, .bit[6] = 35,\
},\
{\
.com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
.bit[0] = 36, .bit[1] = 36, .bit[2] = 36, .bit[3] = 36,\
.com[4] = 3, .com[5] = 6, .com[6] = 4,\
.bit[4] = 36, .bit[5] = 36, .bit[6] = 36,\
},\
{\
.com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
.bit[0] = 37, .bit[1] = 37, .bit[2] = 37, .bit[3] = 37,\
.com[4] = 3, .com[5] = 6, .com[6] = 4,\
.bit[4] = 37, .bit[5] = 37, .bit[6] = 37,\
},\
{\
.com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
.bit[0] = 38, .bit[1] = 38, .bit[2] = 38, .bit[3] = 38,\
.com[4] = 3, .com[5] = 6, .com[6] = 4,\
.bit[4] = 38, .bit[5] = 38, .bit[6] = 38,\
},\
},\
.EMode = {\
.com[0] = 0, .bit[0] = 39,\
.com[1] = 1, .bit[1] = 39,\
.com[2] = 7, .bit[2] = 39,\
.com[3] = 2, .bit[3] = 39,\
.com[4] = 6, .bit[4] = 39,\
},\
.ARing = {\
.com[0] = 0, .bit[0] = 19,\
.com[1] = 0, .bit[1] = 18,\
.com[2] = 0, .bit[2] = 17,\
.com[3] = 0, .bit[3] = 16,\
.com[4] = 0, .bit[4] = 15,\
.com[5] = 0, .bit[5] = 14,\
.com[6] = 0, .bit[6] = 13,\
.com[7] = 0, .bit[7] = 12,\
},\
.Battery = {\
.com[0] = 0, .bit[0] = 33,\
.com[1] = 0, .bit[1] = 37,\
.com[2] = 0, .bit[2] = 36,\
.com[3] = 0, .bit[3] = 38,\
}\
}
static const PinName outPins[] = {
/* SEG28..39 */
PA7, //LCD_SEG35
PA8, //LCD_SEG36
PA9, //LCD_SEG37
PA10, //LCD_SEG38
PA11, //LCD_SEG39
PB0, //LCD_SEG32
PB1, //LCD_SEG33
PB2, //LCD_SEG34
PD9, //LCD_SEG28
PD10, //LCD_SEG29
PD11, //LCD_SEG30
PD12, //LCD_SEG31
/* SEG12..19 */
PA0, //LCD_SEG13
PA1, //LCD_SEG14
PA2, //LCD_SEG15
PA3, //LCD_SEG16
PA4, //LCD_SEG17
PA5, //LCD_SEG18
PA6, //LCD_SEG19
PA15, //LCD_SEG12
/* COM4..7 */
PB3, //LCD_COM4
PB4, //LCD_COM5
PB5, //LCD_COM6
PB6, //LCD_COM7
/* COM0..3 */
PE4, //LCD_COM0
PE5, //LCD_COM1
PE6, //LCD_COM2
PE7 //LCD_COM3
};
#ifdef __cplusplus
}
#endif
#endif
