parent
c31a3040c2
commit
7a2860f869
@ -0,0 +1,108 @@ |
|||||||
|
#ifndef FONT_H |
||||||
|
#define FONT_H |
||||||
|
|
||||||
|
#define FONT_MIN ' ' |
||||||
|
#define FONT_MAX '~' |
||||||
|
|
||||||
|
#define FONT_WIDTH 6 |
||||||
|
|
||||||
|
const unsigned char font[96][6] = { |
||||||
|
{0x00,0x00,0x00,0x00,0x00,0x00}, //
|
||||||
|
{0x5c,0x00,0x00,0x00,0x00,0x00}, // !
|
||||||
|
{0x06,0x00,0x06,0x00,0x00,0x00}, // "
|
||||||
|
{0x28,0x7c,0x28,0x7c,0x28,0x00}, // #
|
||||||
|
{0x5c,0x54,0xfe,0x54,0x74,0x00}, // $
|
||||||
|
{0x44,0x20,0x10,0x08,0x44,0x00}, // %
|
||||||
|
{0x28,0x54,0x54,0x20,0x50,0x00}, // &
|
||||||
|
{0x06,0x00,0x00,0x00,0x00,0x00}, // '
|
||||||
|
{0x38,0x44,0x00,0x00,0x00,0x00}, // (
|
||||||
|
{0x44,0x38,0x00,0x00,0x00,0x00}, // )
|
||||||
|
{0x02,0x07,0x02,0x00,0x00,0x00}, // *
|
||||||
|
{0x10,0x10,0x7c,0x10,0x10,0x00}, // +
|
||||||
|
{0xc0,0x00,0x00,0x00,0x00,0x00}, // ,
|
||||||
|
{0x10,0x10,0x10,0x10,0x10,0x00}, // -
|
||||||
|
{0x40,0x00,0x00,0x00,0x00,0x00}, // .
|
||||||
|
{0x60,0x10,0x0c,0x00,0x00,0x00}, // /
|
||||||
|
{0x7c,0x64,0x54,0x4c,0x7c,0x00}, // 0
|
||||||
|
{0x48,0x7c,0x40,0x00,0x00,0x00}, // 1
|
||||||
|
{0x64,0x54,0x54,0x54,0x48,0x00}, // 2
|
||||||
|
{0x44,0x54,0x54,0x54,0x6c,0x00}, // 3
|
||||||
|
{0x3c,0x20,0x70,0x20,0x20,0x00}, // 4
|
||||||
|
{0x5c,0x54,0x54,0x54,0x24,0x00}, // 5
|
||||||
|
{0x7c,0x54,0x54,0x54,0x74,0x00}, // 6
|
||||||
|
{0x04,0x04,0x64,0x14,0x0c,0x00}, // 7
|
||||||
|
{0x7c,0x54,0x54,0x54,0x7c,0x00}, // 8
|
||||||
|
{0x5c,0x54,0x54,0x54,0x7c,0x00}, // 9
|
||||||
|
{0x44,0x00,0x00,0x00,0x00,0x00}, // :
|
||||||
|
{0xc4,0x00,0x00,0x00,0x00,0x00}, // ;
|
||||||
|
{0x10,0x28,0x44,0x00,0x00,0x00}, // <
|
||||||
|
{0x28,0x28,0x28,0x28,0x28,0x00}, // =
|
||||||
|
{0x44,0x28,0x10,0x00,0x00,0x00}, // >
|
||||||
|
{0x08,0x04,0x54,0x08,0x00,0x00}, // ?
|
||||||
|
{0x7c,0x44,0x54,0x54,0x5c,0x00}, // @
|
||||||
|
{0x7c,0x24,0x24,0x24,0x7c,0x00}, // A
|
||||||
|
{0x7c,0x54,0x54,0x54,0x6c,0x00}, // B
|
||||||
|
{0x7c,0x44,0x44,0x44,0x44,0x00}, // C
|
||||||
|
{0x7c,0x44,0x44,0x44,0x38,0x00}, // D
|
||||||
|
{0x7c,0x54,0x54,0x54,0x44,0x00}, // E
|
||||||
|
{0x7c,0x14,0x14,0x14,0x04,0x00}, // F
|
||||||
|
{0x7c,0x44,0x44,0x54,0x74,0x00}, // G
|
||||||
|
{0x7c,0x10,0x10,0x10,0x7c,0x00}, // H
|
||||||
|
{0x44,0x44,0x7c,0x44,0x44,0x00}, // I
|
||||||
|
{0x60,0x40,0x40,0x44,0x7c,0x00}, // J
|
||||||
|
{0x7c,0x10,0x10,0x28,0x44,0x00}, // K
|
||||||
|
{0x7c,0x40,0x40,0x40,0x40,0x00}, // L
|
||||||
|
{0x7c,0x08,0x10,0x08,0x7c,0x00}, // M
|
||||||
|
{0x7c,0x08,0x10,0x20,0x7c,0x00}, // N
|
||||||
|
{0x38,0x44,0x44,0x44,0x38,0x00}, // O
|
||||||
|
{0x7c,0x14,0x14,0x14,0x08,0x00}, // P
|
||||||
|
{0x3c,0x24,0x64,0x24,0x3c,0x00}, // Q
|
||||||
|
{0x7c,0x14,0x14,0x14,0x68,0x00}, // R
|
||||||
|
{0x5c,0x54,0x54,0x54,0x74,0x00}, // S
|
||||||
|
{0x04,0x04,0x7c,0x04,0x04,0x00}, // T
|
||||||
|
{0x7c,0x40,0x40,0x40,0x7c,0x00}, // U
|
||||||
|
{0x0c,0x30,0x40,0x30,0x0c,0x00}, // V
|
||||||
|
{0x3c,0x40,0x30,0x40,0x3c,0x00}, // W
|
||||||
|
{0x44,0x28,0x10,0x28,0x44,0x00}, // X
|
||||||
|
{0x0c,0x10,0x60,0x10,0x0c,0x00}, // Y
|
||||||
|
{0x44,0x64,0x54,0x4c,0x44,0x00}, // Z
|
||||||
|
{0x7c,0x44,0x00,0x00,0x00,0x00}, // [
|
||||||
|
{0x0c,0x10,0x60,0x00,0x00,0x00}, // "\"
|
||||||
|
{0x44,0x7c,0x00,0x00,0x00,0x00}, // ]
|
||||||
|
{0x00,0x01,0x00,0x01,0x00,0x00}, // ^
|
||||||
|
{0x40,0x40,0x40,0x40,0x40,0x40}, // _
|
||||||
|
{0x00,0x01,0x00,0x00,0x00,0x00}, // `
|
||||||
|
{0x7c,0x24,0x24,0x24,0x7c,0x00}, // a
|
||||||
|
{0x7c,0x54,0x54,0x54,0x6c,0x00}, // b
|
||||||
|
{0x7c,0x44,0x44,0x44,0x44,0x00}, // c
|
||||||
|
{0x7c,0x44,0x44,0x44,0x38,0x00}, // d
|
||||||
|
{0x7c,0x54,0x54,0x54,0x44,0x00}, // e
|
||||||
|
{0x7c,0x14,0x14,0x14,0x04,0x00}, // f
|
||||||
|
{0x7c,0x44,0x44,0x54,0x74,0x00}, // g
|
||||||
|
{0x7c,0x10,0x10,0x10,0x7c,0x00}, // h
|
||||||
|
{0x44,0x44,0x7c,0x44,0x44,0x00}, // i
|
||||||
|
{0x60,0x40,0x40,0x44,0x7c,0x00}, // j
|
||||||
|
{0x7c,0x10,0x10,0x28,0x44,0x00}, // k
|
||||||
|
{0x7c,0x40,0x40,0x40,0x40,0x00}, // l
|
||||||
|
{0x7c,0x08,0x10,0x08,0x7c,0x00}, // m
|
||||||
|
{0x7c,0x08,0x10,0x20,0x7c,0x00}, // n
|
||||||
|
{0x38,0x44,0x44,0x44,0x38,0x00}, // o
|
||||||
|
{0x7c,0x14,0x14,0x14,0x08,0x00}, // p
|
||||||
|
{0x3c,0x24,0x64,0x24,0x3c,0x00}, // q
|
||||||
|
{0x7c,0x14,0x14,0x14,0x68,0x00}, // r
|
||||||
|
{0x5c,0x54,0x54,0x54,0x74,0x00}, // s
|
||||||
|
{0x04,0x04,0x7c,0x04,0x04,0x00}, // t
|
||||||
|
{0x7c,0x40,0x40,0x40,0x7c,0x00}, // u
|
||||||
|
{0x0c,0x30,0x40,0x30,0x0c,0x00}, // v
|
||||||
|
{0x3c,0x40,0x30,0x40,0x3c,0x00}, // w
|
||||||
|
{0x44,0x28,0x10,0x28,0x44,0x00}, // x
|
||||||
|
{0x0c,0x10,0x60,0x10,0x0c,0x00}, // y
|
||||||
|
{0x44,0x64,0x54,0x4c,0x44,0x00}, // z
|
||||||
|
{0x10,0x7c,0x44,0x00,0x00,0x00}, // {
|
||||||
|
{0x6c,0x00,0x00,0x00,0x00,0x00}, // |
|
||||||
|
{0x44,0x7c,0x10,0x00,0x00,0x00}, // }
|
||||||
|
{0x02,0x01,0x02,0x01,0x00,0x00}, // ~
|
||||||
|
{0x00,0x00,0x00,0x00,0x00,0x00} |
||||||
|
}; |
||||||
|
|
||||||
|
#endif // FONT_H
|
@ -0,0 +1,11 @@ |
|||||||
|
//
|
||||||
|
// Created by MightyPork on 2016/09/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef F107_FFT_SCREENDEF_H |
||||||
|
#define F107_FFT_SCREENDEF_H |
||||||
|
|
||||||
|
#define SCREEN_W 32 |
||||||
|
#define SCREEN_H 16 |
||||||
|
|
||||||
|
#endif //F107_FFT_SCREENDEF_H
|
@ -0,0 +1,73 @@ |
|||||||
|
#include <string.h> |
||||||
|
#include "scrolltext.h" |
||||||
|
|
||||||
|
#include "font.h" |
||||||
|
#include "screendef.h" |
||||||
|
|
||||||
|
volatile bool text_moving; |
||||||
|
|
||||||
|
/**
|
||||||
|
* Print text at coordinates |
||||||
|
* @param text |
||||||
|
* @param x |
||||||
|
* @param y |
||||||
|
*/ |
||||||
|
void printtext(DotMatrix_Cfg *disp, const char *text, int x, int y) |
||||||
|
{ |
||||||
|
int totalX = 0; |
||||||
|
|
||||||
|
for (int textX = 0; textX < (int)strlen(text); textX++) { |
||||||
|
uint8_t ch = (uint8_t)text[textX]; |
||||||
|
if (ch < FONT_MIN) ch = '?'; |
||||||
|
if (ch > FONT_MAX) ch = '?'; |
||||||
|
ch -= ' '; // normalize for font table
|
||||||
|
|
||||||
|
if (ch == 0) { // space
|
||||||
|
totalX += 4; |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
// one letter
|
||||||
|
uint8_t blanks = 0; |
||||||
|
|
||||||
|
// skip empty space on right
|
||||||
|
for (int charX = FONT_WIDTH-1; charX >= 0; charX--) { |
||||||
|
uint8_t col = font[ch][charX]; |
||||||
|
if (col == 0x00) { |
||||||
|
blanks++; |
||||||
|
} else { |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
for (int charX = 0; charX < FONT_WIDTH - blanks; charX++) { |
||||||
|
uint8_t col = font[ch][charX]; |
||||||
|
for (int charY = 0; charY < 8; charY++) { |
||||||
|
dmtx_set(disp, x + totalX, y + 8 - charY, (col >> charY) & 1); |
||||||
|
} |
||||||
|
totalX++; |
||||||
|
} |
||||||
|
|
||||||
|
totalX+= 2; // gap
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll text across the screen |
||||||
|
* @param text |
||||||
|
* @param step delay per step (ms) |
||||||
|
*/ |
||||||
|
void scrolltext(DotMatrix_Cfg *disp, const char *text, ms_time_t step) |
||||||
|
{ |
||||||
|
(void)step; |
||||||
|
|
||||||
|
text_moving = true; |
||||||
|
for (int i = 0; i < (int)strlen(text)*(FONT_WIDTH+1) + SCREEN_W-1; i++) { |
||||||
|
if (i > 0) delay_ms(step); |
||||||
|
|
||||||
|
dmtx_clear(disp); |
||||||
|
printtext(disp, text, (SCREEN_W-1)-i, SCREEN_H/2-4); |
||||||
|
dmtx_show(disp); |
||||||
|
} |
||||||
|
text_moving = false; |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
#ifndef SCROLLTEXT_H |
||||||
|
#define SCROLLTEXT_H |
||||||
|
|
||||||
|
#include "dotmatrix.h" |
||||||
|
#include "timebase.h" |
||||||
|
|
||||||
|
volatile extern bool text_moving; |
||||||
|
|
||||||
|
void printtext(DotMatrix_Cfg *disp, const char *text, int x, int y); |
||||||
|
|
||||||
|
void scrolltext(DotMatrix_Cfg *disp, const char *text, ms_time_t step); |
||||||
|
|
||||||
|
#endif // SCROLLTEXT_H
|
Loading…
Reference in new issue