LED Driver, 6 digits @ 8 segm, 8 LEDs, 16 Keys. SPI Interface

Dependents:   mbed_STLED316S

See here for more information.

Committer:
wim
Date:
Sat Oct 01 15:58:18 2016 +0000
Revision:
1:7a845a89625f
Parent:
0:2c5311a4f6fa
Fixed example documentation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:2c5311a4f6fa 1 /* mbed LED Font Library, for STM STLED316S controller
wim 0:2c5311a4f6fa 2 * Copyright (c) 2016, v01: WH, Initial version
wim 0:2c5311a4f6fa 3 *
wim 0:2c5311a4f6fa 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:2c5311a4f6fa 5 * of this software and associated documentation files (the "Software"), to deal
wim 0:2c5311a4f6fa 6 * in the Software without restriction, including without limitation the rights
wim 0:2c5311a4f6fa 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:2c5311a4f6fa 8 * copies of the Software, and to permit persons to whom the Software is
wim 0:2c5311a4f6fa 9 * furnished to do so, subject to the following conditions:
wim 0:2c5311a4f6fa 10 *
wim 0:2c5311a4f6fa 11 * The above copyright notice and this permission notice shall be included in
wim 0:2c5311a4f6fa 12 * all copies or substantial portions of the Software.
wim 0:2c5311a4f6fa 13 *
wim 0:2c5311a4f6fa 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:2c5311a4f6fa 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:2c5311a4f6fa 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:2c5311a4f6fa 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:2c5311a4f6fa 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:2c5311a4f6fa 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:2c5311a4f6fa 20 * THE SOFTWARE.
wim 0:2c5311a4f6fa 21 */
wim 0:2c5311a4f6fa 22 #ifndef MBED_FONT_7SEG_H
wim 0:2c5311a4f6fa 23 #define MBED_FONT_7SEG_H
wim 0:2c5311a4f6fa 24
wim 0:2c5311a4f6fa 25 // Select one of the testboards for STLED316S controller
wim 0:2c5311a4f6fa 26 #include "STLED316S_Config.h"
wim 0:2c5311a4f6fa 27
wim 0:2c5311a4f6fa 28 #if ((STLED316S_TEST == 1) || (ST316BOARD_TEST == 1))
wim 0:2c5311a4f6fa 29 // Segment bit positions for 7 Segment display using the test display mapping for STLED316S
wim 0:2c5311a4f6fa 30 // Modify this table for different 'bit-to-segment' mappings. The ASCII character defines and the FONT_7S const table below
wim 0:2c5311a4f6fa 31 // will be adapted automatically according to the bit-to-segment mapping. Obviously this will only work when the segment
wim 0:2c5311a4f6fa 32 // mapping is identical for every digit position. This will be the case unless the hardware designer really hates software developers.
wim 0:2c5311a4f6fa 33 //
wim 0:2c5311a4f6fa 34 // A
wim 0:2c5311a4f6fa 35 // -----
wim 0:2c5311a4f6fa 36 // | |
wim 0:2c5311a4f6fa 37 // F | | B
wim 0:2c5311a4f6fa 38 // | G |
wim 0:2c5311a4f6fa 39 // -----
wim 0:2c5311a4f6fa 40 // | |
wim 0:2c5311a4f6fa 41 // E | | C
wim 0:2c5311a4f6fa 42 // | |
wim 0:2c5311a4f6fa 43 // ----- * DP
wim 0:2c5311a4f6fa 44 // D
wim 0:2c5311a4f6fa 45 //
wim 0:2c5311a4f6fa 46 #define S7_A 0x01
wim 0:2c5311a4f6fa 47 #define S7_B 0x02
wim 0:2c5311a4f6fa 48 #define S7_C 0x04
wim 0:2c5311a4f6fa 49 #define S7_D 0x08
wim 0:2c5311a4f6fa 50 #define S7_E 0x10
wim 0:2c5311a4f6fa 51 #define S7_F 0x20
wim 0:2c5311a4f6fa 52 #define S7_G 0x40
wim 0:2c5311a4f6fa 53 #define S7_DP 0x80
wim 0:2c5311a4f6fa 54
wim 0:2c5311a4f6fa 55 //Mask for blending out and setting 7 segments digits
wim 0:2c5311a4f6fa 56 #define MASK_7S_ALL = (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G}
wim 0:2c5311a4f6fa 57 #endif
wim 0:2c5311a4f6fa 58
wim 0:2c5311a4f6fa 59
wim 0:2c5311a4f6fa 60 // ASCII Font definitions for segments in each character
wim 0:2c5311a4f6fa 61 //
wim 0:2c5311a4f6fa 62 //32 0x20 Symbols
wim 0:2c5311a4f6fa 63 #define C7_SPC (0x0000)
wim 0:2c5311a4f6fa 64 #define C7_EXC (S7_B | S7_C) //!
wim 0:2c5311a4f6fa 65 #define C7_QTE (S7_B | S7_F) //"
wim 0:2c5311a4f6fa 66 #define C7_HSH (S7_C | S7_D | S7_E | S7_G) //#
wim 0:2c5311a4f6fa 67 #define C7_DLR (S7_A | S7_C | S7_D | S7_F | S7_G) //$
wim 0:2c5311a4f6fa 68 #define C7_PCT (S7_C | S7_F) //%
wim 0:2c5311a4f6fa 69 #define C7_AMP (S7_A | S7_C | S7_D | S7_E | S7_F | S7_G) //&
wim 0:2c5311a4f6fa 70 #define C7_ACC (S7_B) //'
wim 0:2c5311a4f6fa 71 #define C7_LBR (S7_A | S7_D | S7_E | S7_F) //(
wim 0:2c5311a4f6fa 72 #define C7_RBR (S7_A | S7_B | S7_C | S7_D) //)
wim 0:2c5311a4f6fa 73 #define C7_MLT (S7_B | S7_C | S7_E | S7_F | S7_G) //*
wim 0:2c5311a4f6fa 74 #define C7_PLS (S7_B | S7_C | S7_G) //+
wim 0:2c5311a4f6fa 75 #define C7_CMA (S7_DP)
wim 0:2c5311a4f6fa 76 #define C7_MIN (S7_G)
wim 0:2c5311a4f6fa 77 #define C7_DPT (S7_DP)
wim 0:2c5311a4f6fa 78 #define C7_RS (S7_B | S7_E | S7_G) // /
wim 0:2c5311a4f6fa 79
wim 0:2c5311a4f6fa 80 //48 0x30 Digits
wim 0:2c5311a4f6fa 81 #define C7_0 (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
wim 0:2c5311a4f6fa 82 #define C7_1 (S7_B | S7_C)
wim 0:2c5311a4f6fa 83 #define C7_2 (S7_A | S7_B | S7_D | S7_E | S7_G)
wim 0:2c5311a4f6fa 84 #define C7_3 (S7_A | S7_B | S7_C | S7_D | S7_G)
wim 0:2c5311a4f6fa 85 #define C7_4 (S7_B | S7_C | S7_F | S7_G)
wim 0:2c5311a4f6fa 86 #define C7_5 (S7_A | S7_C | S7_D | S7_F | S7_G)
wim 0:2c5311a4f6fa 87 #define C7_6 (S7_A | S7_C | S7_D | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 88 #define C7_7 (S7_A | S7_B | S7_C)
wim 0:2c5311a4f6fa 89 #define C7_8 (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 90 #define C7_9 (S7_A | S7_B | S7_C | S7_D | S7_F | S7_G)
wim 0:2c5311a4f6fa 91
wim 0:2c5311a4f6fa 92 //58 0x3A
wim 0:2c5311a4f6fa 93 #define C7_COL (S7_D | S7_G) // :
wim 0:2c5311a4f6fa 94 #define C7_SCL (S7_D | S7_G) // ;
wim 0:2c5311a4f6fa 95 #define C7_LT (S7_D | S7_E | S7_G) // <
wim 0:2c5311a4f6fa 96 #define C7_EQ (S7_D | S7_G) // =
wim 0:2c5311a4f6fa 97 #define C7_GT (S7_C | S7_D | S7_G) // >
wim 0:2c5311a4f6fa 98 #define C7_QM (S7_A | S7_B | S7_E | S7_G) // ?
wim 0:2c5311a4f6fa 99 #define C7_AT (S7_A | S7_B | S7_C | S7_D | S7_E | S7_G) // @
wim 0:2c5311a4f6fa 100
wim 0:2c5311a4f6fa 101 //65 0x41 Upper case alphabet
wim 0:2c5311a4f6fa 102 #define C7_A (S7_A | S7_B | S7_C | S7_E | S7_F | S7_G )
wim 0:2c5311a4f6fa 103 #define C7_B (S7_C | S7_D | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 104 #define C7_C (S7_A | S7_D | S7_E | S7_F)
wim 0:2c5311a4f6fa 105 #define C7_D (S7_B | S7_C | S7_D | S7_E | S7_G)
wim 0:2c5311a4f6fa 106 #define C7_E (S7_A | S7_D | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 107 #define C7_F (S7_A | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 108
wim 0:2c5311a4f6fa 109 #define C7_G (S7_A | S7_C | S7_D | S7_E | S7_F)
wim 0:2c5311a4f6fa 110 #define C7_H (S7_B | S7_C | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 111 #define C7_I (S7_B | S7_C)
wim 0:2c5311a4f6fa 112 #define C7_J (S7_B | S7_C | S7_D | S7_E)
wim 0:2c5311a4f6fa 113 #define C7_K (S7_B | S7_C | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 114 #define C7_L (S7_D | S7_E | S7_F)
wim 0:2c5311a4f6fa 115 #define C7_M (S7_A | S7_C | S7_E)
wim 0:2c5311a4f6fa 116 #define C7_N (S7_A | S7_B | S7_C | S7_E | S7_F)
wim 0:2c5311a4f6fa 117 #define C7_O (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
wim 0:2c5311a4f6fa 118 #define C7_P (S7_A | S7_B | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 119 #define C7_Q (S7_A | S7_B | S7_C | S7_F | S7_G)
wim 0:2c5311a4f6fa 120 #define C7_R (S7_E | S7_G )
wim 0:2c5311a4f6fa 121 #define C7_S (S7_A | S7_C | S7_D | S7_F | S7_G)
wim 0:2c5311a4f6fa 122 #define C7_T (S7_D | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 123 #define C7_U (S7_B | S7_C | S7_D | S7_E | S7_F)
wim 0:2c5311a4f6fa 124 #define C7_V (S7_B | S7_C | S7_D | S7_E | S7_F)
wim 0:2c5311a4f6fa 125 #define C7_W (S7_B | S7_D | S7_F)
wim 0:2c5311a4f6fa 126 #define C7_X (S7_B | S7_C | S7_E | S7_F | S7_G)
wim 0:2c5311a4f6fa 127 #define C7_Y (S7_B | S7_C | S7_D | S7_F | S7_G)
wim 0:2c5311a4f6fa 128 #define C7_Z (S7_A | S7_B | S7_D | S7_E | S7_G)
wim 0:2c5311a4f6fa 129
wim 0:2c5311a4f6fa 130 //91 0x5B
wim 0:2c5311a4f6fa 131 #define C7_SBL (S7_A | S7_D | S7_E | S7_F) // [
wim 0:2c5311a4f6fa 132 #define C7_LS (S7_C | S7_F | S7_G) // left slash
wim 0:2c5311a4f6fa 133 #define C7_SBR (S7_A | S7_B | S7_C | S7_D) // ]
wim 0:2c5311a4f6fa 134 #define C7_PWR (S7_A | S7_B | S7_F) // ^
wim 0:2c5311a4f6fa 135 #define C7_UDS (S7_D) // _
wim 0:2c5311a4f6fa 136 #define C7_DSH (S7_F) // `
wim 0:2c5311a4f6fa 137
wim 0:2c5311a4f6fa 138 //97 0x61 Lower case alphabet
wim 0:2c5311a4f6fa 139 #define C7_a C7_A
wim 0:2c5311a4f6fa 140 #define C7_b C7_B
wim 0:2c5311a4f6fa 141 #define C7_c C7_C
wim 0:2c5311a4f6fa 142 #define C7_d C7_D
wim 0:2c5311a4f6fa 143 #define C7_e C7_E
wim 0:2c5311a4f6fa 144 #define C7_f C7_H
wim 0:2c5311a4f6fa 145
wim 0:2c5311a4f6fa 146 #define C7_g C7_G
wim 0:2c5311a4f6fa 147 #define C7_h C7_H
wim 0:2c5311a4f6fa 148 #define C7_i C7_I
wim 0:2c5311a4f6fa 149 #define C7_j C7_J
wim 0:2c5311a4f6fa 150 #define C7_k C7_K
wim 0:2c5311a4f6fa 151 #define C7_l C7_L
wim 0:2c5311a4f6fa 152 #define C7_m C7_M
wim 0:2c5311a4f6fa 153 //#define C7_n C7_N
wim 0:2c5311a4f6fa 154 #define C7_n (S7_C | S7_E | S7_G)
wim 0:2c5311a4f6fa 155 //#define C7_o C7_O
wim 0:2c5311a4f6fa 156 #define C7_o (S7_C | S7_D | S7_E | S7_G)
wim 0:2c5311a4f6fa 157 #define C7_p C7_P
wim 0:2c5311a4f6fa 158 #define C7_q C7_Q
wim 0:2c5311a4f6fa 159 //#define C7_r C7_R
wim 0:2c5311a4f6fa 160 #define C7_r (S7_E | S7_G)
wim 0:2c5311a4f6fa 161 #define C7_s C7_S
wim 0:2c5311a4f6fa 162 #define C7_t C7_T
wim 0:2c5311a4f6fa 163 #define C7_u C7_U
wim 0:2c5311a4f6fa 164 #define C7_v C7_V
wim 0:2c5311a4f6fa 165 #define C7_w C7_W
wim 0:2c5311a4f6fa 166 #define C7_x C7_X
wim 0:2c5311a4f6fa 167 #define C7_y C7_Y
wim 0:2c5311a4f6fa 168 #define C7_z C7_Z
wim 0:2c5311a4f6fa 169
wim 0:2c5311a4f6fa 170 //123 0x7B
wim 0:2c5311a4f6fa 171 #define C7_CBL (S7_A | S7_D | S7_E | S7_F) // {
wim 0:2c5311a4f6fa 172 #define C7_OR (S7_B | S7_C) // |
wim 0:2c5311a4f6fa 173 #define C7_CBR (S7_A | S7_B | S7_C | S7_D) // }
wim 0:2c5311a4f6fa 174 #define C7_TLD (S7_B | S7_E | S7_G ) // ~
wim 0:2c5311a4f6fa 175 #define C7_DEL (0x0000)
wim 0:2c5311a4f6fa 176
wim 0:2c5311a4f6fa 177
wim 0:2c5311a4f6fa 178 //User Defined Characters (some examples)
wim 0:2c5311a4f6fa 179 #define C7_DGR (S7_A | S7_B | S7_F | S7_G) //Degrees
wim 0:2c5311a4f6fa 180
wim 0:2c5311a4f6fa 181 // Font data selection for transmission to TM1637 memory
wim 0:2c5311a4f6fa 182 #define LO(x) ( x & 0xFF)
wim 0:2c5311a4f6fa 183 #define HI(x) ((x >> 8) & 0xFF)
wim 0:2c5311a4f6fa 184
wim 0:2c5311a4f6fa 185
wim 0:2c5311a4f6fa 186 // ASCII Font definition table
wim 0:2c5311a4f6fa 187 //
wim 0:2c5311a4f6fa 188 #define FONT_7S_START 0x20
wim 0:2c5311a4f6fa 189 #define FONT_7S_END 0x7F
wim 0:2c5311a4f6fa 190 //#define FONT_7S_NR_CHARS (FONT_7S_END - FONT_7S_START + 1)
wim 0:2c5311a4f6fa 191 extern const char FONT_7S[];
wim 0:2c5311a4f6fa 192
wim 0:2c5311a4f6fa 193 #endif