SegmentLcd

Detailed Description

Segment LCD driver.

This driver implements symbol and string write support for EFM32 kits with segment LCD.

Data Structures

struct ARING_TypeDef
Defines segment COM and BIT fields for A-wheel (suited for Anim)
struct ARRAY_TypeDef
Defines segment COM and BIT fields for array.
struct BATTERY_TypeDef
Defines segment COM and BIT fields for Battery (suited for Anim)
struct Block_TypeDef
Defines segment COM and BIT fields for top and bottom row blocks. The bit pattern shown above for characters can be split into upper and lower portions for animation purposes. There are separate COM and BIT numbers which together represent a set of stacked blocks which can be shown on two rows in the segmented LCD screen.
struct CHAR_TypeDef
Defines each text symbol's segment in terms of COM and BIT numbers, in a way that we can enumerate each bit for each text segment in the following bit pattern:
struct EM_TypeDef
Defines segment COM and BIT fields for Energy Modes on display.
struct MCU_DISPLAY
Defines prototype for all segments in display.
struct NUMBER_TypeDef
Defines segment COM and BIT fields numeric display.

Macros

#define ALPHA_DIGITS 7
#define ALPHA_VAL_MAX 9999999
#define ALPHA_VAL_MIN -9999999
#define NUM_DIGITS 4
#define NUM_VAL_MAX 9999
#define NUM_VAL_MAX_HEX 0xFFFF
#define NUM_VAL_MIN -999
#define SEGMENT_LCD_BLOCK_MODE_BLANK 0
#define SEGMENT_LCD_BLOCK_MODE_FILL 1
#define SEGMENT_LCD_BLOCK_MODE_OUTLINE 2
#define SEGMENT_LCD_BLOCK_MODE_OUTLINE_FILL 3
#define SEGMENT_LCD_NUM_BLOCK_COLUMNS 7

Enumerations

enum SegmentLCD_BlockMode_TypeDef {
segmentLCDBlockModeBlank = SEGMENT_LCD_BLOCK_MODE_BLANK,
segmentLCDBlockModeFill = SEGMENT_LCD_BLOCK_MODE_FILL,
segmentLCDBlockModeOutline = SEGMENT_LCD_BLOCK_MODE_OUTLINE,
segmentLCDBlockModeOutlineFill = SEGMENT_LCD_BLOCK_MODE_OUTLINE_FILL
}

Functions

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_AllOff (void)
Disable all segments.
void SegmentLCD_AllOn (void)
Enable all segments.
void SegmentLCD_AlphaNumberOff (void)
Turn all segments on alpha characters in display off.
void SegmentLCD_ARing (int anum, int on)
Light up or shut off Ring of Indicators.
void SegmentLCD_Battery (int batteryLevel)
Light up or shut off Battery Indicator.
void SegmentLCD_Block ( SegmentLCD_BlockMode_TypeDef topMode[SEGMENT_LCD_NUM_BLOCK_COLUMNS], SegmentLCD_BlockMode_TypeDef botMode[SEGMENT_LCD_NUM_BLOCK_COLUMNS])
void SegmentLCD_chargeRedistributionEnable (bool enable)
Enabling/disabling dynamic charge redistribution.
void SegmentLCD_Disable (void)
Disables LCD controller.
void SegmentLCD_EnergyMode (int em, int on)
Light up or shut off Energy Mode indicator.
void SegmentLCD_Init (bool useBoost)
Segment LCD Initialization routine for EFM32 STK display.
void SegmentLCD_LowerHex (uint32_t num)
Write a hexadecimal number on lower alphanumeric part of Segment LCD display.
void SegmentLCD_LowerNumber (int num)
Write number on lower alphanumeric part of Segment LCD display.
void SegmentLCD_Number (int value)
Write number on numeric part on Segment LCD display.
void SegmentLCD_NumberOff (void)
Turn all segments on numeric digits in display off.
unsigned int SegmentLCD_segCnt (unsigned int segdl, unsigned int segdh)
Counting the number of active segments in a single common line.
void SegmentLCD_Symbol (lcdSymbol s, int on)
Light up or shut off various symbols on Segment LCD.
void SegmentLCD_UnsignedHex (uint32_t value)
Write hexadecimal number on numeric part on Segment LCD display.
void SegmentLCD_updateCHGRDST (void)
Dynamically switching charge redistribution ON/OFF based on display contents.
void SegmentLCD_Write (const char *string)
Write text on LCD display.

Variables

static const uint16_t Blocks []
Defines highlighted segments for the block display.
static const MCU_DISPLAY EFM_Display = EFM_DISPLAY_DEF
Working instance of LCD display.
static const uint16_t Segment_Alphabet []
Defines higlighted segments for the alphabet, starting from "blank" (SPACE) Uses bit pattern as defined for text segments above. E.g. a capital O, would have bits 0 1 2 3 4 5 => 0x003f defined.
static const uint16_t Segment_Numbers []
Defines higlighted segments for the numeric display.

Enumeration Type Documentation

Enumerator
segmentLCDBlockModeBlank

Blank

segmentLCDBlockModeFill

Fill

segmentLCDBlockModeOutline

Outline

segmentLCDBlockModeOutlineFill

Outline and fill

Definition at line 65 of file segmentlcd.h .

Function Documentation

void SegmentLCD_ARing ( int anum,
int on
)

