This library is the modified library of 4DGL by Stephane ROCHON <stephane.rochon at free.fr> modified at drawImage() by Kazushi Mukaiyama <i@kazushi.info>

Committer:
kazushi2008
Date:
Fri Oct 29 02:26:05 2010 +0000
Revision:
0:c2aeac7c2d15

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kazushi2008 0:c2aeac7c2d15 1 //
kazushi2008 0:c2aeac7c2d15 2 // TFT_4DGL is a class to drive 4D Systems TFT touch screens
kazushi2008 0:c2aeac7c2d15 3 //
kazushi2008 0:c2aeac7c2d15 4 // Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
kazushi2008 0:c2aeac7c2d15 5 // modified at drawImage() by Kazushi Mukaiyama <i@kazushi.info>
kazushi2008 0:c2aeac7c2d15 6 //
kazushi2008 0:c2aeac7c2d15 7 // TFT_4DGL is free software: you can redistribute it and/or modify
kazushi2008 0:c2aeac7c2d15 8 // it under the terms of the GNU General Public License as published by
kazushi2008 0:c2aeac7c2d15 9 // the Free Software Foundation, either version 3 of the License, or
kazushi2008 0:c2aeac7c2d15 10 // (at your option) any later version.
kazushi2008 0:c2aeac7c2d15 11 //
kazushi2008 0:c2aeac7c2d15 12 // TFT_4DGL is distributed in the hope that it will be useful,
kazushi2008 0:c2aeac7c2d15 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
kazushi2008 0:c2aeac7c2d15 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
kazushi2008 0:c2aeac7c2d15 15 // GNU General Public License for more details.
kazushi2008 0:c2aeac7c2d15 16 //
kazushi2008 0:c2aeac7c2d15 17 // You should have received a copy of the GNU General Public License
kazushi2008 0:c2aeac7c2d15 18 // along with TFT_4DGL. If not, see <http://www.gnu.org/licenses/>.
kazushi2008 0:c2aeac7c2d15 19
kazushi2008 0:c2aeac7c2d15 20 // @author Stephane Rochon
kazushi2008 0:c2aeac7c2d15 21
kazushi2008 0:c2aeac7c2d15 22 #include "mbed.h"
kazushi2008 0:c2aeac7c2d15 23
kazushi2008 0:c2aeac7c2d15 24 // Debug Verbose on terminal enabled
kazushi2008 0:c2aeac7c2d15 25 #ifndef DEBUGMODE
kazushi2008 0:c2aeac7c2d15 26 #define DEBUGMODE 1
kazushi2008 0:c2aeac7c2d15 27 #endif
kazushi2008 0:c2aeac7c2d15 28
kazushi2008 0:c2aeac7c2d15 29 // Common WAIT value in millisecond
kazushi2008 0:c2aeac7c2d15 30 #define TEMPO 5
kazushi2008 0:c2aeac7c2d15 31
kazushi2008 0:c2aeac7c2d15 32 // 4DGL Functions values
kazushi2008 0:c2aeac7c2d15 33 #define AUTOBAUD '\x55'
kazushi2008 0:c2aeac7c2d15 34 #define CLS '\x45'
kazushi2008 0:c2aeac7c2d15 35 #define BAUDRATE '\x51'
kazushi2008 0:c2aeac7c2d15 36 #define VERSION '\x56'
kazushi2008 0:c2aeac7c2d15 37 #define BCKGDCOLOR '\x42'
kazushi2008 0:c2aeac7c2d15 38 #define DISPCONTROL '\x59'
kazushi2008 0:c2aeac7c2d15 39 #define SETVOLUME '\x76'
kazushi2008 0:c2aeac7c2d15 40 #define CIRCLE '\x43'
kazushi2008 0:c2aeac7c2d15 41 #define TRIANGLE '\x47'
kazushi2008 0:c2aeac7c2d15 42 #define LINE '\x4C'
kazushi2008 0:c2aeac7c2d15 43 #define RECTANGLE '\x72'
kazushi2008 0:c2aeac7c2d15 44 #define ELLIPSE '\x65'
kazushi2008 0:c2aeac7c2d15 45 #define PIXEL '\x50'
kazushi2008 0:c2aeac7c2d15 46 #define READPIXEL '\x52'
kazushi2008 0:c2aeac7c2d15 47 #define SCREENCOPY '\x63'
kazushi2008 0:c2aeac7c2d15 48 #define PENSIZE '\x70'
kazushi2008 0:c2aeac7c2d15 49 #define SETFONT '\x46'
kazushi2008 0:c2aeac7c2d15 50 #define TEXTMODE '\x4F'
kazushi2008 0:c2aeac7c2d15 51 #define TEXTCHAR '\x54'
kazushi2008 0:c2aeac7c2d15 52 #define GRAPHCHAR '\x74'
kazushi2008 0:c2aeac7c2d15 53 #define TEXTSTRING '\x73'
kazushi2008 0:c2aeac7c2d15 54 #define GRAPHSTRING '\x53'
kazushi2008 0:c2aeac7c2d15 55 #define TEXTBUTTON '\x62'
kazushi2008 0:c2aeac7c2d15 56 #define GETTOUCH '\x6F'
kazushi2008 0:c2aeac7c2d15 57 #define WAITTOUCH '\x77'
kazushi2008 0:c2aeac7c2d15 58 #define SETTOUCH '\x75'
kazushi2008 0:c2aeac7c2d15 59
kazushi2008 0:c2aeac7c2d15 60
kazushi2008 0:c2aeac7c2d15 61 // Screen answers
kazushi2008 0:c2aeac7c2d15 62 #define ACK '\x06'
kazushi2008 0:c2aeac7c2d15 63 #define NAK '\x15'
kazushi2008 0:c2aeac7c2d15 64
kazushi2008 0:c2aeac7c2d15 65 // Screen states
kazushi2008 0:c2aeac7c2d15 66 #define OFF '\x00'
kazushi2008 0:c2aeac7c2d15 67 #define ON '\x01'
kazushi2008 0:c2aeac7c2d15 68
kazushi2008 0:c2aeac7c2d15 69 // Graphics modes
kazushi2008 0:c2aeac7c2d15 70 #define SOLID '\x00'
kazushi2008 0:c2aeac7c2d15 71 #define WIREFRAME '\x01'
kazushi2008 0:c2aeac7c2d15 72
kazushi2008 0:c2aeac7c2d15 73 // Text modes
kazushi2008 0:c2aeac7c2d15 74 #define TRANSPARENT '\x00'
kazushi2008 0:c2aeac7c2d15 75 #define OPAQUE '\x01'
kazushi2008 0:c2aeac7c2d15 76
kazushi2008 0:c2aeac7c2d15 77 // Fonts Sizes
kazushi2008 0:c2aeac7c2d15 78 #define FONT_5X7 '\x00'
kazushi2008 0:c2aeac7c2d15 79 #define FONT_8X8 '\x01'
kazushi2008 0:c2aeac7c2d15 80 #define FONT_8X12 '\x02'
kazushi2008 0:c2aeac7c2d15 81 #define FONT_12X16 '\x03'
kazushi2008 0:c2aeac7c2d15 82
kazushi2008 0:c2aeac7c2d15 83 // Touch Values
kazushi2008 0:c2aeac7c2d15 84 #define WAIT '\x00'
kazushi2008 0:c2aeac7c2d15 85 #define PRESS '\x01'
kazushi2008 0:c2aeac7c2d15 86 #define RELEASE '\x02'
kazushi2008 0:c2aeac7c2d15 87 #define MOVE '\x03'
kazushi2008 0:c2aeac7c2d15 88 #define STATUS '\x04'
kazushi2008 0:c2aeac7c2d15 89 #define GETPOSITION '\x05'
kazushi2008 0:c2aeac7c2d15 90
kazushi2008 0:c2aeac7c2d15 91 // Data speed
kazushi2008 0:c2aeac7c2d15 92 #define BAUD_110 '\x00'
kazushi2008 0:c2aeac7c2d15 93 #define BAUD_300 '\x01'
kazushi2008 0:c2aeac7c2d15 94 #define BAUD_600 '\x02'
kazushi2008 0:c2aeac7c2d15 95 #define BAUD_1200 '\x03'
kazushi2008 0:c2aeac7c2d15 96 #define BAUD_2400 '\x04'
kazushi2008 0:c2aeac7c2d15 97 #define BAUD_4800 '\x05'
kazushi2008 0:c2aeac7c2d15 98 #define BAUD_9600 '\x06'
kazushi2008 0:c2aeac7c2d15 99 #define BAUD_14400 '\x07'
kazushi2008 0:c2aeac7c2d15 100 #define BAUD_19200 '\x09'
kazushi2008 0:c2aeac7c2d15 101 #define BAUD_31250 '\x09'
kazushi2008 0:c2aeac7c2d15 102 #define BAUD_38400 '\x0A'
kazushi2008 0:c2aeac7c2d15 103 #define BAUD_56000 '\x0B'
kazushi2008 0:c2aeac7c2d15 104 #define BAUD_57600 '\x0C'
kazushi2008 0:c2aeac7c2d15 105 #define BAUD_115200 '\x0D'
kazushi2008 0:c2aeac7c2d15 106 #define BAUD_128000 '\x0E'
kazushi2008 0:c2aeac7c2d15 107 #define BAUD_256000 '\x0F'
kazushi2008 0:c2aeac7c2d15 108
kazushi2008 0:c2aeac7c2d15 109 // Defined Colors
kazushi2008 0:c2aeac7c2d15 110 #define WHITE 0xFFFFFF
kazushi2008 0:c2aeac7c2d15 111 #define BLACK 0x000000
kazushi2008 0:c2aeac7c2d15 112 #define RED 0xFF0000
kazushi2008 0:c2aeac7c2d15 113 #define GREEN 0x00FF00
kazushi2008 0:c2aeac7c2d15 114 #define BLUE 0x0000FF
kazushi2008 0:c2aeac7c2d15 115 #define LGREY 0xBFBFBF
kazushi2008 0:c2aeac7c2d15 116 #define DGREY 0x5F5F5F
kazushi2008 0:c2aeac7c2d15 117
kazushi2008 0:c2aeac7c2d15 118 // Mode data
kazushi2008 0:c2aeac7c2d15 119 #define BACKLIGHT '\x00'
kazushi2008 0:c2aeac7c2d15 120 #define DISPLAY '\x01'
kazushi2008 0:c2aeac7c2d15 121 #define CONTRAST '\x02'
kazushi2008 0:c2aeac7c2d15 122 #define POWER '\x03'
kazushi2008 0:c2aeac7c2d15 123 #define ORIENTATION '\x04'
kazushi2008 0:c2aeac7c2d15 124 #define TOUCH_CTRL '\x05'
kazushi2008 0:c2aeac7c2d15 125 #define IMAGE_FORMAT '\x06'
kazushi2008 0:c2aeac7c2d15 126 #define PROTECT_FAT '\x08'
kazushi2008 0:c2aeac7c2d15 127
kazushi2008 0:c2aeac7c2d15 128 // change this to your specific screen (newer versions) if needed
kazushi2008 0:c2aeac7c2d15 129 // Startup orientation is PORTRAIT so SIZE_X must be lesser than SIZE_Y
kazushi2008 0:c2aeac7c2d15 130 #define SIZE_X 240
kazushi2008 0:c2aeac7c2d15 131 #define SIZE_Y 320
kazushi2008 0:c2aeac7c2d15 132
kazushi2008 0:c2aeac7c2d15 133 #define IS_LANDSCAPE 0
kazushi2008 0:c2aeac7c2d15 134 #define IS_PORTRAIT 1
kazushi2008 0:c2aeac7c2d15 135
kazushi2008 0:c2aeac7c2d15 136 // Screen orientation
kazushi2008 0:c2aeac7c2d15 137 #define LANDSCAPE '\x01'
kazushi2008 0:c2aeac7c2d15 138 #define LANDSCAPE_R '\x02'
kazushi2008 0:c2aeac7c2d15 139 #define PORTRAIT '\x03'
kazushi2008 0:c2aeac7c2d15 140 #define PORTRAIT_R '\x04'
kazushi2008 0:c2aeac7c2d15 141
kazushi2008 0:c2aeac7c2d15 142 // Parameters
kazushi2008 0:c2aeac7c2d15 143 #define ENABLE '\x00'
kazushi2008 0:c2aeac7c2d15 144 #define DISABLE '\x01'
kazushi2008 0:c2aeac7c2d15 145 #define RESET '\x02'
kazushi2008 0:c2aeac7c2d15 146
kazushi2008 0:c2aeac7c2d15 147 #define NEW '\x00'
kazushi2008 0:c2aeac7c2d15 148 #define OLD '\x01'
kazushi2008 0:c2aeac7c2d15 149
kazushi2008 0:c2aeac7c2d15 150 #define DOWN '\x00'
kazushi2008 0:c2aeac7c2d15 151 #define UP '\x01'
kazushi2008 0:c2aeac7c2d15 152
kazushi2008 0:c2aeac7c2d15 153 #define PROTECT '\x00'
kazushi2008 0:c2aeac7c2d15 154 #define UNPROTECT '\x02'
kazushi2008 0:c2aeac7c2d15 155
kazushi2008 0:c2aeac7c2d15 156 //**************************************************************************
kazushi2008 0:c2aeac7c2d15 157 // \class TFT_4DGL TFT_4DGL.h
kazushi2008 0:c2aeac7c2d15 158 // \brief This is the main class. It shoud be used like this : TFT_4GDL myLCD(p9,p10,p11);
kazushi2008 0:c2aeac7c2d15 159
kazushi2008 0:c2aeac7c2d15 160 class TFT_4DGL {
kazushi2008 0:c2aeac7c2d15 161
kazushi2008 0:c2aeac7c2d15 162 public :
kazushi2008 0:c2aeac7c2d15 163
kazushi2008 0:c2aeac7c2d15 164 TFT_4DGL(PinName tx, PinName rx, PinName rst);
kazushi2008 0:c2aeac7c2d15 165
kazushi2008 0:c2aeac7c2d15 166 // General Commands
kazushi2008 0:c2aeac7c2d15 167 void cls();
kazushi2008 0:c2aeac7c2d15 168 void reset();
kazushi2008 0:c2aeac7c2d15 169 void autobaud();
kazushi2008 0:c2aeac7c2d15 170 void baudrate(int);
kazushi2008 0:c2aeac7c2d15 171 void background_color(int);
kazushi2008 0:c2aeac7c2d15 172 void display_control(char, char);
kazushi2008 0:c2aeac7c2d15 173 void set_volume(char);
kazushi2008 0:c2aeac7c2d15 174
kazushi2008 0:c2aeac7c2d15 175 // Graphics Commands
kazushi2008 0:c2aeac7c2d15 176 void circle(int, int, int, int);
kazushi2008 0:c2aeac7c2d15 177 void triangle(int, int, int, int, int, int, int);
kazushi2008 0:c2aeac7c2d15 178 void line(int, int, int, int, int);
kazushi2008 0:c2aeac7c2d15 179 void rectangle(int, int, int, int, int);
kazushi2008 0:c2aeac7c2d15 180 void ellipse(int, int, int, int, int);
kazushi2008 0:c2aeac7c2d15 181 void pixel(int, int, int);
kazushi2008 0:c2aeac7c2d15 182 int read_pixel(int, int);
kazushi2008 0:c2aeac7c2d15 183 void screen_copy(int, int, int, int, int, int);
kazushi2008 0:c2aeac7c2d15 184 void pen_size(char);
kazushi2008 0:c2aeac7c2d15 185 void displayImage(char x, char y, char w, char h, int ad);
kazushi2008 0:c2aeac7c2d15 186 void displayMovie(char x, char y, char w, char h, int ad, int frames);
kazushi2008 0:c2aeac7c2d15 187
kazushi2008 0:c2aeac7c2d15 188 // Texts Commands
kazushi2008 0:c2aeac7c2d15 189 void set_font(char);
kazushi2008 0:c2aeac7c2d15 190 void text_mode(char);
kazushi2008 0:c2aeac7c2d15 191 void text_char(char, char, char, int);
kazushi2008 0:c2aeac7c2d15 192 void graphic_char(char, int, int, int, char, char);
kazushi2008 0:c2aeac7c2d15 193 void text_string(char *, char, char, char, int);
kazushi2008 0:c2aeac7c2d15 194 void graphic_string(char *, int, int, char, int, char, char);
kazushi2008 0:c2aeac7c2d15 195 void text_button(char *, char, int, int, int, char, int, char, char);
kazushi2008 0:c2aeac7c2d15 196
kazushi2008 0:c2aeac7c2d15 197 void locate(char, char);
kazushi2008 0:c2aeac7c2d15 198 void color(int);
kazushi2008 0:c2aeac7c2d15 199 void putc(char);
kazushi2008 0:c2aeac7c2d15 200 void puts(char *);
kazushi2008 0:c2aeac7c2d15 201
kazushi2008 0:c2aeac7c2d15 202 // Touch Command
kazushi2008 0:c2aeac7c2d15 203 void touch_mode(char);
kazushi2008 0:c2aeac7c2d15 204 void get_touch(int *, int *);
kazushi2008 0:c2aeac7c2d15 205 void wait_touch(int);
kazushi2008 0:c2aeac7c2d15 206 void set_touch(int, int, int, int);
kazushi2008 0:c2aeac7c2d15 207 int touch_status(void);
kazushi2008 0:c2aeac7c2d15 208
kazushi2008 0:c2aeac7c2d15 209 // Screen Data
kazushi2008 0:c2aeac7c2d15 210 int type;
kazushi2008 0:c2aeac7c2d15 211 int revision;
kazushi2008 0:c2aeac7c2d15 212 int firmware;
kazushi2008 0:c2aeac7c2d15 213 int reserved1;
kazushi2008 0:c2aeac7c2d15 214 int reserved2;
kazushi2008 0:c2aeac7c2d15 215
kazushi2008 0:c2aeac7c2d15 216 // Text data
kazushi2008 0:c2aeac7c2d15 217 char current_col;
kazushi2008 0:c2aeac7c2d15 218 char current_row;
kazushi2008 0:c2aeac7c2d15 219 int current_color;
kazushi2008 0:c2aeac7c2d15 220 char current_font;
kazushi2008 0:c2aeac7c2d15 221 char current_orientation;
kazushi2008 0:c2aeac7c2d15 222 char max_col;
kazushi2008 0:c2aeac7c2d15 223 char max_row;
kazushi2008 0:c2aeac7c2d15 224
kazushi2008 0:c2aeac7c2d15 225 protected :
kazushi2008 0:c2aeac7c2d15 226
kazushi2008 0:c2aeac7c2d15 227 Serial _cmd;
kazushi2008 0:c2aeac7c2d15 228 DigitalOut _rst;
kazushi2008 0:c2aeac7c2d15 229
kazushi2008 0:c2aeac7c2d15 230 void freeBUFFER (void);
kazushi2008 0:c2aeac7c2d15 231 void writeBYTE (char);
kazushi2008 0:c2aeac7c2d15 232 int writeCOMMAND(char *, int);
kazushi2008 0:c2aeac7c2d15 233 int readVERSION (char *, int);
kazushi2008 0:c2aeac7c2d15 234 void getTOUCH (char *, int, int *,int *);
kazushi2008 0:c2aeac7c2d15 235 int getSTATUS (char *, int);
kazushi2008 0:c2aeac7c2d15 236 void version (void);
kazushi2008 0:c2aeac7c2d15 237 };
kazushi2008 0:c2aeac7c2d15 238
kazushi2008 0:c2aeac7c2d15 239 typedef unsigned char BYTE;