This is a library for 4DGL screens from 4D Systems in Autralia (http://www.4dsystems.com.au). Most graphic, touch and text functions are supported
Dependents: Conways_Game_Life uVGAII_demo 4DGLtest_CalSol uVGA_4180
TFT_4DGL.h
00001 // 00002 // TFT_4DGL is a class to drive 4D Systems TFT touch screens 00003 // 00004 // Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr> 00005 // 00006 // TFT_4DGL is free software: you can redistribute it and/or modify 00007 // it under the terms of the GNU General Public License as published by 00008 // the Free Software Foundation, either version 3 of the License, or 00009 // (at your option) any later version. 00010 // 00011 // TFT_4DGL is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU General Public License for more details. 00015 // 00016 // You should have received a copy of the GNU General Public License 00017 // along with TFT_4DGL. If not, see <http://www.gnu.org/licenses/>. 00018 00019 // @author Stephane Rochon 00020 00021 #include "mbed.h" 00022 00023 // Debug Verbose on terminal enabled 00024 #ifndef DEBUGMODE 00025 #define DEBUGMODE 1 00026 #endif 00027 00028 // Common WAIT value in millisecond 00029 #define TEMPO 5 00030 00031 // 4DGL Functions values 00032 #define AUTOBAUD '\x55' 00033 #define CLS '\x45' 00034 #define BAUDRATE '\x51' 00035 #define VERSION '\x56' 00036 #define BCKGDCOLOR '\x42' 00037 #define DISPCONTROL '\x59' 00038 #define SETVOLUME '\x76' 00039 #define CIRCLE '\x43' 00040 #define TRIANGLE '\x47' 00041 #define LINE '\x4C' 00042 #define RECTANGLE '\x72' 00043 #define ELLIPSE '\x65' 00044 #define PIXEL '\x50' 00045 #define READPIXEL '\x52' 00046 #define SCREENCOPY '\x63' 00047 #define PENSIZE '\x70' 00048 #define SETFONT '\x46' 00049 #define TEXTMODE '\x4F' 00050 #define TEXTCHAR '\x54' 00051 #define GRAPHCHAR '\x74' 00052 #define TEXTSTRING '\x73' 00053 #define GRAPHSTRING '\x53' 00054 #define TEXTBUTTON '\x62' 00055 #define GETTOUCH '\x6F' 00056 #define WAITTOUCH '\x77' 00057 #define SETTOUCH '\x75' 00058 00059 00060 // Screen answers 00061 #define ACK '\x06' 00062 #define NAK '\x15' 00063 00064 // Screen states 00065 #define OFF '\x00' 00066 #define ON '\x01' 00067 00068 // Graphics modes 00069 #define SOLID '\x00' 00070 #define WIREFRAME '\x01' 00071 00072 // Text modes 00073 #define TRANSPARENT '\x00' 00074 #define OPAQUE '\x01' 00075 00076 // Fonts Sizes 00077 #define FONT_5X7 '\x00' 00078 #define FONT_8X8 '\x01' 00079 #define FONT_8X12 '\x02' 00080 #define FONT_12X16 '\x03' 00081 00082 // Touch Values 00083 #define WAIT '\x00' 00084 #define PRESS '\x01' 00085 #define RELEASE '\x02' 00086 #define MOVE '\x03' 00087 #define STATUS '\x04' 00088 #define GETPOSITION '\x05' 00089 00090 // Data speed 00091 #define BAUD_110 '\x00' 00092 #define BAUD_300 '\x01' 00093 #define BAUD_600 '\x02' 00094 #define BAUD_1200 '\x03' 00095 #define BAUD_2400 '\x04' 00096 #define BAUD_4800 '\x05' 00097 #define BAUD_9600 '\x06' 00098 #define BAUD_14400 '\x07' 00099 #define BAUD_19200 '\x09' 00100 #define BAUD_31250 '\x09' 00101 #define BAUD_38400 '\x0A' 00102 #define BAUD_56000 '\x0B' 00103 #define BAUD_57600 '\x0C' 00104 #define BAUD_115200 '\x0D' 00105 #define BAUD_128000 '\x0E' 00106 #define BAUD_256000 '\x0F' 00107 00108 // Defined Colors 00109 #define WHITE 0xFFFFFF 00110 #define BLACK 0x000000 00111 #define RED 0xFF0000 00112 #define GREEN 0x00FF00 00113 #define BLUE 0x0000FF 00114 #define LGREY 0xBFBFBF 00115 #define DGREY 0x5F5F5F 00116 00117 // Mode data 00118 #define BACKLIGHT '\x00' 00119 #define DISPLAY '\x01' 00120 #define CONTRAST '\x02' 00121 #define POWER '\x03' 00122 #define ORIENTATION '\x04' 00123 #define TOUCH_CTRL '\x05' 00124 #define IMAGE_FORMAT '\x06' 00125 #define PROTECT_FAT '\x08' 00126 00127 // change this to your specific screen (newer versions) if needed 00128 // Startup orientation is PORTRAIT so SIZE_X must be lesser than SIZE_Y 00129 #define SIZE_X 240 00130 #define SIZE_Y 320 00131 00132 #define IS_LANDSCAPE 0 00133 #define IS_PORTRAIT 1 00134 00135 // Screen orientation 00136 #define LANDSCAPE '\x01' 00137 #define LANDSCAPE_R '\x02' 00138 #define PORTRAIT '\x03' 00139 #define PORTRAIT_R '\x04' 00140 00141 // Parameters 00142 #define ENABLE '\x00' 00143 #define DISABLE '\x01' 00144 #define RESET '\x02' 00145 00146 #define NEW '\x00' 00147 #define OLD '\x01' 00148 00149 #define DOWN '\x00' 00150 #define UP '\x01' 00151 00152 #define PROTECT '\x00' 00153 #define UNPROTECT '\x02' 00154 00155 //************************************************************************** 00156 // \class TFT_4DGL TFT_4DGL.h 00157 // \brief This is the main class. It shoud be used like this : TFT_4GDL myLCD(p9,p10,p11); 00158 /** 00159 Example: 00160 * @code 00161 * // Display a white circle on the screen 00162 * #include "mbed.h" 00163 * #include " TFT_4DGL.h" 00164 * 00165 * TFT_4GDL myLCD(p9,p10,p11); 00166 * 00167 * int main() { 00168 * myLCD.circle(120, 160, 80, WHITE); 00169 * } 00170 * @endcode 00171 */ 00172 00173 class TFT_4DGL { 00174 00175 public : 00176 00177 TFT_4DGL(PinName tx, PinName rx, PinName rst); 00178 00179 // General Commands ******************************************************************************* 00180 00181 /** Clear the entire screen using the current background colour */ 00182 void cls(); 00183 00184 /** Reset screen */ 00185 void reset(); 00186 00187 /** Launch Autobaud for serial communication. This function is automatically called at startup */ 00188 void autobaud(); 00189 /** Set serial Baud rate (both sides : screen and mbed) 00190 * @param Speed Correct BAUD value (see TFT_4DGL.h) 00191 */ 00192 void baudrate(int speed); 00193 00194 /** Set background colour to the specified value 00195 * @param color in HEX RGB like 0xFF00FF 00196 */ 00197 void background_color(int color); 00198 00199 /** Set screen display mode to specific values 00200 * @param mode See 4DGL documentation 00201 * @param value See 4DGL documentation 00202 */ 00203 void display_control(char mode, char value); 00204 00205 /** Set internal speaker to specified value 00206 * @param value Correct range is 8 - 127 00207 */ 00208 void set_volume(char value); 00209 00210 // Graphics Commands ******************************************************************************* 00211 00212 /** Draw a circle centered at x,y with a radius and a colour. It uses Pen Size stored value to draw a solid or wireframe circle 00213 * @param x Horizontal position of the circle centre 00214 * @param y Vertical position of the circle centre 00215 * @param radius Radius of the circle 00216 * @param color Circle color in HEX RGB like 0xFF00FF 00217 */ 00218 void circle(int x , int y , int radius, int color); 00219 00220 void triangle(int, int, int, int, int, int, int); 00221 void line(int, int, int, int, int); 00222 void rectangle(int, int, int, int, int); 00223 void ellipse(int, int, int, int, int); 00224 void pixel(int, int, int); 00225 int read_pixel(int, int); 00226 void screen_copy(int, int, int, int, int, int); 00227 void pen_size(char); 00228 00229 // Texts Commands 00230 void set_font(char); 00231 void text_mode(char); 00232 void text_char(char, char, char, int); 00233 void graphic_char(char, int, int, int, char, char); 00234 void text_string(char *, char, char, char, int); 00235 void graphic_string(char *, int, int, char, int, char, char); 00236 void text_button(char *, char, int, int, int, char, int, char, char); 00237 00238 void locate(char, char); 00239 void color(int); 00240 void putc(char); 00241 void puts(char *); 00242 00243 // Touch Command 00244 void touch_mode(char); 00245 void get_touch(int *, int *); 00246 void wait_touch(int); 00247 void set_touch(int, int, int, int); 00248 int touch_status(void); 00249 00250 // Screen Data 00251 int type; 00252 int revision; 00253 int firmware; 00254 int reserved1; 00255 int reserved2; 00256 00257 // Text data 00258 char current_col; 00259 char current_row; 00260 int current_color; 00261 char current_font; 00262 char current_orientation; 00263 char max_col; 00264 char max_row; 00265 00266 protected : 00267 00268 Serial _cmd; 00269 DigitalOut _rst; 00270 00271 void freeBUFFER (void); 00272 void writeBYTE (char); 00273 int writeCOMMAND(char *, int); 00274 int readVERSION (char *, int); 00275 void getTOUCH (char *, int, int *,int *); 00276 int getSTATUS (char *, int); 00277 void version (void); 00278 }; 00279 00280 typedef unsigned char BYTE;
Generated on Tue Jul 12 2022 17:06:18 by 1.7.2