4DGL-uLCD-SE with removed color defines

Fork of 4DGL-uLCD-SE by jim hamblen

Committer:
4180_1
Date:
Mon Nov 11 01:22:41 2013 +0000
Revision:
1:8b656995301f
Child:
2:edae99e4abe7
ver 1.0 uLCD144-G2 demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
4180_1 1:8b656995301f 1 //
4180_1 1:8b656995301f 2 // uLCD_4DGL is a class to drive 4D Systems TFT touch screens
4180_1 1:8b656995301f 3 //
4180_1 1:8b656995301f 4 // Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
4180_1 1:8b656995301f 5 //
4180_1 1:8b656995301f 6 // uLCD_4DGL is free software: you can redistribute it and/or modify
4180_1 1:8b656995301f 7 // it under the terms of the GNU General Public License as published by
4180_1 1:8b656995301f 8 // the Free Software Foundation, either version 3 of the License, or
4180_1 1:8b656995301f 9 // (at your option) any later version.
4180_1 1:8b656995301f 10 //
4180_1 1:8b656995301f 11 // uLCD_4DGL is distributed in the hope that it will be useful,
4180_1 1:8b656995301f 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
4180_1 1:8b656995301f 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4180_1 1:8b656995301f 14 // GNU General Public License for more details.
4180_1 1:8b656995301f 15 //
4180_1 1:8b656995301f 16 // You should have received a copy of the GNU General Public License
4180_1 1:8b656995301f 17 // along with uLCD_4DGL. If not, see <http://www.gnu.org/licenses/>.
4180_1 1:8b656995301f 18
4180_1 1:8b656995301f 19 // @author Stephane Rochon
4180_1 1:8b656995301f 20
4180_1 1:8b656995301f 21 #include "mbed.h"
4180_1 1:8b656995301f 22
4180_1 1:8b656995301f 23 // Debug Verbose on terminal enabled
4180_1 1:8b656995301f 24 #ifndef DEBUGMODE
4180_1 1:8b656995301f 25 #define DEBUGMODE 1
4180_1 1:8b656995301f 26 #endif
4180_1 1:8b656995301f 27
4180_1 1:8b656995301f 28 // Common WAIT value in millisecond
4180_1 1:8b656995301f 29 #define TEMPO 5
4180_1 1:8b656995301f 30
4180_1 1:8b656995301f 31 // 4DGL Functions values
4180_1 1:8b656995301f 32 #define AUTOBAUD '\x55'
4180_1 1:8b656995301f 33 #define CLS '\xD7'
4180_1 1:8b656995301f 34 #define BAUDRATE '\x0B' //null prefix
4180_1 1:8b656995301f 35 #define VERSION '\x08' //null prefix
4180_1 1:8b656995301f 36 #define BCKGDCOLOR '\x6E'
4180_1 1:8b656995301f 37 #define DISPCONTROL '\x68'
4180_1 1:8b656995301f 38 #define SETVOLUME '\x76'
4180_1 1:8b656995301f 39 #define CIRCLE '\xCC'
4180_1 1:8b656995301f 40 #define TRIANGLE '\xC9'
4180_1 1:8b656995301f 41 #define LINE '\xD2'
4180_1 1:8b656995301f 42 #define RECTANGLE '\xCE'
4180_1 1:8b656995301f 43 #define ELLIPSE '\x65' //na
4180_1 1:8b656995301f 44 #define PIXEL '\xCB'
4180_1 1:8b656995301f 45 #define READPIXEL '\xCA'
4180_1 1:8b656995301f 46 #define SCREENCOPY '\x63' //na?
4180_1 1:8b656995301f 47 #define PENSIZE '\x70' //na
4180_1 1:8b656995301f 48 #define SETFONT '\x7D'
4180_1 1:8b656995301f 49 #define TEXTMODE '\x77'
4180_1 1:8b656995301f 50 #define TEXTCHAR '\xFE'
4180_1 1:8b656995301f 51 #define GRAPHCHAR '\x74'
4180_1 1:8b656995301f 52 #define TEXTSTRING '\x06' //null prefix
4180_1 1:8b656995301f 53 #define GRAPHSTRING '\x53'
4180_1 1:8b656995301f 54 #define TEXTBUTTON '\x62'
4180_1 1:8b656995301f 55 #define GETTOUCH '\x6F'
4180_1 1:8b656995301f 56 #define WAITTOUCH '\x77'
4180_1 1:8b656995301f 57 #define SETTOUCH '\x75'
4180_1 1:8b656995301f 58
4180_1 1:8b656995301f 59
4180_1 1:8b656995301f 60 // Screen answers
4180_1 1:8b656995301f 61 #define ACK '\x06'
4180_1 1:8b656995301f 62 #define NAK '\x15'
4180_1 1:8b656995301f 63
4180_1 1:8b656995301f 64 // Screen states
4180_1 1:8b656995301f 65 #define OFF '\x00'
4180_1 1:8b656995301f 66 #define ON '\x01'
4180_1 1:8b656995301f 67
4180_1 1:8b656995301f 68 // Graphics modes
4180_1 1:8b656995301f 69 #define SOLID '\x00'
4180_1 1:8b656995301f 70 #define WIREFRAME '\x01'
4180_1 1:8b656995301f 71
4180_1 1:8b656995301f 72 // Text modes
4180_1 1:8b656995301f 73 #define TRANSPARENT '\x00'
4180_1 1:8b656995301f 74 #define OPAQUE '\x01'
4180_1 1:8b656995301f 75
4180_1 1:8b656995301f 76 // Fonts Sizes
4180_1 1:8b656995301f 77 #define FONT_5X7 '\x00'
4180_1 1:8b656995301f 78 #define FONT_8X8 '\x01'
4180_1 1:8b656995301f 79 #define FONT_8X12 '\x02'
4180_1 1:8b656995301f 80 #define FONT_12X16 '\x03'
4180_1 1:8b656995301f 81
4180_1 1:8b656995301f 82 // Touch Values
4180_1 1:8b656995301f 83 #define WAIT '\x00'
4180_1 1:8b656995301f 84 #define PRESS '\x01'
4180_1 1:8b656995301f 85 #define RELEASE '\x02'
4180_1 1:8b656995301f 86 #define MOVE '\x03'
4180_1 1:8b656995301f 87 #define STATUS '\x04'
4180_1 1:8b656995301f 88 #define GETPOSITION '\x05'
4180_1 1:8b656995301f 89
4180_1 1:8b656995301f 90 // Data speed
4180_1 1:8b656995301f 91 #define BAUD_110 27271
4180_1 1:8b656995301f 92 #define BAUD_300 9999
4180_1 1:8b656995301f 93 #define BAUD_600 4999
4180_1 1:8b656995301f 94 #define BAUD_1200 2499
4180_1 1:8b656995301f 95 #define BAUD_2400 1249
4180_1 1:8b656995301f 96 #define BAUD_4800 624
4180_1 1:8b656995301f 97 #define BAUD_9600 312
4180_1 1:8b656995301f 98 #define BAUD_14400 207
4180_1 1:8b656995301f 99 #define BAUD_19200 155
4180_1 1:8b656995301f 100 #define BAUD_31250 95
4180_1 1:8b656995301f 101 #define BAUD_38400 77
4180_1 1:8b656995301f 102 #define BAUD_56000 53
4180_1 1:8b656995301f 103 #define BAUD_57600 51
4180_1 1:8b656995301f 104 #define BAUD_115200 25
4180_1 1:8b656995301f 105 #define BAUD_128000 22
4180_1 1:8b656995301f 106 #define BAUD_256000 11
4180_1 1:8b656995301f 107
4180_1 1:8b656995301f 108 // Defined Colors
4180_1 1:8b656995301f 109 #define WHITE 0xFFFFFF
4180_1 1:8b656995301f 110 #define BLACK 0x000000
4180_1 1:8b656995301f 111 #define RED 0xFF0000
4180_1 1:8b656995301f 112 #define GREEN 0x00FF00
4180_1 1:8b656995301f 113 #define BLUE 0x0000FF
4180_1 1:8b656995301f 114 #define LGREY 0xBFBFBF
4180_1 1:8b656995301f 115 #define DGREY 0x5F5F5F
4180_1 1:8b656995301f 116
4180_1 1:8b656995301f 117 // Mode data
4180_1 1:8b656995301f 118 #define BACKLIGHT '\x00'
4180_1 1:8b656995301f 119 #define DISPLAY '\x01'
4180_1 1:8b656995301f 120 #define CONTRAST '\x02'
4180_1 1:8b656995301f 121 #define POWER '\x03'
4180_1 1:8b656995301f 122 #define ORIENTATION '\x04'
4180_1 1:8b656995301f 123 #define TOUCH_CTRL '\x05'
4180_1 1:8b656995301f 124 #define IMAGE_FORMAT '\x06'
4180_1 1:8b656995301f 125 #define PROTECT_FAT '\x08'
4180_1 1:8b656995301f 126
4180_1 1:8b656995301f 127 // change this to your specific screen (newer versions) if needed
4180_1 1:8b656995301f 128 // Startup orientation is PORTRAIT so SIZE_X must be lesser than SIZE_Y
4180_1 1:8b656995301f 129 #define SIZE_X 128
4180_1 1:8b656995301f 130 #define SIZE_Y 128
4180_1 1:8b656995301f 131
4180_1 1:8b656995301f 132 #define IS_LANDSCAPE 0
4180_1 1:8b656995301f 133 #define IS_PORTRAIT 1
4180_1 1:8b656995301f 134
4180_1 1:8b656995301f 135 // Screen orientation
4180_1 1:8b656995301f 136 #define LANDSCAPE '\x01'
4180_1 1:8b656995301f 137 #define LANDSCAPE_R '\x02'
4180_1 1:8b656995301f 138 #define PORTRAIT '\x03'
4180_1 1:8b656995301f 139 #define PORTRAIT_R '\x04'
4180_1 1:8b656995301f 140
4180_1 1:8b656995301f 141 // Parameters
4180_1 1:8b656995301f 142 #define ENABLE '\x00'
4180_1 1:8b656995301f 143 #define DISABLE '\x01'
4180_1 1:8b656995301f 144 #define RESET '\x02'
4180_1 1:8b656995301f 145
4180_1 1:8b656995301f 146 #define NEW '\x00'
4180_1 1:8b656995301f 147 #define OLD '\x01'
4180_1 1:8b656995301f 148
4180_1 1:8b656995301f 149 #define DOWN '\x00'
4180_1 1:8b656995301f 150 #define UP '\x01'
4180_1 1:8b656995301f 151
4180_1 1:8b656995301f 152 #define PROTECT '\x00'
4180_1 1:8b656995301f 153 #define UNPROTECT '\x02'
4180_1 1:8b656995301f 154
4180_1 1:8b656995301f 155 //**************************************************************************
4180_1 1:8b656995301f 156 // \class uLCD_4DGL uLCD_4DGL.h
4180_1 1:8b656995301f 157 // \brief This is the main class. It shoud be used like this : uLCD_4GDL myLCD(p9,p10,p11);
4180_1 1:8b656995301f 158 /**
4180_1 1:8b656995301f 159 Example:
4180_1 1:8b656995301f 160 * @code
4180_1 1:8b656995301f 161 * // Display a white circle on the screen
4180_1 1:8b656995301f 162 * #include "mbed.h"
4180_1 1:8b656995301f 163 * #include " uLCD_4DGL.h"
4180_1 1:8b656995301f 164 *
4180_1 1:8b656995301f 165 * uLCD_4GDL myLCD(p9,p10,p11);
4180_1 1:8b656995301f 166 *
4180_1 1:8b656995301f 167 * int main() {
4180_1 1:8b656995301f 168 * myLCD.circle(120, 160, 80, WHITE);
4180_1 1:8b656995301f 169 * }
4180_1 1:8b656995301f 170 * @endcode
4180_1 1:8b656995301f 171 */
4180_1 1:8b656995301f 172
4180_1 1:8b656995301f 173 class uLCD_4DGL
4180_1 1:8b656995301f 174 {
4180_1 1:8b656995301f 175
4180_1 1:8b656995301f 176 public :
4180_1 1:8b656995301f 177
4180_1 1:8b656995301f 178 uLCD_4DGL(PinName tx, PinName rx, PinName rst);
4180_1 1:8b656995301f 179
4180_1 1:8b656995301f 180 // General Commands *******************************************************************************
4180_1 1:8b656995301f 181
4180_1 1:8b656995301f 182 /** Clear the entire screen using the current background colour */
4180_1 1:8b656995301f 183 void cls();
4180_1 1:8b656995301f 184
4180_1 1:8b656995301f 185 /** Reset screen */
4180_1 1:8b656995301f 186 void reset();
4180_1 1:8b656995301f 187
4180_1 1:8b656995301f 188 /** Launch Autobaud for serial communication. This function is automatically called at startup */
4180_1 1:8b656995301f 189 void autobaud();
4180_1 1:8b656995301f 190 /** Set serial Baud rate (both sides : screen and mbed)
4180_1 1:8b656995301f 191 * @param Speed Correct BAUD value (see uLCD_4DGL.h)
4180_1 1:8b656995301f 192 */
4180_1 1:8b656995301f 193 void baudrate(int speed);
4180_1 1:8b656995301f 194
4180_1 1:8b656995301f 195 /** Set background colour to the specified value
4180_1 1:8b656995301f 196 * @param color in HEX RGB like 0xFF00FF
4180_1 1:8b656995301f 197 */
4180_1 1:8b656995301f 198 void background_color(int color);
4180_1 1:8b656995301f 199
4180_1 1:8b656995301f 200 /** Set screen display mode to specific values
4180_1 1:8b656995301f 201 * @param mode See 4DGL documentation
4180_1 1:8b656995301f 202 * @param value See 4DGL documentation
4180_1 1:8b656995301f 203 */
4180_1 1:8b656995301f 204 void display_control(char mode, char value);
4180_1 1:8b656995301f 205
4180_1 1:8b656995301f 206 /** Set internal speaker to specified value
4180_1 1:8b656995301f 207 * @param value Correct range is 8 - 127
4180_1 1:8b656995301f 208 */
4180_1 1:8b656995301f 209 void set_volume(char value);
4180_1 1:8b656995301f 210
4180_1 1:8b656995301f 211 // Graphics Commands *******************************************************************************
4180_1 1:8b656995301f 212
4180_1 1:8b656995301f 213 /** 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
4180_1 1:8b656995301f 214 * @param x Horizontal position of the circle centre
4180_1 1:8b656995301f 215 * @param y Vertical position of the circle centre
4180_1 1:8b656995301f 216 * @param radius Radius of the circle
4180_1 1:8b656995301f 217 * @param color Circle color in HEX RGB like 0xFF00FF
4180_1 1:8b656995301f 218 */
4180_1 1:8b656995301f 219 void circle(int x , int y , int radius, int color);
4180_1 1:8b656995301f 220
4180_1 1:8b656995301f 221 void triangle(int, int, int, int, int, int, int);
4180_1 1:8b656995301f 222 void line(int, int, int, int, int);
4180_1 1:8b656995301f 223 void rectangle(int, int, int, int, int);
4180_1 1:8b656995301f 224 void ellipse(int, int, int, int, int);
4180_1 1:8b656995301f 225 void pixel(int, int, int);
4180_1 1:8b656995301f 226 int read_pixel(int, int);
4180_1 1:8b656995301f 227 void screen_copy(int, int, int, int, int, int);
4180_1 1:8b656995301f 228 void pen_size(char);
4180_1 1:8b656995301f 229
4180_1 1:8b656995301f 230 // Texts Commands
4180_1 1:8b656995301f 231 void set_font(char);
4180_1 1:8b656995301f 232 void text_mode(char);
4180_1 1:8b656995301f 233 void text_char(char, char, char, int);
4180_1 1:8b656995301f 234 void graphic_char(char, int, int, int, char, char);
4180_1 1:8b656995301f 235 void text_string(char *, char, char, char, int);
4180_1 1:8b656995301f 236 void graphic_string(char *, int, int, char, int, char, char);
4180_1 1:8b656995301f 237 void text_button(char *, char, int, int, int, char, int, char, char);
4180_1 1:8b656995301f 238
4180_1 1:8b656995301f 239 void locate(char, char);
4180_1 1:8b656995301f 240 void color(int);
4180_1 1:8b656995301f 241 void putc(char);
4180_1 1:8b656995301f 242 void puts(char *);
4180_1 1:8b656995301f 243
4180_1 1:8b656995301f 244 // Touch Command
4180_1 1:8b656995301f 245 void touch_mode(char);
4180_1 1:8b656995301f 246 void get_touch(int *, int *);
4180_1 1:8b656995301f 247 void wait_touch(int);
4180_1 1:8b656995301f 248 void set_touch(int, int, int, int);
4180_1 1:8b656995301f 249 int touch_status(void);
4180_1 1:8b656995301f 250
4180_1 1:8b656995301f 251 // Screen Data
4180_1 1:8b656995301f 252 int type;
4180_1 1:8b656995301f 253 int revision;
4180_1 1:8b656995301f 254 int firmware;
4180_1 1:8b656995301f 255 int reserved1;
4180_1 1:8b656995301f 256 int reserved2;
4180_1 1:8b656995301f 257
4180_1 1:8b656995301f 258 // Text data
4180_1 1:8b656995301f 259 char current_col;
4180_1 1:8b656995301f 260 char current_row;
4180_1 1:8b656995301f 261 int current_color;
4180_1 1:8b656995301f 262 char current_font;
4180_1 1:8b656995301f 263 char current_orientation;
4180_1 1:8b656995301f 264 char max_col;
4180_1 1:8b656995301f 265 char max_row;
4180_1 1:8b656995301f 266
4180_1 1:8b656995301f 267 protected :
4180_1 1:8b656995301f 268
4180_1 1:8b656995301f 269 Serial _cmd;
4180_1 1:8b656995301f 270 DigitalOut _rst;
4180_1 1:8b656995301f 271
4180_1 1:8b656995301f 272 void freeBUFFER (void);
4180_1 1:8b656995301f 273 void writeBYTE (char);
4180_1 1:8b656995301f 274 int writeCOMMAND(char *, int);
4180_1 1:8b656995301f 275 int writeCOMMANDnull(char *, int);
4180_1 1:8b656995301f 276 int readVERSION (char *, int);
4180_1 1:8b656995301f 277 void getTOUCH (char *, int, int *,int *);
4180_1 1:8b656995301f 278 int getSTATUS (char *, int);
4180_1 1:8b656995301f 279 void version (void);
4180_1 1:8b656995301f 280 #if DEBUGMODE
4180_1 1:8b656995301f 281 Serial pc;
4180_1 1:8b656995301f 282 #endif // DEBUGMODE
4180_1 1:8b656995301f 283 };
4180_1 1:8b656995301f 284
4180_1 1:8b656995301f 285 typedef unsigned char BYTE;
4180_1 1:8b656995301f 286
4180_1 1:8b656995301f 287