This is a driver for the segment LCD found on the Silicon Labs EF32 Giant, Leopard and Wonder Gecko platforms. NOTE: This driver will not work with other platforms, because it contains EFM32-specific code.
Dependents: EFM32 RDA5807M RDS Radio EMF32-Segment-Touch-Demo EMF32_ShowKey blinky_EFM32_Giant ... more
segmentlcdconfig_stk_g.h
00001 /**************************************************************************//** 00002 * @file 00003 * @brief Segment LCD Config for the EFM32 Gecko STK (G8xx_STK) 00004 * @version 3.20.5 00005 ****************************************************************************** 00006 * @section License 00007 * <b>(C) Copyright 2014 Silicon Labs, http://www.silabs.com</b> 00008 ******************************************************************************* 00009 * 00010 * This file is licensensed under the Silabs License Agreement. See the file 00011 * "Silabs_License_Agreement.txt" for details. Before using this software for 00012 * any purpose, you must agree to the terms of that agreement. 00013 * 00014 ******************************************************************************/ 00015 00016 #ifndef __SEGMENTLCDCONFIG_H 00017 #define __SEGMENTLCDCONFIG_H 00018 00019 #include "em_lcd.h" 00020 00021 #ifdef __cplusplus 00022 extern "C" { 00023 #endif 00024 00025 /** Range of symbols available on display */ 00026 typedef enum 00027 { 00028 LCD_SYMBOL_GECKO, 00029 LCD_SYMBOL_ANT, 00030 LCD_SYMBOL_PAD0, 00031 LCD_SYMBOL_PAD1, 00032 LCD_SYMBOL_AM, 00033 LCD_SYMBOL_PM, 00034 LCD_SYMBOL_EFM32, 00035 LCD_SYMBOL_MINUS, 00036 LCD_SYMBOL_COL3, 00037 LCD_SYMBOL_COL5, 00038 LCD_SYMBOL_COL10, 00039 LCD_SYMBOL_DEGC, 00040 LCD_SYMBOL_DEGF, 00041 LCD_SYMBOL_MICROAMP, 00042 LCD_SYMBOL_MILLIAMP, 00043 LCD_SYMBOL_DP6, 00044 LCD_SYMBOL_DP10, 00045 } lcdSymbol; 00046 00047 00048 #define LCD_SYMBOL_GECKO_COM 3 00049 #define LCD_SYMBOL_GECKO_SEG 8 00050 #define LCD_SYMBOL_ANT_COM 3 00051 #define LCD_SYMBOL_ANT_SEG 1 00052 #define LCD_SYMBOL_PAD0_COM 1 00053 #define LCD_SYMBOL_PAD0_SEG 8 00054 #define LCD_SYMBOL_PAD1_COM 2 00055 #define LCD_SYMBOL_PAD1_SEG 8 00056 #define LCD_SYMBOL_AM_COM 0 00057 #define LCD_SYMBOL_AM_SEG 32 00058 #define LCD_SYMBOL_PM_COM 0 00059 #define LCD_SYMBOL_PM_SEG 35 00060 #define LCD_SYMBOL_EFM32_COM 0 00061 #define LCD_SYMBOL_EFM32_SEG 8 00062 #define LCD_SYMBOL_MINUS_COM 0 00063 #define LCD_SYMBOL_MINUS_SEG 9 00064 #define LCD_SYMBOL_COL3_COM 0 00065 #define LCD_SYMBOL_COL3_SEG 16 00066 #define LCD_SYMBOL_COL5_COM 0 00067 #define LCD_SYMBOL_COL5_SEG 24 00068 #define LCD_SYMBOL_COL10_COM 0 00069 #define LCD_SYMBOL_COL10_SEG 39 00070 #define LCD_SYMBOL_DEGC_COM 0 00071 #define LCD_SYMBOL_DEGC_SEG 34 00072 #define LCD_SYMBOL_DEGF_COM 1 00073 #define LCD_SYMBOL_DEGF_SEG 34 00074 #define LCD_SYMBOL_MICROAMP_COM 2 00075 #define LCD_SYMBOL_MICROAMP_SEG 34 00076 #define LCD_SYMBOL_MILLIAMP_COM 3 00077 #define LCD_SYMBOL_MILLIAMP_SEG 34 00078 #define LCD_SYMBOL_DP6_COM 0 00079 #define LCD_SYMBOL_DP6_SEG 21 00080 #define LCD_SYMBOL_DP10_COM 0 00081 #define LCD_SYMBOL_DP10_SEG 37 00082 00083 /* LCD Controller Prescaler (divide by 128) */ 00084 /* CLKlcd = 256 Hz */ 00085 #define LCD_CMU_CLK_PRE cmuClkDiv_128 00086 #define LCD_CMU_CLK_DIV 0 00087 00088 #define LCD_BOOST_LEVEL lcdVBoostLevel0 00089 00090 #define LCD_INIT_DEF \ 00091 { true,\ 00092 lcdMuxQuadruplex,\ 00093 lcdBiasOneThird,\ 00094 lcdWaveLowPower,\ 00095 lcdVLCDSelVDD,\ 00096 lcdConConfVLCD } 00097 00098 #define LCD_NUMBER_OFF() \ 00099 do { \ 00100 LCD_SegmentSetLow(0, 0x80000000, 0x00000000);\ 00101 LCD_SegmentSetLow(1, 0x80000000, 0x00000000);\ 00102 LCD_SegmentSetLow(2, 0x80000000, 0x00000000);\ 00103 LCD_SegmentSetLow(3, 0x80000000, 0x00000000);\ 00104 LCD_SegmentSetHigh(0, 0x52, 0x00000000);\ 00105 LCD_SegmentSetHigh(1, 0xFB, 0x00000000);\ 00106 LCD_SegmentSetHigh(2, 0xFB, 0x00000000);\ 00107 LCD_SegmentSetHigh(3, 0xFB, 0x00000000);\ 00108 } while (0) 00109 00110 #define LCD_ALPHA_NUMBER_OFF() \ 00111 do { \ 00112 LCD_SegmentSetLow(0, 0x7ECCCC00, 0x00000000);\ 00113 LCD_SegmentSetLow(1, 0x7FFFFEFC, 0x00000000);\ 00114 LCD_SegmentSetLow(2, 0x7FFFFEFC, 0x00000000);\ 00115 LCD_SegmentSetLow(3, 0x7FFFFEFC, 0x00000000);\ 00116 } while(0) 00117 00118 #define LCD_ALL_SEGMENTS_OFF() \ 00119 do { \ 00120 LCD_SegmentSetLow(0, 0xFFFFFFFF, 0x00000000);\ 00121 LCD_SegmentSetLow(1, 0xFFFFFFFF, 0x00000000);\ 00122 LCD_SegmentSetLow(2, 0xFFFFFFFF, 0x00000000);\ 00123 LCD_SegmentSetLow(3, 0xFFFFFFFF, 0x00000000);\ 00124 LCD_SegmentSetHigh(0, 0xFF, 0x00000000);\ 00125 LCD_SegmentSetHigh(1, 0xFF, 0x00000000);\ 00126 LCD_SegmentSetHigh(2, 0xFF, 0x00000000);\ 00127 LCD_SegmentSetHigh(3, 0xFF, 0x00000000);\ 00128 } while(0) 00129 00130 #define LCD_ALL_SEGMENTS_ON() \ 00131 do { \ 00132 LCD_SegmentSetLow(0, 0xFFFFFFFF, 0xFFFFFFFF);\ 00133 LCD_SegmentSetLow(1, 0xFFFFFFFF, 0xFFFFFFFF);\ 00134 LCD_SegmentSetLow(2, 0xFFFFFFFF, 0xFFFFFFFF);\ 00135 LCD_SegmentSetLow(3, 0xFFFFFFFF, 0xFFFFFFFF);\ 00136 LCD_SegmentSetHigh(0, 0xFF, 0xFFFFFFFF);\ 00137 LCD_SegmentSetHigh(1, 0xFF, 0xFFFFFFFF);\ 00138 LCD_SegmentSetHigh(2, 0xFF, 0xFFFFFFFF);\ 00139 LCD_SegmentSetHigh(3, 0xFF, 0xFFFFFFFF);\ 00140 } while(0) 00141 00142 #define LCD_SEGMENTS_ENABLE() \ 00143 do { \ 00144 LCD_SegmentRangeEnable(lcdSegmentAll, true);\ 00145 } while(0) 00146 00147 #define LCD_DISPLAY_ENABLE() \ 00148 do { \ 00149 ;\ 00150 } while(0) 00151 00152 #define EFM_DISPLAY_DEF {\ 00153 .Text = {\ 00154 { /* 1 */\ 00155 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\ 00156 .bit[0] = 10, .bit[1] = 12, .bit[2] = 12, .bit[3] = 10,\ 00157 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\ 00158 .bit[4] = 9, .bit[5] = 9, .bit[6] = 9, .bit[7] = 10,\ 00159 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\ 00160 .bit[8] = 11, .bit[9] = 11, .bit[10] = 12, .bit[11] = 11,\ 00161 .com[12] = 1, .com[13] = 1,\ 00162 .bit[12] = 11, .bit[13] = 10\ 00163 },\ 00164 { /* 2 */\ 00165 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\ 00166 .bit[0] = 14, .bit[1] = 16, .bit[2] = 16, .bit[3] = 14,\ 00167 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\ 00168 .bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 14,\ 00169 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\ 00170 .bit[8] = 15, .bit[9] = 15, .bit[10] = 16, .bit[11] = 15,\ 00171 .com[12] = 1, .com[13] = 1,\ 00172 .bit[12] = 15, .bit[13] = 14\ 00173 },\ 00174 { /* 3 */\ 00175 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\ 00176 .bit[0] = 18, .bit[1] = 20, .bit[2] = 20, .bit[3] = 18,\ 00177 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\ 00178 .bit[4] = 17, .bit[5] = 17, .bit[6] = 17, .bit[7] = 18,\ 00179 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\ 00180 .bit[8] = 19, .bit[9] = 19, .bit[10] = 20, .bit[11] = 19,\ 00181 .com[12] = 1, .com[13] = 1,\ 00182 .bit[12] = 19, .bit[13] = 18\ 00183 },\ 00184 { /* 4 */\ 00185 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\ 00186 .bit[0] = 22, .bit[1] = 24, .bit[2] = 24, .bit[3] = 22,\ 00187 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\ 00188 .bit[4] = 21, .bit[5] = 21, .bit[6] = 21, .bit[7] = 22,\ 00189 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\ 00190 .bit[8] = 23, .bit[9] = 23, .bit[10] = 24, .bit[11] = 23,\ 00191 .com[12] = 1, .com[13] = 1,\ 00192 .bit[12] = 23, .bit[13] = 22\ 00193 },\ 00194 { /* 5 */\ 00195 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\ 00196 .bit[0] = 25, .bit[1] = 6, .bit[2] = 6, .bit[3] = 25,\ 00197 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\ 00198 .bit[4] = 7, .bit[5] = 7, .bit[6] = 7, .bit[7] = 25,\ 00199 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\ 00200 .bit[8] = 26, .bit[9] = 26, .bit[10] = 6, .bit[11] = 26,\ 00201 .com[12] = 1, .com[13] = 1,\ 00202 .bit[12] = 26, .bit[13] = 25\ 00203 },\ 00204 { /* 6 */\ 00205 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\ 00206 .bit[0] = 27, .bit[1] = 04, .bit[2] = 04, .bit[3] = 27,\ 00207 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\ 00208 .bit[4] = 5, .bit[5] = 5, .bit[6] = 5, .bit[7] = 27,\ 00209 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\ 00210 .bit[8] = 28, .bit[9] = 28, .bit[10] = 4, .bit[11] = 28,\ 00211 .com[12] = 1, .com[13] = 1,\ 00212 .bit[12] = 28, .bit[13] = 27\ 00213 },\ 00214 { /* 7 */\ 00215 .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\ 00216 .bit[0] = 29, .bit[1] = 2, .bit[2] = 2, .bit[3] = 29,\ 00217 .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\ 00218 .bit[4] = 03, .bit[5] = 3, .bit[6] = 3, .bit[7] = 29,\ 00219 .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\ 00220 .bit[8] = 30, .bit[9] = 30, .bit[10] = 2, .bit[11] = 30,\ 00221 .com[12] = 1, .com[13] = 1,\ 00222 .bit[12] = 30, .bit[13] = 29\ 00223 }\ 00224 },\ 00225 .Number = {\ 00226 {\ 00227 .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,\ 00228 .bit[0] = 31, .bit[1] = 31, .bit[2] = 31, .bit[3] = 31,\ 00229 .com[4] = 1, .com[5] = 3, .com[6] = 2,\ 00230 .bit[4] = 32, .bit[5] = 32, .bit[6] = 32,\ 00231 },\ 00232 {\ 00233 .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,\ 00234 .bit[0] = 33, .bit[1] = 33, .bit[2] = 33, .bit[3] = 33,\ 00235 .com[4] = 1, .com[5] = 3, .com[6] = 2,\ 00236 .bit[4] = 35, .bit[5] = 35, .bit[6] = 35,\ 00237 },\ 00238 {\ 00239 .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,\ 00240 .bit[0] = 36, .bit[1] = 36, .bit[2] = 36, .bit[3] = 36,\ 00241 .com[4] = 1, .com[5] = 3, .com[6] = 2,\ 00242 .bit[4] = 37, .bit[5] = 37, .bit[6] = 37,\ 00243 },\ 00244 {\ 00245 .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,\ 00246 .bit[0] = 38, .bit[1] = 38, .bit[2] = 38, .bit[3] = 38,\ 00247 .com[4] = 1, .com[5] = 3, .com[6] = 2,\ 00248 .bit[4] = 39, .bit[5] = 39, .bit[6] = 39,\ 00249 },\ 00250 },\ 00251 .EMode = {\ 00252 .com[0] = 1, .bit[0] = 1,\ 00253 .com[1] = 2, .bit[1] = 1,\ 00254 .com[2] = 1, .bit[2] = 0,\ 00255 .com[3] = 2, .bit[3] = 0,\ 00256 .com[4] = 3, .bit[4] = 0,\ 00257 },\ 00258 .ARing = {\ 00259 .com[0] = 0, .bit[0] = 0,\ 00260 .com[1] = 0, .bit[1] = 1,\ 00261 .com[2] = 0, .bit[2] = 2,\ 00262 .com[3] = 0, .bit[3] = 3,\ 00263 .com[4] = 0, .bit[4] = 4,\ 00264 .com[5] = 0, .bit[5] = 5,\ 00265 .com[6] = 0, .bit[6] = 6,\ 00266 .com[7] = 0, .bit[7] = 7,\ 00267 },\ 00268 .Battery = {\ 00269 .com[0] = 0, .bit[0] = 12,\ 00270 .com[1] = 0, .bit[1] = 17,\ 00271 .com[2] = 0, .bit[2] = 20,\ 00272 .com[3] = 0, .bit[3] = 13,\ 00273 }\ 00274 } 00275 00276 static const PinName outPins[] = { 00277 /* SEG28..39 */ 00278 PA7, //LCD_SEG35 00279 PA8, //LCD_SEG36 00280 PA9, //LCD_SEG37 00281 PA10, //LCD_SEG38 00282 PA11, //LCD_SEG39 00283 PB0, //LCD_SEG32 00284 PB1, //LCD_SEG33 00285 PB2, //LCD_SEG34 00286 PD9, //LCD_SEG28 00287 PD10, //LCD_SEG29 00288 PD11, //LCD_SEG30 00289 PD12, //LCD_SEG31 00290 /* SEG 20..27 */ 00291 PB3, //LCD_SEG20 00292 PB4, //LCD_SEG21 00293 PB5, //LCD_SEG22 00294 PB6, //LCD_SEG23 00295 PF6, //LCD_SEG24 00296 PF7, //LCD_SEG25 00297 PF8, //LCD_SEG26 00298 PF9, //LCD_SEG27 00299 /* SEG12..19 */ 00300 PA0, //LCD_SEG13 00301 PA1, //LCD_SEG14 00302 PA2, //LCD_SEG15 00303 PA3, //LCD_SEG16 00304 PA4, //LCD_SEG17 00305 PA5, //LCD_SEG18 00306 PA6, //LCD_SEG19 00307 PA15, //LCD_SEG12 00308 /* SEG0..11 */ 00309 PF2, //LCD_SEG0 00310 PF3, //LCD_SEG1 00311 PF4, //LCD_SEG2 00312 PF5, //LCD_SEG3 00313 PE8, //LCD_SEG4 00314 PE9, //LCD_SEG5 00315 PE10, //LCD_SEG6 00316 PE11, //LCD_SEG7 00317 PE12, //LCD_SEG8 00318 PE13, //LCD_SEG9 00319 PE14, //LCD_SEG10 00320 PE15, //LCD_SEG11 00321 PA15, //LCD_SEG12 00322 /* COM0..3 */ 00323 PE4, //LCD_COM0 00324 PE5, //LCD_COM1 00325 PE6, //LCD_COM2 00326 PE7 //LCD_COM3 00327 }; 00328 00329 #ifdef __cplusplus 00330 } 00331 #endif 00332 00333 #endif
Generated on Thu Jul 14 2022 05:15:53 by 1.7.2