teste

Dependencies:   BurstSPI Fonts

Committer:
sergionatan
Date:
Tue Oct 24 20:12:54 2017 +0000
Revision:
0:cf17b1f16335
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sergionatan 0:cf17b1f16335 1 // ST7735 8 Bit SPI Library
sergionatan 0:cf17b1f16335 2
sergionatan 0:cf17b1f16335 3 #include "GraphicsDisplay.h"
sergionatan 0:cf17b1f16335 4
sergionatan 0:cf17b1f16335 5 const unsigned char FONT8x8[97][8] = {
sergionatan 0:cf17b1f16335 6 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
sergionatan 0:cf17b1f16335 7 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
sergionatan 0:cf17b1f16335 8 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // !
sergionatan 0:cf17b1f16335 9 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // "
sergionatan 0:cf17b1f16335 10 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
sergionatan 0:cf17b1f16335 11 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
sergionatan 0:cf17b1f16335 12 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // %
sergionatan 0:cf17b1f16335 13 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // &
sergionatan 0:cf17b1f16335 14 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // '
sergionatan 0:cf17b1f16335 15 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // (
sergionatan 0:cf17b1f16335 16 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // )
sergionatan 0:cf17b1f16335 17 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // *
sergionatan 0:cf17b1f16335 18 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // +
sergionatan 0:cf17b1f16335 19 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // ,
sergionatan 0:cf17b1f16335 20 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // -
sergionatan 0:cf17b1f16335 21 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
sergionatan 0:cf17b1f16335 22 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash)
sergionatan 0:cf17b1f16335 23 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30
sergionatan 0:cf17b1f16335 24 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1
sergionatan 0:cf17b1f16335 25 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2
sergionatan 0:cf17b1f16335 26 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3
sergionatan 0:cf17b1f16335 27 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4
sergionatan 0:cf17b1f16335 28 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5
sergionatan 0:cf17b1f16335 29 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6
sergionatan 0:cf17b1f16335 30 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7
sergionatan 0:cf17b1f16335 31 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8
sergionatan 0:cf17b1f16335 32 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9
sergionatan 0:cf17b1f16335 33 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // :
sergionatan 0:cf17b1f16335 34 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ;
sergionatan 0:cf17b1f16335 35 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // <
sergionatan 0:cf17b1f16335 36 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // =
sergionatan 0:cf17b1f16335 37 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // >
sergionatan 0:cf17b1f16335 38 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ?
sergionatan 0:cf17b1f16335 39 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40
sergionatan 0:cf17b1f16335 40 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A
sergionatan 0:cf17b1f16335 41 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B
sergionatan 0:cf17b1f16335 42 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C
sergionatan 0:cf17b1f16335 43 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D
sergionatan 0:cf17b1f16335 44 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E
sergionatan 0:cf17b1f16335 45 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F
sergionatan 0:cf17b1f16335 46 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G
sergionatan 0:cf17b1f16335 47 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H
sergionatan 0:cf17b1f16335 48 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I
sergionatan 0:cf17b1f16335 49 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J
sergionatan 0:cf17b1f16335 50 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K
sergionatan 0:cf17b1f16335 51 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L
sergionatan 0:cf17b1f16335 52 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M
sergionatan 0:cf17b1f16335 53 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N
sergionatan 0:cf17b1f16335 54 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O
sergionatan 0:cf17b1f16335 55 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50
sergionatan 0:cf17b1f16335 56 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q
sergionatan 0:cf17b1f16335 57 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R
sergionatan 0:cf17b1f16335 58 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S
sergionatan 0:cf17b1f16335 59 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T
sergionatan 0:cf17b1f16335 60 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U
sergionatan 0:cf17b1f16335 61 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V
sergionatan 0:cf17b1f16335 62 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W
sergionatan 0:cf17b1f16335 63 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X
sergionatan 0:cf17b1f16335 64 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y
sergionatan 0:cf17b1f16335 65 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z
sergionatan 0:cf17b1f16335 66 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [
sergionatan 0:cf17b1f16335 67 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash)
sergionatan 0:cf17b1f16335 68 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ]
sergionatan 0:cf17b1f16335 69 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^
sergionatan 0:cf17b1f16335 70 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _
sergionatan 0:cf17b1f16335 71 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60
sergionatan 0:cf17b1f16335 72 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a
sergionatan 0:cf17b1f16335 73 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b
sergionatan 0:cf17b1f16335 74 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c
sergionatan 0:cf17b1f16335 75 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d
sergionatan 0:cf17b1f16335 76 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e
sergionatan 0:cf17b1f16335 77 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f
sergionatan 0:cf17b1f16335 78 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g
sergionatan 0:cf17b1f16335 79 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h
sergionatan 0:cf17b1f16335 80 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i
sergionatan 0:cf17b1f16335 81 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j
sergionatan 0:cf17b1f16335 82 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k
sergionatan 0:cf17b1f16335 83 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l
sergionatan 0:cf17b1f16335 84 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m
sergionatan 0:cf17b1f16335 85 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n
sergionatan 0:cf17b1f16335 86 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o
sergionatan 0:cf17b1f16335 87 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p
sergionatan 0:cf17b1f16335 88 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q
sergionatan 0:cf17b1f16335 89 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r
sergionatan 0:cf17b1f16335 90 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s
sergionatan 0:cf17b1f16335 91 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t
sergionatan 0:cf17b1f16335 92 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u
sergionatan 0:cf17b1f16335 93 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v
sergionatan 0:cf17b1f16335 94 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w
sergionatan 0:cf17b1f16335 95 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x
sergionatan 0:cf17b1f16335 96 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y
sergionatan 0:cf17b1f16335 97 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z
sergionatan 0:cf17b1f16335 98 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // {
sergionatan 0:cf17b1f16335 99 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // |
sergionatan 0:cf17b1f16335 100 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // }
sergionatan 0:cf17b1f16335 101 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~
sergionatan 0:cf17b1f16335 102 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00}; // DEL
sergionatan 0:cf17b1f16335 103
sergionatan 0:cf17b1f16335 104 GraphicsDisplay::GraphicsDisplay(const char *name):TextDisplay(name) {
sergionatan 0:cf17b1f16335 105 foreground(0xFFFF);
sergionatan 0:cf17b1f16335 106 background(0x0000);
sergionatan 0:cf17b1f16335 107 }
sergionatan 0:cf17b1f16335 108
sergionatan 0:cf17b1f16335 109 void GraphicsDisplay::character(int column, int row, int value) {
sergionatan 0:cf17b1f16335 110 blitbit(column * 8, row * 8, 8, 8, (char*)&(FONT8x8[value - 0x1F][0]));
sergionatan 0:cf17b1f16335 111 }
sergionatan 0:cf17b1f16335 112
sergionatan 0:cf17b1f16335 113 void GraphicsDisplay::gwindow(int x, int y, int w, int h) {
sergionatan 0:cf17b1f16335 114 // current pixel location
sergionatan 0:cf17b1f16335 115 _x = x;
sergionatan 0:cf17b1f16335 116 _y = y;
sergionatan 0:cf17b1f16335 117 // window settings
sergionatan 0:cf17b1f16335 118 _x1 = x;
sergionatan 0:cf17b1f16335 119 _x2 = x + w - 1;
sergionatan 0:cf17b1f16335 120 _y1 = y;
sergionatan 0:cf17b1f16335 121 _y2 = y + h - 1;
sergionatan 0:cf17b1f16335 122 }
sergionatan 0:cf17b1f16335 123
sergionatan 0:cf17b1f16335 124 void GraphicsDisplay::putp(int colour) {
sergionatan 0:cf17b1f16335 125 // put pixel at current pixel location
sergionatan 0:cf17b1f16335 126 pixel(_x, _y, colour);
sergionatan 0:cf17b1f16335 127 // update pixel location based on window settings
sergionatan 0:cf17b1f16335 128 _x++;
sergionatan 0:cf17b1f16335 129 if(_x > _x2) {
sergionatan 0:cf17b1f16335 130 _x = _x1;
sergionatan 0:cf17b1f16335 131 _y++;
sergionatan 0:cf17b1f16335 132 if(_y > _y2) {
sergionatan 0:cf17b1f16335 133 _y = _y1;
sergionatan 0:cf17b1f16335 134 }
sergionatan 0:cf17b1f16335 135 }
sergionatan 0:cf17b1f16335 136 }
sergionatan 0:cf17b1f16335 137
sergionatan 0:cf17b1f16335 138 void GraphicsDisplay::fill(int x, int y, int w, int h, int colour) {
sergionatan 0:cf17b1f16335 139 gwindow(x, y, w, h);
sergionatan 0:cf17b1f16335 140 for(int i=0; i<w*h; i++) {
sergionatan 0:cf17b1f16335 141 putp(colour);
sergionatan 0:cf17b1f16335 142 }
sergionatan 0:cf17b1f16335 143 }
sergionatan 0:cf17b1f16335 144
sergionatan 0:cf17b1f16335 145 void GraphicsDisplay::cls() {
sergionatan 0:cf17b1f16335 146 fill(0, 0, width(), height(), _background);
sergionatan 0:cf17b1f16335 147 }
sergionatan 0:cf17b1f16335 148
sergionatan 0:cf17b1f16335 149 void GraphicsDisplay::blit(int x, int y, int w, int h, const int *colour) {
sergionatan 0:cf17b1f16335 150 gwindow(x, y, w, h);
sergionatan 0:cf17b1f16335 151 for(int i=0; i<w*h; i++) {
sergionatan 0:cf17b1f16335 152 putp(colour[i]);
sergionatan 0:cf17b1f16335 153 }
sergionatan 0:cf17b1f16335 154 }
sergionatan 0:cf17b1f16335 155
sergionatan 0:cf17b1f16335 156 void GraphicsDisplay::blitbit(int x, int y, int w, int h, const char* colour) {
sergionatan 0:cf17b1f16335 157 gwindow(x, y, w, h);
sergionatan 0:cf17b1f16335 158 for(int i = 0; i < w*h; i++) {
sergionatan 0:cf17b1f16335 159 char byte = colour[i >> 3];
sergionatan 0:cf17b1f16335 160 int offset = i & 0x7;
sergionatan 0:cf17b1f16335 161 int c = ((byte << offset) & 0x80) ? _foreground : _background;
sergionatan 0:cf17b1f16335 162 putp(c);
sergionatan 0:cf17b1f16335 163 }
sergionatan 0:cf17b1f16335 164 }
sergionatan 0:cf17b1f16335 165
sergionatan 0:cf17b1f16335 166 int GraphicsDisplay::columns() {
sergionatan 0:cf17b1f16335 167 return width() / 8;
sergionatan 0:cf17b1f16335 168 }
sergionatan 0:cf17b1f16335 169
sergionatan 0:cf17b1f16335 170 int GraphicsDisplay::rows() {
sergionatan 0:cf17b1f16335 171 return height() / 8;
sergionatan 0:cf17b1f16335 172 }
sergionatan 0:cf17b1f16335 173