HX8347D LCD

Fork of HX8347D by k og

Committer:
og
Date:
Mon Aug 29 05:44:47 2016 +0000
Revision:
1:8dfbf62450e6
Parent:
0:d82fa4a20501
Child:
2:11512f68bcc8
bmp ???

Who changed what in which revision?

UserRevisionLine numberNew contents of line
og 1:8dfbf62450e6 1 /*
og 1:8dfbf62450e6 2
og 1:8dfbf62450e6 3 reference
og 1:8dfbf62450e6 4 https://github.com/yamsam/TFTLCD_ST7781
og 1:8dfbf62450e6 5 https://learn.adafruit.com/2-8-tft-touchscreen/downloads
og 1:8dfbf62450e6 6 https://github.com/adafruit/TFTLCD-Library
og 1:8dfbf62450e6 7
og 1:8dfbf62450e6 8
og 1:8dfbf62450e6 9 */
og 0:d82fa4a20501 10 #ifndef MBED_HX8347D_H
og 0:d82fa4a20501 11 #define MBED_HX8347D_H
og 0:d82fa4a20501 12 // register names from Peter Barrett's Microtouch code
og 0:d82fa4a20501 13 #include "mbed.h"
og 1:8dfbf62450e6 14
og 1:8dfbf62450e6 15 #define HX8347D_COL_AD_START2 0x02
og 1:8dfbf62450e6 16 #define HX8347D_COL_AD_START1 0x03
og 1:8dfbf62450e6 17 #define HX8347D_COL_AD_END2 0x04
og 1:8dfbf62450e6 18 #define HX8347D_COL_AD_END1 0x05
og 1:8dfbf62450e6 19 #define HX8347D_ROW_AD_START2 0x06
og 1:8dfbf62450e6 20 #define HX8347D_ROW_AD_START1 0x07
og 1:8dfbf62450e6 21 #define HX8347D_ROW_AD_END2 0x08
og 1:8dfbf62450e6 22 #define HX8347D_ROW_AD_END1 0x09
og 1:8dfbf62450e6 23 #define HX8347D_MEM_ACC_CTRL 0x16
og 1:8dfbf62450e6 24 #define HX8347D_SRAM_WR_CTRL 0x22
og 1:8dfbf62450e6 25
og 1:8dfbf62450e6 26 #define swap(a, b) { int16_t t = a; a = b; b = t; }
og 0:d82fa4a20501 27 class HX8347D
og 0:d82fa4a20501 28 {
og 0:d82fa4a20501 29 public:
og 0:d82fa4a20501 30 HX8347D(
og 0:d82fa4a20501 31 PinName rd, PinName wr, PinName rs, PinName cs, PinName rst,
og 0:d82fa4a20501 32 PinName d0, PinName d1, PinName d2, PinName d3,
og 0:d82fa4a20501 33 PinName d4, PinName d5, PinName d6, PinName d7
og 0:d82fa4a20501 34 );
og 0:d82fa4a20501 35 ~HX8347D(){};
og 1:8dfbf62450e6 36
og 1:8dfbf62450e6 37 size_t println(char *c);
og 1:8dfbf62450e6 38
og 1:8dfbf62450e6 39 uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
og 1:8dfbf62450e6 40
og 1:8dfbf62450e6 41 // drawing primitives!
og 1:8dfbf62450e6 42 void drawPixel(uint16_t x, uint16_t y, uint16_t color);
og 1:8dfbf62450e6 43 void fillScreen(uint16_t color);
og 1:8dfbf62450e6 44 void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
og 1:8dfbf62450e6 45 void drawFastLine(uint16_t x0, uint16_t y0, uint16_t l, uint16_t color, uint8_t flag);
og 1:8dfbf62450e6 46 void drawVerticalLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color);
og 1:8dfbf62450e6 47 void drawHorizontalLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color);
og 1:8dfbf62450e6 48 void drawTriangle(uint16_t x0, uint16_t y0,
og 1:8dfbf62450e6 49 uint16_t x1, uint16_t y1,
og 1:8dfbf62450e6 50 uint16_t x2, uint16_t y2, uint16_t color);
og 1:8dfbf62450e6 51 void fillTriangle(int32_t x0, int32_t y0,
og 1:8dfbf62450e6 52 int32_t x1, int32_t y1,
og 1:8dfbf62450e6 53 int32_t x2, int32_t y2,
og 1:8dfbf62450e6 54 uint16_t color);
og 1:8dfbf62450e6 55
og 1:8dfbf62450e6 56 void drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
og 1:8dfbf62450e6 57
og 1:8dfbf62450e6 58 void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
og 1:8dfbf62450e6 59 void drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);
og 1:8dfbf62450e6 60 void fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);
og 1:8dfbf62450e6 61 void drawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);
og 1:8dfbf62450e6 62 void fillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);
og 1:8dfbf62450e6 63
og 1:8dfbf62450e6 64 void setCursor(uint16_t x, uint16_t y);
og 1:8dfbf62450e6 65 void setTextColor(uint16_t c);
og 1:8dfbf62450e6 66 void setTextSize(uint8_t s);
og 1:8dfbf62450e6 67 virtual size_t write(uint8_t);
og 1:8dfbf62450e6 68
og 1:8dfbf62450e6 69 void drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint8_t s = 1);
og 1:8dfbf62450e6 70 void drawString(uint16_t x, uint16_t y, char *c, uint16_t color, uint8_t s = 1);
og 1:8dfbf62450e6 71
og 1:8dfbf62450e6 72 // commands
og 1:8dfbf62450e6 73 void initDisplay(void);
og 1:8dfbf62450e6 74 void goHome(void);
og 1:8dfbf62450e6 75 void goTo(uint16_t x, uint16_t y);
og 1:8dfbf62450e6 76 void reset(void);
og 1:8dfbf62450e6 77 void setRotation(uint8_t x);
og 1:8dfbf62450e6 78 uint8_t getRotation();
og 0:d82fa4a20501 79
og 1:8dfbf62450e6 80 void BlockWrite(uint16_t Xstart,uint16_t Xend,uint16_t Ystart,uint16_t Yend);
og 1:8dfbf62450e6 81 void DispColor(uint16_t color);
og 0:d82fa4a20501 82
og 1:8dfbf62450e6 83 // low level
og 1:8dfbf62450e6 84 void writeData(uint16_t data) {
og 1:8dfbf62450e6 85 _write(1, data);
og 1:8dfbf62450e6 86 };
og 1:8dfbf62450e6 87 void writeCommand(uint16_t data) {
og 1:8dfbf62450e6 88 _write(0, data);
og 1:8dfbf62450e6 89 };
og 1:8dfbf62450e6 90
og 1:8dfbf62450e6 91 uint16_t readData(void);
og 1:8dfbf62450e6 92 uint16_t readRegister(uint16_t addr);
og 1:8dfbf62450e6 93 void writeRegister(uint16_t addr, uint16_t data);
og 1:8dfbf62450e6 94
og 1:8dfbf62450e6 95 uint16_t width();
og 1:8dfbf62450e6 96 uint16_t height();
og 1:8dfbf62450e6 97 static const uint16_t TFTWIDTH = 240;
og 1:8dfbf62450e6 98 static const uint16_t TFTHEIGHT = 320;
og 1:8dfbf62450e6 99
og 1:8dfbf62450e6 100 void writeData_unsafe(uint16_t d);
og 1:8dfbf62450e6 101
og 1:8dfbf62450e6 102 void setWriteDir(void);
og 1:8dfbf62450e6 103 void setReadDir(void);
og 1:8dfbf62450e6 104
og 1:8dfbf62450e6 105 void write8(uint8_t d);
og 1:8dfbf62450e6 106
og 1:8dfbf62450e6 107 void calcGRAMPosition(uint16_t *posx, uint16_t *posy);
og 1:8dfbf62450e6 108 void getViewport(uint16_t *bx, uint16_t *by, uint16_t *ex, uint16_t *ey);
og 1:8dfbf62450e6 109 void setViewport(uint16_t bx, uint16_t by, uint16_t ex, uint16_t ey);
og 1:8dfbf62450e6 110 void setDefaultViewport();
og 1:8dfbf62450e6 111
og 0:d82fa4a20501 112 private:
og 1:8dfbf62450e6 113 void drawCircleHelper(uint16_t x0, uint16_t y0, uint16_t r, uint8_t corner, uint16_t color);
og 1:8dfbf62450e6 114 void fillCircleHelper(uint16_t x0, uint16_t y0, uint16_t r, uint8_t corner, uint16_t delta, uint16_t color);
og 1:8dfbf62450e6 115 uint8_t read8(void);
og 1:8dfbf62450e6 116
og 1:8dfbf62450e6 117 DigitalOut _rd, _wr, _rs, _cs, _rst;
og 0:d82fa4a20501 118 BusInOut _d;
og 1:8dfbf62450e6 119
og 1:8dfbf62450e6 120 void _write(uint16_t rs, uint16_t d);
og 1:8dfbf62450e6 121 uint16_t _width, _height;
og 1:8dfbf62450e6 122 uint8_t textsize;
og 1:8dfbf62450e6 123 uint16_t cursor_x, cursor_y;
og 1:8dfbf62450e6 124 uint16_t textcolor;
og 1:8dfbf62450e6 125 uint8_t rotation;
og 1:8dfbf62450e6 126
og 1:8dfbf62450e6 127 };
og 1:8dfbf62450e6 128 #endif