Modified version of the DmTftLibrary, optimized for the LPC4088 Experiment Base Board

Dependents:   lpc4088_ebb_dm_calc lpc4088_ebb_dm_bubbles

Fork of DmTftLibrary by Display Module

Committer:
displaymodule
Date:
Tue May 13 09:31:24 2014 +0000
Revision:
0:d6ff5fa503e8
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
displaymodule 0:d6ff5fa503e8 1 /**********************************************************************************************
displaymodule 0:d6ff5fa503e8 2 Copyright (c) 2014 DisplayModule. All rights reserved.
displaymodule 0:d6ff5fa503e8 3
displaymodule 0:d6ff5fa503e8 4 Redistribution and use of this source code, part of this source code or any compiled binary
displaymodule 0:d6ff5fa503e8 5 based on this source code is permitted as long as the above copyright notice and following
displaymodule 0:d6ff5fa503e8 6 disclaimer is retained.
displaymodule 0:d6ff5fa503e8 7
displaymodule 0:d6ff5fa503e8 8 DISCLAIMER:
displaymodule 0:d6ff5fa503e8 9 THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT. DISPLAYMODULE ASSUMES
displaymodule 0:d6ff5fa503e8 10 NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE.
displaymodule 0:d6ff5fa503e8 11 ********************************************************************************************/
displaymodule 0:d6ff5fa503e8 12
displaymodule 0:d6ff5fa503e8 13 #include "DmTftHX8353C.h"
displaymodule 0:d6ff5fa503e8 14
displaymodule 0:d6ff5fa503e8 15 DmTftHX8353C::DmTftHX8353C(uint8_t mosi, uint8_t clk, uint8_t cs, uint8_t dc, uint8_t rst) : DmTftBase(128,160) {
displaymodule 0:d6ff5fa503e8 16 _mosi = mosi;
displaymodule 0:d6ff5fa503e8 17 _clk = clk;
displaymodule 0:d6ff5fa503e8 18 _cs = cs;
displaymodule 0:d6ff5fa503e8 19 _dc = dc;
displaymodule 0:d6ff5fa503e8 20 _rst = rst;
displaymodule 0:d6ff5fa503e8 21 }
displaymodule 0:d6ff5fa503e8 22
displaymodule 0:d6ff5fa503e8 23 DmTftHX8353C::~DmTftHX8353C() {
displaymodule 0:d6ff5fa503e8 24 #if defined (DM_TOOLCHAIN_MBED)
displaymodule 0:d6ff5fa503e8 25 delete _pinMOSI;
displaymodule 0:d6ff5fa503e8 26 delete _pinCLK;
displaymodule 0:d6ff5fa503e8 27 delete _pinCS;
displaymodule 0:d6ff5fa503e8 28 delete _pinDC;
displaymodule 0:d6ff5fa503e8 29 delete _pinRST;
displaymodule 0:d6ff5fa503e8 30
displaymodule 0:d6ff5fa503e8 31 _pinMOSI = NULL;
displaymodule 0:d6ff5fa503e8 32 _pinCLK = NULL;
displaymodule 0:d6ff5fa503e8 33 _pinCS = NULL;
displaymodule 0:d6ff5fa503e8 34 _pinDC = NULL;
displaymodule 0:d6ff5fa503e8 35 _pinRST = NULL;
displaymodule 0:d6ff5fa503e8 36 #endif
displaymodule 0:d6ff5fa503e8 37 }
displaymodule 0:d6ff5fa503e8 38
displaymodule 0:d6ff5fa503e8 39 void DmTftHX8353C::writeBus(uint8_t data) {
displaymodule 0:d6ff5fa503e8 40 if (data & 0x80) {
displaymodule 0:d6ff5fa503e8 41 sbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 42 }
displaymodule 0:d6ff5fa503e8 43 else {
displaymodule 0:d6ff5fa503e8 44 cbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 45 }
displaymodule 0:d6ff5fa503e8 46 pulse_low(_pinCLK, _bitmaskCLK);
displaymodule 0:d6ff5fa503e8 47
displaymodule 0:d6ff5fa503e8 48 if (data & 0x40) {
displaymodule 0:d6ff5fa503e8 49 sbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 50 }
displaymodule 0:d6ff5fa503e8 51 else {
displaymodule 0:d6ff5fa503e8 52 cbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 53 }
displaymodule 0:d6ff5fa503e8 54 pulse_low(_pinCLK, _bitmaskCLK);
displaymodule 0:d6ff5fa503e8 55
displaymodule 0:d6ff5fa503e8 56 if (data & 0x20) {
displaymodule 0:d6ff5fa503e8 57 sbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 58 }
displaymodule 0:d6ff5fa503e8 59 else {
displaymodule 0:d6ff5fa503e8 60 cbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 61 }
displaymodule 0:d6ff5fa503e8 62 pulse_low(_pinCLK, _bitmaskCLK);
displaymodule 0:d6ff5fa503e8 63
displaymodule 0:d6ff5fa503e8 64 if (data & 0x10) {
displaymodule 0:d6ff5fa503e8 65 sbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 66 }
displaymodule 0:d6ff5fa503e8 67 else {
displaymodule 0:d6ff5fa503e8 68 cbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 69 }
displaymodule 0:d6ff5fa503e8 70 pulse_low(_pinCLK, _bitmaskCLK);
displaymodule 0:d6ff5fa503e8 71
displaymodule 0:d6ff5fa503e8 72 if (data & 0x08) {
displaymodule 0:d6ff5fa503e8 73 sbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 74 }
displaymodule 0:d6ff5fa503e8 75 else {
displaymodule 0:d6ff5fa503e8 76 cbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 77 }
displaymodule 0:d6ff5fa503e8 78 pulse_low(_pinCLK, _bitmaskCLK);
displaymodule 0:d6ff5fa503e8 79
displaymodule 0:d6ff5fa503e8 80 if (data & 0x04) {
displaymodule 0:d6ff5fa503e8 81 sbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 82 }
displaymodule 0:d6ff5fa503e8 83 else {
displaymodule 0:d6ff5fa503e8 84 cbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 85 }
displaymodule 0:d6ff5fa503e8 86 pulse_low(_pinCLK, _bitmaskCLK);
displaymodule 0:d6ff5fa503e8 87
displaymodule 0:d6ff5fa503e8 88 if (data & 0x02) {
displaymodule 0:d6ff5fa503e8 89 sbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 90 }
displaymodule 0:d6ff5fa503e8 91 else {
displaymodule 0:d6ff5fa503e8 92 cbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 93 }
displaymodule 0:d6ff5fa503e8 94 pulse_low(_pinCLK, _bitmaskCLK);
displaymodule 0:d6ff5fa503e8 95
displaymodule 0:d6ff5fa503e8 96 if (data & 0x01) {
displaymodule 0:d6ff5fa503e8 97 sbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 98 }
displaymodule 0:d6ff5fa503e8 99 else {
displaymodule 0:d6ff5fa503e8 100 cbi(_pinMOSI, _bitmaskMOSI);
displaymodule 0:d6ff5fa503e8 101 }
displaymodule 0:d6ff5fa503e8 102 pulse_low(_pinCLK, _bitmaskCLK);
displaymodule 0:d6ff5fa503e8 103 }
displaymodule 0:d6ff5fa503e8 104
displaymodule 0:d6ff5fa503e8 105 void DmTftHX8353C::sendCommand(uint8_t index) {
displaymodule 0:d6ff5fa503e8 106 cbi(_pinDC, _bitmaskDC);
displaymodule 0:d6ff5fa503e8 107 writeBus(index);
displaymodule 0:d6ff5fa503e8 108 }
displaymodule 0:d6ff5fa503e8 109
displaymodule 0:d6ff5fa503e8 110 void DmTftHX8353C::send8BitData(uint8_t data) {
displaymodule 0:d6ff5fa503e8 111 sbi(_pinDC, _bitmaskDC);
displaymodule 0:d6ff5fa503e8 112 writeBus(data);
displaymodule 0:d6ff5fa503e8 113 }
displaymodule 0:d6ff5fa503e8 114
displaymodule 0:d6ff5fa503e8 115 void DmTftHX8353C::sendData(uint16_t data) {
displaymodule 0:d6ff5fa503e8 116 sbi(_pinDC, _bitmaskDC);
displaymodule 0:d6ff5fa503e8 117 writeBus(data>>8);
displaymodule 0:d6ff5fa503e8 118 writeBus(data);
displaymodule 0:d6ff5fa503e8 119 }
displaymodule 0:d6ff5fa503e8 120
displaymodule 0:d6ff5fa503e8 121 void DmTftHX8353C::setAddress(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
displaymodule 0:d6ff5fa503e8 122 sendCommand(0x2A); // SetColumn
displaymodule 0:d6ff5fa503e8 123 sendData(x0);
displaymodule 0:d6ff5fa503e8 124 sendData(x1);
displaymodule 0:d6ff5fa503e8 125 sendCommand(0x2B); // SetPage
displaymodule 0:d6ff5fa503e8 126 sendData(y0);
displaymodule 0:d6ff5fa503e8 127 sendData(y1);
displaymodule 0:d6ff5fa503e8 128
displaymodule 0:d6ff5fa503e8 129 sendCommand(0x2c);
displaymodule 0:d6ff5fa503e8 130 }
displaymodule 0:d6ff5fa503e8 131
displaymodule 0:d6ff5fa503e8 132
displaymodule 0:d6ff5fa503e8 133 void DmTftHX8353C::init (void) {
displaymodule 0:d6ff5fa503e8 134 setTextColor(BLACK, WHITE);
displaymodule 0:d6ff5fa503e8 135 #if defined (DM_TOOLCHAIN_ARDUINO)
displaymodule 0:d6ff5fa503e8 136 _pinMOSI= portOutputRegister(digitalPinToPort(_mosi));
displaymodule 0:d6ff5fa503e8 137 _bitmaskMOSI= digitalPinToBitMask(_mosi);
displaymodule 0:d6ff5fa503e8 138 _pinCLK= portOutputRegister(digitalPinToPort(_clk));
displaymodule 0:d6ff5fa503e8 139 _bitmaskCLK= digitalPinToBitMask(_clk);
displaymodule 0:d6ff5fa503e8 140 _pinCS = portOutputRegister(digitalPinToPort(_cs));
displaymodule 0:d6ff5fa503e8 141 _bitmaskCS = digitalPinToBitMask(_cs);
displaymodule 0:d6ff5fa503e8 142 _pinDC = portOutputRegister(digitalPinToPort(_dc));
displaymodule 0:d6ff5fa503e8 143 _bitmaskDC = digitalPinToBitMask(_dc);
displaymodule 0:d6ff5fa503e8 144 _pinRST = portOutputRegister(digitalPinToPort(_rst));
displaymodule 0:d6ff5fa503e8 145 _bitmaskRST = digitalPinToBitMask(_rst);
displaymodule 0:d6ff5fa503e8 146
displaymodule 0:d6ff5fa503e8 147 pinMode(_mosi,OUTPUT);
displaymodule 0:d6ff5fa503e8 148 pinMode(_clk,OUTPUT);
displaymodule 0:d6ff5fa503e8 149 pinMode(_cs,OUTPUT);
displaymodule 0:d6ff5fa503e8 150 pinMode(_dc,OUTPUT);
displaymodule 0:d6ff5fa503e8 151 pinMode(_rst,OUTPUT);
displaymodule 0:d6ff5fa503e8 152 #elif defined (DM_TOOLCHAIN_MBED)
displaymodule 0:d6ff5fa503e8 153 _pinMOSI = new DigitalOut((PinName)_mosi);
displaymodule 0:d6ff5fa503e8 154 _pinCLK = new DigitalOut((PinName)_clk);
displaymodule 0:d6ff5fa503e8 155 _pinCS = new DigitalOut((PinName)_cs);
displaymodule 0:d6ff5fa503e8 156 _pinDC = new DigitalOut((PinName)_dc);
displaymodule 0:d6ff5fa503e8 157 _pinRST = new DigitalOut((PinName)_rst);
displaymodule 0:d6ff5fa503e8 158 #endif
displaymodule 0:d6ff5fa503e8 159
displaymodule 0:d6ff5fa503e8 160 sbi(_pinRST, _bitmaskRST);
displaymodule 0:d6ff5fa503e8 161 delay(5);
displaymodule 0:d6ff5fa503e8 162 cbi(_pinRST, _bitmaskRST);
displaymodule 0:d6ff5fa503e8 163 delay(15);
displaymodule 0:d6ff5fa503e8 164 sbi(_pinRST, _bitmaskRST);
displaymodule 0:d6ff5fa503e8 165 delay(15);
displaymodule 0:d6ff5fa503e8 166 cbi(_pinCS, _bitmaskCS);
displaymodule 0:d6ff5fa503e8 167
displaymodule 0:d6ff5fa503e8 168 sendCommand(0xB9); // HX8353C INIT
displaymodule 0:d6ff5fa503e8 169 send8BitData(0xFF);
displaymodule 0:d6ff5fa503e8 170 send8BitData(0x83);
displaymodule 0:d6ff5fa503e8 171 send8BitData(0x53);
displaymodule 0:d6ff5fa503e8 172
displaymodule 0:d6ff5fa503e8 173 sendCommand(0xB0);
displaymodule 0:d6ff5fa503e8 174 send8BitData(0x3C);
displaymodule 0:d6ff5fa503e8 175 send8BitData(0X01);
displaymodule 0:d6ff5fa503e8 176
displaymodule 0:d6ff5fa503e8 177 sendCommand(0xB6);
displaymodule 0:d6ff5fa503e8 178 send8BitData(0x94);
displaymodule 0:d6ff5fa503e8 179 send8BitData(0x6C);
displaymodule 0:d6ff5fa503e8 180 send8BitData(0x50);
displaymodule 0:d6ff5fa503e8 181
displaymodule 0:d6ff5fa503e8 182 sendCommand(0xB1);
displaymodule 0:d6ff5fa503e8 183 send8BitData(0x00);
displaymodule 0:d6ff5fa503e8 184 send8BitData(0x01);
displaymodule 0:d6ff5fa503e8 185 send8BitData(0x1B);
displaymodule 0:d6ff5fa503e8 186 send8BitData(0x03);
displaymodule 0:d6ff5fa503e8 187 send8BitData(0X01);
displaymodule 0:d6ff5fa503e8 188 send8BitData(0X08);
displaymodule 0:d6ff5fa503e8 189 send8BitData(0x77);
displaymodule 0:d6ff5fa503e8 190 send8BitData(0x89);
displaymodule 0:d6ff5fa503e8 191
displaymodule 0:d6ff5fa503e8 192 sendCommand(0xE0);
displaymodule 0:d6ff5fa503e8 193 send8BitData(0x50);
displaymodule 0:d6ff5fa503e8 194 send8BitData(0x77);
displaymodule 0:d6ff5fa503e8 195 send8BitData(0X40);
displaymodule 0:d6ff5fa503e8 196 send8BitData(0X08);
displaymodule 0:d6ff5fa503e8 197 send8BitData(0xBE);
displaymodule 0:d6ff5fa503e8 198 send8BitData(0x00);
displaymodule 0:d6ff5fa503e8 199 send8BitData(0x03);
displaymodule 0:d6ff5fa503e8 200 send8BitData(0x0F);
displaymodule 0:d6ff5fa503e8 201 send8BitData(0x00);
displaymodule 0:d6ff5fa503e8 202 send8BitData(0x01);
displaymodule 0:d6ff5fa503e8 203 send8BitData(0x73);
displaymodule 0:d6ff5fa503e8 204 send8BitData(0x00);
displaymodule 0:d6ff5fa503e8 205 send8BitData(0x72);
displaymodule 0:d6ff5fa503e8 206 send8BitData(0x03);
displaymodule 0:d6ff5fa503e8 207 send8BitData(0xB0);
displaymodule 0:d6ff5fa503e8 208 send8BitData(0x0F);
displaymodule 0:d6ff5fa503e8 209 send8BitData(0x08);
displaymodule 0:d6ff5fa503e8 210 send8BitData(0x00);
displaymodule 0:d6ff5fa503e8 211 send8BitData(0x0F);
displaymodule 0:d6ff5fa503e8 212 sendCommand(0x3A);
displaymodule 0:d6ff5fa503e8 213 send8BitData(0x05);
displaymodule 0:d6ff5fa503e8 214 sendCommand(0x36);
displaymodule 0:d6ff5fa503e8 215 send8BitData(0xC0);
displaymodule 0:d6ff5fa503e8 216 sendCommand(0x11);
displaymodule 0:d6ff5fa503e8 217 delay(150);
displaymodule 0:d6ff5fa503e8 218 sendCommand(0x29);
displaymodule 0:d6ff5fa503e8 219 delay(150);
displaymodule 0:d6ff5fa503e8 220 sendCommand(0x2D);
displaymodule 0:d6ff5fa503e8 221 uint8_t i=0;
displaymodule 0:d6ff5fa503e8 222
displaymodule 0:d6ff5fa503e8 223 for(i=0;i<32;i++) {
displaymodule 0:d6ff5fa503e8 224 send8BitData(2*i);
displaymodule 0:d6ff5fa503e8 225 } //Red
displaymodule 0:d6ff5fa503e8 226
displaymodule 0:d6ff5fa503e8 227 for(i=0;i<64;i++) {
displaymodule 0:d6ff5fa503e8 228 send8BitData(1*i);
displaymodule 0:d6ff5fa503e8 229 } //Green
displaymodule 0:d6ff5fa503e8 230
displaymodule 0:d6ff5fa503e8 231 for(i=0;i<32;i++)
displaymodule 0:d6ff5fa503e8 232 {
displaymodule 0:d6ff5fa503e8 233 send8BitData(2*i);
displaymodule 0:d6ff5fa503e8 234 } //Blue
displaymodule 0:d6ff5fa503e8 235 sendCommand(0x2C);
displaymodule 0:d6ff5fa503e8 236
displaymodule 0:d6ff5fa503e8 237 delay(150);
displaymodule 0:d6ff5fa503e8 238 clearScreen();
displaymodule 0:d6ff5fa503e8 239 }
displaymodule 0:d6ff5fa503e8 240
displaymodule 0:d6ff5fa503e8 241 /*********************************************************************************************************
displaymodule 0:d6ff5fa503e8 242 END FILE
displaymodule 0:d6ff5fa503e8 243 *********************************************************************************************************/
displaymodule 0:d6ff5fa503e8 244
displaymodule 0:d6ff5fa503e8 245