TEST
Dependents: ADXL345Test ADXL345Test1
Fork of TM1638 by
Font_7Seg.h
- Committer:
- jack__zen
- Date:
- 2017-09-04
- Revision:
- 5:a4634cc2ab71
- Parent:
- 4:b2bbdc58967e
File content as of revision 5:a4634cc2ab71:
/* mbed LED Font Library, for TM1638 LED Controller
* Copyright (c) 2015, v01: WH, Initial version, Test in LEDKEY8
* 2016, v02: WH, Added ASCII alphabet, changed fonttable into short
* 2016, v03: WH, Added QYF-TM1638 and LKM1638
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef MBED_FONT_7SEG_H
#define MBED_FONT_7SEG_H
// Select one of the testboards for TM1638 controller
#include "TM1638_Config.h"
#if ((LEDKEY8_TEST == 1) || (TM1638_TEST == 1))
// Segment bit positions for 7 Segment display using the LEDKEY8 mapping for TM1638
// Modify this table for different 'bit-to-segment' mappings. The ASCII character defines and the FONT_7S const table below
// will be adapted automatically according to the bit-to-segment mapping. Obviously this will only work when the segment
// mapping is identical for every digit position. This will be the case unless the hardware designer really hates software developers.
//
// A
// -----
// | |
// F | | B
// | G |
// -----
// | |
// E | | C
// | |
// ----- * DP
// D
//
#define S7_A 0x0001
#define S7_B 0x0002
#define S7_C 0x0004
#define S7_D 0x0008
#define S7_E 0x0010
#define S7_F 0x0020
#define S7_G 0x0040
#define S7_DP 0x0080
//Mask for blending out and setting 7 segments digits
#define MASK_7S_ALL = (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G}
//Icons Grid 1
#define S7_DP1 0x0080
#define S7_LD1 0x0100
#define S7_ICON_GR1 (S7_LD1)
//#define S7_ICON_GR1 (S7_LD1 | S7_DP1)
//Icons Grid 2
#define S7_DP2 0x0080
#define S7_LD2 0x0100
#define S7_ICON_GR2 (S7_LD2)
//#define S7_ICON_GR2 (S7_LD2 | S7_DP2)
//Icons Grid 3
#define S7_DP3 0x0080
#define S7_LD3 0x0100
#define S7_ICON_GR3 (S7_LD3)
//#define S7_ICON_GR3 (S7_LD3 | S7_DP3)
//Icons Grid 4
#define S7_DP4 0x0080
#define S7_LD4 0x0100
#define S7_ICON_GR4 (S7_LD4)
//#define S7_ICON_GR4 (S7_LD4 | S7_DP4)
//Icons Grid 5
#define S7_DP5 0x0080
#define S7_LD5 0x0100
#define S7_ICON_GR5 (S7_LD5)
//#define S7_ICON_GR5 (S7_LD5 | S7_DP5)
//Icons Grid 6
#define S7_DP6 0x0080
#define S7_LD6 0x0100
#define S7_ICON_GR6 (S7_LD6)
//#define S7_ICON_GR6 (S7_LD6 | S7_DP6)
//Icons Grid 7
#define S7_DP7 0x0080
#define S7_LD7 0x0100
#define S7_ICON_GR7 (S7_LD7)
//#define S7_ICON_GR7 (S7_LD7 | S7_DP7)
//Icons Grid 8
#define S7_DP8 0x0080
#define S7_LD8 0x0100
#define S7_ICON_GR8 (S7_LD8)
//#define S7_ICON_GR8 (S7_LD8 | S7_DP8)
//Mask for blending out and restoring Icons
extern const char MASK_ICON_GRID[][2];
#endif
#if (QYF_TEST == 1)
// Segment bit positions for 7 Segment display using the QYF mapping for TM1638
// This display module uses a single byte of each grid to drive a specific segment of all digits.
// So the bits in byte 0 (Grid 1) drive all A-segments, the bits in byte 2 (Grid 2) drive all B-segments etc.
// Bit0 is for the segment in Digit 8, Bit1 is for the segment in Digit 7 etc.. This bit manipulation is handled in _putc().
//
// The ASCII character defines and the FONT_7S const table below will be adapted automatically according to the bit-to-segment mapping.
//
// A
// -----
// | |
// F | | B
// | G |
// -----
// | |
// E | | C
// | |
// ----- * DP
// D
//
//Generic segment placeholders
#define S7_A 0x0001
#define S7_B 0x0002
#define S7_C 0x0004
#define S7_D 0x0008
#define S7_E 0x0010
#define S7_F 0x0020
#define S7_G 0x0040
#define S7_DP 0x0080
//Mask for blending out and setting 7 segments digits
//#define MASK_7S_ALL = (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G}
//Segments and Icons Grid 1
#define S7_A1 0x0080
#define S7_B1 0x0080
#define S7_C1 0x0080
#define S7_D1 0x0080
#define S7_E1 0x0080
#define S7_F1 0x0080
#define S7_G1 0x0080
#define S7_DP1 0x0080
#define S7_ICON_GR1 (0x0000)
//Segments and Icons Grid 2
#define S7_A2 0x0040
#define S7_B2 0x0040
#define S7_C2 0x0040
#define S7_D2 0x0040
#define S7_E2 0x0040
#define S7_F2 0x0040
#define S7_G2 0x0040
#define S7_DP2 0x0040
#define S7_ICON_GR2 (0x0000)
//Segments and Icons Grid 3
#define S7_A3 0x0020
#define S7_B3 0x0020
#define S7_C3 0x0020
#define S7_D3 0x0020
#define S7_E3 0x0020
#define S7_F3 0x0020
#define S7_G3 0x0020
#define S7_DP3 0x0020
#define S7_ICON_GR3 (0x0000)
//Segments and Icons Grid 4
#define S7_A4 0x0010
#define S7_B4 0x0010
#define S7_C4 0x0010
#define S7_D4 0x0010
#define S7_E4 0x0010
#define S7_F4 0x0010
#define S7_G4 0x0010
#define S7_DP4 0x0010
#define S7_ICON_GR4 (0x0000)
//Segments and Icons Grid 5
#define S7_A5 0x0008
#define S7_B5 0x0008
#define S7_C5 0x0008
#define S7_D5 0x0008
#define S7_E5 0x0008
#define S7_F5 0x0008
#define S7_G5 0x0008
#define S7_DP5 0x0008
#define S7_ICON_GR5 (0x0000)
//Segments and Icons Grid 6
#define S7_A6 0x0004
#define S7_B6 0x0004
#define S7_C6 0x0004
#define S7_D6 0x0004
#define S7_E6 0x0004
#define S7_F6 0x0004
#define S7_G6 0x0004
#define S7_DP6 0x0004
#define S7_ICON_GR6 (0x0000)
//Segments and Icons Grid 7
#define S7_A7 0x0002
#define S7_B7 0x0002
#define S7_C7 0x0002
#define S7_D7 0x0002
#define S7_E7 0x0002
#define S7_F7 0x0002
#define S7_G7 0x0002
#define S7_DP7 0x0002
#define S7_ICON_GR7 (0x0000)
//Segments and Icons Grid 8
#define S7_A8 0x0001
#define S7_B8 0x0001
#define S7_C8 0x0001
#define S7_D8 0x0001
#define S7_E8 0x0001
#define S7_F8 0x0001
#define S7_G8 0x0001
#define S7_DP8 0x0001
#define S7_ICON_GR8 (0x0000)
//Mask for blending out and restoring Icons
extern const char MASK_ICON_GRID[][2];
#endif
#if (LKM1638_TEST == 1)
// Segment bit positions for 7 Segment display using the LKM1638 mapping for TM1638
// Modify this table for different 'bit-to-segment' mappings. The ASCII character defines and the FONT_7S const table below
// will be adapted automatically according to the bit-to-segment mapping. Obviously this will only work when the segment
// mapping is identical for every digit position. This will be the case unless the hardware designer really hates software developers.
//
// The ASCII character defines and the FONT_7S const table below will be adapted automatically according to the bit-to-segment mapping.
//
// A
// -----
// | |
// F | | B
// | G |
// -----
// | |
// E | | C
// | |
// ----- * DP
// D
//
//Generic segment placeholders
#define S7_A 0x0001
#define S7_B 0x0002
#define S7_C 0x0004
#define S7_D 0x0008
#define S7_E 0x0010
#define S7_F 0x0020
#define S7_G 0x0040
#define S7_DP 0x0080
//Mask for blending out and setting 7 segments digits
//#define MASK_7S_ALL = (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G}
//Icons Grid 1
#define S7_DP1 0x0080
#define S7_GR1 0x0100
#define S7_RD1 0x0200
#define S7_YL1 0x0300
#define S7_ICON_GR1 (S7_RD1 | S7_GR1 | S7_YL1)
//#define S7_ICON_GR1 (S7_RD1 | S7_GR1 | S7_YL1 | S7_DP1)
//Icons Grid 2
#define S7_DP2 0x0080
#define S7_GR2 0x0100
#define S7_RD2 0x0200
#define S7_YL2 0x0300
#define S7_ICON_GR2 (S7_RD2 | S7_GR2 | S7_YL2)
//#define S7_ICON_GR2 (S7_RD2 | S7_GR2 | S7_YL2 | S7_DP2)
//Icons Grid 3
#define S7_DP3 0x0080
#define S7_GR3 0x0100
#define S7_RD3 0x0200
#define S7_YL3 0x0300
#define S7_ICON_GR3 (S7_RD3 | S7_GR3 | S7_YL3)
//#define S7_ICON_GR3 (S7_RD3 | S7_GR3 | S7_YL3 | S7_DP3)
//Icons Grid 4
#define S7_DP4 0x0080
#define S7_GR4 0x0100
#define S7_RD4 0x0200
#define S7_YL4 0x0300
#define S7_ICON_GR4 (S7_RD4 | S7_GR4 | S7_YL4)
//#define S7_ICON_GR4 (S7_RD4 | S7_GR4 | S7_YL4 | S7_DP4)
//Icons Grid 5
#define S7_DP5 0x0080
#define S7_GR5 0x0100
#define S7_RD5 0x0200
#define S7_YL5 0x0300
#define S7_ICON_GR5 (S7_RD5 | S7_GR5 | S7_YL5)
//#define S7_ICON_GR5 (S7_RD5 | S7_GR5 | S7_YL5 | S7_DP5)
//Icons Grid 6
#define S7_DP6 0x0080
#define S7_GR6 0x0100
#define S7_RD6 0x0200
#define S7_YL6 0x0300
#define S7_ICON_GR6 (S7_RD6 | S7_GR6 | S7_YL6)
//#define S7_ICON_GR6 (S7_RD6 | S7_GR6 | S7_YL6 | S7_DP6)
//Icons Grid 7
#define S7_DP7 0x0080
#define S7_GR7 0x0100
#define S7_RD7 0x0200
#define S7_YL7 0x0300
#define S7_ICON_GR7 (S7_RD7 | S7_GR7 | S7_YL7)
//#define S7_ICON_GR7 (S7_RD7 | S7_GR7 | S7_YL7 | S7_DP7)
//Icons Grid 8
#define S7_DP8 0x0080
#define S7_GR8 0x0100
#define S7_RD8 0x0200
#define S7_YL8 0x0300
#define S7_ICON_GR8 (S7_RD8 | S7_GR8 | S7_YL8)
//#define S7_ICON_GR8 (S7_RD8 | S7_GR8 | S7_YL8 | S7_DP8)
//Mask for blending out and restoring Icons
extern const char MASK_ICON_GRID[][2];
#endif
// ASCII Font definitions for segments in each character
//
//32 0x20 Symbols
#define C7_SPC (0x0000)
#define C7_EXC (S7_B | S7_C) //!
#define C7_QTE (S7_B | S7_F) //"
#define C7_HSH (S7_C | S7_D | S7_E | S7_G) //#
#define C7_DLR (S7_A | S7_C | S7_D | S7_F | S7_G) //$
#define C7_PCT (S7_C | S7_F) //%
#define C7_AMP (S7_A | S7_C | S7_D | S7_E | S7_F | S7_G) //&
#define C7_ACC (S7_B) //'
#define C7_LBR (S7_A | S7_D | S7_E | S7_F) //(
#define C7_RBR (S7_A | S7_B | S7_C | S7_D) //)
#define C7_MLT (S7_B | S7_C | S7_E | S7_F | S7_G) //*
#define C7_PLS (S7_B | S7_C | S7_G) //+
#define C7_CMA (S7_DP)
#define C7_MIN (S7_G)
#define C7_DPT (S7_DP)
#define C7_RS (S7_B | S7_E | S7_G) // /
//48 0x30 Digits
#define C7_0 (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
#define C7_1 (S7_B | S7_C)
#define C7_2 (S7_A | S7_B | S7_D | S7_E | S7_G)
#define C7_3 (S7_A | S7_B | S7_C | S7_D | S7_G)
#define C7_4 (S7_B | S7_C | S7_F | S7_G)
#define C7_5 (S7_A | S7_C | S7_D | S7_F | S7_G)
#define C7_6 (S7_A | S7_C | S7_D | S7_E | S7_F | S7_G)
#define C7_7 (S7_A | S7_B | S7_C)
#define C7_8 (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G)
#define C7_9 (S7_A | S7_B | S7_C | S7_D | S7_F | S7_G)
//58 0x3A
#define C7_COL (S7_D | S7_G) // :
#define C7_SCL (S7_D | S7_G) // ;
#define C7_LT (S7_D | S7_E | S7_G) // <
#define C7_EQ (S7_D | S7_G) // =
#define C7_GT (S7_C | S7_D | S7_G) // >
#define C7_QM (S7_A | S7_B | S7_E | S7_G) // ?
#define C7_AT (S7_A | S7_B | S7_C | S7_D | S7_E | S7_G) // @
//65 0x41 Upper case alphabet
#define C7_A (S7_A | S7_B | S7_C | S7_E | S7_F | S7_G )
#define C7_B (S7_C | S7_D | S7_E | S7_F | S7_G)
#define C7_C (S7_A | S7_D | S7_E | S7_F)
#define C7_D (S7_B | S7_C | S7_D | S7_E | S7_G)
#define C7_E (S7_A | S7_D | S7_E | S7_F | S7_G)
#define C7_F (S7_A | S7_E | S7_F | S7_G)
#define C7_G (S7_A | S7_C | S7_D | S7_E | S7_F)
#define C7_H (S7_B | S7_C | S7_E | S7_F | S7_G)
#define C7_I (S7_B | S7_C)
#define C7_J (S7_B | S7_C | S7_D | S7_E)
#define C7_K (S7_B | S7_C | S7_E | S7_F | S7_G)
#define C7_L (S7_D | S7_E | S7_F)
#define C7_M (S7_A | S7_C | S7_E)
#define C7_N (S7_A | S7_B | S7_C | S7_E | S7_F)
#define C7_O (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
#define C7_P (S7_A | S7_B | S7_E | S7_F | S7_G)
#define C7_Q (S7_A | S7_B | S7_C | S7_F | S7_G)
#define C7_R (S7_E | S7_G )
#define C7_S (S7_A | S7_C | S7_D | S7_F | S7_G)
#define C7_T (S7_D | S7_E | S7_F | S7_G)
#define C7_U (S7_B | S7_C | S7_D | S7_E | S7_F)
#define C7_V (S7_B | S7_C | S7_D | S7_E | S7_F)
#define C7_W (S7_B | S7_D | S7_F)
#define C7_X (S7_B | S7_C | S7_E | S7_F | S7_G)
#define C7_Y (S7_B | S7_C | S7_D | S7_F | S7_G)
#define C7_Z (S7_A | S7_B | S7_D | S7_E | S7_G)
//91 0x5B
#define C7_SBL (S7_A | S7_D | S7_E | S7_F) // [
#define C7_LS (S7_C | S7_F | S7_G) // left slash
#define C7_SBR (S7_A | S7_B | S7_C | S7_D) // ]
#define C7_PWR (S7_A | S7_B | S7_F) // ^
#define C7_UDS (S7_D) // _
#define C7_DSH (S7_F) // `
//97 0x61 Lower case alphabet
#define C7_a C7_A
#define C7_b C7_B
#define C7_c C7_C
#define C7_d C7_D
#define C7_e C7_E
#define C7_f C7_H
#define C7_g C7_G
#define C7_h C7_H
#define C7_i C7_I
#define C7_j C7_J
#define C7_k C7_K
#define C7_l C7_L
#define C7_m C7_M
//#define C7_n C7_N
#define C7_n (S7_C | S7_E | S7_G)
//#define C7_o C7_O
#define C7_o (S7_C | S7_D | S7_E | S7_G)
#define C7_p C7_P
#define C7_q C7_Q
//#define C7_r C7_R
#define C7_r (S7_E | S7_G)
#define C7_s C7_S
#define C7_t C7_T
#define C7_u C7_U
#define C7_v C7_V
#define C7_w C7_W
#define C7_x C7_X
#define C7_y C7_Y
#define C7_z C7_Z
//123 0x7B
#define C7_CBL (S7_A | S7_D | S7_E | S7_F) // {
#define C7_OR (S7_B | S7_C) // |
#define C7_CBR (S7_A | S7_B | S7_C | S7_D) // }
#define C7_TLD (S7_B | S7_E | S7_G ) // ~
#define C7_DEL (0x0000)
//User Defined Characters (some examples)
#define C7_DGR (S7_A | S7_B | S7_F | S7_G) //Degrees
// Font data selection for transmission to TM1638 memory
#define LO(x) ( x & 0xFF)
#define HI(x) ((x >> 8) & 0xFF)
// ASCII Font definition table
//
#define FONT_7S_START 0x20
#define FONT_7S_END 0x7F
//#define FONT_7S_NR_CHARS (FONT_7S_END - FONT_7S_START + 1)
extern const short FONT_7S[];
#endif
