Library for TM1640 LED controller Initial version

Dependents:   mbed_TM1640

See here for more information.

Committer:
wim
Date:
Thu Jan 28 19:25:49 2016 +0000
Revision:
0:7e120ffa56d3
Library for TM1640 LED controller; Initial version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:7e120ffa56d3 1 /* mbed LED Font Library, for TM1640 LED Controller
wim 0:7e120ffa56d3 2 * Copyright (c) 2016, v01: WH, Initial version, Test in LM1640
wim 0:7e120ffa56d3 3 *
wim 0:7e120ffa56d3 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:7e120ffa56d3 5 * of this software and associated documentation files (the "Software"), to deal
wim 0:7e120ffa56d3 6 * in the Software without restriction, including without limitation the rights
wim 0:7e120ffa56d3 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:7e120ffa56d3 8 * copies of the Software, and to permit persons to whom the Software is
wim 0:7e120ffa56d3 9 * furnished to do so, subject to the following conditions:
wim 0:7e120ffa56d3 10 *
wim 0:7e120ffa56d3 11 * The above copyright notice and this permission notice shall be included in
wim 0:7e120ffa56d3 12 * all copies or substantial portions of the Software.
wim 0:7e120ffa56d3 13 *
wim 0:7e120ffa56d3 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:7e120ffa56d3 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:7e120ffa56d3 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:7e120ffa56d3 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:7e120ffa56d3 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:7e120ffa56d3 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:7e120ffa56d3 20 * THE SOFTWARE.
wim 0:7e120ffa56d3 21 */
wim 0:7e120ffa56d3 22 #ifndef MBED_FONT_7SEG_H
wim 0:7e120ffa56d3 23 #define MBED_FONT_7SEG_H
wim 0:7e120ffa56d3 24
wim 0:7e120ffa56d3 25 // Select one of the testboards for TM1640 controller
wim 0:7e120ffa56d3 26 #include "TM1640_Config.h"
wim 0:7e120ffa56d3 27
wim 0:7e120ffa56d3 28 #if ((LM1640_TEST == 1) || (TM1640_TEST == 1))
wim 0:7e120ffa56d3 29 // Segment bit positions for 7 Segment display using the LM1640 mapping for TM1640
wim 0:7e120ffa56d3 30 // Modify this table for different 'bit-to-segment' mappings. The ASCII character defines and the FONT_7S const table below
wim 0:7e120ffa56d3 31 // will be adapted automatically according to the bit-to-segment mapping. Obviously this will only work when the segment
wim 0:7e120ffa56d3 32 // mapping is identical for every digit position. This will be the case unless the hardware designer really hates software developers.
wim 0:7e120ffa56d3 33 //
wim 0:7e120ffa56d3 34 // A
wim 0:7e120ffa56d3 35 // -----
wim 0:7e120ffa56d3 36 // | |
wim 0:7e120ffa56d3 37 // F | | B
wim 0:7e120ffa56d3 38 // | G |
wim 0:7e120ffa56d3 39 // -----
wim 0:7e120ffa56d3 40 // | |
wim 0:7e120ffa56d3 41 // E | | C
wim 0:7e120ffa56d3 42 // | |
wim 0:7e120ffa56d3 43 // ----- * DP
wim 0:7e120ffa56d3 44 // D
wim 0:7e120ffa56d3 45 //
wim 0:7e120ffa56d3 46 #define S7_A 0x0001
wim 0:7e120ffa56d3 47 #define S7_B 0x0002
wim 0:7e120ffa56d3 48 #define S7_C 0x0004
wim 0:7e120ffa56d3 49 #define S7_D 0x0008
wim 0:7e120ffa56d3 50 #define S7_E 0x0010
wim 0:7e120ffa56d3 51 #define S7_F 0x0020
wim 0:7e120ffa56d3 52 #define S7_G 0x0040
wim 0:7e120ffa56d3 53 #define S7_DP 0x0080
wim 0:7e120ffa56d3 54
wim 0:7e120ffa56d3 55 //Mask for blending out and setting 7 segments digits
wim 0:7e120ffa56d3 56 #define MASK_7S_ALL = (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G}
wim 0:7e120ffa56d3 57
wim 0:7e120ffa56d3 58 //Icons Grid 1
wim 0:7e120ffa56d3 59 #define S7_DP1 0x0080
wim 0:7e120ffa56d3 60 #define S7_ICON_GR1 (0x0000)
wim 0:7e120ffa56d3 61 //#define S7_ICON_GR1 (S7_DP1)
wim 0:7e120ffa56d3 62
wim 0:7e120ffa56d3 63 //Icons Grid 2
wim 0:7e120ffa56d3 64 #define S7_DP2 0x0080
wim 0:7e120ffa56d3 65 #define S7_ICON_GR2 (0x0000)
wim 0:7e120ffa56d3 66 //#define S7_ICON_GR2 (S7_DP2)
wim 0:7e120ffa56d3 67
wim 0:7e120ffa56d3 68 //Icons Grid 3
wim 0:7e120ffa56d3 69 #define S7_DP3 0x0080
wim 0:7e120ffa56d3 70 #define S7_ICON_GR3 (0x0000)
wim 0:7e120ffa56d3 71 //#define S7_ICON_GR3 (S7_LD3 | S7_DP3)
wim 0:7e120ffa56d3 72
wim 0:7e120ffa56d3 73 //Icons Grid 4
wim 0:7e120ffa56d3 74 #define S7_DP4 0x0080
wim 0:7e120ffa56d3 75 #define S7_ICON_GR4 (0x0000)
wim 0:7e120ffa56d3 76 //#define S7_ICON_GR4 (S7_DP4)
wim 0:7e120ffa56d3 77
wim 0:7e120ffa56d3 78 //Icons Grid 5
wim 0:7e120ffa56d3 79 #define S7_DP5 0x0080
wim 0:7e120ffa56d3 80 #define S7_ICON_GR5 (0x0000)
wim 0:7e120ffa56d3 81 //#define S7_ICON_GR5 (S7_DP5)
wim 0:7e120ffa56d3 82
wim 0:7e120ffa56d3 83 //Icons Grid 6
wim 0:7e120ffa56d3 84 #define S7_DP6 0x0080
wim 0:7e120ffa56d3 85 #define S7_ICON_GR6 (0x0000)
wim 0:7e120ffa56d3 86 //#define S7_ICON_GR6 (S7_DP6)
wim 0:7e120ffa56d3 87
wim 0:7e120ffa56d3 88 //Icons Grid 7
wim 0:7e120ffa56d3 89 #define S7_DP7 0x0080
wim 0:7e120ffa56d3 90 #define S7_ICON_GR7 (0x0000)
wim 0:7e120ffa56d3 91 //#define S7_ICON_GR7 (S7_DP7)
wim 0:7e120ffa56d3 92
wim 0:7e120ffa56d3 93 //Icons Grid 8
wim 0:7e120ffa56d3 94 #define S7_DP8 0x0080
wim 0:7e120ffa56d3 95 #define S7_ICON_GR8 (0x0000)
wim 0:7e120ffa56d3 96 //#define S7_ICON_GR8 (S7_DP8)
wim 0:7e120ffa56d3 97
wim 0:7e120ffa56d3 98 //Icons Grid 9
wim 0:7e120ffa56d3 99 #define S7_DP9 0x0080
wim 0:7e120ffa56d3 100 #define S7_ICON_GR9 (0x0000)
wim 0:7e120ffa56d3 101 //#define S7_ICON_GR9 (S7_DP9)
wim 0:7e120ffa56d3 102
wim 0:7e120ffa56d3 103 //Icons Grid 10
wim 0:7e120ffa56d3 104 #define S7_DP10 0x0080
wim 0:7e120ffa56d3 105 #define S7_ICON_GR10 (0x0000)
wim 0:7e120ffa56d3 106 //#define S7_ICON_GR10 (S7_DP10)
wim 0:7e120ffa56d3 107
wim 0:7e120ffa56d3 108 //Icons Grid 11
wim 0:7e120ffa56d3 109 #define S7_DP11 0x0080
wim 0:7e120ffa56d3 110 #define S7_ICON_GR11 (0x0000)
wim 0:7e120ffa56d3 111 //#define S7_ICON_GR11 (S7_DP11)
wim 0:7e120ffa56d3 112
wim 0:7e120ffa56d3 113 //Icons Grid 12
wim 0:7e120ffa56d3 114 #define S7_DP12 0x0080
wim 0:7e120ffa56d3 115 #define S7_ICON_GR12 (0x0000)
wim 0:7e120ffa56d3 116 //#define S7_ICON_GR12 (S7_DP12)
wim 0:7e120ffa56d3 117
wim 0:7e120ffa56d3 118 //Icons Grid 13
wim 0:7e120ffa56d3 119 #define S7_DP13 0x0080
wim 0:7e120ffa56d3 120 #define S7_ICON_GR13 (0x0000)
wim 0:7e120ffa56d3 121 //#define S7_ICON_GR13 (S7_DP13)
wim 0:7e120ffa56d3 122
wim 0:7e120ffa56d3 123 //Icons Grid 14
wim 0:7e120ffa56d3 124 #define S7_DP14 0x0080
wim 0:7e120ffa56d3 125 #define S7_ICON_GR14 (0x0000)
wim 0:7e120ffa56d3 126 //#define S7_ICON_GR14 (S7_DP14)
wim 0:7e120ffa56d3 127
wim 0:7e120ffa56d3 128 //Icons Grid 15
wim 0:7e120ffa56d3 129 #define S7_DP15 0x0080
wim 0:7e120ffa56d3 130 #define S7_ICON_GR15 (0x0000)
wim 0:7e120ffa56d3 131 //#define S7_ICON_GR15 (S7_DP15)
wim 0:7e120ffa56d3 132
wim 0:7e120ffa56d3 133 //Icons Grid 16
wim 0:7e120ffa56d3 134 #define S7_DP16 0x0080
wim 0:7e120ffa56d3 135 #define S7_ICON_GR16 (0x0000)
wim 0:7e120ffa56d3 136 //#define S7_ICON_GR16 (S7_DP16)
wim 0:7e120ffa56d3 137
wim 0:7e120ffa56d3 138 //Mask for blending out and restoring Icons
wim 0:7e120ffa56d3 139 extern const char MASK_ICON_GRID[];
wim 0:7e120ffa56d3 140 #endif
wim 0:7e120ffa56d3 141
wim 0:7e120ffa56d3 142
wim 0:7e120ffa56d3 143 // ASCII Font definitions for segments in each character
wim 0:7e120ffa56d3 144 //
wim 0:7e120ffa56d3 145 //32 0x20 Symbols
wim 0:7e120ffa56d3 146 #define C7_SPC (0x0000)
wim 0:7e120ffa56d3 147 #define C7_EXC (S7_B | S7_C) //!
wim 0:7e120ffa56d3 148 #define C7_QTE (S7_B | S7_F) //"
wim 0:7e120ffa56d3 149 #define C7_HSH (S7_C | S7_D | S7_E | S7_G) //#
wim 0:7e120ffa56d3 150 #define C7_DLR (S7_A | S7_C | S7_D | S7_F | S7_G) //$
wim 0:7e120ffa56d3 151 #define C7_PCT (S7_C | S7_F) //%
wim 0:7e120ffa56d3 152 #define C7_AMP (S7_A | S7_C | S7_D | S7_E | S7_F | S7_G) //&
wim 0:7e120ffa56d3 153 #define C7_ACC (S7_B) //'
wim 0:7e120ffa56d3 154 #define C7_LBR (S7_A | S7_D | S7_E | S7_F) //(
wim 0:7e120ffa56d3 155 #define C7_RBR (S7_A | S7_B | S7_C | S7_D) //)
wim 0:7e120ffa56d3 156 #define C7_MLT (S7_B | S7_C | S7_E | S7_F | S7_G) //*
wim 0:7e120ffa56d3 157 #define C7_PLS (S7_B | S7_C | S7_G) //+
wim 0:7e120ffa56d3 158 #define C7_CMA (S7_DP)
wim 0:7e120ffa56d3 159 #define C7_MIN (S7_G)
wim 0:7e120ffa56d3 160 #define C7_DPT (S7_DP)
wim 0:7e120ffa56d3 161 #define C7_RS (S7_B | S7_E | S7_G) // /
wim 0:7e120ffa56d3 162
wim 0:7e120ffa56d3 163 //48 0x30 Digits
wim 0:7e120ffa56d3 164 #define C7_0 (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
wim 0:7e120ffa56d3 165 #define C7_1 (S7_B | S7_C)
wim 0:7e120ffa56d3 166 #define C7_2 (S7_A | S7_B | S7_D | S7_E | S7_G)
wim 0:7e120ffa56d3 167 #define C7_3 (S7_A | S7_B | S7_C | S7_D | S7_G)
wim 0:7e120ffa56d3 168 #define C7_4 (S7_B | S7_C | S7_F | S7_G)
wim 0:7e120ffa56d3 169 #define C7_5 (S7_A | S7_C | S7_D | S7_F | S7_G)
wim 0:7e120ffa56d3 170 #define C7_6 (S7_A | S7_C | S7_D | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 171 #define C7_7 (S7_A | S7_B | S7_C)
wim 0:7e120ffa56d3 172 #define C7_8 (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 173 #define C7_9 (S7_A | S7_B | S7_C | S7_D | S7_F | S7_G)
wim 0:7e120ffa56d3 174
wim 0:7e120ffa56d3 175 //58 0x3A
wim 0:7e120ffa56d3 176 #define C7_COL (S7_D | S7_G) // :
wim 0:7e120ffa56d3 177 #define C7_SCL (S7_D | S7_G) // ;
wim 0:7e120ffa56d3 178 #define C7_LT (S7_D | S7_E | S7_G) // <
wim 0:7e120ffa56d3 179 #define C7_EQ (S7_D | S7_G) // =
wim 0:7e120ffa56d3 180 #define C7_GT (S7_C | S7_D | S7_G) // >
wim 0:7e120ffa56d3 181 #define C7_QM (S7_A | S7_B | S7_E | S7_G) // ?
wim 0:7e120ffa56d3 182 #define C7_AT (S7_A | S7_B | S7_C | S7_D | S7_E | S7_G) // @
wim 0:7e120ffa56d3 183
wim 0:7e120ffa56d3 184 //65 0x41 Upper case alphabet
wim 0:7e120ffa56d3 185 #define C7_A (S7_A | S7_B | S7_C | S7_E | S7_F | S7_G )
wim 0:7e120ffa56d3 186 #define C7_B (S7_C | S7_D | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 187 #define C7_C (S7_A | S7_D | S7_E | S7_F)
wim 0:7e120ffa56d3 188 #define C7_D (S7_B | S7_C | S7_D | S7_E | S7_G)
wim 0:7e120ffa56d3 189 #define C7_E (S7_A | S7_D | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 190 #define C7_F (S7_A | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 191
wim 0:7e120ffa56d3 192 #define C7_G (S7_A | S7_C | S7_D | S7_E | S7_F)
wim 0:7e120ffa56d3 193 #define C7_H (S7_B | S7_C | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 194 #define C7_I (S7_B | S7_C)
wim 0:7e120ffa56d3 195 #define C7_J (S7_B | S7_C | S7_D | S7_E)
wim 0:7e120ffa56d3 196 #define C7_K (S7_B | S7_C | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 197 #define C7_L (S7_D | S7_E | S7_F)
wim 0:7e120ffa56d3 198 #define C7_M (S7_A | S7_C | S7_E)
wim 0:7e120ffa56d3 199 #define C7_N (S7_A | S7_B | S7_C | S7_E | S7_F)
wim 0:7e120ffa56d3 200 #define C7_O (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
wim 0:7e120ffa56d3 201 #define C7_P (S7_A | S7_B | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 202 #define C7_Q (S7_A | S7_B | S7_C | S7_F | S7_G)
wim 0:7e120ffa56d3 203 #define C7_R (S7_E | S7_G )
wim 0:7e120ffa56d3 204 #define C7_S (S7_A | S7_C | S7_D | S7_F | S7_G)
wim 0:7e120ffa56d3 205 #define C7_T (S7_D | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 206 #define C7_U (S7_B | S7_C | S7_D | S7_E | S7_F)
wim 0:7e120ffa56d3 207 #define C7_V (S7_B | S7_C | S7_D | S7_E | S7_F)
wim 0:7e120ffa56d3 208 #define C7_W (S7_B | S7_D | S7_F)
wim 0:7e120ffa56d3 209 #define C7_X (S7_B | S7_C | S7_E | S7_F | S7_G)
wim 0:7e120ffa56d3 210 #define C7_Y (S7_B | S7_C | S7_D | S7_F | S7_G)
wim 0:7e120ffa56d3 211 #define C7_Z (S7_A | S7_B | S7_D | S7_E | S7_G)
wim 0:7e120ffa56d3 212
wim 0:7e120ffa56d3 213 //91 0x5B
wim 0:7e120ffa56d3 214 #define C7_SBL (S7_A | S7_D | S7_E | S7_F) // [
wim 0:7e120ffa56d3 215 #define C7_LS (S7_C | S7_F | S7_G) // left slash
wim 0:7e120ffa56d3 216 #define C7_SBR (S7_A | S7_B | S7_C | S7_D) // ]
wim 0:7e120ffa56d3 217 #define C7_PWR (S7_A | S7_B | S7_F) // ^
wim 0:7e120ffa56d3 218 #define C7_UDS (S7_D) // _
wim 0:7e120ffa56d3 219 #define C7_DSH (S7_F) // `
wim 0:7e120ffa56d3 220
wim 0:7e120ffa56d3 221 //97 0x61 Lower case alphabet
wim 0:7e120ffa56d3 222 #define C7_a C7_A
wim 0:7e120ffa56d3 223 #define C7_b C7_B
wim 0:7e120ffa56d3 224 #define C7_c C7_C
wim 0:7e120ffa56d3 225 #define C7_d C7_D
wim 0:7e120ffa56d3 226 #define C7_e C7_E
wim 0:7e120ffa56d3 227 #define C7_f C7_H
wim 0:7e120ffa56d3 228
wim 0:7e120ffa56d3 229 #define C7_g C7_G
wim 0:7e120ffa56d3 230 #define C7_h C7_H
wim 0:7e120ffa56d3 231 #define C7_i C7_I
wim 0:7e120ffa56d3 232 #define C7_j C7_J
wim 0:7e120ffa56d3 233 #define C7_k C7_K
wim 0:7e120ffa56d3 234 #define C7_l C7_L
wim 0:7e120ffa56d3 235 #define C7_m C7_M
wim 0:7e120ffa56d3 236 //#define C7_n C7_N
wim 0:7e120ffa56d3 237 #define C7_n (S7_C | S7_E | S7_G)
wim 0:7e120ffa56d3 238 //#define C7_o C7_O
wim 0:7e120ffa56d3 239 #define C7_o (S7_C | S7_D | S7_E | S7_G)
wim 0:7e120ffa56d3 240 #define C7_p C7_P
wim 0:7e120ffa56d3 241 #define C7_q C7_Q
wim 0:7e120ffa56d3 242 //#define C7_r C7_R
wim 0:7e120ffa56d3 243 #define C7_r (S7_E | S7_G)
wim 0:7e120ffa56d3 244 #define C7_s C7_S
wim 0:7e120ffa56d3 245 #define C7_t C7_T
wim 0:7e120ffa56d3 246 #define C7_u C7_U
wim 0:7e120ffa56d3 247 #define C7_v C7_V
wim 0:7e120ffa56d3 248 #define C7_w C7_W
wim 0:7e120ffa56d3 249 #define C7_x C7_X
wim 0:7e120ffa56d3 250 #define C7_y C7_Y
wim 0:7e120ffa56d3 251 #define C7_z C7_Z
wim 0:7e120ffa56d3 252
wim 0:7e120ffa56d3 253 //123 0x7B
wim 0:7e120ffa56d3 254 #define C7_CBL (S7_A | S7_D | S7_E | S7_F) // {
wim 0:7e120ffa56d3 255 #define C7_OR (S7_B | S7_C) // |
wim 0:7e120ffa56d3 256 #define C7_CBR (S7_A | S7_B | S7_C | S7_D) // }
wim 0:7e120ffa56d3 257 #define C7_TLD (S7_B | S7_E | S7_G ) // ~
wim 0:7e120ffa56d3 258 #define C7_DEL (0x0000)
wim 0:7e120ffa56d3 259
wim 0:7e120ffa56d3 260
wim 0:7e120ffa56d3 261 //User Defined Characters (some examples)
wim 0:7e120ffa56d3 262 #define C7_DGR (S7_A | S7_B | S7_F | S7_G) //Degrees
wim 0:7e120ffa56d3 263
wim 0:7e120ffa56d3 264 // Font data selection for transmission to TM1640 memory
wim 0:7e120ffa56d3 265 #define LO(x) ( x & 0xFF)
wim 0:7e120ffa56d3 266 #define HI(x) ((x >> 8) & 0xFF)
wim 0:7e120ffa56d3 267
wim 0:7e120ffa56d3 268
wim 0:7e120ffa56d3 269 // ASCII Font definition table
wim 0:7e120ffa56d3 270 //
wim 0:7e120ffa56d3 271 #define FONT_7S_START 0x20
wim 0:7e120ffa56d3 272 #define FONT_7S_END 0x7F
wim 0:7e120ffa56d3 273 //#define FONT_7S_NR_CHARS (FONT_7S_END - FONT_7S_START + 1)
wim 0:7e120ffa56d3 274 extern const short FONT_7S[];
wim 0:7e120ffa56d3 275
wim 0:7e120ffa56d3 276 #endif