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.
Font_7Seg.h
- Committer:
- wim
- Date:
- 2016-01-07
- Revision:
- 1:eb4758bba68a
- Child:
- 2:c6883ede8d8b
File content as of revision 1:eb4758bba68a:
/* mbed VFD Font Library, for Princeton PT6961 LED controller as used in V56S
* Copyright (c) 2015, v01: WH, Initial version, Test V56S
*
* 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 Princeton PT6312 VFD controller
#include "PT6961_Config.h"
#if (HR734_TEST == 1)
// Segment bit positions for 7 Segment display using the HR734 mapping for PT6961
// 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.
// In this specific case grids 2,3 and 4 have two 7 segment digits, grid 5 hase one. Unfortunetely the patterns for the second digits
// of grid 3 and 4 are shifted by one bit position.
//
#define S7_A 0x0100
#define S7_B 0x0080
#define S7_C 0x0040
#define S7_D 0x0020
#define S7_E 0x0010
#define S7_F 0x0008
#define S7_G 0x0004
//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 Grid1
#define S7_H1 0x0002
//Segments Grid2
#define S7_J2 0x0002
//Segments Grid3
#define S7_J3 0x0002
//Segments Grid4
#define S7_K1 0x0002
//Segments Grid5
#define S7_J5 0x0002
//Segments Grid6
#define S7_M5 0x0008
#define S7_P4 0x0010
#define S7_M3 0x0020
#define S7_M2 0x0040
#define S7_M1 0x0080
#define S7_L1 0x0100
//Icons Grid 1
#define S7_RA 0x0001
#define S7_ICON_GR1 (S7_RA)
//Icons Grid 2
#define S7_M 0x0001
#define S7_ICON_GR2 (S7_M)
//Icons Grid 3
#define S7_ARW 0x0001
#define S7_ICON_GR3 (S7_ARW)
//Icons Grid 4
#define S7_HDDVD_HD 0x0001
#define S7_ICON_GR4 (S7_HDDVD_HD)
//Icons Grid 5
#define S7_HDDVD_D 0x0001
#define S7_ICON_GR5 (S7_HDDVD_D)
//Icons Grid 6
#define S7_HDDVD_VD 0x0001
#define S7_DP2 0x0002
#define S7_DP1 0x0004
#define S7_ICON_GR6 (S7_HDDVD_VD)
//Icons Grid 7
#define S7_R 0x0002
#define S7_W 0x0004
#define S7_SO 0x0008
#define S7_P 0x0010
#define S7_CLK 0x0020
#define S7_BRK 0x0040
#define S7_DP4 0x0080
#define S7_DP3 0x0100
#define S7_ICON_GR7 (S7_R | S7_W | S7_SO | S7_P | S7_CLK | S7_BRK)
//Mask for blending out and restoring Icons
extern const char MASK_ICON_GRID[][2];
#endif
#if (V56S_TEST == 1)
// Segment bit positions for 7 Segment display using the Mustek V56S mapping for PT6961
// 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.
// In this specific case grids 2,3 and 4 have two 7 segment digits, grid 5 hase one. Unfortunetely the patterns for the second digits
// of grid 3 and 4 are shifted by one bit position.
//
#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
//Mask for blending out and setting 7 segments digits
#define MASK_7S_ALL = (S7_D | S7_E | S7_C | S7_G | S7_F | S7_B | S7_A}
//Icons Grid 1
#define S7_RED 0x0080
#define S7_GRN 0x0100
#define S7_YEL 0x0180
#define S7_ICON_GR1 (S7_RED | S7_GRN)
#define S7_ICON_GR2 (0x0000)
#define S7_ICON_GR3 (0x0000)
#define S7_ICON_GR4 (0x0000)
#define S7_ICON_GR5 (0x0000)
//Icons Grid 6
#define S7_DVD 0x0001
#define S7_COL1 0x0002
#define S7_DP3 0x0004
#define S7_PSE 0x0008
#define S7_MP3 0x0010
#define S7_PLY 0x0020
#define S7_CD 0x0040
#define S7_COL3 0x0080
#define S7_ICON_GR6 (S7_DVD | S7_COL1 | S7_DP3 | S7_PSE | S7_MP3 | S7_PLY | S7_CD | S7_COL3)
//Icons Grid 7
#define S7_ARW 0x0001
#define S7_ANT 0x0002
#define S7_DTS 0x0004
#define S7_MHZ 0x0008
#define S7_DDD 0x0010
#define S7_KHZ 0x0020
#define S7_RDS 0x0080
#define S7_ICON_GR7 (S7_ARW | S7_ANT | S7_DTS | S7_MHZ | S7_DDD| S7_KHZ | S7_RDS )
//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_CMA (S7_DP)
//#define C7_DPT (S7_DP)
#define C7_MIN (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)
//64 0x40 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_B | S7_C | S7_F | S7_G)
#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)
#define C7_L (S7_D | S7_E | S7_F)
#define C7_M (S7_C | S7_E | S7_G)
#define C7_N (S7_C | S7_E | S7_G)
#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_Y (S7_B | S7_C | S7_D | S7_F | S7_G)
#define C7_Z (S7_A | S7_B | S7_D | S7_E | S7_G)
//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_l C7_L
#define C7_m C7_M
#define C7_n C7_N
#define C7_o C7_O
#define C7_p C7_P
#define C7_q C7_Q
#define C7_r C7_R
#define C7_s C7_S
#define C7_t C7_T
#define C7_u C7_U
#define C7_y C7_Y
#define C7_z C7_Z
//User Defined Characters (some examples)
// Font data selection for transmission to PT6512 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
PT6961 LED controller (77 LEDs max), Keyboard scan (30 keys max)