Library for Aitendo 2.6 inch TFT shield for Arduino-UNO and Nucleo

Dependents:   Nucleo_Pic_Viewer

Committer:
h_nari
Date:
Wed Apr 30 08:05:41 2014 +0000
Revision:
0:f53f19ac1457
First Version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
h_nari 0:f53f19ac1457 1 #include "AitendoTFT.h"
h_nari 0:f53f19ac1457 2 #include "mbed_debug.h"
h_nari 0:f53f19ac1457 3
h_nari 0:f53f19ac1457 4
h_nari 0:f53f19ac1457 5 #define TFTLCD_GRAM_HOR_AD 0x20
h_nari 0:f53f19ac1457 6 #define TFTLCD_GRAM_VER_AD 0x21
h_nari 0:f53f19ac1457 7 #define TFTLCD_RW_GRAM 0x22
h_nari 0:f53f19ac1457 8 #define TFTLCD_DELAYCMD 0xFF
h_nari 0:f53f19ac1457 9
h_nari 0:f53f19ac1457 10 static const unsigned short _regValues[] = {
h_nari 0:f53f19ac1457 11 0x0001,0x0100,
h_nari 0:f53f19ac1457 12 0x0002,0x0700,
h_nari 0:f53f19ac1457 13 0x0003,0x1030,
h_nari 0:f53f19ac1457 14 0x0008,0x0302,
h_nari 0:f53f19ac1457 15 0x0009,0x0000,
h_nari 0:f53f19ac1457 16 0x000A,0x0008,
h_nari 0:f53f19ac1457 17 //*******POWER CONTROL REGISTER INITIAL*******//
h_nari 0:f53f19ac1457 18 0x0010,0x0790,
h_nari 0:f53f19ac1457 19 0x0011,0x0005,
h_nari 0:f53f19ac1457 20 0x0012,0x0000,
h_nari 0:f53f19ac1457 21 0x0013,0x0000,
h_nari 0:f53f19ac1457 22 TFTLCD_DELAYCMD, 50, //delayms(50,
h_nari 0:f53f19ac1457 23 //********POWER SUPPPLY STARTUP 1 SETTING*******//
h_nari 0:f53f19ac1457 24 0x0010,0x12B0,
h_nari 0:f53f19ac1457 25 TFTLCD_DELAYCMD, 50, // delayms(50,
h_nari 0:f53f19ac1457 26 0x0011,0x0007,
h_nari 0:f53f19ac1457 27 //delayms(50,
h_nari 0:f53f19ac1457 28 //********POWER SUPPLY STARTUP 2 SETTING******//
h_nari 0:f53f19ac1457 29 0x0012,0x008C,
h_nari 0:f53f19ac1457 30 0x0013,0x1700,
h_nari 0:f53f19ac1457 31 0x0029,0x0022,
h_nari 0:f53f19ac1457 32 TFTLCD_DELAYCMD, 50, // delayms(50,
h_nari 0:f53f19ac1457 33 //******GAMMA CLUSTER SETTING******//
h_nari 0:f53f19ac1457 34 0x0030,0x0000,
h_nari 0:f53f19ac1457 35 0x0031,0x0505,
h_nari 0:f53f19ac1457 36 0x0032,0x0205,
h_nari 0:f53f19ac1457 37 0x0035,0x0206,
h_nari 0:f53f19ac1457 38 0x0036,0x0408,
h_nari 0:f53f19ac1457 39 0x0037,0x0000,
h_nari 0:f53f19ac1457 40 0x0038,0x0504,
h_nari 0:f53f19ac1457 41 0x0039,0x0206,
h_nari 0:f53f19ac1457 42 0x003C,0x0206,
h_nari 0:f53f19ac1457 43 0x003D,0x0408,
h_nari 0:f53f19ac1457 44 // -----------DISPLAY WINDOWS 240*320-------------//
h_nari 0:f53f19ac1457 45 0x0050,0x0000,
h_nari 0:f53f19ac1457 46 0x0051,0x00EF,
h_nari 0:f53f19ac1457 47 0x0052,0x0000,
h_nari 0:f53f19ac1457 48 0x0053,0x013F,
h_nari 0:f53f19ac1457 49 //-----FRAME RATE SETTING-------//
h_nari 0:f53f19ac1457 50 0x0060,0xA700,
h_nari 0:f53f19ac1457 51 0x0061,0x0001,
h_nari 0:f53f19ac1457 52 0x0090,0x0033, //RTNI setting
h_nari 0:f53f19ac1457 53 //-------DISPLAY ON------//
h_nari 0:f53f19ac1457 54 0x0007,0x0133, 0x0001,0x0100,
h_nari 0:f53f19ac1457 55 0x0002,0x0700,
h_nari 0:f53f19ac1457 56 0x0003,0x1030,
h_nari 0:f53f19ac1457 57 0x0008,0x0302,
h_nari 0:f53f19ac1457 58 0x0009,0x0000,
h_nari 0:f53f19ac1457 59 0x000A,0x0008,
h_nari 0:f53f19ac1457 60 //*******POWER CONTROL REGISTER INITIAL*******//
h_nari 0:f53f19ac1457 61 0x0010,0x0790,
h_nari 0:f53f19ac1457 62 0x0011,0x0005,
h_nari 0:f53f19ac1457 63 0x0012,0x0000,
h_nari 0:f53f19ac1457 64 0x0013,0x0000,
h_nari 0:f53f19ac1457 65 //delayms(50,
h_nari 0:f53f19ac1457 66 //********POWER SUPPPLY STARTUP 1 SETTING*******//
h_nari 0:f53f19ac1457 67 0x0010,0x12B0,
h_nari 0:f53f19ac1457 68 TFTLCD_DELAYCMD, 50, // delayms(50,
h_nari 0:f53f19ac1457 69 0x0011,0x0007,
h_nari 0:f53f19ac1457 70 TFTLCD_DELAYCMD, 50, // delayms(50,
h_nari 0:f53f19ac1457 71 //********POWER SUPPLY STARTUP 2 SETTING******//
h_nari 0:f53f19ac1457 72 0x0012,0x008C,
h_nari 0:f53f19ac1457 73 0x0013,0x1700,
h_nari 0:f53f19ac1457 74 0x0029,0x0022,
h_nari 0:f53f19ac1457 75 TFTLCD_DELAYCMD, 50, // delayms(50,
h_nari 0:f53f19ac1457 76 //******GAMMA CLUSTER SETTING******//
h_nari 0:f53f19ac1457 77 0x0030,0x0000,
h_nari 0:f53f19ac1457 78 0x0031,0x0505,
h_nari 0:f53f19ac1457 79 0x0032,0x0205,
h_nari 0:f53f19ac1457 80 0x0035,0x0206,
h_nari 0:f53f19ac1457 81 0x0036,0x0408,
h_nari 0:f53f19ac1457 82 0x0037,0x0000,
h_nari 0:f53f19ac1457 83 0x0038,0x0504,
h_nari 0:f53f19ac1457 84 0x0039,0x0206,
h_nari 0:f53f19ac1457 85 0x003C,0x0206,
h_nari 0:f53f19ac1457 86 0x003D,0x0408,
h_nari 0:f53f19ac1457 87 // -----------DISPLAY WINDOWS 240*320-------------//
h_nari 0:f53f19ac1457 88 0x0050,0x0000,
h_nari 0:f53f19ac1457 89 0x0051,0x00EF,
h_nari 0:f53f19ac1457 90 0x0052,0x0000,
h_nari 0:f53f19ac1457 91 0x0053,0x013F,
h_nari 0:f53f19ac1457 92 //-----FRAME RATE SETTING-------//
h_nari 0:f53f19ac1457 93 0x0060,0xA700,
h_nari 0:f53f19ac1457 94 0x0061,0x0001,
h_nari 0:f53f19ac1457 95 0x0090,0x0033, //RTNI setting
h_nari 0:f53f19ac1457 96 //-------DISPLAY ON------//
h_nari 0:f53f19ac1457 97 0x0007,0x0133,
h_nari 0:f53f19ac1457 98 };
h_nari 0:f53f19ac1457 99
h_nari 0:f53f19ac1457 100
h_nari 0:f53f19ac1457 101 AitendoTFT::AitendoTFT(void) :
h_nari 0:f53f19ac1457 102 _rst(A4), _cs(A3), _rs(A2), _wr(A1), _rd(A0),_d( D8, D9, D2, D3, D4, D5, D6, D7)
h_nari 0:f53f19ac1457 103 {
h_nari 0:f53f19ac1457 104 _init();
h_nari 0:f53f19ac1457 105 }
h_nari 0:f53f19ac1457 106
h_nari 0:f53f19ac1457 107 void AitendoTFT::_init(void)
h_nari 0:f53f19ac1457 108 {
h_nari 0:f53f19ac1457 109 _rst = 1;
h_nari 0:f53f19ac1457 110 _cs = 1;
h_nari 0:f53f19ac1457 111 _wr = 1;
h_nari 0:f53f19ac1457 112 _rd = 1;
h_nari 0:f53f19ac1457 113 _d.input();
h_nari 0:f53f19ac1457 114
h_nari 0:f53f19ac1457 115 _reset();
h_nari 0:f53f19ac1457 116
h_nari 0:f53f19ac1457 117 for(int i=0; i < sizeof(_regValues)/sizeof(_regValues[0]); i+= 2) {
h_nari 0:f53f19ac1457 118 int a = _regValues[i];
h_nari 0:f53f19ac1457 119 int d = _regValues[i+1];
h_nari 0:f53f19ac1457 120 if(a == TFTLCD_DELAYCMD)
h_nari 0:f53f19ac1457 121 wait_ms(d);
h_nari 0:f53f19ac1457 122 else
h_nari 0:f53f19ac1457 123 _reg_write(a, d);
h_nari 0:f53f19ac1457 124 }
h_nari 0:f53f19ac1457 125 }
h_nari 0:f53f19ac1457 126
h_nari 0:f53f19ac1457 127 void AitendoTFT::_reset(void)
h_nari 0:f53f19ac1457 128 {
h_nari 0:f53f19ac1457 129 _rst = 0;
h_nari 0:f53f19ac1457 130 wait_ms(2);
h_nari 0:f53f19ac1457 131 _rst = 1;
h_nari 0:f53f19ac1457 132
h_nari 0:f53f19ac1457 133 _data_write(0);
h_nari 0:f53f19ac1457 134 _data_write(0);
h_nari 0:f53f19ac1457 135 _data_write(0);
h_nari 0:f53f19ac1457 136 _data_write(0);
h_nari 0:f53f19ac1457 137 }
h_nari 0:f53f19ac1457 138
h_nari 0:f53f19ac1457 139 void AitendoTFT::_write(int rs, int d)
h_nari 0:f53f19ac1457 140 {
h_nari 0:f53f19ac1457 141 _cs = 0;
h_nari 0:f53f19ac1457 142 _rs = rs;
h_nari 0:f53f19ac1457 143 _rd = 1;
h_nari 0:f53f19ac1457 144 _wr = 1;
h_nari 0:f53f19ac1457 145 _d.output();
h_nari 0:f53f19ac1457 146
h_nari 0:f53f19ac1457 147 _d = d >> 8;
h_nari 0:f53f19ac1457 148 _wr = 0;
h_nari 0:f53f19ac1457 149 wait_us(1); // 1us
h_nari 0:f53f19ac1457 150 _wr = 1;
h_nari 0:f53f19ac1457 151
h_nari 0:f53f19ac1457 152 _d = d;
h_nari 0:f53f19ac1457 153 _wr = 0;
h_nari 0:f53f19ac1457 154 wait_us(1); // 1us
h_nari 0:f53f19ac1457 155 _wr = 1;
h_nari 0:f53f19ac1457 156
h_nari 0:f53f19ac1457 157 _cs = 1;
h_nari 0:f53f19ac1457 158 }
h_nari 0:f53f19ac1457 159
h_nari 0:f53f19ac1457 160 void AitendoTFT::_reg_write(int addr, int data)
h_nari 0:f53f19ac1457 161 {
h_nari 0:f53f19ac1457 162 _cmd_write(addr);
h_nari 0:f53f19ac1457 163 _data_write(data);
h_nari 0:f53f19ac1457 164 }
h_nari 0:f53f19ac1457 165
h_nari 0:f53f19ac1457 166 void AitendoTFT::_pos_set(int x, int y)
h_nari 0:f53f19ac1457 167 {
h_nari 0:f53f19ac1457 168 _reg_write(TFTLCD_GRAM_HOR_AD, x);
h_nari 0:f53f19ac1457 169 _reg_write(TFTLCD_GRAM_VER_AD, y);
h_nari 0:f53f19ac1457 170 _cmd_write(TFTLCD_RW_GRAM);
h_nari 0:f53f19ac1457 171 }
h_nari 0:f53f19ac1457 172
h_nari 0:f53f19ac1457 173 void AitendoTFT::fillArea(int x0, int y0, int x1, int y1, int color)
h_nari 0:f53f19ac1457 174 {
h_nari 0:f53f19ac1457 175 for(int y=y0; y<y1; y++){
h_nari 0:f53f19ac1457 176 _pos_set(x0, y);
h_nari 0:f53f19ac1457 177 for(int x = x0; x < x1; x++)
h_nari 0:f53f19ac1457 178 _data_write(color);
h_nari 0:f53f19ac1457 179 }
h_nari 0:f53f19ac1457 180 }
h_nari 0:f53f19ac1457 181
h_nari 0:f53f19ac1457 182 void AitendoTFT::pset(int x, int y, int color)
h_nari 0:f53f19ac1457 183 {
h_nari 0:f53f19ac1457 184 if(x >= 0 && x < TFT_WIDTH && y > 0 && y < TFT_HEIGHT){
h_nari 0:f53f19ac1457 185 _pos_set(x, y);
h_nari 0:f53f19ac1457 186 _data_write(color);
h_nari 0:f53f19ac1457 187 }
h_nari 0:f53f19ac1457 188 }
h_nari 0:f53f19ac1457 189
h_nari 0:f53f19ac1457 190
h_nari 0:f53f19ac1457 191
h_nari 0:f53f19ac1457 192
h_nari 0:f53f19ac1457 193
h_nari 0:f53f19ac1457 194