]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_EFMG890F128_IAR/lcd/lcddisplay.h
Preparing for V9.0.0 formal release:
[freertos] / FreeRTOS / Demo / CORTEX_EFMG890F128_IAR / lcd / lcddisplay.h
1 /**************************************************************************//**\r
2  * @file\r
3  * @brief LCD Controller font and display layout for EFM32 development MCU\r
4  *        module\r
5  * @author Energy Micro AS\r
6  * @version 1.0.1\r
7  ******************************************************************************\r
8  * @section License\r
9  * <b>(C) Copyright 2009 Energy Micro AS, http://www.energymicro.com</b>\r
10  ******************************************************************************\r
11  *\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
14  *\r
15  * This copyright notice may not be removed from the source code nor changed.\r
16  *\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
23  *\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
27  *\r
28  ****************************************************************************/\r
29 \r
30 #ifndef _LCDDISPLAY_H\r
31 #define _LCDDISPLAY_H\r
32 \r
33 #include <stdint.h>\r
34 /**************************************************************************//**\r
35  * @brief\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
39  * @verbatim\r
40  *  -------0------\r
41  *\r
42  * |   \7  |8  /9 |\r
43  * |5   \  |  /   |1\r
44  *\r
45  *  --6---  ---10--\r
46  *\r
47  * |    /  |  \11 |\r
48  * |4  /13 |12 \  |2\r
49  *\r
50  *  -------3------\r
51  * @endverbatim\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
56 typedef struct\r
57 {\r
58   uint32_t com[14]; /**< LCD COM line (for multiplexing) */\r
59   uint32_t bit[14]; /**< LCD bit number */\r
60 } CHAR_TypeDef;\r
61 \r
62 \r
63 /**************************************************************************//**\r
64  * @brief Defines segment COM and BIT fields numeric display\r
65  *****************************************************************************/\r
66 typedef struct\r
67 {\r
68   uint32_t com[7];\r
69   uint32_t bit[7];\r
70 } NUMBER_TypeDef;\r
71 \r
72 /**************************************************************************//**\r
73  * @brief Defines segment COM and BIT fields for Energy Modes on display\r
74  *****************************************************************************/\r
75 typedef struct\r
76 {\r
77   uint32_t com[5]; /**< LCD COM line (for multiplexing) */\r
78   uint32_t bit[5]; /**< LCD bit number */\r
79 } EM_TypeDef;\r
80 \r
81 /**************************************************************************//**\r
82  * @brief Defines segment COM and BIT fields for A-wheel (suited for Anim)\r
83  *****************************************************************************/\r
84 typedef struct\r
85 {\r
86   uint32_t com[8]; /**< LCD COM line (for multiplexing) */\r
87   uint32_t bit[8]; /**< LCD bit number */\r
88 } ARING_TypeDef;\r
89 \r
90 /**************************************************************************//**\r
91  * @brief Defines segment COM and BIT fields for A-wheel (suited for Anim)\r
92  *****************************************************************************/\r
93 typedef struct\r
94 {\r
95   uint32_t com[4]; /**< LCD COM line (for multiplexing) */\r
96   uint32_t bit[4]; /**< LCD bit number */\r
97 } BATTERY_TypeDef;\r
98 \r
99 /**************************************************************************//**\r
100  * @brief Defines prototype for all segments in display\r
101  *****************************************************************************/\r
102 typedef struct\r
103 {\r
104   CHAR_TypeDef    Text[7];\r
105   NUMBER_TypeDef  Number[4];\r
106   EM_TypeDef      EMode;\r
107   ARING_TypeDef   ARing;\r
108   BATTERY_TypeDef Battery;\r
109 } MCU_DISPLAY;\r
110 \r
111 /**************************************************************************//**\r
112  * @brief Working instance of LCD display\r
113  *****************************************************************************/\r
114 MCU_DISPLAY EFMDisplay = {\r
115   .Text        = {\r
116     { /* 1 */\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
119 \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
122 \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
125 \r
126       .com[12] = 1, .com[13] = 1,\r
127       .bit[12] = 11, .bit[13] = 10\r
128     },\r
129     { /* 2 */\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
132 \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
135 \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
138 \r
139       .com[12] = 1, .com[13] = 1,\r
140       .bit[12] = 15, .bit[13] = 14\r
141     },\r
142     { /* 3 */\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
145 \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
148 \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
151 \r
152       .com[12] = 1, .com[13] = 1,\r
153       .bit[12] = 19, .bit[13] = 18\r
154     },\r
155     { /* 4 */\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
158 \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
161 \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
164 \r
165       .com[12] = 1, .com[13] = 1,\r
166       .bit[12] = 23, .bit[13] = 22\r
167     },\r
168     { /* 5 */\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
171 \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
174 \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
177 \r
178       .com[12] = 1, .com[13] = 1,\r
179       .bit[12] = 26, .bit[13] = 25\r
180     },\r
181     { /* 6 */\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
184 \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
187 \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
190 \r
191       .com[12] = 1, .com[13] = 1,\r
192       .bit[12] = 28, .bit[13] = 27\r
193     },\r
194     { /* 7 */\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
197 \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
200 \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
203 \r
204       .com[12] = 1, .com[13] = 1,\r
205       .bit[12] = 30, .bit[13] = 29\r
206     }\r
207   },\r
208   .Number      = {\r
209     {\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
212 \r
213       .com[4] = 5, .com[5] = 7, .com[6] = 6,\r
214       .bit[4] = 0, .bit[5] = 0, .bit[6] = 0,\r
215     },\r
216     {\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
219 \r
220       .com[4] = 5, .com[5] = 7, .com[6] = 6,\r
221       .bit[4] = 3, .bit[5] = 3, .bit[6] = 3,\r
222     },\r
223     {\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
226 \r
227       .com[4] = 5, .com[5] = 7, .com[6] = 6,\r
228       .bit[4] = 5, .bit[5] = 5, .bit[6] = 5,\r
229     },\r
230     {\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
233 \r
234       .com[4] = 5, .com[5] = 7, .com[6] = 6,\r
235       .bit[4] = 7, .bit[5] = 7, .bit[6] = 7,\r
236     },\r
237   },\r
238   .EMode       = {\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
244   },\r
245   .ARing       = {\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
250 \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
255   },\r
256   .Battery     = {\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
261   }\r
262 };\r
263 \r
264 /**************************************************************************//**\r
265  * @brief\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
272   0x1100, /* ! */\r
273   0x0280, /* " */\r
274   0x0000, /* # */\r
275   0x0000, /* $ */\r
276   0x0000, /* % */\r
277   0x0000, /* & */\r
278   0x0000, /* £ */\r
279   0x0039, /* ( */\r
280   0x000f, /* ) */\r
281   0x0000, /* * */\r
282   0x1540, /* + */\r
283   0x0000, /* , */\r
284   0x0440, /* - */\r
285   0x0000, /* . */\r
286   0x2200, /* / */\r
287 \r
288   0x003f, /* 0 */\r
289   0x0006, /* 1 */\r
290   0x045b, /* 2 */\r
291   0x044f, /* 3 */\r
292   0x0466, /* 4 */\r
293   0x046d, /* 5 */\r
294   0x047d, /* 6 */\r
295   0x0007, /* 7 */\r
296   0x047f, /* 8 */\r
297   0x046f, /* 9 */\r
298 \r
299   0x0000, /* : */\r
300   0x0000, /* ; */\r
301   0x0a00, /* < */\r
302   0x0000, /* = */\r
303   0x2080, /* > */\r
304   0x0000, /* ? */\r
305   0xffff, /* @ */\r
306 \r
307   0x0477, /* A */\r
308   0x0a79, /* B */\r
309   0x0039, /* C */\r
310   0x20b0, /* D */\r
311   0x0079, /* E */\r
312   0x0071, /* F */\r
313   0x047d, /* G */\r
314   0x0476, /* H */\r
315   0x0006, /* I */\r
316   0x000e, /* J */\r
317   0x0a70, /* K */\r
318   0x0038, /* L */\r
319   0x02b6, /* M */\r
320   0x08b6, /* N */\r
321   0x003f, /* O */\r
322   0x0473, /* P */\r
323   0x083f, /* Q */\r
324   0x0c73, /* R */\r
325   0x046d, /* S */\r
326   0x1101, /* T */\r
327   0x003e, /* U */\r
328   0x2230, /* V */\r
329   0x2836, /* W */\r
330   0x2a80, /* X */\r
331   0x046e, /* Y */\r
332   0x2209, /* Z */\r
333 \r
334   0x0039, /* [ */\r
335   0x0880, /* backslash */\r
336   0x000f, /* ] */\r
337   0x0001, /* ^ */\r
338   0x0008, /* _ */\r
339   0x0100, /* ` */\r
340 \r
341   0x1058, /* a */\r
342   0x047c, /* b */\r
343   0x0058, /* c */\r
344   0x045e, /* d */\r
345   0x2058, /* e */\r
346   0x0471, /* f */\r
347   0x0c0c, /* g */\r
348   0x0474, /* h */\r
349   0x0004, /* i */\r
350   0x000e, /* j */\r
351   0x0c70, /* k */\r
352   0x0038, /* l */\r
353   0x1454, /* m */\r
354   0x0454, /* n */\r
355   0x045c, /* o */\r
356   0x0473, /* p */\r
357   0x0467, /* q */\r
358   0x0450, /* r */\r
359   0x0c08, /* s */\r
360   0x0078, /* t */\r
361   0x001c, /* u */\r
362   0x2010, /* v */\r
363   0x2814, /* w */\r
364   0x2a80, /* x */\r
365   0x080c, /* y */\r
366   0x2048, /* z */\r
367 \r
368   0x0000,\r
369 };\r
370 \r
371 /**************************************************************************//**\r
372  * @brief\r
373  * Defines higlighted segments for the numeric display\r
374  *****************************************************************************/\r
375 uint16_t EM_Numbers[] =\r
376 {\r
377   0x003f, /* 0 */\r
378   0x0006, /* 1 */\r
379   0x005b, /* 2 */\r
380   0x004f, /* 3 */\r
381   0x0066, /* 4 */\r
382   0x006d, /* 5 */\r
383   0x007d, /* 6 */\r
384   0x0007, /* 7 */\r
385   0x007f, /* 8 */\r
386   0x006f, /* 9 */\r
387   0x0040, /* - */\r
388 };\r
389 \r
390 #endif\r
391 \r