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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DmTftHX8353C.cpp Source File

DmTftHX8353C.cpp

00001 /**********************************************************************************************
00002  Copyright (c) 2014 DisplayModule. All rights reserved.
00003 
00004  Redistribution and use of this source code, part of this source code or any compiled binary
00005  based on this source code is permitted as long as the above copyright notice and following
00006  disclaimer is retained.
00007 
00008  DISCLAIMER:
00009  THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT. DISPLAYMODULE ASSUMES
00010  NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE.
00011  ********************************************************************************************/
00012 
00013 #include "DmTftHX8353C.h"
00014 
00015 DmTftHX8353C::DmTftHX8353C(uint8_t mosi, uint8_t clk, uint8_t cs, uint8_t dc, uint8_t rst) : DmTftBase(128,160) {
00016   _mosi = mosi;
00017   _clk = clk;
00018   _cs = cs;
00019   _dc = dc;
00020   _rst = rst;
00021 }
00022 
00023 DmTftHX8353C::~DmTftHX8353C() {
00024 #if defined (DM_TOOLCHAIN_MBED)
00025   delete _pinMOSI;
00026   delete _pinCLK;
00027   delete _pinCS;
00028   delete _pinDC;
00029   delete _pinRST;
00030 
00031   _pinMOSI = NULL;
00032   _pinCLK = NULL;
00033   _pinCS = NULL;
00034   _pinDC = NULL;
00035   _pinRST = NULL;
00036 #endif
00037 }
00038 
00039 void DmTftHX8353C::writeBus(uint8_t data) {
00040   if (data & 0x80) {
00041     sbi(_pinMOSI, _bitmaskMOSI);
00042   }
00043   else {
00044     cbi(_pinMOSI, _bitmaskMOSI);
00045   }
00046   pulse_low(_pinCLK, _bitmaskCLK);
00047 
00048   if (data & 0x40) {
00049     sbi(_pinMOSI, _bitmaskMOSI);
00050   }
00051   else {
00052     cbi(_pinMOSI, _bitmaskMOSI);
00053   }
00054   pulse_low(_pinCLK, _bitmaskCLK);
00055 
00056   if (data & 0x20) {
00057     sbi(_pinMOSI, _bitmaskMOSI);
00058   }
00059   else {
00060     cbi(_pinMOSI, _bitmaskMOSI);
00061   }
00062   pulse_low(_pinCLK, _bitmaskCLK);
00063 
00064   if (data & 0x10) {
00065     sbi(_pinMOSI, _bitmaskMOSI);
00066   }
00067   else {
00068     cbi(_pinMOSI, _bitmaskMOSI);
00069   }
00070   pulse_low(_pinCLK, _bitmaskCLK);
00071 
00072   if (data & 0x08) {
00073     sbi(_pinMOSI, _bitmaskMOSI);
00074   }
00075   else {
00076     cbi(_pinMOSI, _bitmaskMOSI);
00077   }
00078   pulse_low(_pinCLK, _bitmaskCLK);
00079 
00080   if (data & 0x04) {
00081     sbi(_pinMOSI, _bitmaskMOSI);
00082   }
00083   else {
00084     cbi(_pinMOSI, _bitmaskMOSI);
00085   }
00086   pulse_low(_pinCLK, _bitmaskCLK);
00087 
00088   if (data & 0x02) {
00089     sbi(_pinMOSI, _bitmaskMOSI);
00090   }
00091   else {
00092     cbi(_pinMOSI, _bitmaskMOSI);
00093   }
00094   pulse_low(_pinCLK, _bitmaskCLK);
00095 
00096   if (data & 0x01) {
00097     sbi(_pinMOSI, _bitmaskMOSI);
00098   }
00099   else {
00100     cbi(_pinMOSI, _bitmaskMOSI);
00101   }
00102   pulse_low(_pinCLK, _bitmaskCLK);
00103 }
00104 
00105 void DmTftHX8353C::sendCommand(uint8_t index) {
00106   cbi(_pinDC, _bitmaskDC);
00107   writeBus(index);
00108 }
00109 
00110 void DmTftHX8353C::send8BitData(uint8_t data) {
00111   sbi(_pinDC, _bitmaskDC);
00112   writeBus(data);
00113 }
00114 
00115 void DmTftHX8353C::sendData(uint16_t data) {
00116   sbi(_pinDC, _bitmaskDC);
00117   writeBus(data>>8);
00118   writeBus(data);
00119 }
00120 
00121 void DmTftHX8353C::setAddress(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
00122   sendCommand(0x2A); // SetColumn
00123   sendData(x0);
00124   sendData(x1);
00125   sendCommand(0x2B); // SetPage
00126   sendData(y0);
00127   sendData(y1);
00128 
00129   sendCommand(0x2c);
00130 }
00131 
00132 
00133 void DmTftHX8353C::init (void) {
00134   setTextColor(BLACK, WHITE);
00135 #if defined (DM_TOOLCHAIN_ARDUINO)
00136   _pinMOSI= portOutputRegister(digitalPinToPort(_mosi));
00137   _bitmaskMOSI= digitalPinToBitMask(_mosi);
00138   _pinCLK= portOutputRegister(digitalPinToPort(_clk));
00139   _bitmaskCLK= digitalPinToBitMask(_clk);
00140   _pinCS  = portOutputRegister(digitalPinToPort(_cs));
00141   _bitmaskCS  = digitalPinToBitMask(_cs);
00142   _pinDC  = portOutputRegister(digitalPinToPort(_dc));
00143   _bitmaskDC  = digitalPinToBitMask(_dc);
00144   _pinRST = portOutputRegister(digitalPinToPort(_rst));
00145   _bitmaskRST = digitalPinToBitMask(_rst);
00146 
00147   pinMode(_mosi,OUTPUT);
00148   pinMode(_clk,OUTPUT);
00149   pinMode(_cs,OUTPUT);
00150   pinMode(_dc,OUTPUT);
00151   pinMode(_rst,OUTPUT);
00152 #elif defined (DM_TOOLCHAIN_MBED)
00153   _pinMOSI = new DigitalOut((PinName)_mosi);
00154   _pinCLK = new DigitalOut((PinName)_clk);
00155   _pinCS = new DigitalOut((PinName)_cs);
00156   _pinDC = new DigitalOut((PinName)_dc);
00157   _pinRST = new DigitalOut((PinName)_rst);
00158 #endif
00159 
00160   sbi(_pinRST, _bitmaskRST);
00161   delay(5);
00162   cbi(_pinRST, _bitmaskRST);
00163   delay(15);
00164   sbi(_pinRST, _bitmaskRST);
00165   delay(15);
00166   cbi(_pinCS, _bitmaskCS);
00167 
00168   sendCommand(0xB9);             // HX8353C INIT
00169   send8BitData(0xFF);
00170   send8BitData(0x83);
00171   send8BitData(0x53);
00172 
00173   sendCommand(0xB0);
00174   send8BitData(0x3C);
00175   send8BitData(0X01);
00176 
00177   sendCommand(0xB6);
00178   send8BitData(0x94);
00179   send8BitData(0x6C);
00180   send8BitData(0x50);
00181 
00182   sendCommand(0xB1);
00183   send8BitData(0x00);
00184   send8BitData(0x01);
00185   send8BitData(0x1B);
00186   send8BitData(0x03);
00187   send8BitData(0X01);
00188   send8BitData(0X08);
00189   send8BitData(0x77);
00190   send8BitData(0x89);
00191 
00192   sendCommand(0xE0);
00193   send8BitData(0x50);
00194   send8BitData(0x77);
00195   send8BitData(0X40);
00196   send8BitData(0X08);
00197   send8BitData(0xBE);
00198   send8BitData(0x00);
00199   send8BitData(0x03);
00200   send8BitData(0x0F);
00201   send8BitData(0x00);
00202   send8BitData(0x01);
00203   send8BitData(0x73);
00204   send8BitData(0x00);
00205   send8BitData(0x72);
00206   send8BitData(0x03);
00207   send8BitData(0xB0);
00208   send8BitData(0x0F);
00209   send8BitData(0x08);
00210   send8BitData(0x00);
00211   send8BitData(0x0F);
00212   sendCommand(0x3A);
00213   send8BitData(0x05);
00214   sendCommand(0x36);
00215   send8BitData(0xC0);
00216   sendCommand(0x11);
00217   delay(150);
00218   sendCommand(0x29);
00219   delay(150);
00220   sendCommand(0x2D);
00221   uint8_t i=0;
00222 
00223   for(i=0;i<32;i++) {
00224     send8BitData(2*i);
00225   } //Red
00226 
00227   for(i=0;i<64;i++) {
00228     send8BitData(1*i);
00229   } //Green
00230 
00231   for(i=0;i<32;i++)
00232   {
00233     send8BitData(2*i);
00234   } //Blue
00235   sendCommand(0x2C);
00236 
00237   delay(150);
00238   clearScreen();
00239 }
00240 
00241 /*********************************************************************************************************
00242   END FILE
00243 *********************************************************************************************************/
00244 
00245