Adapted from Peter Dresche's original for Waveshare 2.8inch TFT Touch Shield Board and Mbed 6. RGB order reversed by changing reg 16 commands, spi write code adjusted as there is no reset pin but there is data command pin. Wait commands changed for new thread_sleep style, Stream class explicitly included. Library to control a QVGA TFT connected to SPI. You can use printf to print text The lib can handle different fonts, draw lines, circles, rect and bmp
SPI_TFT Class Reference
Display control class, based on GraphicsDisplay and TextDisplay. More...
#include <SPI_TFT.h>
Inherits GraphicsDisplay.
Public Member Functions | |
| SPI_TFT (PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset, const char *name="TFT") | |
| Create a SPI_TFT object connected to SPI and two pins. | |
| virtual int | width () |
| Get the width of the screen in pixel. | |
| virtual int | height () |
| Get the height of the screen in pixel. | |
| virtual void | pixel (int x, int y, int colour) |
| Draw a pixel at x,y with color. | |
| void | circle (int x, int y, int r, int colour) |
| draw a circle | |
| void | fillcircle (int x, int y, int r, int colour) |
| draw a filled circle | |
| void | line (int x0, int y0, int x1, int y1, int colour) |
| draw a 1 pixel line | |
| void | rect (int x0, int y0, int x1, int y1, int colour) |
| draw a rect | |
| void | fillrect (int x0, int y0, int x1, int y1, int colour) |
| draw a filled rect | |
| virtual void | locate (int x, int y) |
| setup cursor position | |
| virtual void | cls (void) |
| Fill the screen with _backgroun color. | |
| virtual int | columns (void) |
| calculate the max number of char in a line | |
| virtual int | rows (void) |
| calculate the max number of columns | |
| virtual int | _putc (int value) |
| put a char on the screen | |
| virtual void | character (int x, int y, int c) |
| draw a character on given position out of the active font to the TFT | |
| void | Bitmap (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bitmap) |
| paint a bitmap on the TFT | |
| int | BMP_16 (unsigned int x, unsigned int y, const char *Name_BMP) |
| paint a 16 bit BMP from local filesytem on the TFT (slow) | |
| void | set_font (unsigned char *f) |
| select the font to use | |
| void | set_orientation (unsigned int o) |
| Set the orientation of the screen x,y: 0,0 is always top left. | |
| virtual bool | claim (FILE *stream) |
| redirect output from a stream (stoud, sterr) to display | |
Protected Member Functions | |
| void | WindowMax (void) |
| Set draw window region to whole screen. | |
| void | hline (int x0, int x1, int y, int colour) |
| draw a horizontal line | |
| void | vline (int y0, int y1, int x, int colour) |
| draw a vertical line | |
| virtual void | window (unsigned int x, unsigned int y, unsigned int w, unsigned int h) |
| Set draw window region. | |
| void | tft_reset () |
| Init the HX8347D controller. | |
| void | wr_dat (unsigned char value) |
| Write data to the LCD controller. | |
| void | wr_cmd (unsigned char value) |
| Write a command the LCD controller. | |
| void | wr_dat_only (unsigned short dat) |
| Start data sequence to the LCD controller. | |
| unsigned short | rd_dat (void) |
| Read data from the LCD controller. | |
| void | wr_reg (unsigned char reg, unsigned char val) |
| Write a value to the to a LCD register. | |
| unsigned short | rd_reg (unsigned char reg) |
| Read a LCD register. | |
Detailed Description
Display control class, based on GraphicsDisplay and TextDisplay.
Example:
#include "stdio.h" #include "mbed.h" #include "SPI_TFT.h" #include "string" #include "Arial12x12.h" #include "Arial24x23.h" // the TFT is connected to SPI pin 5-7 SPI_TFT TFT(p5, p6, p7, p8, p15,"TFT"); // mosi, miso, sclk, cs, reset int main() { TFT.claim(stdout); // send stdout to the TFT display //TFT.claim(stderr); // send stderr to the TFT display TFT.background(Black); // set background to black TFT.foreground(White); // set chars to white TFT.cls(); // clear the screen TFT.set_font((unsigned char*) Arial12x12); // select the font TFT.set_orientation(0); TFT.locate(0,0); printf(" Hello Mbed 0"); TFT.set_font((unsigned char*) Arial24x23); // select font 2 TFT.locate(48,115); TFT.printf("Bigger Font"); }
Definition at line 106 of file SPI_TFT.h.
Constructor & Destructor Documentation
| SPI_TFT | ( | PinName | mosi, |
| PinName | miso, | ||
| PinName | sclk, | ||
| PinName | cs, | ||
| PinName | reset, | ||
| const char * | name = "TFT" |
||
| ) |
Create a SPI_TFT object connected to SPI and two pins.
- Parameters:
-
mosi,miso,sclk SPI cs pin connected to CS of display reset pin connected to RESET of display
Definition at line 52 of file SPI_TFT.cpp.
Member Function Documentation
| int _putc | ( | int | value ) | [virtual] |
put a char on the screen
- Parameters:
-
value char to print
- Returns:
- printed char
Definition at line 544 of file SPI_TFT.cpp.
| void Bitmap | ( | unsigned int | x, |
| unsigned int | y, | ||
| unsigned int | w, | ||
| unsigned int | h, | ||
| unsigned char * | bitmap | ||
| ) |
paint a bitmap on the TFT
- Parameters:
-
x,y : upper left corner w width of bitmap h high of bitmap *bitmap pointer to the bitmap data
bitmap format: 16 bit R5 G6 B5
use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5 use winhex to load this file and mark data stating at offset 0x46 to end use edit -> copy block -> C Source to export C array paste this array into your program
define the array as static const unsigned char to put it into flash memory cast the pointer to (unsigned char *) : tft.Bitmap(10,40,309,50,(unsigned char *)scala);
Definition at line 626 of file SPI_TFT.cpp.
| int BMP_16 | ( | unsigned int | x, |
| unsigned int | y, | ||
| const char * | Name_BMP | ||
| ) |
paint a 16 bit BMP from local filesytem on the TFT (slow)
- Parameters:
-
x,y : upper left corner *Name_BMP name of the BMP file
- Returns:
- 1 if bmp file was found and painted
- -1 if bmp file was found not found
- -2 if bmp file is not 16bit
- -3 if bmp file is to big for screen
- -4 if buffer malloc go wrong
bitmap format: 16 bit R5 G6 B5
use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5 copy to internal file system
Definition at line 668 of file SPI_TFT.cpp.
| void character | ( | int | x, |
| int | y, | ||
| int | c | ||
| ) | [virtual] |
draw a character on given position out of the active font to the TFT
- Parameters:
-
x x-position of char (top left) y y-position c char to print
Definition at line 559 of file SPI_TFT.cpp.
| void circle | ( | int | x, |
| int | y, | ||
| int | r, | ||
| int | colour | ||
| ) |
draw a circle
- Parameters:
-
x0,y0 center r radius color 16 bit color *
Definition at line 316 of file SPI_TFT.cpp.
| bool claim | ( | FILE * | stream ) | [virtual, inherited] |
redirect output from a stream (stoud, sterr) to display
- Parameters:
-
stream stream that shall be redirected to the TextDisplay
Definition at line 66 of file TextDisplay.cpp.
| void cls | ( | void | ) | [virtual] |
Fill the screen with _backgroun color.
Definition at line 292 of file SPI_TFT.cpp.
| int columns | ( | void | ) | [virtual] |
calculate the max number of char in a line
- Returns:
- max columns depends on actual font size
Definition at line 532 of file SPI_TFT.cpp.
| void fillcircle | ( | int | x, |
| int | y, | ||
| int | r, | ||
| int | colour | ||
| ) |
draw a filled circle
- Parameters:
-
x0,y0 center r radius color 16 bit color *
use circle with different radius, can miss some pixel
Definition at line 334 of file SPI_TFT.cpp.
| void fillrect | ( | int | x0, |
| int | y0, | ||
| int | x1, | ||
| int | y1, | ||
| int | colour | ||
| ) |
draw a filled rect
- Parameters:
-
x0,y0 top left corner x1,y1 down right corner color 16 bit color
Definition at line 496 of file SPI_TFT.cpp.
| int height | ( | ) | [virtual] |
Get the height of the screen in pixel.
- Returns:
- height of screen in pixel
Definition at line 67 of file SPI_TFT.cpp.
| void hline | ( | int | x0, |
| int | x1, | ||
| int | y, | ||
| int | colour | ||
| ) | [protected] |
draw a horizontal line
- Parameters:
-
x0 horizontal start x1 horizontal stop y vertical position color 16 bit color
Definition at line 351 of file SPI_TFT.cpp.
| void line | ( | int | x0, |
| int | y0, | ||
| int | x1, | ||
| int | y1, | ||
| int | colour | ||
| ) |
draw a 1 pixel line
- Parameters:
-
x0,y0 start point x1,y1 stop point color 16 bit color
Definition at line 404 of file SPI_TFT.cpp.
| void locate | ( | int | x, |
| int | y | ||
| ) | [virtual] |
setup cursor position
- Parameters:
-
x x-position (top left) y y-position
Definition at line 524 of file SPI_TFT.cpp.
| void pixel | ( | int | x, |
| int | y, | ||
| int | colour | ||
| ) | [virtual] |
Draw a pixel at x,y with color.
- Parameters:
-
x horizontal position y vertical position color 16 bit pixel color
Definition at line 248 of file SPI_TFT.cpp.
| unsigned short rd_dat | ( | void | ) | [protected] |
Read data from the LCD controller.
- Returns:
- data from LCD controller
Definition at line 120 of file SPI_TFT.cpp.
| unsigned short rd_reg | ( | unsigned char | reg ) | [protected] |
Read a LCD register.
- Parameters:
-
reg register to be read
- Returns:
- value of the register
Definition at line 144 of file SPI_TFT.cpp.
| void rect | ( | int | x0, |
| int | y0, | ||
| int | x1, | ||
| int | y1, | ||
| int | colour | ||
| ) |
draw a rect
- Parameters:
-
x0,y0 top left corner x1,y1 down right corner color 16 bit color *
Definition at line 476 of file SPI_TFT.cpp.
| int rows | ( | void | ) | [virtual] |
calculate the max number of columns
- Returns:
- max column depends on actual font size
Definition at line 538 of file SPI_TFT.cpp.
| void set_font | ( | unsigned char * | f ) |
select the font to use
- Parameters:
-
f pointer to font array
font array can created with GLCD Font Creator from http://www.mikroe.com you have to add 4 parameter at the beginning of the font array to use:
- the number of byte / char
- the vertial size in pixel
- the horizontal size in pixel
- the number of byte per vertical line you also have to change the array to char[]
Definition at line 620 of file SPI_TFT.cpp.
| void set_orientation | ( | unsigned int | o ) |
Set the orientation of the screen x,y: 0,0 is always top left.
- Parameters:
-
o direction to use the screen (0-3) 90� Steps
Definition at line 74 of file SPI_TFT.cpp.
| void tft_reset | ( | ) | [protected] |
Init the HX8347D controller.
Definition at line 151 of file SPI_TFT.cpp.
| void vline | ( | int | y0, |
| int | y1, | ||
| int | x, | ||
| int | colour | ||
| ) | [protected] |
draw a vertical line
- Parameters:
-
x horizontal position y0 vertical start y1 vertical stop color 16 bit color
Definition at line 377 of file SPI_TFT.cpp.
| int width | ( | ) | [virtual] |
Get the width of the screen in pixel.
- Parameters:
-
@returns width of screen in pixel
Definition at line 60 of file SPI_TFT.cpp.
| void window | ( | unsigned int | x, |
| unsigned int | y, | ||
| unsigned int | w, | ||
| unsigned int | h | ||
| ) | [protected, virtual] |
Set draw window region.
- Parameters:
-
x horizontal position y vertical position w window width in pixel h window height in pixels
Definition at line 272 of file SPI_TFT.cpp.
| void WindowMax | ( | void | ) | [protected] |
Set draw window region to whole screen.
Definition at line 285 of file SPI_TFT.cpp.
| void wr_cmd | ( | unsigned char | value ) | [protected] |
Write a command the LCD controller.
- Parameters:
-
cmd,: command to be written
Definition at line 97 of file SPI_TFT.cpp.
| void wr_dat | ( | unsigned char | value ) | [protected] |
Write data to the LCD controller.
- Parameters:
-
dat data written to LCD controller
Definition at line 107 of file SPI_TFT.cpp.
| void wr_dat_only | ( | unsigned short | dat ) | [protected] |
Start data sequence to the LCD controller.
Stop of data writing to the LCD controller write data to the LCD controller
- Parameters:
-
data to be written *
| void wr_reg | ( | unsigned char | reg, |
| unsigned char | val | ||
| ) | [protected] |
Write a value to the to a LCD register.
- Parameters:
-
reg register to be written val data to be written
Definition at line 130 of file SPI_TFT.cpp.
Generated on Sun Jul 17 2022 11:36:08 by
1.7.2