Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Picaso_4DGL-32PTU.h
- Committer:
- CaptainR
- Date:
- 2016-09-08
- Revision:
- 0:a5ef6bc3c2e8
- Child:
- 1:e2337e2653e1
File content as of revision 0:a5ef6bc3c2e8:
//
// TFT_4DGL is a class to drive 4D Systems TFT touch screens
//
// Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
//
// TFT_4DGL is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// TFT_4DGL is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with TFT_4DGL. If not, see <http://www.gnu.org/licenses/>.
#include "mbed.h"
#ifndef DEBUGMODE
#define DEBUGMODE 1
#endif
// functions
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
// Common WAIT value in millisecond
#define TEMPO 1
// Main Functions values
#define CLS_MSB 0xFF
#define CLS_LSB 0xCD
#define BAUDRATE_MSB 0x00
#define BAUDRATE_LSB 0x26
// text functions values
#define TEXT_BG_COLOR_MSB 0xFF
#define TEXT_BG_COLOR_LSB 0xE6
#define SET_FONT_MSB 0xFF
#define SET_FONT_LSB 0xE5
#define PUT_CHAR_MSB 0xFF
#define PUT_CHAR_LSB 0xFE
#define PUT_STRING_MSB 0x00
#define PUT_STRING_LSB 0x18
#define MOVE_CURSOR_MSB 0xFF
#define MOVE_CURSOR_LSB 0xE9
#define TEXT_FG_COLOR_MSB 0xFF
#define TEXT_FG_COLOR_LSB 0xE7
#define TEXT_WIDTH_MSB 0xFF
#define TEXT_WIDTH_LSB 0xE4
#define TEXT_HEIGHT_MSB 0xFF
#define TEXT_HEIGHT_LSB 0xE3
#define TEXT_X_GAP_MSB 0xFF
#define TEXT_X_GAP_LSB 0xE2
#define TEXT_Y_GAP_MSB 0xFF
#define TEXT_Y_GAP_LSB 0xE1
#define TEXT_BOLD_MSB 0xFF
#define TEXT_BOLD_LSB 0xDE
#define TEXT_INVERSE_MSB 0xFF
#define TEXT_INVERSE_LSB 0xDC
#define TEXT_ITALIC_MSB 0xFF
#define TEXT_ITALIC_LSB 0xDD
#define TEXT_OPACITY_MSB 0xFF
#define TEXT_OPACITY_LSB 0xDF
#define TEXT_UNDERLINE_MSB 0xFF
#define TEXT_UNDERLINE_LSB 0xDB
#define TEXT_ATTRIBUTES_MSB 0xFF
#define TEXT_ATTRIBUTES_LSB 0xDA
// graphics functions values
#define CHANGE_COLOR_MSB 0xFF
#define CHANGE_COLOR_LSB 0xB4
#define DRAW_CIRCLE_MSB 0xFF
#define DRAW_CIRCLE_LSB 0xC3
// Screen answers
#define ACK 0x06
#define NACK 0x15
// Screen states
#define OFF '\x00'
#define ON '\x01'
// Graphics modes
#define SOLID '\x00'
#define WIREFRAME '\x01'
// Text modes
#define TRANSPARENT '\x00'
#define OPAQUE '\x01'
// Predefined Fonts
#define FONT1_MSB 0x00
#define FONT1_LSB 0x00
#define FONT2_MSB 0x00
#define FONT2_LSB 0x01
#define FONT3_MSB 0x00
#define FONT3_LSB 0x02
// Line and column values depending on orientation and font F1LL = font1 landscape line
#define F1LL 29
#define F1LC 44
#define F1PL 39
#define F1PC 33
#define F2LL 29
#define F2LC 39
#define F2PL 39
#define F2PC 29
#define F3LL 19
#define F3LC 39
#define F3PL 26
#define F3PC 29
// Touch Values
#define WAIT '\x00'
#define PRESS '\x01'
#define RELEASE '\x02'
#define MOVE '\x03'
#define STATUS '\x04'
#define GETPOSITION '\x05'
// Data speed
#define BAUD_300_MSB 0x00
#define BAUD_300_LSB 0x01
#define BAUD_600_MSB 0x00
#define BAUD_600_LSB 0x02
#define BAUD_1200_MSB 0x00
#define BAUD_1200_LSB 0x03
#define BAUD_2400_MSB 0x00
#define BAUD_2400_LSB 0x04
#define BAUD_4800_MSB 0x00
#define BAUD_4800_LSB 0x05
#define BAUD_9600_MSB 0x00
#define BAUD_9600_LSB 0x06
#define BAUD_14400_MSB 0x00
#define BAUD_14400_LSB 0x07
#define BAUD_19200_MSB 0x00
#define BAUD_19200_LSB 0x08
#define BAUD_38400_MSB 0x00
#define BAUD_38400_LSB 0x0A
#define BAUD_56000_MSB 0x00
#define BAUD_56000_LSB 0x0B
#define BAUD_57600_MSB 0x00
#define BAUD_57600_LSB 0x0C
#define BAUD_115200_MSB 0x00
#define BAUD_115200_LSB 0x0D
#define BAUD_128000_MSB 0x0E
#define BAUD_128000_LSB 0x0E
#define BAUD_256000_MSB 0x0F
#define BAUD_256000_LSB 0x0F
#define BAUD_300000_MSB 0x10
#define BAUD_300000_LSB 0x10
#define BAUD_375000_MSB 0x11
#define BAUD_375000_LSB 0x11
#define BAUD_500000_MSB 0x12
#define BAUD_500000_LSB 0x12
#define BAUD_600000_MSB 0x13
#define BAUD_600000_LSB 0x13
// Defined Colors
#define BLACK_MSB 0x00
#define BLACK_LSB 0x00
#define NAVY_MSB 0x00
#define NAVY_LSB 0x0F
#define DGREEN_MSB 0x03
#define DGREEN_LSB 0xE0
#define DCYAN_MSB 0x03
#define DCYAN_LSB 0xEF
#define PURPLE_MSB 0x78
#define PURPLE_LSB 0x0F
#define OLIVE_MSB 0x7B
#define OLIVE_LSB 0xE0
#define GREY_MSB 0x84
#define GREY_LSB 0x10
#define BLUE_MSB 0x00
#define BLUE_LSB 0x1F
#define GREEN_MSB 0x07
#define GREEN_LSB 0xE0
#define RED_MSB 0xF8
#define RED_LSB 0x00
#define YELLOW_MSB 0xFF
#define YELLOW_LSB 0xE0
#define WHITE_MSB 0xFF
#define WHITE_LSB 0xFF
#define ORANGE_MSB 0xFD
#define ORANGE_LSB 0x20
#define G_YELLOW_MSB 0xAF
#define G_YELLOW_LSB 0xE5
#define PINK_MSB 0xF8
#define PINK_LSB 0x1F
#define VIOLET_MSB 0x90
#define VIOLET_LSB 0x1A
#define AQUA_MSB 0x07
#define AQUA_LSB 0xFF
#define CREAM_MSB 0xFF
#define CREAM_LSB 0xDE
// Mode data
#define BACKLIGHT '\x00'
#define DISPLAY '\x01'
#define CONTRAST '\x02'
#define POWER '\x03'
#define ORIENTATION_MSB '\xFF'
#define ORIENTATION_LSB '\x9E'
#define TOUCH_CTRL '\x05'
#define IMAGE_FORMAT '\x06'
#define PROTECT_FAT '\x08'
// change this to your specific screen (newer versions) if needed
// Startup orientation is PORTRAIT so SIZE_X must be lesser than SIZE_Y
//#define SIZE_X 240
//#define SIZE_Y 320
//#define IS_LANDSCAPE 0
//#define IS_PORTRAIT 1
// Screen orientation
#define LANDSCAPE_MSB 0x00
#define LANDSCAPE_LSB 0x00
#define LANDSCAPE_R_MSB 0x00
#define LANDSCAPE_R_LSB 0x01
#define PORTRAIT_MSB 0x00
#define PORTRAIT_LSB 0x02
#define PORTRAIT_R_MSB 0x00
#define PORTRAIT_R_LSB 0x03
// Parameters
//#define ENABLE '\x00'
//#define DISABLE '\x01'
//#define RESET '\x02'
//#define NEW '\x00'
//#define OLD '\x01'
//#define DOWN '\x00'
//#define UP '\x01'
//#define PROTECT '\x00'
//#define UNPROTECT '\x02'
//**************************************************************************
class TFT_4DGL {
public :
Serial pc; // serial variable for debug information
TFT_4DGL(PinName tx, PinName rx, PinName rst); // LCD serial construnctor
int resp, respLen; // received response from screen
char response[];
// General Commands
void getResponse();
void responseBuild(int, char);
void reset(); // reset screen
void baudrate(long); // set baudrate
void screenOrientation(char); // set desired orientation of a screen
void mainDemo(); // play demo with text based functions
void textDemo(); // play demo with text based functions
void graphicsDemo(); // play demo with text based functions
// Graphics Commands
void cls(); // clear screen
void changeColor(char, char, char, char); // change one color to another
void drawCircle(short, short, short, char, char);
//void circle(int, int, int, int);
//void triangle(int, int, int, int, int, int, int);
//void line(int, int, int, int, int);
//void rectangle(int, int, int, int, int);
//void ellipse(int, int, int, int, int);
//void pixel(int, int, int);
//int read_pixel(int, int);
//void screen_copy(int, int, int, int, int, int);
//void pen_size(char);
//void SD_Card_Wav(char[]);
//void Set_Volume(char);
//void uSD_FAT_Image(char[], int, int, long);
//void uSD_Image(int, int, long);
//void uSD_Video(int, int, long);
// Texts Commands
void setFont(char); // set desired font from embedded fonts
char moveCursor(short, short); // move cursot to a specific location
char validateMoveCursor(short, short); // check if requested values are not out of range, based on font and orientation
void textBgColor(char, char); // set background color of next text messages
void putc(char); // send a single character to LCD
void puts(char *); // send a string to LCD
void textFgColor(char, char); // set text color
int textWidth(short);
int textHeight(short);
int textXGap(short);
int textYGap(short);
void textBold(short);
void textInverse(short);
void textItalic(short);
void textOpacity(short);
void textUnderline(short);
void textAttributes(short);
//void text_mode(char);
//void textChar(char);
//void graphic_char(char, int, int, int, char, char);
//void textString(char *); // +
//void graphic_string(char *, int, int, char, int, char, char);
//void text_button(char *, char, int, int, int, char, int, char, char);
//void locate(char, char);
// Touch Command
//void touch_mode(char);
//void get_touch(int *, int *);
//void wait_touch(int);
//void set_touch(int, int, int, int);
//int touch_status(void);
//void Pause_Until_Touch(int *, int *);
// Screen Data
//int type;
//int revision;
//int firmware;
//int reserved1;
//int reserved2;
// Text data
char currentFont;
char currentOrientation;
//char current_col;
//char current_row;
//int current_color;
//char max_col;
//char max_row;
protected :
Serial _cmd;
DigitalOut _rst;
void freeBUFFER (void);
void writeBYTE (char);
void writeCOMMAND(char *, int);
//int readVERSION (char *, int);
//void getTOUCH (char *, int, int *,int *);
//int getSTATUS (char *, int);
//void version (void);
};
typedef unsigned char BYTE;