Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of EFM32_SegmentLCD by
segmentlcdconfig_stk_gg.h
00001 /**************************************************************************//** 00002 * @file 00003 * @brief Segment LCD Config for the EFM32 Giant Gecko STK (STK_3700) 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 #include "PinNames.h" 00021 00022 #ifdef __cplusplus 00023 extern "C" { 00024 #endif 00025 00026 /** Range of symbols available on display */ 00027 typedef enum { 00028 LCD_SYMBOL_GECKO, 00029 LCD_SYMBOL_ANT, 00030 LCD_SYMBOL_PAD0, 00031 LCD_SYMBOL_PAD1, 00032 LCD_SYMBOL_EFM32, 00033 LCD_SYMBOL_MINUS, 00034 LCD_SYMBOL_COL3, 00035 LCD_SYMBOL_COL5, 00036 LCD_SYMBOL_COL10, 00037 LCD_SYMBOL_DEGC, 00038 LCD_SYMBOL_DEGF, 00039 LCD_SYMBOL_DP2, 00040 LCD_SYMBOL_DP3, 00041 LCD_SYMBOL_DP4, 00042 LCD_SYMBOL_DP5, 00043 LCD_SYMBOL_DP6, 00044 LCD_SYMBOL_DP10, 00045 } lcdSymbol; 00046 00047 #define LCD_SYMBOL_GECKO_COM 1 00048 #define LCD_SYMBOL_GECKO_SEG 12 00049 #define LCD_SYMBOL_ANT_COM 0 00050 #define LCD_SYMBOL_ANT_SEG 32 00051 #define LCD_SYMBOL_PAD0_COM 3 00052 #define LCD_SYMBOL_PAD0_SEG 39 00053 #define LCD_SYMBOL_PAD1_COM 2 00054 #define LCD_SYMBOL_PAD1_SEG 12 00055 #define LCD_SYMBOL_EFM32_COM 0 00056 #define LCD_SYMBOL_EFM32_SEG 28 00057 #define LCD_SYMBOL_MINUS_COM 3 00058 #define LCD_SYMBOL_MINUS_SEG 12 00059 #define LCD_SYMBOL_COL3_COM 4 00060 #define LCD_SYMBOL_COL3_SEG 12 00061 #define LCD_SYMBOL_COL5_COM 0 00062 #define LCD_SYMBOL_COL5_SEG 30 00063 #define LCD_SYMBOL_COL10_COM 5 00064 #define LCD_SYMBOL_COL10_SEG 39 00065 #define LCD_SYMBOL_DEGC_COM 0 00066 #define LCD_SYMBOL_DEGC_SEG 34 00067 #define LCD_SYMBOL_DEGF_COM 0 00068 #define LCD_SYMBOL_DEGF_SEG 35 00069 #define LCD_SYMBOL_DP2_COM 7 00070 #define LCD_SYMBOL_DP2_SEG 12 00071 #define LCD_SYMBOL_DP3_COM 5 00072 #define LCD_SYMBOL_DP3_SEG 12 00073 #define LCD_SYMBOL_DP4_COM 6 00074 #define LCD_SYMBOL_DP4_SEG 12 00075 #define LCD_SYMBOL_DP5_COM 7 00076 #define LCD_SYMBOL_DP5_SEG 29 00077 #define LCD_SYMBOL_DP6_COM 7 00078 #define LCD_SYMBOL_DP6_SEG 31 00079 #define LCD_SYMBOL_DP10_COM 4 00080 #define LCD_SYMBOL_DP10_SEG 39 00081 00082 /* LCD Controller Prescaler (divide LFACLK / 64) */ 00083 /* LFACLK_LCDpre = 512 Hz */ 00084 /* Set FDIV=0, means 512/1 = 512 Hz */ 00085 /* With octaplex mode, 512/16 => 32 Hz Frame Rate */ 00086 #define LCD_CMU_CLK_PRE cmuClkDiv_64 00087 #define LCD_CMU_CLK_DIV 1 00088 00089 #define LCD_BOOST_LEVEL lcdVBoostLevel3 00090 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_SegmentSetHigh(1, 0x00000078, 0x00000000); \ 00103 LCD_SegmentSetHigh(2, 0x00000078, 0x00000000); \ 00104 LCD_SegmentSetHigh(3, 0x00000078, 0x00000000); \ 00105 LCD_SegmentSetHigh(4, 0x00000078, 0x00000000); \ 00106 LCD_SegmentSetHigh(5, 0x00000078, 0x00000000); \ 00107 LCD_SegmentSetHigh(6, 0x00000078, 0x00000000); \ 00108 LCD_SegmentSetHigh(7, 0x00000078, 0x00000000); \ 00109 } while (0) 00110 00111 #define LCD_ALPHA_NUMBER_OFF() \ 00112 do { \ 00113 LCD_SegmentSetLow(7, 0x500FE000, 0x00000000);\ 00114 LCD_SegmentSetLow(6, 0xF00FE000, 0x00000000);\ 00115 LCD_SegmentSetLow(5, 0xF00FE000, 0x00000000);\ 00116 LCD_SegmentSetLow(4, 0xF00FE000, 0x00000000);\ 00117 LCD_SegmentSetLow(3, 0xF00FE000, 0x00000000);\ 00118 LCD_SegmentSetLow(2, 0xF00FE000, 0x00000000);\ 00119 LCD_SegmentSetLow(1, 0xF00FE000, 0x00000000);\ 00120 LCD_SegmentSetLow(0, 0xA0000000, 0x00000000);\ 00121 LCD_SegmentSetHigh(7, 0x00000007, 0x00000000);\ 00122 LCD_SegmentSetHigh(6, 0x00000007, 0x00000000);\ 00123 LCD_SegmentSetHigh(5, 0x00000007, 0x00000000);\ 00124 LCD_SegmentSetHigh(4, 0x00000007, 0x00000000);\ 00125 LCD_SegmentSetHigh(3, 0x00000007, 0x00000000);\ 00126 LCD_SegmentSetHigh(2, 0x00000007, 0x00000000);\ 00127 LCD_SegmentSetHigh(1, 0x00000007, 0x00000000);\ 00128 } while(0) 00129 00130 #define LCD_ALL_SEGMENTS_OFF() \ 00131 do { \ 00132 LCD_SegmentSetLow(0, 0xF00FF000, 0x00000000);\ 00133 LCD_SegmentSetLow(1, 0xF00FF000, 0x00000000);\ 00134 LCD_SegmentSetLow(2, 0xF00FF000, 0x00000000);\ 00135 LCD_SegmentSetLow(3, 0xF00FF000, 0x00000000);\ 00136 LCD_SegmentSetLow(4, 0xF00FF000, 0x00000000);\ 00137 LCD_SegmentSetLow(5, 0xF00FF000, 0x00000000);\ 00138 LCD_SegmentSetLow(6, 0xF00FF000, 0x00000000);\ 00139 LCD_SegmentSetLow(7, 0xF00FF000, 0x00000000);\ 00140 LCD_SegmentSetHigh(0, 0x000000FF, 0x00000000);\ 00141 LCD_SegmentSetHigh(1, 0x000000FF, 0x00000000);\ 00142 LCD_SegmentSetHigh(2, 0x000000FF, 0x00000000);\ 00143 LCD_SegmentSetHigh(3, 0x000000FF, 0x00000000);\ 00144 LCD_SegmentSetHigh(4, 0x000000FF, 0x00000000);\ 00145 LCD_SegmentSetHigh(5, 0x000000FF, 0x00000000);\ 00146 LCD_SegmentSetHigh(6, 0x000000FF, 0x00000000);\ 00147 LCD_SegmentSetHigh(7, 0x000000FF, 0x00000000);\ 00148 } while(0) 00149 00150 #define LCD_ALL_SEGMENTS_ON() \ 00151 do { \ 00152 LCD_SegmentSetLow(0, 0xF00FF000, 0xFFFFFFFF);\ 00153 LCD_SegmentSetLow(1, 0xF00FF000, 0xFFFFFFFF);\ 00154 LCD_SegmentSetLow(2, 0xF00FF000, 0xFFFFFFFF);\ 00155 LCD_SegmentSetLow(3, 0xF00FF000, 0xFFFFFFFF);\ 00156 LCD_SegmentSetLow(4, 0xF00FF000, 0xFFFFFFFF);\ 00157 LCD_SegmentSetLow(5, 0xF00FF000, 0xFFFFFFFF);\ 00158 LCD_SegmentSetLow(6, 0xF00FF000, 0xFFFFFFFF);\ 00159 LCD_SegmentSetLow(7, 0xF00FF000, 0xFFFFFFFF);\ 00160 LCD_SegmentSetHigh(0, 0x000000FF, 0xFFFFFFFF);\ 00161 LCD_SegmentSetHigh(1, 0x000000FF, 0xFFFFFFFF);\ 00162 LCD_SegmentSetHigh(2, 0x000000FF, 0xFFFFFFFF);\ 00163 LCD_SegmentSetHigh(3, 0x000000FF, 0xFFFFFFFF);\ 00164 LCD_SegmentSetHigh(4, 0x000000FF, 0xFFFFFFFF);\ 00165 LCD_SegmentSetHigh(5, 0x000000FF, 0xFFFFFFFF);\ 00166 LCD_SegmentSetHigh(6, 0x000000FF, 0xFFFFFFFF);\ 00167 LCD_SegmentSetHigh(7, 0x000000FF, 0xFFFFFFFF);\ 00168 } while(0) 00169 00170 #define LCD_SEGMENTS_ENABLE() \ 00171 do { \ 00172 LCD_SegmentRangeEnable(lcdSegment12_15, true);\ 00173 LCD_SegmentRangeEnable(lcdSegment16_19, true);\ 00174 LCD_SegmentRangeEnable(lcdSegment28_31, true);\ 00175 LCD_SegmentRangeEnable(lcdSegment32_35, true);\ 00176 LCD_SegmentRangeEnable(lcdSegment36_39, true);\ 00177 } while(0) 00178 00179 #define LCD_DISPLAY_ENABLE() \ 00180 do { \ 00181 LCD_Enable(true);\ 00182 } while(0) 00183 00184 #define EFM_DISPLAY_DEF {\ 00185 .Text = {\ 00186 { /* 1 */\ 00187 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00188 .bit[0] = 13, .bit[1] = 14, .bit[2] = 14, .bit[3] = 14,\ 00189 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00190 .bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 13,\ 00191 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00192 .bit[8] = 14, .bit[9] = 14, .bit[10] = 14, .bit[11] = 14,\ 00193 .com[12] = 5, .com[13] = 6,\ 00194 .bit[12] = 13, .bit[13] = 13\ 00195 },\ 00196 { /* 2 */\ 00197 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00198 .bit[0] = 15, .bit[1] = 16, .bit[2] = 16, .bit[3] = 16,\ 00199 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00200 .bit[4] = 15, .bit[5] = 15, .bit[6] = 15, .bit[7] = 15,\ 00201 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00202 .bit[8] = 16, .bit[9] = 16, .bit[10] = 16, .bit[11] = 16,\ 00203 .com[12] = 5, .com[13] = 6,\ 00204 .bit[12] = 15, .bit[13] = 15\ 00205 },\ 00206 { /* 3 */\ 00207 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00208 .bit[0] = 17, .bit[1] = 18, .bit[2] = 18, .bit[3] = 18,\ 00209 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00210 .bit[4] = 17, .bit[5] = 17, .bit[6] = 17, .bit[7] = 17,\ 00211 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00212 .bit[8] = 18, .bit[9] = 18, .bit[10] = 18, .bit[11] = 18,\ 00213 .com[12] = 5, .com[13] = 6,\ 00214 .bit[12] = 17, .bit[13] = 17\ 00215 },\ 00216 { /* 4 */\ 00217 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00218 .bit[0] = 19, .bit[1] = 28, .bit[2] = 28, .bit[3] = 28,\ 00219 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00220 .bit[4] = 19, .bit[5] = 19, .bit[6] = 19, .bit[7] = 19,\ 00221 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00222 .bit[8] = 28, .bit[9] = 28, .bit[10] = 28, .bit[11] = 28,\ 00223 .com[12] = 5, .com[13] = 6,\ 00224 .bit[12] = 19, .bit[13] = 19\ 00225 },\ 00226 { /* 5 */\ 00227 .com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00228 .bit[0] = 29, .bit[1] = 30, .bit[2] = 30, .bit[3] = 30,\ 00229 .com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\ 00230 .bit[4] = 29, .bit[5] = 29, .bit[6] = 29, .bit[7] = 29,\ 00231 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00232 .bit[8] = 30, .bit[9] = 30, .bit[10] = 30, .bit[11] = 30,\ 00233 .com[12] = 4, .com[13] = 5,\ 00234 .bit[12] = 29, .bit[13] = 29\ 00235 },\ 00236 { /* 6 */\ 00237 .com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00238 .bit[0] = 31, .bit[1] = 32, .bit[2] = 32, .bit[3] = 32,\ 00239 .com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\ 00240 .bit[4] = 31, .bit[5] = 31, .bit[6] = 31, .bit[7] = 31,\ 00241 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00242 .bit[8] = 32, .bit[9] = 32, .bit[10] = 32, .bit[11] = 32,\ 00243 .com[12] = 4, .com[13] = 5,\ 00244 .bit[12] = 31, .bit[13] = 31\ 00245 },\ 00246 { /* 7 */\ 00247 .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\ 00248 .bit[0] = 33, .bit[1] = 34, .bit[2] = 34, .bit[3] = 34,\ 00249 .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\ 00250 .bit[4] = 33, .bit[5] = 33, .bit[6] = 33, .bit[7] = 33,\ 00251 .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\ 00252 .bit[8] = 34, .bit[9] = 34, .bit[10] = 34, .bit[11] = 34,\ 00253 .com[12] = 5, .com[13] = 6,\ 00254 .bit[12] = 33, .bit[13] = 33\ 00255 },\ 00256 },\ 00257 .Number = {\ 00258 {\ 00259 .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\ 00260 .bit[0] = 35, .bit[1] = 35, .bit[2] = 35, .bit[3] = 35,\ 00261 .com[4] = 3, .com[5] = 6, .com[6] = 4,\ 00262 .bit[4] = 35, .bit[5] = 35, .bit[6] = 35,\ 00263 },\ 00264 {\ 00265 .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\ 00266 .bit[0] = 36, .bit[1] = 36, .bit[2] = 36, .bit[3] = 36,\ 00267 .com[4] = 3, .com[5] = 6, .com[6] = 4,\ 00268 .bit[4] = 36, .bit[5] = 36, .bit[6] = 36,\ 00269 },\ 00270 {\ 00271 .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\ 00272 .bit[0] = 37, .bit[1] = 37, .bit[2] = 37, .bit[3] = 37,\ 00273 .com[4] = 3, .com[5] = 6, .com[6] = 4,\ 00274 .bit[4] = 37, .bit[5] = 37, .bit[6] = 37,\ 00275 },\ 00276 {\ 00277 .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\ 00278 .bit[0] = 38, .bit[1] = 38, .bit[2] = 38, .bit[3] = 38,\ 00279 .com[4] = 3, .com[5] = 6, .com[6] = 4,\ 00280 .bit[4] = 38, .bit[5] = 38, .bit[6] = 38,\ 00281 },\ 00282 },\ 00283 .EMode = {\ 00284 .com[0] = 0, .bit[0] = 39,\ 00285 .com[1] = 1, .bit[1] = 39,\ 00286 .com[2] = 7, .bit[2] = 39,\ 00287 .com[3] = 2, .bit[3] = 39,\ 00288 .com[4] = 6, .bit[4] = 39,\ 00289 },\ 00290 .ARing = {\ 00291 .com[0] = 0, .bit[0] = 19,\ 00292 .com[1] = 0, .bit[1] = 18,\ 00293 .com[2] = 0, .bit[2] = 17,\ 00294 .com[3] = 0, .bit[3] = 16,\ 00295 .com[4] = 0, .bit[4] = 15,\ 00296 .com[5] = 0, .bit[5] = 14,\ 00297 .com[6] = 0, .bit[6] = 13,\ 00298 .com[7] = 0, .bit[7] = 12,\ 00299 },\ 00300 .Battery = {\ 00301 .com[0] = 0, .bit[0] = 33,\ 00302 .com[1] = 0, .bit[1] = 37,\ 00303 .com[2] = 0, .bit[2] = 36,\ 00304 .com[3] = 0, .bit[3] = 38,\ 00305 }\ 00306 } 00307 00308 static const PinName outPins[] = { 00309 /* SEG28..39 */ 00310 PA7, //LCD_SEG35 00311 PA8, //LCD_SEG36 00312 PA9, //LCD_SEG37 00313 PA10, //LCD_SEG38 00314 PA11, //LCD_SEG39 00315 PB0, //LCD_SEG32 00316 PB1, //LCD_SEG33 00317 PB2, //LCD_SEG34 00318 PD9, //LCD_SEG28 00319 PD10, //LCD_SEG29 00320 PD11, //LCD_SEG30 00321 PD12, //LCD_SEG31 00322 /* SEG12..19 */ 00323 PA0, //LCD_SEG13 00324 PA1, //LCD_SEG14 00325 PA2, //LCD_SEG15 00326 PA3, //LCD_SEG16 00327 PA4, //LCD_SEG17 00328 PA5, //LCD_SEG18 00329 PA6, //LCD_SEG19 00330 PA15, //LCD_SEG12 00331 /* COM4..7 */ 00332 PB3, //LCD_COM4 00333 PB4, //LCD_COM5 00334 PB5, //LCD_COM6 00335 PB6, //LCD_COM7 00336 /* COM0..3 */ 00337 PE4, //LCD_COM0 00338 PE5, //LCD_COM1 00339 PE6, //LCD_COM2 00340 PE7 //LCD_COM3 00341 }; 00342 00343 #ifdef __cplusplus 00344 } 00345 #endif 00346 00347 #endif
Generated on Tue Jul 19 2022 15:26:32 by
1.7.2