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_tg.h
00001 /**************************************************************************//** 00002 * @file 00003 * @brief Segment LCD Config for the EFM32 Tiny Gecko STK (STK_3300) 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 LCD_SYMBOL_GECKO, 00028 LCD_SYMBOL_ANT, 00029 LCD_SYMBOL_PAD0, 00030 LCD_SYMBOL_PAD1, 00031 LCD_SYMBOL_EFM32, 00032 LCD_SYMBOL_MINUS, 00033 LCD_SYMBOL_COL3, 00034 LCD_SYMBOL_COL5, 00035 LCD_SYMBOL_COL10, 00036 LCD_SYMBOL_DEGC, 00037 LCD_SYMBOL_DEGF, 00038 LCD_SYMBOL_DP2, 00039 LCD_SYMBOL_DP3, 00040 LCD_SYMBOL_DP4, 00041 LCD_SYMBOL_DP5, 00042 LCD_SYMBOL_DP6, 00043 LCD_SYMBOL_DP10, 00044 } lcdSymbol; 00045 00046 #define LCD_SYMBOL_GECKO_COM 1 00047 #define LCD_SYMBOL_GECKO_SEG 0 00048 #define LCD_SYMBOL_ANT_COM 0 00049 #define LCD_SYMBOL_ANT_SEG 12 00050 #define LCD_SYMBOL_PAD0_COM 3 00051 #define LCD_SYMBOL_PAD0_SEG 19 00052 #define LCD_SYMBOL_PAD1_COM 2 00053 #define LCD_SYMBOL_PAD1_SEG 0 00054 #define LCD_SYMBOL_EFM32_COM 0 00055 #define LCD_SYMBOL_EFM32_SEG 8 00056 #define LCD_SYMBOL_MINUS_COM 3 00057 #define LCD_SYMBOL_MINUS_SEG 0 00058 #define LCD_SYMBOL_COL3_COM 4 00059 #define LCD_SYMBOL_COL3_SEG 0 00060 #define LCD_SYMBOL_COL5_COM 0 00061 #define LCD_SYMBOL_COL5_SEG 10 00062 #define LCD_SYMBOL_COL10_COM 5 00063 #define LCD_SYMBOL_COL10_SEG 19 00064 #define LCD_SYMBOL_DEGC_COM 0 00065 #define LCD_SYMBOL_DEGC_SEG 14 00066 #define LCD_SYMBOL_DEGF_COM 0 00067 #define LCD_SYMBOL_DEGF_SEG 15 00068 #define LCD_SYMBOL_DP2_COM 7 00069 #define LCD_SYMBOL_DP2_SEG 0 00070 #define LCD_SYMBOL_DP3_COM 5 00071 #define LCD_SYMBOL_DP3_SEG 0 00072 #define LCD_SYMBOL_DP4_COM 6 00073 #define LCD_SYMBOL_DP4_SEG 0 00074 #define LCD_SYMBOL_DP5_COM 7 00075 #define LCD_SYMBOL_DP5_SEG 9 00076 #define LCD_SYMBOL_DP6_COM 7 00077 #define LCD_SYMBOL_DP6_SEG 11 00078 #define LCD_SYMBOL_DP10_COM 4 00079 #define LCD_SYMBOL_DP10_SEG 19 00080 00081 #define LCD_STK3300 TRUE 00082 #define LCD_DISPLAY_TYPE 8x20 00083 #define LCD_BOOST_LEVEL lcdVBoostLevel3 00084 00085 /* LCD Controller Prescaler (divide LFACLK / 64) */ 00086 /* LFACLK_LCDpre = 512 Hz */ 00087 /* Set FDIV=0, means 512/1 = 512 Hz */ 00088 /* With octaplex mode, 512/16 => 32 Hz Frame Rate */ 00089 #define LCD_CMU_CLK_PRE cmuClkDiv_64 00090 #define LCD_CMU_CLK_DIV cmuClkDiv_1 00091 00092 #define LCD_INIT_DEF \ 00093 { true,\ 00094 lcdMuxOctaplex,\ 00095 lcdBiasOneFourth,\ 00096 lcdWaveLowPower,\ 00097 lcdVLCDSelVDD,\ 00098 lcdConConfVLCD } 00099 00100 #define LCD_NUMBER_OFF() \ 00101 do { \ 00102 LCD_SegmentSetLow(0, 0x00078000, 0x00000000);\ 00103 LCD_SegmentSetLow(1, 0x00078000, 0x00000000);\ 00104 LCD_SegmentSetLow(2, 0x00078000, 0x00000000);\ 00105 LCD_SegmentSetLow(3, 0x00078000, 0x00000000);\ 00106 LCD_SegmentSetLow(4, 0x00078000, 0x00000000);\ 00107 LCD_SegmentSetLow(5, 0x00078000, 0x00000000);\ 00108 LCD_SegmentSetLow(6, 0x00078000, 0x00000000);\ 00109 LCD_SegmentSetLow(7, 0x00078000, 0x00000000);\ 00110 } while (0) 00111 00112 #define LCD_ALPHA_NUMBER_OFF() \ 00113 do { \ 00114 LCD_SegmentSetLow(7, 0x000075FE, 0x00000000);\ 00115 LCD_SegmentSetLow(6, 0x00007FFE, 0x00000000);\ 00116 LCD_SegmentSetLow(5, 0x00007FFE, 0x00000000);\ 00117 LCD_SegmentSetLow(4, 0x00007FFE, 0x00000000);\ 00118 LCD_SegmentSetLow(3, 0x00007FFE, 0x00000000);\ 00119 LCD_SegmentSetLow(2, 0x00007FFE, 0x00000000);\ 00120 LCD_SegmentSetLow(1, 0x00007FFE, 0x00000000);\ 00121 LCD_SegmentSetLow(0, 0x00000A00, 0x00000000);\ 00122 } while(0) 00123 00124 #define LCD_ALL_SEGMENTS_OFF() \ 00125 do { \ 00126 LCD_SegmentSetLow(0, 0xFFFFFFFF, 0x00000000);\ 00127 LCD_SegmentSetLow(1, 0xFFFFFFFF, 0x00000000);\ 00128 LCD_SegmentSetLow(2, 0xFFFFFFFF, 0x00000000);\ 00129 LCD_SegmentSetLow(3, 0xFFFFFFFF, 0x00000000);\ 00130 LCD_SegmentSetLow(4, 0xFFFFFFFF, 0x00000000);\ 00131 LCD_SegmentSetLow(5, 0xFFFFFFFF, 0x00000000);\ 00132 LCD_SegmentSetLow(6, 0xFFFFFFFF, 0x00000000);\ 00133 LCD_SegmentSetLow(7, 0xFFFFFFFF, 0x00000000);\ 00134 } while(0) 00135 00136 #define LCD_ALL_SEGMENTS_ON() \ 00137 do { \ 00138 LCD_SegmentSetLow(0, 0xFFFFFFFF, 0xFFFFFFFF);\ 00139 LCD_SegmentSetLow(1, 0xFFFFFFFF, 0xFFFFFFFF);\ 00140 LCD_SegmentSetLow(2, 0xFFFFFFFF, 0xFFFFFFFF);\ 00141 LCD_SegmentSetLow(3, 0xFFFFFFFF, 0xFFFFFFFF);\ 00142 LCD_SegmentSetLow(4, 0xFFFFFFFF, 0xFFFFFFFF);\ 00143 LCD_SegmentSetLow(5, 0xFFFFFFFF, 0xFFFFFFFF);\ 00144 LCD_SegmentSetLow(6, 0xFFFFFFFF, 0xFFFFFFFF);\ 00145 LCD_SegmentSetLow(7, 0xFFFFFFFF, 0xFFFFFFFF);\ 00146 } while(0) 00147 00148 #define LCD_SEGMENTS_ENABLE() \ 00149 do { \ 00150 LCD_SegmentRangeEnable(lcdSegmentAll, true);\ 00151 } while(0) 00152 00153 #define LCD_DISPLAY_ENABLE() \ 00154 do { \ 00155 ;\ 00156 } while(0) 00157 00158 #define EFM_DISPLAY_DEF {\ 00159 .Text = {\ 00160 { /* 1 */\ 00161 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00162 .bit[0] = 1, .bit[1] = 2, .bit[2] = 2, .bit[3] = 2,\ 00163 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00164 .bit[4] = 1, .bit[5] = 1, .bit[6] = 1, .bit[7] = 1,\ 00165 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00166 .bit[8] = 2, .bit[9] = 2, .bit[10] = 2, .bit[11] = 2,\ 00167 .com[12] = 5, .com[13] = 6,\ 00168 .bit[12] = 1, .bit[13] = 1\ 00169 },\ 00170 { /* 2 */\ 00171 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00172 .bit[0] = 3, .bit[1] = 4, .bit[2] = 4, .bit[3] = 4,\ 00173 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00174 .bit[4] = 3, .bit[5] = 3, .bit[6] = 3, .bit[7] = 3,\ 00175 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00176 .bit[8] = 4, .bit[9] = 4, .bit[10] = 4, .bit[11] = 4,\ 00177 .com[12] = 5, .com[13] = 6,\ 00178 .bit[12] = 3, .bit[13] = 3\ 00179 },\ 00180 { /* 3 */\ 00181 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00182 .bit[0] = 5, .bit[1] = 6, .bit[2] = 6, .bit[3] = 6,\ 00183 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00184 .bit[4] = 5, .bit[5] = 5, .bit[6] = 5, .bit[7] = 5,\ 00185 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00186 .bit[8] = 6, .bit[9] = 6, .bit[10] = 6, .bit[11] = 6,\ 00187 .com[12] = 5, .com[13] = 6,\ 00188 .bit[12] = 5, .bit[13] = 5\ 00189 },\ 00190 { /* 4 */\ 00191 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00192 .bit[0] = 7, .bit[1] = 8, .bit[2] = 8, .bit[3] = 8,\ 00193 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00194 .bit[4] = 7, .bit[5] = 7, .bit[6] = 7, .bit[7] = 7,\ 00195 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00196 .bit[8] = 8, .bit[9] = 8, .bit[10] = 8, .bit[11] = 8,\ 00197 .com[12] = 5, .com[13] = 6,\ 00198 .bit[12] = 7, .bit[13] = 7\ 00199 },\ 00200 { /* 5 */\ 00201 .com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00202 .bit[0] = 9, .bit[1] = 10, .bit[2] = 10, .bit[3] = 10,\ 00203 .com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\ 00204 .bit[4] = 9, .bit[5] = 9, .bit[6] = 9, .bit[7] = 9,\ 00205 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00206 .bit[8] = 10, .bit[9] = 10, .bit[10] = 10, .bit[11] = 10,\ 00207 .com[12] = 4, .com[13] = 5,\ 00208 .bit[12] = 9, .bit[13] = 9\ 00209 },\ 00210 { /* 6 */\ 00211 .com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00212 .bit[0] = 11, .bit[1] = 12, .bit[2] = 12, .bit[3] = 12,\ 00213 .com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\ 00214 .bit[4] = 11, .bit[5] = 11, .bit[6] = 11, .bit[7] = 11,\ 00215 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00216 .bit[8] = 12, .bit[9] = 12, .bit[10] = 12, .bit[11] = 12,\ 00217 .com[12] = 4, .com[13] = 5,\ 00218 .bit[12] = 11, .bit[13] = 11\ 00219 },\ 00220 { /* 7 */\ 00221 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00222 .bit[0] = 13, .bit[1] = 14, .bit[2] = 14, .bit[3] = 14,\ 00223 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00224 .bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 13,\ 00225 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00226 .bit[8] = 14, .bit[9] = 14, .bit[10] = 14, .bit[11] = 14,\ 00227 .com[12] = 5, .com[13] = 6,\ 00228 .bit[12] = 13, .bit[13] = 13\ 00229 },\ 00230 },\ 00231 .Number = {\ 00232 {\ 00233 .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\ 00234 .bit[0] = 15, .bit[1] = 15, .bit[2] = 15, .bit[3] = 15,\ 00235 .com[4] = 3, .com[5] = 6, .com[6] = 4,\ 00236 .bit[4] = 15, .bit[5] = 15, .bit[6] = 15,\ 00237 },\ 00238 {\ 00239 .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\ 00240 .bit[0] = 16, .bit[1] = 16, .bit[2] = 16, .bit[3] = 16,\ 00241 .com[4] = 3, .com[5] = 6, .com[6] = 4,\ 00242 .bit[4] = 16, .bit[5] = 16, .bit[6] = 16,\ 00243 },\ 00244 {\ 00245 .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\ 00246 .bit[0] = 17, .bit[1] = 17, .bit[2] = 17, .bit[3] = 17,\ 00247 .com[4] = 3, .com[5] = 6, .com[6] = 4,\ 00248 .bit[4] = 17, .bit[5] = 17, .bit[6] = 17,\ 00249 },\ 00250 {\ 00251 .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\ 00252 .bit[0] = 18, .bit[1] = 18, .bit[2] = 18, .bit[3] = 18,\ 00253 .com[4] = 3, .com[5] = 6, .com[6] = 4,\ 00254 .bit[4] = 18, .bit[5] = 18, .bit[6] = 18,\ 00255 },\ 00256 },\ 00257 .EMode = {\ 00258 .com[0] = 0, .bit[0] = 19,\ 00259 .com[1] = 1, .bit[1] = 19,\ 00260 .com[2] = 7, .bit[2] = 19,\ 00261 .com[3] = 2, .bit[3] = 19,\ 00262 .com[4] = 6, .bit[4] = 19,\ 00263 },\ 00264 .ARing = {\ 00265 .com[0] = 0, .bit[0] = 7,\ 00266 .com[1] = 0, .bit[1] = 6,\ 00267 .com[2] = 0, .bit[2] = 5,\ 00268 .com[3] = 0, .bit[3] = 4,\ 00269 .com[4] = 0, .bit[4] = 3,\ 00270 .com[5] = 0, .bit[5] = 2,\ 00271 .com[6] = 0, .bit[6] = 1,\ 00272 .com[7] = 0, .bit[7] = 0,\ 00273 },\ 00274 .Battery = {\ 00275 .com[0] = 0, .bit[0] = 13,\ 00276 .com[1] = 0, .bit[1] = 17,\ 00277 .com[2] = 0, .bit[2] = 16,\ 00278 .com[3] = 0, .bit[3] = 18,\ 00279 }\ 00280 } 00281 00282 static const PinName outPins[] = { 00283 /* SEG28..39 */ 00284 PA7, //LCD_SEG35 00285 PA8, //LCD_SEG36 00286 PA9, //LCD_SEG37 00287 PA10, //LCD_SEG38 00288 PA11, //LCD_SEG39 00289 PB0, //LCD_SEG32 00290 PB1, //LCD_SEG33 00291 PB2, //LCD_SEG34 00292 PD9, //LCD_SEG28 00293 PD10, //LCD_SEG29 00294 PD11, //LCD_SEG30 00295 PD12, //LCD_SEG31 00296 /* SEG12..19 */ 00297 PA0, //LCD_SEG13 00298 PA1, //LCD_SEG14 00299 PA2, //LCD_SEG15 00300 PA3, //LCD_SEG16 00301 PA4, //LCD_SEG17 00302 PA5, //LCD_SEG18 00303 PA6, //LCD_SEG19 00304 PA15, //LCD_SEG12 00305 /* COM4..7 */ 00306 PB3, //LCD_COM4 00307 PB4, //LCD_COM5 00308 PB5, //LCD_COM6 00309 PB6, //LCD_COM7 00310 /* COM0..3 */ 00311 PE4, //LCD_COM0 00312 PE5, //LCD_COM1 00313 PE6, //LCD_COM2 00314 PE7 //LCD_COM3 00315 }; 00316 00317 #ifdef __cplusplus 00318 } 00319 #endif 00320 00321 #endif
Generated on Thu Jul 14 2022 05:15:53 by 1.7.2