Driver Library for our displays
Dependents: dm_bubbles dm_calc dm_paint dm_sdcard_with_adapter ... more
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 //Tested on NUCLEO-F401RE, LPCXpresso11U68 platform. 00014 00015 #include "DmTftHX8353C.h" 00016 #if defined (DM_TOOLCHAIN_ARDUINO) 00017 DmTftHX8353C::DmTftHX8353C(uint8_t mosi, uint8_t clk, uint8_t cs, uint8_t dc, uint8_t rst) : DmTftBase(128,160) 00018 #elif defined (DM_TOOLCHAIN_MBED) 00019 DmTftHX8353C::DmTftHX8353C(PinName mosi, PinName clk, PinName cs, PinName dc, PinName rst) : DmTftBase(128,160) 00020 #endif 00021 { 00022 _mosi = mosi; 00023 _clk = clk; 00024 _cs = cs; 00025 _dc = dc; 00026 _rst = rst; 00027 } 00028 00029 DmTftHX8353C::~DmTftHX8353C() { 00030 #if defined (DM_TOOLCHAIN_MBED) 00031 delete _pinMOSI; 00032 delete _pinCLK; 00033 delete _pinCS; 00034 delete _pinDC; 00035 delete _pinRST; 00036 00037 _pinMOSI = NULL; 00038 _pinCLK = NULL; 00039 _pinCS = NULL; 00040 _pinDC = NULL; 00041 _pinRST = NULL; 00042 #endif 00043 } 00044 00045 void DmTftHX8353C::writeBus(uint8_t data) { 00046 if (data & 0x80) { 00047 sbi(_pinMOSI, _bitmaskMOSI); 00048 } 00049 else { 00050 cbi(_pinMOSI, _bitmaskMOSI); 00051 } 00052 pulse_low(_pinCLK, _bitmaskCLK); 00053 00054 if (data & 0x40) { 00055 sbi(_pinMOSI, _bitmaskMOSI); 00056 } 00057 else { 00058 cbi(_pinMOSI, _bitmaskMOSI); 00059 } 00060 pulse_low(_pinCLK, _bitmaskCLK); 00061 00062 if (data & 0x20) { 00063 sbi(_pinMOSI, _bitmaskMOSI); 00064 } 00065 else { 00066 cbi(_pinMOSI, _bitmaskMOSI); 00067 } 00068 pulse_low(_pinCLK, _bitmaskCLK); 00069 00070 if (data & 0x10) { 00071 sbi(_pinMOSI, _bitmaskMOSI); 00072 } 00073 else { 00074 cbi(_pinMOSI, _bitmaskMOSI); 00075 } 00076 pulse_low(_pinCLK, _bitmaskCLK); 00077 00078 if (data & 0x08) { 00079 sbi(_pinMOSI, _bitmaskMOSI); 00080 } 00081 else { 00082 cbi(_pinMOSI, _bitmaskMOSI); 00083 } 00084 pulse_low(_pinCLK, _bitmaskCLK); 00085 00086 if (data & 0x04) { 00087 sbi(_pinMOSI, _bitmaskMOSI); 00088 } 00089 else { 00090 cbi(_pinMOSI, _bitmaskMOSI); 00091 } 00092 pulse_low(_pinCLK, _bitmaskCLK); 00093 00094 if (data & 0x02) { 00095 sbi(_pinMOSI, _bitmaskMOSI); 00096 } 00097 else { 00098 cbi(_pinMOSI, _bitmaskMOSI); 00099 } 00100 pulse_low(_pinCLK, _bitmaskCLK); 00101 00102 if (data & 0x01) { 00103 sbi(_pinMOSI, _bitmaskMOSI); 00104 } 00105 else { 00106 cbi(_pinMOSI, _bitmaskMOSI); 00107 } 00108 pulse_low(_pinCLK, _bitmaskCLK); 00109 } 00110 00111 void DmTftHX8353C::sendCommand(uint8_t index) { 00112 cbi(_pinDC, _bitmaskDC); 00113 writeBus(index); 00114 } 00115 00116 void DmTftHX8353C::send8BitData(uint8_t data) { 00117 sbi(_pinDC, _bitmaskDC); 00118 writeBus(data); 00119 } 00120 00121 void DmTftHX8353C::sendData(uint16_t data) { 00122 sbi(_pinDC, _bitmaskDC); 00123 writeBus(data>>8); 00124 writeBus(data); 00125 } 00126 00127 void DmTftHX8353C::setAddress(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { 00128 sendCommand(0x2A); // SetColumn 00129 sendData(x0); 00130 sendData(x1); 00131 sendCommand(0x2B); // SetPage 00132 sendData(y0); 00133 sendData(y1); 00134 00135 sendCommand(0x2c); 00136 } 00137 00138 00139 void DmTftHX8353C::init (void) { 00140 setTextColor(BLACK, WHITE); 00141 #if defined (DM_TOOLCHAIN_ARDUINO) 00142 _pinMOSI= portOutputRegister(digitalPinToPort(_mosi)); 00143 _bitmaskMOSI= digitalPinToBitMask(_mosi); 00144 _pinCLK= portOutputRegister(digitalPinToPort(_clk)); 00145 _bitmaskCLK= digitalPinToBitMask(_clk); 00146 _pinCS = portOutputRegister(digitalPinToPort(_cs)); 00147 _bitmaskCS = digitalPinToBitMask(_cs); 00148 _pinDC = portOutputRegister(digitalPinToPort(_dc)); 00149 _bitmaskDC = digitalPinToBitMask(_dc); 00150 _pinRST = portOutputRegister(digitalPinToPort(_rst)); 00151 _bitmaskRST = digitalPinToBitMask(_rst); 00152 00153 pinMode(_mosi,OUTPUT); 00154 pinMode(_clk,OUTPUT); 00155 pinMode(_cs,OUTPUT); 00156 pinMode(_dc,OUTPUT); 00157 pinMode(_rst,OUTPUT); 00158 #elif defined (DM_TOOLCHAIN_MBED) 00159 _pinMOSI = new DigitalOut(_mosi); 00160 _pinCLK = new DigitalOut(_clk); 00161 _pinCS = new DigitalOut(_cs); 00162 _pinDC = new DigitalOut(_dc); 00163 _pinRST = new DigitalOut(_rst); 00164 #endif 00165 00166 sbi(_pinRST, _bitmaskRST); 00167 delay(5); 00168 cbi(_pinRST, _bitmaskRST); 00169 delay(15); 00170 sbi(_pinRST, _bitmaskRST); 00171 delay(15); 00172 cbi(_pinCS, _bitmaskCS); 00173 00174 sendCommand(0xB9); // HX8353C INIT 00175 send8BitData(0xFF); 00176 send8BitData(0x83); 00177 send8BitData(0x53); 00178 00179 sendCommand(0xB0); 00180 send8BitData(0x3C); 00181 send8BitData(0X01); 00182 00183 sendCommand(0xB6); 00184 send8BitData(0x94); 00185 send8BitData(0x6C); 00186 send8BitData(0x50); 00187 00188 sendCommand(0xB1); 00189 send8BitData(0x00); 00190 send8BitData(0x01); 00191 send8BitData(0x1B); 00192 send8BitData(0x03); 00193 send8BitData(0X01); 00194 send8BitData(0X08); 00195 send8BitData(0x77); 00196 send8BitData(0x89); 00197 00198 sendCommand(0xE0); 00199 send8BitData(0x50); 00200 send8BitData(0x77); 00201 send8BitData(0X40); 00202 send8BitData(0X08); 00203 send8BitData(0xBE); 00204 send8BitData(0x00); 00205 send8BitData(0x03); 00206 send8BitData(0x0F); 00207 send8BitData(0x00); 00208 send8BitData(0x01); 00209 send8BitData(0x73); 00210 send8BitData(0x00); 00211 send8BitData(0x72); 00212 send8BitData(0x03); 00213 send8BitData(0xB0); 00214 send8BitData(0x0F); 00215 send8BitData(0x08); 00216 send8BitData(0x00); 00217 send8BitData(0x0F); 00218 sendCommand(0x3A); 00219 send8BitData(0x05); 00220 sendCommand(0x36); 00221 send8BitData(0xC0); 00222 sendCommand(0x11); 00223 delay(150); 00224 sendCommand(0x29); 00225 delay(150); 00226 sendCommand(0x2D); 00227 uint8_t i=0; 00228 00229 for(i=0;i<32;i++) { 00230 send8BitData(2*i); 00231 } //Red 00232 00233 for(i=0;i<64;i++) { 00234 send8BitData(1*i); 00235 } //Green 00236 00237 for(i=0;i<32;i++) 00238 { 00239 send8BitData(2*i); 00240 } //Blue 00241 sendCommand(0x2C); 00242 00243 delay(150); 00244 clearScreen(); 00245 } 00246 00247 /********************************************************************************************************* 00248 END FILE 00249 *********************************************************************************************************/ 00250 00251
Generated on Wed Jul 13 2022 04:21:40 by 1.7.2