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
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
Generated on Tue Jul 12 2022 19:30:31 by 1.7.2