309 static const uint16_t signIndex = 
sizeof(
EFM_Numbers)/
sizeof(uint16_t) - 1 ;
 
  311 static const LCD_Init_TypeDef lcdInit = LCD_INIT_DEF;
 
  321   LCD_ALL_SEGMENTS_OFF();
 
  330   LCD_ALL_SEGMENTS_ON();
 
  339   LCD_ALPHA_NUMBER_OFF();
 
  358     LCD_SegmentSet(com, bit, 
true);
 
  362     LCD_SegmentSet(com, bit, 
false);
 
  376   for (i = 0; i < 4; i++)
 
  378     if (i < batteryLevel)
 
  391       LCD_SegmentSet(com, bit, 
true);
 
  395       LCD_SegmentSet(com, bit, 
false);
 
  410 void SegmentLCD_Block(
 
  415   LCD_SyncBusyDelay(0xFFFFFFFF);
 
  418   LCD_FreezeEnable(
true);
 
  426   LCD_FreezeEnable(
false);
 
  439   LCD_SyncBusyDelay(LCD_SYNCBUSY_CTRL);
 
  463     LCD_SegmentSet(com, bit, 
true);
 
  467     LCD_SegmentSet(com, bit, 
false);
 
  494   LCD_DISPLAY_ENABLE();
 
  497   LCD_IntDisable(0xFFFFFFFF);
 
  503   LCD_SEGMENTS_ENABLE();
 
  508     LCD_VBoostSet(LCD_BOOST_LEVEL);
 
  509     LCD_VLCDSelect(lcdVLCDSelVExtBoost);
 
  510     CMU->LCDCTRL |= CMU_LCDCTRL_VBOOSTEN;
 
  516   LCD_SyncBusyDelay(0xFFFFFFFF);
 
  534   for ( i=6; i>=0; i-- )
 
  539       str[i] = nibble + 
'0';
 
  540     else if ( nibble == 11 )
 
  542     else if ( nibble == 13 )
 
  545       str[i] = (nibble - 10) + 
'A';
 
  564   if ( ( num > 9999999 ) || ( num < -9999999 ) )
 
  576   for ( i=6; i>=0; i-- )
 
  578     if ( ( i < 6 ) && ( num == 0 ) )
 
  584       str[i] = (num % 10) + 
'0';
 
  599   int      i, com, bit, digit, div, neg;
 
  623   LCD_SyncBusyDelay(0xFFFFFFFF);
 
  626   LCD_FreezeEnable(
true);
 
  633   for (digit = 0; digit < 4; digit++)
 
  635     num = (value / div) % 10;
 
  636     if ((neg == 1) && (digit == 3)) num = signIndex;
 
  639     for (i = 0; i < 7; i++)
 
  643       if (bitpattern & (1 << i))
 
  645         LCD_SegmentSet(com, bit, 
true);
 
  651   LCD_FreezeEnable(
false);
 
  678   case LCD_SYMBOL_GECKO:
 
  679     com = LCD_SYMBOL_GECKO_COM;
 
  680     bit = LCD_SYMBOL_GECKO_SEG;
 
  683     com = LCD_SYMBOL_ANT_COM;
 
  684     bit = LCD_SYMBOL_ANT_SEG;
 
  686   case LCD_SYMBOL_PAD0:
 
  687     com = LCD_SYMBOL_PAD0_COM;
 
  688     bit = LCD_SYMBOL_PAD0_SEG;
 
  690   case LCD_SYMBOL_PAD1:
 
  691     com = LCD_SYMBOL_PAD1_COM;
 
  692     bit = LCD_SYMBOL_PAD1_SEG;
 
  694   case LCD_SYMBOL_EFM32:
 
  695     com = LCD_SYMBOL_EFM32_COM;
 
  696     bit = LCD_SYMBOL_EFM32_SEG;
 
  698   case LCD_SYMBOL_MINUS:
 
  699     com = LCD_SYMBOL_MINUS_COM;
 
  700     bit = LCD_SYMBOL_MINUS_SEG;
 
  702   case LCD_SYMBOL_COL3:
 
  703     com = LCD_SYMBOL_COL3_COM;
 
  704     bit = LCD_SYMBOL_COL3_SEG;
 
  706   case LCD_SYMBOL_COL5:
 
  707     com = LCD_SYMBOL_COL5_COM;
 
  708     bit = LCD_SYMBOL_COL5_SEG;
 
  710   case LCD_SYMBOL_COL10:
 
  711     com = LCD_SYMBOL_COL10_COM;
 
  712     bit = LCD_SYMBOL_COL10_SEG;
 
  714 #ifdef LCD_SYMBOL_DEGC_SEG 
  715   case LCD_SYMBOL_DEGC:
 
  716     com = LCD_SYMBOL_DEGC_COM;
 
  717     bit = LCD_SYMBOL_DEGC_SEG;
 
  720 #ifdef LCD_SYMBOL_DEGF_SEG 
  721   case LCD_SYMBOL_DEGF:
 
  722     com = LCD_SYMBOL_DEGF_COM;
 
  723     bit = LCD_SYMBOL_DEGF_SEG;
 
  726 #ifdef LCD_SYMBOL_DP2_SEG 
  728     com = LCD_SYMBOL_DP2_COM;
 
  729     bit = LCD_SYMBOL_DP2_SEG;
 
  732 #ifdef LCD_SYMBOL_DP3_SEG 
  734     com = LCD_SYMBOL_DP3_COM;
 
  735     bit = LCD_SYMBOL_DP3_SEG;
 
  738 #ifdef LCD_SYMBOL_DP4_SEG 
  740     com = LCD_SYMBOL_DP4_COM;
 
  741     bit = LCD_SYMBOL_DP4_SEG;
 
  744 #ifdef LCD_SYMBOL_DP5_SEG 
  746     com = LCD_SYMBOL_DP5_COM;
 
  747     bit = LCD_SYMBOL_DP5_SEG;
 
  751     com = LCD_SYMBOL_DP6_COM;
 
  752     bit = LCD_SYMBOL_DP6_SEG;
 
  754   case LCD_SYMBOL_DP10:
 
  755     com = LCD_SYMBOL_DP10_COM;
 
  756     bit = LCD_SYMBOL_DP10_SEG;
 
  758 #ifdef LCD_SYMBOL_AM_SEG 
  760     com = LCD_SYMBOL_AM_COM;
 
  761     bit = LCD_SYMBOL_AM_SEG;
 
  764 #ifdef LCD_SYMBOL_PM_SEG 
  766     com = LCD_SYMBOL_PM_COM;
 
  767     bit = LCD_SYMBOL_PM_SEG;
 
  770 #ifdef LCD_SYMBOL_MICROAMP_SEG 
  771   case LCD_SYMBOL_MICROAMP:
 
  772     com = LCD_SYMBOL_MICROAMP_COM;
 
  773     bit = LCD_SYMBOL_MICROAMP_SEG;
 
  776 #ifdef LCD_SYMBOL_MILLIAMP_SEG 
  777   case LCD_SYMBOL_MILLIAMP:
 
  778     com = LCD_SYMBOL_MILLIAMP_COM;
 
  779     bit = LCD_SYMBOL_MILLIAMP_SEG;
 
  786     LCD_SegmentSet(com, bit, 
true);
 
  790     LCD_SegmentSet(com, bit, 
false);
 
  801   int      num, i, com, bit, digit;
 
  811   LCD_SyncBusyDelay(0xFFFFFFFF);
 
  814   LCD_FreezeEnable(
true);
 
  819   for (digit = 0; digit < 4; digit++)
 
  821     num        = (value >> (4 * digit)) & 0x0f;
 
  823     for (i = 0; i < 7; i++)
 
  827       if (bitpattern & (1 << i))
 
  829         LCD_SegmentSet(com, bit, 
true);
 
  835   LCD_FreezeEnable(
false);
 
  845   int      data, length, index;
 
  850   length = strlen(
string);
 
  854   LCD_SyncBusyDelay(0xFFFFFFFF);
 
  857   LCD_FreezeEnable(
true);
 
  863   for (index = 0; index < 7; index++)
 
  867       data = (int) *
string;
 
  878     for (i = 0; i < 14; i++)
 
  880       bit = EFM_Display.
Text[index].
bit[i];
 
  881       com = EFM_Display.
Text[index].
com[i];
 
  883       if (bitfield & (1 << i))
 
  886         LCD_SegmentSet(com, bit, 
true);
 
  892   LCD_FreezeEnable(
false);
 
  915   for (index = 0; index < SEGMENT_LCD_NUM_BLOCK_COLUMNS; index++)
 
  917     mode = topMode[index];
 
  922     for (i = 0; i < 8; i++)
 
  924       if (bitfield & (1 << i))
 
  930         LCD_SegmentSet(com, bit, 
true);
 
  935   for (index = 0; index < SEGMENT_LCD_NUM_BLOCK_COLUMNS; index++)
 
  937     mode = botMode[index];
 
  942     for (i = 0; i < 8; i++)
 
  944       if (bitfield & (1 << i))
 
  950         LCD_SegmentSet(com, bit, 
true);
 
Clock management unit (CMU) API. 
void CMU_ClockSelectSet(CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref)
Select reference clock/oscillator used for a clock branch. 
Defines prototype for all segments in display. 
static const uint16_t EFM_Alphabet[]
Defines higlighted segments for the alphabet, starting from "blank" (SPACE) Uses bit pattern as defin...
static const uint16_t Blocks[]
Defines highlighted segments for the block display. 
void SegmentLCD_LowerNumber(int num)
Write number on lower alphanumeric part of Segment LCD display. 
Defines segment COM and BIT fields numeric display. 
Defines segment COM and BIT fields for Energy Modes on display. 
static const MCU_DISPLAY EFM_Display
Working instance of LCD display. 
Defines each text symbol's segment in terms of COM and BIT numbers, in a way that we can enumerate ea...
void SegmentLCD_Write(const char *string)
Write text on LCD display. 
SegmentLCD_BlockMode_TypeDef
CMSIS Cortex-M Peripheral Access Layer for Silicon Laboratories microcontroller devices. 
void SegmentLCD_Symbol(lcdSymbol s, int on)
Light up or shut off various symbols on Segment LCD. 
void SegmentLCD_NumberOff(void)
Turn all segments on numeric digits in display off. 
void SegmentLCD_AllOff(void)
Disable all segments. 
EFM32 Segment LCD Display driver, header file. 
void SegmentLCD_AllOn(void)
Enable all segments. 
void SegmentLCD_EnergyMode(int em, int on)
Light up or shut off Energy Mode indicator. 
General Purpose IO (GPIO) peripheral API. 
void SegmentLCD_ARing(int anum, int on)
Light up or shut off Ring of Indicators. 
void SegmentLCD_AlphaNumberOff(void)
Turn all segments on alpha characters in display off. 
void CMU_ClockEnable(CMU_Clock_TypeDef clock, bool enable)
Enable/disable a clock. 
void CMU_LCDClkFDIVSet(uint32_t div)
Set the LCD framerate divisor (FDIV) setting. 
void SegmentLCD_LowerHex(uint32_t num)
Write a hexadecimal number on lower alphanumeric part of Segment LCD display. 
Defines segment COM and BIT fields for top and bottom row blocks. The bit pattern shown above for cha...
static const uint16_t EFM_Numbers[]
Defines higlighted segments for the numeric display. 
Defines segment COM and BIT fields for Battery (suited for Anim) 
void SegmentLCD_Battery(int batteryLevel)
Light up or shut off Battery Indicator. 
void SegmentLCD_Number(int value)
Write number on numeric part on Segment LCD display. 
Block_TypeDef BotBlocks[7]
void SegmentLCD_Init(bool useBoost)
Segment LCD Initialization routine for EFM32 STK display. 
Block_TypeDef TopBlocks[7]
void SegmentLCD_UnsignedHex(uint16_t value)
Write hexadecimal number on numeric part on Segment LCD display. 
static void displayBlock(SegmentLCD_BlockMode_TypeDef topMode[SEGMENT_LCD_NUM_BLOCK_COLUMNS], SegmentLCD_BlockMode_TypeDef botMode[SEGMENT_LCD_NUM_BLOCK_COLUMNS])
Working instance of LCD display. 
void SegmentLCD_Disable(void)
Disables LCD controller. 
void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
Set clock divisor/prescaler. 
Defines segment COM and BIT fields for A-wheel (suited for Anim)