aitendo T18003T01-V2,TFT1.8,SPI,FRDM-KL25Z
Dependents: FRDM_SPI18TFT_demo
Fork of ST7735_TFT by
Diff: ST7735_TFT.h
- Revision:
- 2:047ca9682450
- Parent:
- 1:967235e6fd48
--- a/ST7735_TFT.h Sun Dec 11 21:18:21 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,411 +0,0 @@ -/* mbed library for 128*160 pixel display TFT based on ST7735 LCD Controller - * ST7735 specific routines (initialization, window addressing, pixel output) - * Copyright (c) 2011 Jonne Valola - * - * WARNING !! WORK IN PROGRESS !!! - * - * Graphics routines and SPI routines derived work used with permission from: - * mbed library for 240*320 pixel display TFT based on HX8347D LCD Controller - * Copyright (c) 2011 Peter Drescher - DC2PD - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef MBED_ST7735_TFT_H -#define MBED_ST7735_TFT_H - -#include "mbed.h" -#include "GraphicsDisplay.h" - -#define RGB(r,g,b) (((r&0xF8)<<8)|((g&0xFC)<<3)|((b&0xF8)>>3)) //5 red | 6 green | 5 blue - -/*define ST7735 Commands */ - -#define ST7735_NOP 0x0 -#define ST7735_SWRESET 0x01 -#define ST7735_RDDID 0x04 -#define ST7735_RDDST 0x09 - -#define ST7735_SLPIN 0x10 -#define ST7735_SLPOUT 0x11 -#define ST7735_PTLON 0x12 -#define ST7735_NORON 0x13 - -#define ST7735_INVOFF 0x20 -#define ST7735_INVON 0x21 -#define ST7735_DISPOFF 0x28 -#define ST7735_DISPON 0x29 -#define ST7735_CASET 0x2A -#define ST7735_RASET 0x2B -#define ST7735_RAMWR 0x2C -#define ST7735_RAMRD 0x2E - -#define ST7735_COLMOD 0x3A -#define ST7735_MADCTL 0x36 - - -#define ST7735_FRMCTR1 0xB1 -#define ST7735_FRMCTR2 0xB2 -#define ST7735_FRMCTR3 0xB3 -#define ST7735_INVCTR 0xB4 -#define ST7735_DISSET5 0xB6 - -#define ST7735_PWCTR1 0xC0 -#define ST7735_PWCTR2 0xC1 -#define ST7735_PWCTR3 0xC2 -#define ST7735_PWCTR4 0xC3 -#define ST7735_PWCTR5 0xC4 -#define ST7735_VMCTR1 0xC5 - -#define ST7735_RDID1 0xDA -#define ST7735_RDID2 0xDB -#define ST7735_RDID3 0xDC -#define ST7735_RDID4 0xDD - -#define ST7735_PWCTR6 0xFC - -#define ST7735_GMCTRP1 0xE0 -#define ST7735_GMCTRN1 0xE1 - -/* some RGB color definitions */ -#define Black 0x0000 /* 0, 0, 0 */ -#define Navy 0x000F /* 0, 0, 128 */ -#define DarkGreen 0x03E0 /* 0, 128, 0 */ -#define DarkCyan 0x03EF /* 0, 128, 128 */ -#define Maroon 0x7800 /* 128, 0, 0 */ -#define Purple 0x780F /* 128, 0, 128 */ -#define Olive 0x7BE0 /* 128, 128, 0 */ -#define LightGrey 0xC618 /* 192, 192, 192 */ -#define DarkGrey 0x7BEF /* 128, 128, 128 */ -#define Blue 0x001F /* 0, 0, 255 */ -#define Green 0x07E0 /* 0, 255, 0 */ -#define Cyan 0x07FF /* 0, 255, 255 */ -#define Red 0xF800 /* 255, 0, 0 */ -#define Magenta 0xF81F /* 255, 0, 255 */ -#define Yellow 0xFFE0 /* 255, 255, 0 */ -#define White 0xFFFF /* 255, 255, 255 */ -#define Orange 0xFD20 /* 255, 165, 0 */ -#define GreenYellow 0xAFE5 /* 173, 255, 47 */ - -class ST7735_TFT : public GraphicsDisplay { - public: - - /** Create a ST7735_TFT object connected to SPI and three pins. ST7735 requires rs pin to toggle between data/command - * - * @param mosi,miso,sclk SPI - * @param cs pin connected to CS of display (called SS for 'Slave Select' in ST7735 datasheet) - * @param rs pin connected to RS of display (called D/CX in ST7735 datasheet) - * @param reset pin connected to RESET of display - * - */ - ST7735_TFT(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName rs, PinName reset,const char* name ="TFT"); - - /** Get the width of the screen in pixel - * - * @param - * @returns width of screen in pixel - * - */ - virtual int width(); - - /** Get the height of the screen in pixel - * - * @returns height of screen in pixel - * - */ - virtual int height(); - - /** Draw a pixel at x,y with color - * - * @param x horizontal position - * @param y vertical position - * @param color 16 bit pixel color - */ - virtual void pixel(int x, int y, int colour); - - /** Get colour of pixel at x,y - * - * @param x horizontal position - * @param y vertical position - */ - - int getpixel(unsigned int x, unsigned int y); - - /** draw a circle - * - * @param x0,y0 center - * @param r radius - * @param color 16 bit color * - * - */ - - void circle(int x, int y, int r, int colour); - - /** draw a filled circle - * - * @param x0,y0 center - * @param r radius - * @param color 16 bit color * - * - * use circle with different radius, - * can miss some pixel - */ - void fillcircle(int x, int y, int r, int colour); - - /** draw a 1 pixel line - * - * @param x0,y0 start point - * @param x1,y1 stop point - * @param color 16 bit color - * - */ - void line(int x0, int y0, int x1, int y1, int colour); - - /** draw a rect - * - * @param x0,y0 top left corner - * @param x1,y1 down right corner - * @param color 16 bit color - * * - */ - void rect(int x0, int y0, int x1, int y1, int colour); - - /** draw a filled rect - * - * @param x0,y0 top left corner - * @param x1,y1 down right corner - * @param color 16 bit color - * - */ - void fillrect(int x0, int y0, int x1, int y1, int colour); - - /** setup cursor position - * - * @param x x-position (top left) - * @param y y-position - */ - void locate(int x, int y); - - /** Fill the screen with _backgroun color - * - */ - virtual void cls (void); - - /** calculate the max number of char in a line - * - * @returns max columns - * depends on actual font size - * - */ - int columns(void); - - /** calculate the max number of columns - * - * @returns max column - * depends on actual font size - * - */ - int rows(void); - - /** put a char on the screen - * - * @param value char to print - * @returns printed char - * - */ - int _putc(int value); - - /** draw a character on given position out of the active font to the TFT - * - * @param x x-position of char (top left) - * @param y y-position - * @param c char to print - * - */ - virtual void character(int x, int y, int c); - - /** paint a bitmap on the TFT - * - * @param x,y : upper left corner - * @param w width of bitmap - * @param h high of bitmap - * @param *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); - */ - void Bitmap(unsigned int x, unsigned int y, unsigned int w, unsigned int h,unsigned char *bitmap); - - - /** paint a 16 bit BMP from local filesytem on the TFT (slow) - * - * @param x,y : upper left corner - * @param *Name_BMP name of the BMP file - * @returns 1 if bmp file was found and painted - * @returns -1 if bmp file was found not found - * @returns -2 if bmp file is not 16bit - * @returns -3 if bmp file is to big for screen - * @returns -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 - * - */ - - int BMP_16(unsigned int x, unsigned int y, const char *Name_BMP); - - /** Read an area from the LCD RAM to MCU RAM - * - * @param x,y : upper left corner - * @param w width of bitmap - * @param h high of bitmap - * @param *buffer pointer to the buffer - */ - - void read_area(unsigned int x, unsigned int y, unsigned int w, unsigned int h,unsigned char *buffer); - - /** select the font to use - * - * @param 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[] - * - */ - void set_font(unsigned char* f); - - /** Set the orientation of the screen - * x,y: 0,0 is always top left - * - * @param o direction to use the screen (0-3) 90� Steps - * - */ - void set_orientation(unsigned int o); - - SPI _spi; - DigitalOut _cs; - DigitalOut _rs; - DigitalOut _reset; - unsigned char* font; - -protected: - - /** draw a horizontal line - * - * @param x0 horizontal start - * @param x1 horizontal stop - * @param y vertical position - * @param color 16 bit color - * - */ - void hline(int x0, int x1, int y, int colour); - - /** draw a vertical line - * - * @param x horizontal position - * @param y0 vertical start - * @param y1 vertical stop - * @param color 16 bit color - */ - void vline(int y0, int y1, int x, int colour); - - /** Set draw window region - * - * @param x horizontal position - * @param y vertical position - * @param w window width in pixel - * @param h window height in pixels - */ - void window (unsigned int x, unsigned int y, unsigned int w, unsigned int h); - - /** Set draw window region to whole screen - * - */ - void WindowMax (void); - - /** Init the ST7735 controller - * - */ - void tft_reset(); - - /** Write data to the LCD controller - * - * @param dat data written to LCD controller - * - */ - void wr_dat(int value); - - /** Write a command the LCD controller - * - * @param cmd: command to be written - * - */ - void wr_cmd(int value); - - /** Start data sequence to the LCD controller - * - */ - void wr_dat_start(); - - /** Stop of data writing to the LCD controller - * - */ - void wr_dat_stop(); - - /** write data to the LCD controller - * - * @param data to be written - * * - */ - void wr_dat_only(unsigned short dat); - - /** Read data from the LCD controller - * - * @returns data from LCD controller - * - */ - unsigned short rd_dat(void); - - /** Write a value to the to a LCD register - * - * @param reg register to be written - * @param val data to be written - */ - void wr_reg (unsigned char reg, unsigned short val); - - /** Read a LCD register - * - * @param reg register to be read - * @returns value of the register - */ - unsigned short rd_reg (unsigned char reg); - - unsigned int orientation; - unsigned int char_x; - unsigned int char_y; - - -}; - -#endif