Light up or shut off Ring of Indicators.

Parameters
anum "Segment number" on "Ring", range 0 - 7
on Zero is off, non-zero is on

Definition at line 1391 of file segmentlcd.c .

void SegmentLCD_Battery ( int batteryLevel )

Light up or shut off Battery Indicator.

Parameters
batteryLevel Battery Level, 0 to 4 (0 turns all off)

Definition at line 1409 of file segmentlcd.c .

void SegmentLCD_chargeRedistributionEnable ( bool enable )

Enabling/disabling dynamic charge redistribution.

Parameters
true ==> enable, false ==> disable

Definition at line 1177 of file segmentlcd.c .

void SegmentLCD_EnergyMode ( int em,
int on
)

Light up or shut off Energy Mode indicator.

Parameters
em Energy Mode numer 0 to 4
on Zero is off, non-zero is on

Definition at line 1436 of file segmentlcd.c .

void SegmentLCD_Init ( bool useBoost )

Segment LCD Initialization routine for EFM32 STK display.

Parameters
useBoost Set to use voltage boost

Definition at line 478 of file segmentlcd.c .

References CMU_ClockDivSet() , CMU_ClockEnable() , CMU_ClockSelectSet() , CMU_LCDClkFDIVSet() , cmuClock_LFA , cmuSelect_LFRCO , and SegmentLCD_AllOff() .

void SegmentLCD_LowerHex ( uint32_t num )

Write a hexadecimal number on lower alphanumeric part of Segment LCD display.

Parameters
num Hexadecimal number value to put on display, in range 0 to 0x0FFFFFFF

Definition at line 532 of file segmentlcd.c .

References SegmentLCD_Symbol() , and SegmentLCD_Write() .

void SegmentLCD_LowerNumber ( int num )

Write number on lower alphanumeric part of Segment LCD display.

Parameters
num Numeric value to put on display, in range -9999999 to +9999999

Definition at line 565 of file segmentlcd.c .

References SegmentLCD_Symbol() , and SegmentLCD_Write() .

void SegmentLCD_Number ( int value )

Write number on numeric part on Segment LCD display.

Parameters
value Numeric value to put on display, in range -999 to +9999

Definition at line 610 of file segmentlcd.c .

References NUMBER_TypeDef::bit , NUMBER_TypeDef::com , MCU_DISPLAY::Number , Segment_Numbers , SegmentLCD_NumberOff() , and SegmentLCD_updateCHGRDST() .

unsigned int SegmentLCD_segCnt ( unsigned int segdl,
unsigned int segdh
)

Counting the number of active segments in a single common line.

Parameters
value in registers LCD_SEGDnL and LCD_SEGDnH (n = common line number)

Definition at line 1150 of file segmentlcd.c .

Referenced by SegmentLCD_updateCHGRDST() .

void SegmentLCD_Symbol ( lcdSymbol s,
int on
)

Light up or shut off various symbols on Segment LCD.

Parameters
s Which symbol to turn on or off
on Zero is off, non-zero is on

Definition at line 691 of file segmentlcd.c .

References SegmentLCD_updateCHGRDST() .

Referenced by SegmentLCD_LowerHex() , and SegmentLCD_LowerNumber() .

void SegmentLCD_UnsignedHex ( uint32_t value )

Write hexadecimal number on numeric part on Segment LCD display.

Parameters
value Numeric value to put on display

Definition at line 1045 of file segmentlcd.c .

References NUMBER_TypeDef::bit , NUMBER_TypeDef::com , MCU_DISPLAY::Number , Segment_Numbers , SegmentLCD_NumberOff() , and SegmentLCD_updateCHGRDST() .

void SegmentLCD_updateCHGRDST ( void )

Dynamically switching charge redistribution ON/OFF based on display contents.

Parameters
None

Definition at line 1197 of file segmentlcd.c .

References SegmentLCD_segCnt() .

Referenced by SegmentLCD_AlphaNumberOff() , SegmentLCD_Number() , SegmentLCD_NumberOff() , SegmentLCD_Symbol() , SegmentLCD_UnsignedHex() , and SegmentLCD_Write() .

void SegmentLCD_Write ( const char * string )

Write text on LCD display.

Parameters
string Text string to show on display

Definition at line 1092 of file segmentlcd.c .

References CHAR_TypeDef::bit , CHAR_TypeDef::com , Segment_Alphabet , SegmentLCD_AlphaNumberOff() , SegmentLCD_updateCHGRDST() , and MCU_DISPLAY::Text .

Referenced by SegmentLCD_LowerHex() , and SegmentLCD_LowerNumber() .

Variable Documentation

const uint16_t Blocks[]
static
Initial value:
= {
0x0000,
0x00E0,
0x001F,
0x00FF
}

Defines highlighted segments for the block display.

Definition at line 358 of file segmentlcd.c .

Referenced by displayBlock() .

const uint16_t Segment_Numbers[]
static
Initial value:
= {
0x003f,
0x0006,
0x005b,
0x004f,
0x0066,
0x006d,
0x007d,
0x0007,
0x007f,
0x006f,
0x0077,
0x007c,
0x0039,
0x005e,
0x0079,
0x0071,
0x0040
}

Defines higlighted segments for the numeric display.

Definition at line 334 of file segmentlcd.c .

Referenced by SegmentLCD_Number() , and SegmentLCD_UnsignedHex() .