1 /**************************************************************************//**
\r
3 * @brief LCD Controller font and display layout for EFM32 development MCU
\r
5 * @author Energy Micro AS
\r
7 ******************************************************************************
\r
9 * <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>
\r
10 ******************************************************************************
\r
12 * This source code is the property of Energy Micro AS. The source and compiled
\r
13 * code may only be used on Energy Micro "EFM32" microcontrollers.
\r
15 * This copyright notice may not be removed from the source code nor changed.
\r
17 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no
\r
18 * obligation to support this Software. Energy Micro AS is providing the
\r
19 * Software "AS IS", with no express or implied warranties of any kind,
\r
20 * including, but not limited to, any implied warranties of merchantability
\r
21 * or fitness for any particular purpose or warranties against infringement
\r
22 * of any proprietary rights of a third party.
\r
24 * Energy Micro AS will not be liable for any consequential, incidental, or
\r
25 * special damages, or any other relief, or for any claim by any third party,
\r
26 * arising from your use of this Software.
\r
28 ****************************************************************************/
\r
30 #ifndef _LCDDISPLAY_H
\r
31 #define _LCDDISPLAY_H
\r
34 /**************************************************************************//**
\r
36 * Defines each text symbol's segment in terms of COM and BIT numbers,
\r
37 * in a way that we can enumerate each bit for each text segment in the
\r
38 * following bit pattern:
\r
52 * E.g.: First text character bit pattern #3 (above) is
\r
53 * Segment 1D for Display
\r
54 * Location COM 3, BIT 0
\r
55 *****************************************************************************/
\r
58 uint32_t com[14]; /**< LCD COM line (for multiplexing) */
\r
59 uint32_t bit[14]; /**< LCD bit number */
\r
63 /**************************************************************************//**
\r
64 * @brief Defines segment COM and BIT fields numeric display
\r
65 *****************************************************************************/
\r
72 /**************************************************************************//**
\r
73 * @brief Defines segment COM and BIT fields for Energy Modes on display
\r
74 *****************************************************************************/
\r
77 uint32_t com[5]; /**< LCD COM line (for multiplexing) */
\r
78 uint32_t bit[5]; /**< LCD bit number */
\r
81 /**************************************************************************//**
\r
82 * @brief Defines segment COM and BIT fields for A-wheel (suited for Anim)
\r
83 *****************************************************************************/
\r
86 uint32_t com[8]; /**< LCD COM line (for multiplexing) */
\r
87 uint32_t bit[8]; /**< LCD bit number */
\r
90 /**************************************************************************//**
\r
91 * @brief Defines segment COM and BIT fields for A-wheel (suited for Anim)
\r
92 *****************************************************************************/
\r
95 uint32_t com[4]; /**< LCD COM line (for multiplexing) */
\r
96 uint32_t bit[4]; /**< LCD bit number */
\r
99 /**************************************************************************//**
\r
100 * @brief Defines prototype for all segments in display
\r
101 *****************************************************************************/
\r
104 CHAR_TypeDef Text[7];
\r
105 NUMBER_TypeDef Number[4];
\r
107 ARING_TypeDef ARing;
\r
108 BATTERY_TypeDef Battery;
\r
111 /**************************************************************************//**
\r
112 * @brief Working instance of LCD display
\r
113 *****************************************************************************/
\r
114 MCU_DISPLAY EFMDisplay = {
\r
117 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
\r
118 .bit[0] = 10, .bit[1] = 12, .bit[2] = 12, .bit[3] = 10,
\r
120 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
\r
121 .bit[4] = 9, .bit[5] = 9, .bit[6] = 9, .bit[7] = 10,
\r
123 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
\r
124 .bit[8] = 11, .bit[9] = 11, .bit[10] = 12, .bit[11] = 11,
\r
126 .com[12] = 1, .com[13] = 1,
\r
127 .bit[12] = 11, .bit[13] = 10
\r
130 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
\r
131 .bit[0] = 14, .bit[1] = 16, .bit[2] = 16, .bit[3] = 14,
\r
133 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
\r
134 .bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 14,
\r
136 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
\r
137 .bit[8] = 15, .bit[9] = 15, .bit[10] = 16, .bit[11] = 15,
\r
139 .com[12] = 1, .com[13] = 1,
\r
140 .bit[12] = 15, .bit[13] = 14
\r
143 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
\r
144 .bit[0] = 18, .bit[1] = 20, .bit[2] = 20, .bit[3] = 18,
\r
146 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
\r
147 .bit[4] = 17, .bit[5] = 17, .bit[6] = 17, .bit[7] = 18,
\r
149 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
\r
150 .bit[8] = 19, .bit[9] = 19, .bit[10] = 20, .bit[11] = 19,
\r
152 .com[12] = 1, .com[13] = 1,
\r
153 .bit[12] = 19, .bit[13] = 18
\r
156 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
\r
157 .bit[0] = 22, .bit[1] = 24, .bit[2] = 24, .bit[3] = 22,
\r
159 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
\r
160 .bit[4] = 21, .bit[5] = 21, .bit[6] = 21, .bit[7] = 22,
\r
162 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
\r
163 .bit[8] = 23, .bit[9] = 23, .bit[10] = 24, .bit[11] = 23,
\r
165 .com[12] = 1, .com[13] = 1,
\r
166 .bit[12] = 23, .bit[13] = 22
\r
169 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
\r
170 .bit[0] = 25, .bit[1] = 6, .bit[2] = 6, .bit[3] = 25,
\r
172 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
\r
173 .bit[4] = 7, .bit[5] = 7, .bit[6] = 7, .bit[7] = 25,
\r
175 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
\r
176 .bit[8] = 26, .bit[9] = 26, .bit[10] = 6, .bit[11] = 26,
\r
178 .com[12] = 1, .com[13] = 1,
\r
179 .bit[12] = 26, .bit[13] = 25
\r
182 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
\r
183 .bit[0] = 27, .bit[1] = 04, .bit[2] = 04, .bit[3] = 27,
\r
185 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
\r
186 .bit[4] = 5, .bit[5] = 5, .bit[6] = 5, .bit[7] = 27,
\r
188 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
\r
189 .bit[8] = 28, .bit[9] = 28, .bit[10] = 4, .bit[11] = 28,
\r
191 .com[12] = 1, .com[13] = 1,
\r
192 .bit[12] = 28, .bit[13] = 27
\r
195 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,
\r
196 .bit[0] = 29, .bit[1] = 2, .bit[2] = 2, .bit[3] = 29,
\r
198 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,
\r
199 .bit[4] = 03, .bit[5] = 3, .bit[6] = 3, .bit[7] = 29,
\r
201 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,
\r
202 .bit[8] = 30, .bit[9] = 30, .bit[10] = 2, .bit[11] = 30,
\r
204 .com[12] = 1, .com[13] = 1,
\r
205 .bit[12] = 30, .bit[13] = 29
\r
210 .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,
\r
211 .bit[0] = 31, .bit[1] = 31, .bit[2] = 31, .bit[3] = 31,
\r
213 .com[4] = 5, .com[5] = 7, .com[6] = 6,
\r
214 .bit[4] = 0, .bit[5] = 0, .bit[6] = 0,
\r
217 .com[0] = 7, .com[1] = 6, .com[2] = 5, .com[3] = 4,
\r
218 .bit[0] = 1, .bit[1] = 1, .bit[2] = 1, .bit[3] = 1,
\r
220 .com[4] = 5, .com[5] = 7, .com[6] = 6,
\r
221 .bit[4] = 3, .bit[5] = 3, .bit[6] = 3,
\r
224 .com[0] = 7, .com[1] = 6, .com[2] = 5, .com[3] = 4,
\r
225 .bit[0] = 4, .bit[1] = 4, .bit[2] = 4, .bit[3] = 4,
\r
227 .com[4] = 5, .com[5] = 7, .com[6] = 6,
\r
228 .bit[4] = 5, .bit[5] = 5, .bit[6] = 5,
\r
231 .com[0] = 7, .com[1] = 6, .com[2] = 5, .com[3] = 4,
\r
232 .bit[0] = 6, .bit[1] = 6, .bit[2] = 6, .bit[3] = 6,
\r
234 .com[4] = 5, .com[5] = 7, .com[6] = 6,
\r
235 .bit[4] = 7, .bit[5] = 7, .bit[6] = 7,
\r
239 .com[0] = 1, .bit[0] = 1,
\r
240 .com[1] = 2, .bit[1] = 1,
\r
241 .com[2] = 1, .bit[2] = 0,
\r
242 .com[3] = 2, .bit[3] = 0,
\r
243 .com[4] = 3, .bit[4] = 0,
\r
246 .com[0] = 0, .bit[0] = 0,
\r
247 .com[1] = 0, .bit[1] = 1,
\r
248 .com[2] = 0, .bit[2] = 2,
\r
249 .com[3] = 0, .bit[3] = 3,
\r
251 .com[4] = 0, .bit[4] = 4,
\r
252 .com[5] = 0, .bit[5] = 5,
\r
253 .com[6] = 0, .bit[6] = 6,
\r
254 .com[7] = 0, .bit[7] = 7,
\r
257 .com[0] = 0, .bit[0] = 12,
\r
258 .com[1] = 0, .bit[1] = 17,
\r
259 .com[2] = 0, .bit[2] = 20,
\r
260 .com[3] = 0, .bit[3] = 13,
\r
264 /**************************************************************************//**
\r
266 * Defines higlighted segments for the alphabet, starting from "blank" (SPACE)
\r
267 * Uses bit pattern as defined for text segments above.
\r
268 * E.g. a capital O, would have bits 0 1 2 3 4 5 => 0x003f defined
\r
269 *****************************************************************************/
\r
270 uint16_t EM_alphabet[] = {
\r
271 0x0000, /* space */
\r
335 0x0880, /* backslash */
\r
371 /**************************************************************************//**
\r
373 * Defines higlighted segments for the numeric display
\r
374 *****************************************************************************/
\r
375 uint16_t EM_Numbers[] =
\r