Library to control a Graphics TFT connected to 4-wire SPI - revised for the Raio RA8875 Display Controller.

Dependents:   FRDM_RA8875_mPaint RA8875_Demo RA8875_KeyPadDemo SignalGenerator ... more

Fork of SPI_TFT by Peter Drescher

See Components - RA8875 Based Display

Enhanced touch-screen support - where it previous supported both the Resistive Touch and Capacitive Touch based on the FT5206 Touch Controller, now it also has support for the GSL1680 Touch Controller.

Offline Help Manual (Windows chm)

/media/uploads/WiredHome/ra8875.zip.bin (download, rename to .zip and unzip)

Committer:
dreschpe
Date:
Tue Feb 19 21:49:55 2013 +0000
Revision:
11:9bb71766cafc
Parent:
0:de9d1462a835
Child:
19:3f82c1161fd2
fix warnings

Who changed what in which revision?

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